Merge pull request #251 from travis-ci/cd-requests-branch-name

V3 add branch_name for request
This commit is contained in:
Konstantin Haase 2016-04-15 17:31:04 +02:00
commit 78f36320a7
3 changed files with 71 additions and 1 deletions

View File

@ -1,10 +1,20 @@
module Travis::API::V3 module Travis::API::V3
class Models::Request < Model class Models::Request < Model
BRANCH_REF = %r{refs/heads/(.*?)$}
belongs_to :commit belongs_to :commit
belongs_to :repository belongs_to :repository
belongs_to :owner, polymorphic: true belongs_to :owner, polymorphic: true
has_many :builds has_many :builds
serialize :config serialize :config
serialize :payload serialize :payload
def branch_name
ref =~ BRANCH_REF and $1
end
def ref
payload['ref'] if payload
end
end end
end end

View File

@ -3,6 +3,6 @@ require 'travis/api/v3/renderer/model_renderer'
module Travis::API::V3 module Travis::API::V3
class Renderer::Request < Renderer::ModelRenderer class Renderer::Request < Renderer::ModelRenderer
representation(:minimal, :id) representation(:minimal, :id)
representation(:standard, :id, :repository, :commit, :owner, :created_at, :result, :message, :event_type) representation(:standard, :id, :repository, :branch_name, :commit, :owner, :created_at, :result, :message, :event_type)
end end
end end

View File

@ -0,0 +1,60 @@
require 'spec_helper'
describe Travis::API::V3::Services::Requests::Find do
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
let(:request) { repo.requests.first }
describe "fetching requests on a public repository" do
before { get("/v3/repo/#{repo.id}/requests") }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body).to_s).to include(
"@type",
"requests",
"/v3/repo/#{repo.id}/requests",
"repository",
"commit",
"message",
"the commit message",
"branch_name",
"representation",
"@pagination",
"owner",
"created_at",
"result",
"sha",
"svenfuchs/minimal",
"event_type",
"push")
}
end
describe "fetching requests on private repository, private API, authenticated as user with access" do
let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) }
let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }}
before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, pull: true) }
before { repo.update_attribute(:private, true) }
before { get("/v3/repo/#{repo.id}/requests", {}, headers) }
after { repo.update_attribute(:private, false) }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body).to_s).to include(
"@type",
"requests",
"/v3/repo/#{repo.id}/requests",
"repository",
"commit",
"message",
"the commit message",
"branch_name",
"representation",
"@pagination",
"owner",
"created_at",
"result",
"sha",
"svenfuchs/minimal",
"event_type",
"push")
}
end
end