v3: add webmock for disable repo spec
This commit is contained in:
parent
620e38a2a0
commit
221b309653
1
Gemfile
1
Gemfile
|
@ -36,6 +36,7 @@ gem 'jemalloc'
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
gem 'rspec', '~> 2.13'
|
gem 'rspec', '~> 2.13'
|
||||||
|
gem 'webmock'
|
||||||
gem 'factory_girl', '~> 2.4.0'
|
gem 'factory_girl', '~> 2.4.0'
|
||||||
gem 'mocha', '~> 0.12'
|
gem 'mocha', '~> 0.12'
|
||||||
gem 'database_cleaner', '~> 0.8.0'
|
gem 'database_cleaner', '~> 0.8.0'
|
||||||
|
|
12
Gemfile.lock
12
Gemfile.lock
|
@ -157,6 +157,8 @@ GEM
|
||||||
composite_primary_keys (5.0.14)
|
composite_primary_keys (5.0.14)
|
||||||
activerecord (~> 3.2.0, >= 3.2.9)
|
activerecord (~> 3.2.0, >= 3.2.9)
|
||||||
connection_pool (2.1.1)
|
connection_pool (2.1.1)
|
||||||
|
crack (0.4.2)
|
||||||
|
safe_yaml (~> 1.0.0)
|
||||||
dalli (2.7.2)
|
dalli (2.7.2)
|
||||||
data_migrations (0.0.1)
|
data_migrations (0.0.1)
|
||||||
activerecord
|
activerecord
|
||||||
|
@ -184,6 +186,7 @@ GEM
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
net-http-persistent (>= 2.7)
|
net-http-persistent (>= 2.7)
|
||||||
net-http-pipeline
|
net-http-pipeline
|
||||||
|
hashdiff (0.2.3)
|
||||||
hashr (0.0.22)
|
hashr (0.0.22)
|
||||||
hike (1.2.3)
|
hike (1.2.3)
|
||||||
hitimes (1.2.3)
|
hitimes (1.2.3)
|
||||||
|
@ -270,6 +273,7 @@ GEM
|
||||||
rspec-expectations (2.99.2)
|
rspec-expectations (2.99.2)
|
||||||
diff-lcs (>= 1.1.3, < 2.0)
|
diff-lcs (>= 1.1.3, < 2.0)
|
||||||
rspec-mocks (2.99.2)
|
rspec-mocks (2.99.2)
|
||||||
|
safe_yaml (1.0.4)
|
||||||
sidekiq (3.3.0)
|
sidekiq (3.3.0)
|
||||||
celluloid (>= 0.16.0)
|
celluloid (>= 0.16.0)
|
||||||
connection_pool (>= 2.0.0)
|
connection_pool (>= 2.0.0)
|
||||||
|
@ -327,6 +331,10 @@ GEM
|
||||||
coercible (~> 1.0)
|
coercible (~> 1.0)
|
||||||
descendants_tracker (~> 0.0, >= 0.0.3)
|
descendants_tracker (~> 0.0, >= 0.0.3)
|
||||||
equalizer (~> 0.0, >= 0.0.9)
|
equalizer (~> 0.0, >= 0.0.9)
|
||||||
|
webmock (1.22.3)
|
||||||
|
addressable (>= 2.3.6)
|
||||||
|
crack (>= 0.3.2)
|
||||||
|
hashdiff
|
||||||
yard (0.8.7.6)
|
yard (0.8.7.6)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
|
@ -368,4 +376,8 @@ DEPENDENCIES
|
||||||
travis-support!
|
travis-support!
|
||||||
travis-yaml!
|
travis-yaml!
|
||||||
unicorn
|
unicorn
|
||||||
|
webmock
|
||||||
yard-sinatra!
|
yard-sinatra!
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
1.10.6
|
||||||
|
|
|
@ -8,6 +8,7 @@ require 'sinatra/test_helpers'
|
||||||
require 'logger'
|
require 'logger'
|
||||||
require 'gh'
|
require 'gh'
|
||||||
require 'multi_json'
|
require 'multi_json'
|
||||||
|
require 'webmock/rspec'
|
||||||
|
|
||||||
require 'travis/api/app'
|
require 'travis/api/app'
|
||||||
require 'travis/testing'
|
require 'travis/testing'
|
||||||
|
|
|
@ -2,20 +2,10 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Travis::API::V3::Services::Repository::Disable do
|
describe Travis::API::V3::Services::Repository::Disable do
|
||||||
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
|
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
|
||||||
# let(:sidekiq_payload) { JSON.load(Sidekiq::Client.last['args'].last.to_json) }
|
|
||||||
# let(:sidekiq_params) { Sidekiq::Client.last['args'].last.deep_symbolize_keys }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
repo.update_attributes!(active: true)
|
repo.update_attributes!(active: true)
|
||||||
Travis::Features.stubs(:owner_active?).returns(true)
|
Travis::Features.stubs(:owner_active?).returns(true)
|
||||||
@original_sidekiq = Sidekiq::Client
|
|
||||||
Sidekiq.send(:remove_const, :Client) # to avoid a warning
|
|
||||||
Sidekiq::Client = []
|
|
||||||
end
|
|
||||||
|
|
||||||
after do
|
|
||||||
Sidekiq.send(:remove_const, :Client) # to avoid a warning
|
|
||||||
Sidekiq::Client = @original_sidekiq
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "not authenticated" do
|
describe "not authenticated" do
|
||||||
|
@ -80,40 +70,29 @@ describe Travis::API::V3::Services::Repository::Disable do
|
||||||
describe "existing repository, push access" do
|
describe "existing repository, push access" do
|
||||||
let(:params) {{}}
|
let(:params) {{}}
|
||||||
let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) }
|
let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) }
|
||||||
let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }}
|
let(:headers) {{ 'Http-Authorization' => "token #{token}" }}
|
||||||
|
let(:uri) { "/v3/repo/#{repo.id}/disable" }
|
||||||
|
|
||||||
before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, push: true, admin: true) }
|
before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, push: true, admin: true) }
|
||||||
# this is failing because it's actually going to github
|
before { stub_request(:get, "https://api.github.com/repos/svenfuchs/minimal/hooks?per_page=100").
|
||||||
before { post("/v3/repo/#{repo.id}/disable", params, headers) }
|
with(:headers => {'Accept'=>'application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1', 'Accept-Charset'=>'utf-8', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'token github_oauth_token', 'Origin'=>'travis-ci.org', 'User-Agent'=>'Travis-API/3 Travis-CI/0.0.1 GH/0.14.0'}).
|
||||||
|
to_return(:status => 202, :body => "hello", :headers => {}) }
|
||||||
|
before { stub_request(:post, "http://v3/repo/1/disable").
|
||||||
|
with(:headers => headers) }
|
||||||
|
before { post(uri) }
|
||||||
|
|
||||||
example { expect(last_response.status).to be == 202 }
|
example { expect(last_response.status).to be == 202 }
|
||||||
example { expect(JSON.load(body).to_s).to include(
|
example { expect(JSON.load(body).to_s).to include(
|
||||||
"@type",
|
"@type",
|
||||||
"job",
|
"cxxxxxxxxxx",
|
||||||
"@href",
|
"@href",
|
||||||
"@representation",
|
"@representation",
|
||||||
"minimal",
|
"minimal",
|
||||||
"cancel",
|
"disable",
|
||||||
"id",
|
"id",
|
||||||
"state_change")
|
"xxxxxxxxxxx")
|
||||||
}
|
}
|
||||||
|
|
||||||
example { expect(sidekiq_payload).to be == {
|
|
||||||
"id" => "#{job.id}",
|
|
||||||
"user_id"=> repo.owner_id,
|
|
||||||
"source" => "api"}
|
|
||||||
}
|
|
||||||
|
|
||||||
example { expect(Sidekiq::Client.last['queue']).to be == 'job_cancellations' }
|
|
||||||
example { expect(Sidekiq::Client.last['class']).to be == 'Travis::Sidekiq::JobCancellation' }
|
|
||||||
|
|
||||||
describe "setting id has no effect" do
|
|
||||||
let(:params) {{ id: 42 }}
|
|
||||||
example { expect(sidekiq_payload).to be == {
|
|
||||||
"id" => "#{job.id}",
|
|
||||||
"user_id"=> repo.owner_id,
|
|
||||||
"source" => "api"}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,10 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Travis::API::V3::Services::Repository::Unstar do
|
describe Travis::API::V3::Services::Repository::Unstar do
|
||||||
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
|
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
|
||||||
let(:star) { Travis::API::V3::Models::Star.create(user_id: repo.owner_id, repository_id: repo.id) }
|
|
||||||
|
|
||||||
before do
|
# before do
|
||||||
Travis::Features.stubs(:owner_active?).returns(true)
|
# Travis::API::V3::Models::Star.create(user_id: repo.owner_id, repository_id: repo.id)
|
||||||
end
|
# end
|
||||||
|
|
||||||
describe "not authenticated" do
|
describe "not authenticated" do
|
||||||
before { post("/v3/repo/#{repo.id}/unstar") }
|
before { post("/v3/repo/#{repo.id}/unstar") }
|
||||||
|
@ -71,8 +70,10 @@ describe Travis::API::V3::Services::Repository::Unstar do
|
||||||
let(:params) {{}}
|
let(:params) {{}}
|
||||||
let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) }
|
let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) }
|
||||||
let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }}
|
let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }}
|
||||||
|
let(:star) { Travis::API::V3::Models::Star.create(user_id: repo.owner_id, repository_id: repo.id) }
|
||||||
before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, push: true) }
|
before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, push: true) }
|
||||||
before { post("/v3/repo/#{repo.id}/unstar", params, headers) }
|
before { post("/v3/repo/#{repo.id}/unstar", params, headers) }
|
||||||
|
after { star.delete }
|
||||||
|
|
||||||
example { expect(last_response.status).to be == 200 }
|
example { expect(last_response.status).to be == 200 }
|
||||||
example { expect(JSON.load(body).to_s).to include(
|
example { expect(JSON.load(body).to_s).to include(
|
||||||
|
@ -86,4 +87,27 @@ describe Travis::API::V3::Services::Repository::Unstar do
|
||||||
}
|
}
|
||||||
example { expect(Travis::API::V3::Models::Star.where(user_id: repo.owner_id, repository_id: repo.id)).to be == []}
|
example { expect(Travis::API::V3::Models::Star.where(user_id: repo.owner_id, repository_id: repo.id)).to be == []}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# TODO return an error when alreasy not on the star db
|
||||||
|
|
||||||
|
describe "existing repository, push access, already starred" do
|
||||||
|
let(:params) {{}}
|
||||||
|
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, push: true) }
|
||||||
|
before { post("/v3/repo/#{repo.id}/unstar", params, headers) }
|
||||||
|
|
||||||
|
example { expect(last_response.status).to be == 403 }
|
||||||
|
example { expect(JSON.load(body).to_s).to include(
|
||||||
|
"@type",
|
||||||
|
"star",
|
||||||
|
"@href",
|
||||||
|
"@representation",
|
||||||
|
"minimal",
|
||||||
|
"false",
|
||||||
|
"id")
|
||||||
|
}
|
||||||
|
example { expect(Travis::API::V3::Models::Star.where(user_id: repo.owner_id, repository_id: repo.id)).to be == "idushifuhds"}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user