Commit 14738fae authored by Ash McKenzie's avatar Ash McKenzie

primary_repo can be a String or a Hash

parent 4656cd71
...@@ -26,52 +26,62 @@ describe Action::Custom do ...@@ -26,52 +26,62 @@ describe Action::Custom do
end end
context 'that are valid' do context 'that are valid' do
let(:payload) do where(:primary_repo_data) do
{ [
'action' => 'geo_proxy_to_primary', [ 'http://localhost:3001/user1/repo1.git' ],
'data' => { [{ 'http' => 'http://localhost:3001/user1/repo1.git' }],
'api_endpoints' => %w{/api/v4/fake/info_refs /api/v4/fake/push}, [{ 'http' => 'http://localhost:3001/user1/repo1.git', 'ssh' => 'ssh://user@localhost:3002/user1/repo1.git' }]
'gl_username' => 'user1', ]
'primary_repo' => 'http://localhost:3001/user1/repo1.git'
}
}
end end
context 'and responds correctly' do with_them do
it 'prints a Base64 encoded result to $stdout' do let(:payload) do
VCR.use_cassette("custom-action-ok") do {
expect($stdout).to receive(:print).with('info_refs-result').ordered 'action' => 'geo_proxy_to_primary',
expect($stdout).to receive(:print).with('push-result').ordered 'data' => {
subject.execute 'api_endpoints' => %w{/api/v4/fake/info_refs /api/v4/fake/push},
end 'gl_username' => 'user1',
'primary_repo' => primary_repo_data
}
}
end end
context 'with results printed to $stdout' do context 'and responds correctly' do
before do it 'prints a Base64 encoded result to $stdout' do
allow($stdout).to receive(:print).with('info_refs-result') VCR.use_cassette("custom-action-ok") do
allow($stdout).to receive(:print).with('push-result') expect($stdout).to receive(:print).with('info_refs-result').ordered
expect($stdout).to receive(:print).with('push-result').ordered
subject.execute
end
end end
it 'prints a message to $stderr' do context 'with results printed to $stdout' do
VCR.use_cassette("custom-action-ok-with-message") do before do
expect { subject.execute }.to output(/NOTE: Message here/).to_stderr allow($stdout).to receive(:print).with('info_refs-result')
allow($stdout).to receive(:print).with('push-result')
end end
end
it 'returns an instance of Net::HTTPCreated' do it 'prints a message to $stderr' do
VCR.use_cassette("custom-action-ok") do VCR.use_cassette("custom-action-ok-with-message") do
expect(subject.execute ).to be_instance_of(Net::HTTPCreated) expect { subject.execute }.to output(/NOTE: Message here/).to_stderr
end
end
it 'returns an instance of Net::HTTPCreated' do
VCR.use_cassette("custom-action-ok") do
expect(subject.execute ).to be_instance_of(Net::HTTPCreated)
end
end end
end end
end end
end
context 'but responds incorrectly' do context 'but responds incorrectly' do
it 'raises an UnsuccessfulError exception' do it 'raises an UnsuccessfulError exception' do
VCR.use_cassette("custom-action-ok-not-json") do VCR.use_cassette("custom-action-ok-not-json") do
expect { expect {
subject.execute subject.execute
}.to raise_error(Action::Custom::UnsuccessfulError, 'Response was not valid JSON') }.to raise_error(Action::Custom::UnsuccessfulError, 'Response was not valid JSON')
end
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment