summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/gitlab_net_spec.rb25
-rw-r--r--spec/vcr_cassettes/notify-post-receive.yml44
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