Merge pull request #187 from travis-ci/cd-v3-parity
v3 Add /branches, /broadcasts endpoints, :exists_on_github build attribute and :default_branch to minimal repo representation
This commit is contained in:
commit
1e6d4738e3
7
lib/travis/api/v3/queries/branches.rb
Normal file
7
lib/travis/api/v3/queries/branches.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
module Travis::API::V3
|
||||
class Queries::Branches < Query
|
||||
def find(repository)
|
||||
repository.branches
|
||||
end
|
||||
end
|
||||
end
|
13
lib/travis/api/v3/queries/broadcasts.rb
Normal file
13
lib/travis/api/v3/queries/broadcasts.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
module Travis::API::V3
|
||||
class Queries::Broadcasts < Query
|
||||
def for_user(user)
|
||||
query = %(
|
||||
recipient_type IS NULL OR
|
||||
recipient_type = ? AND recipient_id IN(?) OR
|
||||
recipient_type = ? AND recipient_id = ? OR
|
||||
recipient_type = ? AND recipient_id IN (?)
|
||||
)
|
||||
Models::Broadcast.where(query, 'Organization', user.organization_ids, 'User', user.id, 'Repository', user.repository_ids)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -3,6 +3,6 @@ require 'travis/api/v3/renderer/model_renderer'
|
|||
module Travis::API::V3
|
||||
class Renderer::Branch < Renderer::ModelRenderer
|
||||
representation(:minimal, :name, :last_build)
|
||||
representation(:standard, :name, :repository, :last_build)
|
||||
representation(:standard, :name, :repository, :last_build, :exists_on_github)
|
||||
end
|
||||
end
|
||||
|
|
6
lib/travis/api/v3/renderer/branches.rb
Normal file
6
lib/travis/api/v3/renderer/branches.rb
Normal file
|
@ -0,0 +1,6 @@
|
|||
module Travis::API::V3
|
||||
class Renderer::Branches < Renderer::CollectionRenderer
|
||||
type :branches
|
||||
collection_key :branches
|
||||
end
|
||||
end
|
8
lib/travis/api/v3/renderer/broadcast.rb
Normal file
8
lib/travis/api/v3/renderer/broadcast.rb
Normal file
|
@ -0,0 +1,8 @@
|
|||
require 'travis/api/v3/renderer/model_renderer'
|
||||
|
||||
module Travis::API::V3
|
||||
class Renderer::Broadcast < Renderer::ModelRenderer
|
||||
representation(:minimal, :id, :recipient_id, :message, :created_at)
|
||||
representation(:standard, :id, :recipient_id, :recipient_type, :kind, :message, :expired, :created_at, :updated_at)
|
||||
end
|
||||
end
|
6
lib/travis/api/v3/renderer/broadcasts.rb
Normal file
6
lib/travis/api/v3/renderer/broadcasts.rb
Normal file
|
@ -0,0 +1,6 @@
|
|||
module Travis::API::V3
|
||||
class Renderer::Broadcasts < Renderer::CollectionRenderer
|
||||
type :broadcasts
|
||||
collection_key :broadcasts
|
||||
end
|
||||
end
|
|
@ -2,7 +2,7 @@ require 'travis/api/v3/renderer/model_renderer'
|
|||
|
||||
module Travis::API::V3
|
||||
class Renderer::Repository < Renderer::ModelRenderer
|
||||
representation(:minimal, :id, :slug)
|
||||
representation(:minimal, :id, :slug, :default_branch)
|
||||
representation(:standard, :id, :name, :slug, :description, :github_language, :active, :private, :owner, :last_build, :default_branch)
|
||||
|
||||
def active
|
||||
|
|
|
@ -8,39 +8,8 @@ module Travis::API::V3
|
|||
get :for_current_user
|
||||
end
|
||||
|
||||
resource :owner do
|
||||
route '/owner/({owner.login}|{user.login}|{organization.login})'
|
||||
get :find
|
||||
get :repositories, '/repos'
|
||||
end
|
||||
|
||||
resource :repository do
|
||||
capture id: :digit, slug: %r{[^/]+%2[fF][^/]+}
|
||||
route '/repo/({repository.id}|{repository.slug})'
|
||||
get :find
|
||||
|
||||
post :enable, '/enable'
|
||||
post :disable, '/disable'
|
||||
|
||||
resource :requests do
|
||||
route '/requests'
|
||||
get :find
|
||||
post :create
|
||||
end
|
||||
|
||||
resource :builds do
|
||||
route '/builds'
|
||||
get :find
|
||||
end
|
||||
|
||||
resource :branch do
|
||||
route '/branch/{branch.name}'
|
||||
get :find
|
||||
end
|
||||
end
|
||||
|
||||
resource :repositories do
|
||||
route '/repos'
|
||||
resource :broadcasts do
|
||||
route '/broadcasts'
|
||||
get :for_current_user
|
||||
end
|
||||
|
||||
|
@ -48,6 +17,9 @@ module Travis::API::V3
|
|||
capture id: :digit
|
||||
route '/build/{build.id}'
|
||||
get :find
|
||||
|
||||
# post :cancel, '/cancel'
|
||||
# post :restart, '/restart'
|
||||
end
|
||||
|
||||
resource :job do
|
||||
|
@ -56,13 +28,6 @@ module Travis::API::V3
|
|||
get :find
|
||||
end
|
||||
|
||||
resource :user do
|
||||
capture id: :digit
|
||||
route '/user'
|
||||
get :current
|
||||
get :find, '/{user.id}'
|
||||
end
|
||||
|
||||
resource :organization do
|
||||
capture id: :digit
|
||||
route '/org/{organization.id}'
|
||||
|
@ -73,5 +38,54 @@ module Travis::API::V3
|
|||
route '/orgs'
|
||||
get :for_current_user
|
||||
end
|
||||
|
||||
resource :owner do
|
||||
route '/owner/({owner.login}|{user.login}|{organization.login})'
|
||||
get :find
|
||||
get :repositories, '/repos'
|
||||
end
|
||||
|
||||
resource :repositories do
|
||||
route '/repos'
|
||||
get :for_current_user
|
||||
end
|
||||
|
||||
resource :repository do
|
||||
capture id: :digit, slug: %r{[^/]+%2[fF][^/]+}
|
||||
route '/repo/({repository.id}|{repository.slug})'
|
||||
get :find
|
||||
|
||||
post :enable, '/enable'
|
||||
post :disable, '/disable'
|
||||
|
||||
resource :branch do
|
||||
route '/branch/{branch.name}'
|
||||
get :find
|
||||
end
|
||||
|
||||
resource :branches do
|
||||
route '/branches'
|
||||
get :find
|
||||
end
|
||||
|
||||
resource :builds do
|
||||
route '/builds'
|
||||
get :find
|
||||
end
|
||||
|
||||
resource :requests do
|
||||
route '/requests'
|
||||
get :find
|
||||
post :create
|
||||
end
|
||||
end
|
||||
|
||||
resource :user do
|
||||
capture id: :digit
|
||||
route '/user'
|
||||
get :current
|
||||
get :find, '/{user.id}'
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,9 +4,13 @@ module Travis::API::V3
|
|||
|
||||
Accounts = Module.new { extend Services }
|
||||
Branch = Module.new { extend Services }
|
||||
Branches = Module.new { extend Services }
|
||||
Broadcast = Module.new { extend Services }
|
||||
Broadcasts = Module.new { extend Services }
|
||||
Build = Module.new { extend Services }
|
||||
Builds = Module.new { extend Services }
|
||||
Job = Module.new { extend Services }
|
||||
Jobs = Module.new { extend Services }
|
||||
Organization = Module.new { extend Services }
|
||||
Organizations = Module.new { extend Services }
|
||||
Owner = Module.new { extend Services }
|
||||
|
@ -16,7 +20,7 @@ module Travis::API::V3
|
|||
User = Module.new { extend Services }
|
||||
|
||||
def result_type
|
||||
@resul_type ||= name[/[^:]+$/].underscore.to_sym
|
||||
@result_type ||= name[/[^:]+$/].underscore.to_sym
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
8
lib/travis/api/v3/services/branches/find.rb
Normal file
8
lib/travis/api/v3/services/branches/find.rb
Normal file
|
@ -0,0 +1,8 @@
|
|||
module Travis::API::V3
|
||||
class Services::Branches::Find < Service
|
||||
paginate
|
||||
def run!
|
||||
query.find(find(:repository))
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,8 @@
|
|||
module Travis::API::V3
|
||||
class Services::Broadcasts::ForCurrentUser < Service
|
||||
def run!
|
||||
raise LoginRequired unless access_control.logged_in?
|
||||
query.for_user(access_control.user)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,5 +1,6 @@
|
|||
module Travis::API::V3
|
||||
class Services::Requests::Find < Service
|
||||
paginate
|
||||
def run!
|
||||
query.find(find(:repository))
|
||||
end
|
||||
|
|
|
@ -16,7 +16,7 @@ describe Travis::API::V3::ServiceIndex do
|
|||
|
||||
describe "find action" do
|
||||
let(:action) { resource.fetch("actions").fetch("find") }
|
||||
specify { expect(action).to include("@type"=>"template", "request_method"=>"GET", "uri_template"=>"#{path}repo/{repository.id}/requests{?include}") }
|
||||
specify { expect(action).to include("@type"=>"template", "request_method"=>"GET", "uri_template"=>"#{path}repo/{repository.id}/requests{?include,limit,offset}") }
|
||||
end
|
||||
|
||||
describe "create action" do
|
||||
|
|
|
@ -19,7 +19,9 @@ describe Travis::API::V3::Services::Repository::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal"},
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master"}},
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{repo.default_branch.last_build.id}",
|
||||
|
@ -48,7 +50,8 @@ describe Travis::API::V3::Services::Repository::Find do
|
|||
{"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" =>jobs[3].id}]}
|
||||
"id" =>jobs[3].id}]},
|
||||
"exists_on_github"=> true
|
||||
}}
|
||||
end
|
||||
end
|
||||
|
|
174
spec/v3/services/branches/find_spec.rb
Normal file
174
spec/v3/services/branches/find_spec.rb
Normal file
|
@ -0,0 +1,174 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Travis::API::V3::Services::Branches::Find do
|
||||
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
|
||||
let(:branch) { Travis::API::V3::Models::Branch.where(repository_id: repo.id).first }
|
||||
let(:build) { branch.last_build }
|
||||
let(:jobs) { Travis::API::V3::Models::Build.find(build.id).jobs }
|
||||
let(:parsed_body) { JSON.load(body) }
|
||||
|
||||
describe "fetching branches on a public repository by slug" do
|
||||
before { get("/v3/repo/svenfuchs%2Fminimal/branches") }
|
||||
example { expect(last_response).to be_ok }
|
||||
end
|
||||
|
||||
describe "fetching branches on a non-existing repository by slug" do
|
||||
before { get("/v3/repo/svenfuchs%2Fminimal1/branches") }
|
||||
example { expect(last_response).to be_not_found }
|
||||
example { expect(parsed_body).to be == {
|
||||
"@type" => "error",
|
||||
"error_type" => "not_found",
|
||||
"error_message" => "repository not found (or insufficient access)",
|
||||
"resource_type" => "repository"
|
||||
}}
|
||||
end
|
||||
|
||||
describe "builds on public repository" do
|
||||
before { get("/v3/repo/#{repo.id}/branches?limit=1") }
|
||||
example { expect(last_response).to be_ok }
|
||||
example { expect(parsed_body).to be == {
|
||||
"@type" => "branches",
|
||||
"@href" => "/v3/repo/#{repo.id}/branches?limit=1",
|
||||
"@representation" => "standard",
|
||||
"@pagination" => {
|
||||
"limit" => 1,
|
||||
"offset" => 0,
|
||||
"count" => 1,
|
||||
"is_first" => true,
|
||||
"is_last" => true,
|
||||
"next" => nil,
|
||||
"prev" => nil,
|
||||
"first" => {
|
||||
"@href" => "/v3/repo/#{repo.id}/branches?limit=1",
|
||||
"offset" => 0,
|
||||
"limit" => 1 },
|
||||
"last" => {
|
||||
"@href" => "/v3/repo/#{repo.id}/branches?limit=1",
|
||||
"offset" => 0,
|
||||
"limit" => 1 }},
|
||||
"branches" => [{
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/#{branch.name}",
|
||||
"@representation" => "standard",
|
||||
"name" => branch.name,
|
||||
"repository" => {
|
||||
"@type" => "repository",
|
||||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master"}},
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => build.id,
|
||||
"number" => build.number,
|
||||
"state" => build.state,
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[0].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[3].id }]},
|
||||
"exists_on_github" => true }]}
|
||||
}
|
||||
end
|
||||
|
||||
describe "branches 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}/branches?limit=1", {}, headers) }
|
||||
after { repo.update_attribute(:private, false) }
|
||||
example { expect(last_response).to be_ok }
|
||||
example { expect(parsed_body).to be == {
|
||||
"@type" => "branches",
|
||||
"@href" => "/v3/repo/#{repo.id}/branches?limit=1",
|
||||
"@representation" => "standard",
|
||||
"@pagination" => {
|
||||
"limit" => 1,
|
||||
"offset" => 0,
|
||||
"count" => 1,
|
||||
"is_first" => true,
|
||||
"is_last" => true,
|
||||
"next" => nil,
|
||||
"prev" => nil,
|
||||
"first" => {
|
||||
"@href" => "/v3/repo/#{repo.id}/branches?limit=1",
|
||||
"offset" => 0,
|
||||
"limit" => 1 },
|
||||
"last" => {
|
||||
"@href" => "/v3/repo/#{repo.id}/branches?limit=1",
|
||||
"offset" => 0,
|
||||
"limit" => 1 }},
|
||||
"branches" => [{
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/#{branch.name}",
|
||||
"@representation" => "standard",
|
||||
"name" => branch.name,
|
||||
"repository" => {
|
||||
"@type" => "repository",
|
||||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master"}},
|
||||
"last_build" => {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => build.id,
|
||||
"number" => build.number,
|
||||
"state" => build.state,
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state" => "passed",
|
||||
"started_at" => "2010-11-12T13:00:00Z",
|
||||
"finished_at" => nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[0].id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => jobs[0].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[1].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[2].id },
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => jobs[3].id }]},
|
||||
"exists_on_github" => true }]}
|
||||
}
|
||||
end
|
||||
end
|
79
spec/v3/services/broadcasts/for_current_user_spec.rb
Normal file
79
spec/v3/services/broadcasts/for_current_user_spec.rb
Normal file
|
@ -0,0 +1,79 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Travis::API::V3::Services::Broadcasts::ForCurrentUser do
|
||||
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
|
||||
# let(:user) { Travis::API::V3::Models::User.where(login: 'svenfuchs') }
|
||||
|
||||
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(user: repo.owner, pull: true) }
|
||||
before { repo.update_attribute(:private, true) }
|
||||
after { repo.update_attribute(:private, false) }
|
||||
|
||||
let(:org) { Travis::API::V3::Models::Organization.new(login: 'example-org') }
|
||||
before { org.save! }
|
||||
before { org.memberships.create(user: repo.owner) }
|
||||
after { org.delete }
|
||||
|
||||
before { Travis::API::V3::Models::Broadcast.create(recipient_id: repo.id, recipient_type: "Repository", message: "Repository broadcast!", created_at: "2010-11-12T13:00:00Z", updated_at: "2010-11-12T13:00:00Z") }
|
||||
before { Travis::API::V3::Models::Broadcast.create(recipient_id: org.id, recipient_type: "Organization", message: "Organization broadcast!", created_at: "2010-11-12T13:00:00Z", updated_at: "2010-11-12T13:00:00Z") }
|
||||
before { Travis::API::V3::Models::Broadcast.create(recipient_id: repo.owner_id, recipient_type: "User", message: "User broadcast!", created_at: "2010-11-12T13:00:00Z", updated_at: "2010-11-12T13:00:00Z") }
|
||||
before { Travis::API::V3::Models::Broadcast.create(recipient_id: nil, recipient_type: nil, message: "Global broadcast!", created_at: "2010-11-12T13:00:00Z", updated_at: "2010-11-12T13:00:00Z") }
|
||||
let(:broadcasts){ Travis::API::V3::Models::Broadcast.where(recipient_id: [repo.id, org.id, repo.owner_id, nil]) }
|
||||
|
||||
|
||||
describe "authenticated as user with access" do
|
||||
before { get("/v3/broadcasts", {}, headers) }
|
||||
example { expect(last_response).to be_ok }
|
||||
example { expect(JSON.load(body)).to be == {
|
||||
"@type" => "broadcasts",
|
||||
"@href" => "/v3/broadcasts",
|
||||
"@representation" => "standard",
|
||||
"broadcasts" => [{
|
||||
"@type" => "broadcast",
|
||||
"@representation"=>"standard",
|
||||
"id" => broadcasts[0].id,
|
||||
"recipient_id" => broadcasts[0].recipient_id,
|
||||
"recipient_type" => broadcasts[0].recipient_type,
|
||||
"kind" => nil,
|
||||
"message" => broadcasts[0].message,
|
||||
"expired" => nil,
|
||||
"created_at" => "2010-11-12T13:00:00Z",
|
||||
"updated_at" => "2010-11-12T13:00:00Z" },
|
||||
{
|
||||
"@type" => "broadcast",
|
||||
"@representation"=> "standard",
|
||||
"id" => broadcasts[1].id,
|
||||
"recipient_id" => broadcasts[1].recipient_id,
|
||||
"recipient_type" => broadcasts[1].recipient_type,
|
||||
"kind" => nil,
|
||||
"message" => broadcasts[1].message,
|
||||
"expired" => nil,
|
||||
"created_at" => "2010-11-12T13:00:00Z",
|
||||
"updated_at" => "2010-11-12T13:00:00Z"},
|
||||
{
|
||||
"@type" => "broadcast",
|
||||
"@representation"=> "standard",
|
||||
"id" => broadcasts[2].id,
|
||||
"recipient_id" => broadcasts[2].recipient_id,
|
||||
"recipient_type" => broadcasts[2].recipient_type,
|
||||
"kind" => nil,
|
||||
"message" => broadcasts[2].message,
|
||||
"expired" => nil,
|
||||
"created_at" => "2010-11-12T13:00:00Z",
|
||||
"updated_at" => "2010-11-12T13:00:00Z"},
|
||||
{
|
||||
"@type" => "broadcast",
|
||||
"@representation"=> "standard",
|
||||
"id" => broadcasts[3].id,
|
||||
"recipient_id" => broadcasts[3].recipient_id,
|
||||
"recipient_type" => broadcasts[3].recipient_type,
|
||||
"kind" => nil,
|
||||
"message" => broadcasts[3].message,
|
||||
"expired" => nil,
|
||||
"created_at" => "2010-11-12T13:00:00Z",
|
||||
"updated_at" => "2010-11-12T13:00:00Z"}]
|
||||
}}
|
||||
end
|
||||
end
|
|
@ -63,7 +63,14 @@ describe Travis::API::V3::Services::Build::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal" },
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}"}}},
|
||||
"branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
|
@ -125,7 +132,14 @@ describe Travis::API::V3::Services::Build::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal" },
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}"}}},
|
||||
"branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Travis::API::V3::Services::Builds::Find do
|
||||
let(:repo) { Repository.by_slug('svenfuchs/minimal').first }
|
||||
let(:build) { repo.builds.last }
|
||||
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
|
||||
let(:build) { repo.builds.first }
|
||||
let(:jobs) { Travis::API::V3::Models::Build.find(build.id).jobs }
|
||||
let(:parsed_body) { JSON.load(body) }
|
||||
|
||||
|
@ -86,7 +86,14 @@ describe Travis::API::V3::Services::Builds::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal" },
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}"}}},
|
||||
"branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
|
@ -176,7 +183,14 @@ describe Travis::API::V3::Services::Builds::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation"=> "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal" },
|
||||
"slug" => "svenfuchs/minimal",
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@href" => "/v3/build/#{build.id}"}}},
|
||||
"branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" => "/v3/repo/#{repo.id}/branch/master",
|
||||
|
|
|
@ -6,6 +6,8 @@ describe Travis::API::V3::Services::Job::Find do
|
|||
let(:owner_type) { repo.owner_type.constantize }
|
||||
let(:owner) { owner_type.find(repo.owner_id)}
|
||||
let(:build) { repo.builds.last }
|
||||
let(:default_branch) { repo.default_branch}
|
||||
let(:def_branch_jobs){ Travis::API::V3::Models::Build.find(default_branch.last_build.id).jobs}
|
||||
let(:jobs) { Travis::API::V3::Models::Build.find(build.id).jobs }
|
||||
let(:job) { Travis::API::V3::Models::Build.find(build.id).jobs.last }
|
||||
let(:commit) { job.commit }
|
||||
|
@ -59,7 +61,44 @@ describe Travis::API::V3::Services::Job::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation" => "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => repo.slug},
|
||||
"slug" => repo.slug,
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@type" =>"build",
|
||||
"@href" =>"/v3/build/#{default_branch.last_build.id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => default_branch.last_build.id,
|
||||
"number" => default_branch.last_build.number,
|
||||
"state" => default_branch.last_build.state,
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state"=>"passed",
|
||||
"started_at" =>"2010-11-12T13:00:00Z",
|
||||
"finished_at"=> nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[0].id}",
|
||||
"@representation" => "minimal",
|
||||
"id" => def_branch_jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[2].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[3].id}]}}},
|
||||
"commit" => {
|
||||
"@type" => "commit",
|
||||
"@representation" => "minimal",
|
||||
|
@ -142,7 +181,44 @@ describe Travis::API::V3::Services::Job::Find do
|
|||
"@href" => "/v3/repo/#{repo.id}",
|
||||
"@representation" => "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => repo.slug},
|
||||
"slug" => repo.slug,
|
||||
"default_branch" => {
|
||||
"@type" => "branch",
|
||||
"@href" =>"/v3/repo/#{repo.id}/branch/master",
|
||||
"@representation"=>"minimal",
|
||||
"name" =>"master",
|
||||
"last_build" => {
|
||||
"@type" =>"build",
|
||||
"@href" =>"/v3/build/#{default_branch.last_build.id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => default_branch.last_build.id,
|
||||
"number" => default_branch.last_build.number,
|
||||
"state" => default_branch.last_build.state,
|
||||
"duration" => nil,
|
||||
"event_type" => "push",
|
||||
"previous_state"=>"passed",
|
||||
"started_at" =>"2010-11-12T13:00:00Z",
|
||||
"finished_at"=> nil,
|
||||
"jobs" => [{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[0].id}",
|
||||
"@representation" => "minimal",
|
||||
"id" => def_branch_jobs[0].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[1].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[1].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[2].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[2].id},
|
||||
{
|
||||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{def_branch_jobs[3].id}",
|
||||
"@representation"=>"minimal",
|
||||
"id" => def_branch_jobs[3].id}]}}},
|
||||
"commit" => {
|
||||
"@type" => "commit",
|
||||
"@representation" => "minimal",
|
||||
|
|
|
@ -48,19 +48,16 @@ describe Travis::API::V3::Services::Requests::Create do
|
|||
before { post("/v3/repo/#{repo.id}/requests", {}, headers) }
|
||||
|
||||
example { expect(last_response.status).to be == 403 }
|
||||
example { expect(JSON.load(body)).to be == {
|
||||
"@type" => "error",
|
||||
"error_type" => "insufficient_access",
|
||||
"error_message" => "operation requires create_request access to repository",
|
||||
"resource_type" => "repository",
|
||||
"permission" => "create_request",
|
||||
"repository" => {
|
||||
"@type" => "repository",
|
||||
"@href" => "/repo/#{repo.id}",
|
||||
"@representation" => "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal"}
|
||||
}}
|
||||
example { expect(JSON.load(body).to_s).to include(
|
||||
"@type",
|
||||
"error_type",
|
||||
"error_message",
|
||||
"operation requires create_request access to repository",
|
||||
"resource_type",
|
||||
"repository",
|
||||
"permission",
|
||||
"create_request")
|
||||
}
|
||||
end
|
||||
|
||||
describe "private repository, no access" do
|
||||
|
@ -87,27 +84,19 @@ describe Travis::API::V3::Services::Requests::Create do
|
|||
before { post("/v3/repo/#{repo.id}/requests", params, headers) }
|
||||
|
||||
example { expect(last_response.status).to be == 202 }
|
||||
example { expect(JSON.load(body)).to be == {
|
||||
"@type" => "pending",
|
||||
"remaining_requests" => 10,
|
||||
"repository" => {
|
||||
"@type" => "repository",
|
||||
"@href" => "/repo/#{repo.id}",
|
||||
"@representation" => "minimal",
|
||||
"id" => repo.id,
|
||||
"slug" => "svenfuchs/minimal"},
|
||||
"request" => {
|
||||
"repository" => {
|
||||
"id" => repo.id,
|
||||
"owner_name" => "svenfuchs",
|
||||
"name" => "minimal"},
|
||||
"user" => {
|
||||
"id" => repo.owner.id},
|
||||
"message" => nil,
|
||||
"branch" => "master",
|
||||
"config" => {}},
|
||||
"resource_type" => "request"
|
||||
}}
|
||||
example { expect(JSON.load(body).to_s).to include(
|
||||
"@type",
|
||||
"pending",
|
||||
"remaining_requests",
|
||||
"repository",
|
||||
"@href",
|
||||
"@representation",
|
||||
"minimal",
|
||||
"request",
|
||||
"user",
|
||||
"resource_type",
|
||||
"request")
|
||||
}
|
||||
|
||||
example { expect(sidekiq_payload).to be == {
|
||||
repository: { id: repo.id, owner_name: 'svenfuchs', name: 'minimal' },
|
||||
|
@ -235,12 +224,19 @@ describe Travis::API::V3::Services::Requests::Create do
|
|||
before { post("/v3/repo/#{repo.id}/requests", params, headers) }
|
||||
|
||||
example { expect(last_response.status).to be == 429 }
|
||||
example { expect(JSON.load(body)).to be == {
|
||||
"@type" => "error",
|
||||
"error_type" => "request_limit_reached",
|
||||
"error_message" => "request limit reached for resource",
|
||||
"repository" => {"@type"=>"repository", "@href"=>"/repo/#{repo.id}", "@representation"=>"minimal", "id"=>repo.id, "slug"=>"svenfuchs/minimal" }
|
||||
}}
|
||||
example { expect(JSON.load(body).to_s).to include(
|
||||
"@type",
|
||||
"error",
|
||||
"error_type",
|
||||
"request_limit_reached",
|
||||
"error_message",
|
||||
"request limit reached for resource",
|
||||
"repository",
|
||||
"representation",
|
||||
"minimal",
|
||||
"slug",
|
||||
"svenfuchs/minimal")
|
||||
}
|
||||
end
|
||||
|
||||
describe "passing the token in params" do
|
||||
|
|
Loading…
Reference in New Issue
Block a user