spec/docker/util_spec.rb in docker-api-1.6.0 vs spec/docker/util_spec.rb in docker-api-1.7.0
- old
+ new
@@ -38,6 +38,89 @@
it 'parses the JSON into a Hash' do
subject.should == { 'yolo' => 'swag' }
end
end
end
+
+ describe '.build_auth_header' do
+ subject { described_class }
+
+ let(:credentials) {
+ {
+ :username => 'test',
+ :password => 'password',
+ :email => 'test@example.com',
+ :serveraddress => 'https://registry.com/'
+ }
+ }
+ let(:credential_string) { credentials.to_json }
+ let(:x_registry_auth) { Base64.encode64(credential_string).gsub(/\n/, '') }
+ let(:expected_headers) { { 'X-Registry-Auth' => x_registry_auth } }
+
+
+ context 'given credentials as a Hash' do
+ it 'returns an X-Registry-Auth header encoded' do
+ expect(subject.build_auth_header(credentials)).to eq(expected_headers)
+ end
+ end
+
+ context 'given credentials as a String' do
+ it 'returns an X-Registry-Auth header encoded' do
+ expect(
+ subject.build_auth_header(credential_string)
+ ).to eq(expected_headers)
+ end
+ end
+ end
+
+ describe '#decipher_messages' do
+ context 'given both standard out and standard error' do
+ let(:raw_text) {
+ "\x01\x00\x00\x00\x00\x00\x00\x01a\x02\x00\x00\x00\x00\x00\x00\x01b"
+ }
+ let(:expected_messages) { [["a"], ["b"]] }
+
+ it "returns a single message" do
+ expect(
+ Docker::Util.decipher_messages(raw_text)
+ ).to eq(expected_messages)
+ end
+ end
+
+ context 'given a single header' do
+ let(:raw_text) { "\x01\x00\x00\x00\x00\x00\x00\x01a" }
+ let(:expected_messages) { [["a"], []] }
+
+ it "returns a single message" do
+ expect(
+ Docker::Util.decipher_messages(raw_text)
+ ).to eq(expected_messages)
+ end
+ end
+
+ context 'given two headers' do
+ let(:raw_text) {
+ "\x01\x00\x00\x00\x00\x00\x00\x01a\x01\x00\x00\x00\x00\x00\x00\x01b"
+ }
+ let(:expected_messages) { [["a", "b"], []] }
+
+ it "returns both messages" do
+ expect(
+ Docker::Util.decipher_messages(raw_text)
+ ).to eq(expected_messages)
+ end
+ end
+
+ context 'given a header for text longer then 255 characters' do
+ let(:raw_text) {
+ "\x01\x00\x00\x00\x00\x00\x01\x01" + ("a" * 257)
+ }
+ let(:expected_messages) { [[("a" * 257)], []] }
+
+ it "returns both messages" do
+ expect(
+ Docker::Util.decipher_messages(raw_text)
+ ).to eq(expected_messages)
+ end
+ end
+ end
end