Skip to content

Commit 963e568

Browse files
committed
Properly test JSON responses and fix wrong JSON string
- Parse JSON response instead of searching for a substring. - Decode 'X-Broker-Api-Originating-Identity' header value and check contained 'user_id' instead of comparing two base64 encoded strings. - Add missing '}' to JSON string.
1 parent 4867074 commit 963e568

File tree

3 files changed

+9
-8
lines changed

3 files changed

+9
-8
lines changed

spec/acceptance/broker_api_compatibility/broker_api_v2.14_spec.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,16 @@
4848

4949
it 'sends the broker the X-Broker-Api-Originating-Identity header' do
5050
user = VCAP::CloudController::User.make
51-
base64_encoded_user_id = Base64.strict_encode64("{\"user_id\":\"#{user.guid}\"}")
5251

5352
get("/v2/service_bindings/#{@binding_guid}/parameters",
5453
{}.to_json,
5554
headers_for(user, scopes: %w(cloud_controller.admin)))
5655

5756
expect(
5857
a_request(:get, %r{/v2/service_instances/#{@service_instance_guid}/service_bindings/[[:alnum:]-]+}).with do |req|
59-
req.headers['X-Broker-Api-Originating-Identity'] == "cloudfoundry #{base64_encoded_user_id}"
58+
m = req.headers['X-Broker-Api-Originating-Identity'].match /(?<platform>\S+) (?<value>\S+)/
59+
value = MultiJson.load(Base64.strict_decode64(m[:value]))
60+
m[:platform] == 'cloudfoundry' && value['user_id'] == user.guid
6061
end
6162
).to have_been_made
6263
end
@@ -177,7 +178,7 @@
177178
async_bind_service(status: 202)
178179

179180
service_binding = VCAP::CloudController::ServiceBinding.find(guid: @binding_guid)
180-
stub_request(:get, service_binding_url(service_binding)).to_return(status: 200, body: '{"credentials": {"foo": true}')
181+
stub_request(:get, service_binding_url(service_binding)).to_return(status: 200, body: '{"credentials": {"foo": true}}')
181182

182183
Delayed::Worker.new.work_off
183184

spec/acceptance/broker_api_compatibility/broker_api_versions_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
'broker_api_v2.11_spec.rb' => '99e61dc50ceb635b09b3bd16901a4fa6',
1818
'broker_api_v2.12_spec.rb' => '4023dffdcaae014556dcdba9f7d206bb',
1919
'broker_api_v2.13_spec.rb' => '573bbe3234c33aeccb1f02399dffdfe5',
20-
'broker_api_v2.14_spec.rb' => 'a1e7485793ba1916ea2f4080943530a5',
20+
'broker_api_v2.14_spec.rb' => 'a9fbd1d91bcc9c33c054c7854be1ab5a',
2121
'broker_api_v2.15_spec.rb' => 'c575fd37bc6dc8df4f773719ccef3288',
2222
}
2323
end

spec/unit/controllers/runtime/routes_controller_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ module VCAP::CloudController
601601
post '/v2/routes?generate_port=true', MultiJson.dump(req), headers_for(user)
602602

603603
expect(last_response.status).to eq(201)
604-
expect(last_response.body).to include("\"port\": #{generated_port}")
604+
expect(MultiJson.load(last_response.body)['entity']['port']).to eq(generated_port)
605605
expect(last_response.headers).not_to include('X-CF-Warnings')
606606
end
607607
end
@@ -617,7 +617,7 @@ module VCAP::CloudController
617617
post '/v2/routes?generate_port=true', MultiJson.dump(req), headers_for(user)
618618

619619
expect(last_response.status).to eq(201)
620-
expect(last_response.body).to include("\"port\": #{generated_port}")
620+
expect(MultiJson.load(last_response.body)['entity']['port']).to eq(generated_port)
621621
expect(last_response.headers).to include('X-Cf-Warnings')
622622
expect(last_response.headers['X-Cf-Warnings']).to include(port_override_warning)
623623
end
@@ -640,7 +640,7 @@ module VCAP::CloudController
640640
post '/v2/routes?generate_port=true', MultiJson.dump(req), headers_for(user)
641641

642642
expect(last_response.status).to eq(201)
643-
expect(last_response.body).to include("\"port\": #{generated_port + 1}")
643+
expect(MultiJson.load(last_response.body)['entity']['port']).to eq(generated_port + 1)
644644
expect(last_response.headers).not_to include('X-Cf-Warnings')
645645
end
646646
end
@@ -734,7 +734,7 @@ module VCAP::CloudController
734734
post '/v2/routes?generate_port=false', MultiJson.dump(req), headers_for(user)
735735

736736
expect(last_response.status).to eq(201)
737-
expect(last_response.body).to include("\"port\": #{port}")
737+
expect(MultiJson.load(last_response.body)['entity']['port']).to eq(port)
738738
end
739739
end
740740
end

0 commit comments

Comments
 (0)