diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/gitlab_net_spec.rb | 25 | ||||
-rw-r--r-- | spec/vcr_cassettes/notify-post-receive.yml | 44 |
2 files changed, 66 insertions, 3 deletions
diff --git a/spec/gitlab_net_spec.rb b/spec/gitlab_net_spec.rb index e3ab16c..1b64567 100644 --- a/spec/gitlab_net_spec.rb +++ b/spec/gitlab_net_spec.rb @@ -8,7 +8,8 @@ describe GitlabNet, vcr: true do let(:changes) { ['0000000000000000000000000000000000000000 92d0970eefd7acb6d548878925ce2208cfe2d2ec refs/heads/branch4'] } before do - gitlab_net.stub(:host).and_return('https://dev.gitlab.org/api/v3/internal') + gitlab_net.stub(:host_v3).and_return('https://dev.gitlab.org/api/v3/internal') + gitlab_net.stub(:host).and_return('https://dev.gitlab.org/api/v4/internal') gitlab_net.stub(:secret_token).and_return('a123') end @@ -138,6 +139,16 @@ describe GitlabNet, vcr: true do end end + describe '#notify_post_receive' do + let(:repo_path) { '/path/to/my/repo.git' } + + it 'returns true if notification was succesful' do + VCR.use_cassette('notify-post-receive') do + expect(gitlab_net.notify_post_receive(repo_path)).to be_true + end + end + end + describe :check_access do context 'ssh key with access to project' do it 'should allow pull access for dev.gitlab.org' do @@ -234,6 +245,14 @@ describe GitlabNet, vcr: true do subject { net.send :host } it { should include(net.send(:config).gitlab_url) } + it("uses API version 4") { should include("api/v4") } + end + + describe :host_v3 do + let(:net) { GitlabNet.new } + subject { net.send :host_v3 } + + it { should include(net.send(:config).gitlab_url) } it("uses API version 3") { should include("api/v3") } end @@ -258,14 +277,14 @@ describe GitlabNet, vcr: true do let(:password) { 'password' } let(:url) { URI 'http://localhost/' } subject { gitlab_net.send :http_request_for, :get, url } - + before do gitlab_net.send(:config).http_settings.stub(:[]).with('user') { user } gitlab_net.send(:config).http_settings.stub(:[]).with('password') { password } get.should_receive(:basic_auth).with(user, password).once get.should_receive(:set_form_data).with(hash_including(secret_token: 'a123')).once end - + it { should_not be_nil } end diff --git a/spec/vcr_cassettes/notify-post-receive.yml b/spec/vcr_cassettes/notify-post-receive.yml new file mode 100644 index 0000000..9eeb297 --- /dev/null +++ b/spec/vcr_cassettes/notify-post-receive.yml @@ -0,0 +1,44 @@ +--- +http_interactions: +- request: + method: post + uri: https://dev.gitlab.org/api/v4/internal/notify_post_receive + body: + encoding: US-ASCII + string: repo_path=%2Fpath%2Fto%2Fmy%2Frepo.git&secret_token=a123 + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Cache-Control: + - max-age=0, private, must-revalidate + Content-Length: + - '2' + Content-Type: + - application/json + Date: + - Fri, 10 Feb 2017 17:06:53 GMT + Etag: + - W/"99914b932bd37a50b983c5e7c90ae93b" + Vary: + - Origin + X-Request-Id: + - cfefede6-9400-4ca5-a61d-2a519405295c + X-Runtime: + - '20.623406' + body: + encoding: UTF-8 + string: "{}" + http_version: + recorded_at: Fri, 10 Feb 2017 17:06:53 GMT +recorded_with: VCR 2.4.0 |