Skip to content
This repository was archived by the owner on Jun 2, 2021. It is now read-only.

Commit 506a333

Browse files
authored
v3(services): binding request spec shared examples (cloudfoundry#1951)
Some shared examples that are used for all list request specs were added - although the implementation already existed as a result of using common code. [#171359160](https://www.pivotaltracker.com/story/show/171359160)
1 parent 036ec09 commit 506a333

2 files changed

Lines changed: 82 additions & 0 deletions

File tree

spec/request/service_credential_bindings_spec.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,33 @@
1313
end
1414

1515
describe 'GET /v3/service_credential_bindings' do
16+
it_behaves_like 'request_spec_shared_examples.rb list query endpoint' do
17+
let(:request) { 'v3/service_credential_bindings' }
18+
let(:message) { VCAP::CloudController::ServiceCredentialBindingListMessage }
19+
let(:user_header) { headers_for(user) }
20+
let(:params) do
21+
{
22+
names: 'foo bar',
23+
include: 'app,service_instance',
24+
service_instance_names: %w(foo bar),
25+
service_instance_guids: %w(foo bar),
26+
service_plan_names: %w(foo bar),
27+
service_plan_guids: %w(foo bar),
28+
service_offering_names: %w(foo bar),
29+
service_offering_guids: %w(foo bar),
30+
app_names: %w(foo bar),
31+
app_guids: %w(foo bar),
32+
type: 'app',
33+
per_page: '10',
34+
page: 2,
35+
order_by: 'updated_at',
36+
guids: 'foo,bar',
37+
created_ats: "#{Time.now.utc.iso8601},#{Time.now.utc.iso8601}",
38+
updated_ats: { gt: Time.now.utc.iso8601 },
39+
}
40+
end
41+
end
42+
1643
describe 'order_by' do
1744
it_behaves_like 'list endpoint order_by name', '/v3/service_credential_bindings' do
1845
let(:resource_klass) { VCAP::CloudController::ServiceBinding }

spec/request/service_route_bindings_spec.rb

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,55 @@
33

44
RSpec.describe 'v3 service route bindings' do
55
describe 'GET /v3/service_route_bindings' do
6+
# Because route bindings don't have names, we can't use the 'paginated response' shared example
7+
describe 'behaving like a paginated resource' do
8+
let!(:resources) { Array.new(2) { VCAP::CloudController::RouteBinding.make } }
9+
10+
it 'returns pagination information' do
11+
get '/v3/service_route_bindings?per_page=1', nil, admin_headers
12+
13+
expect(last_response).to have_status_code(200)
14+
expect_route_bindings([resources[0]])
15+
16+
expect(parsed_response['pagination']['total_results']).to eq(resources.length)
17+
expect(parsed_response['pagination']['total_pages']).to eq(resources.length)
18+
expect(parsed_response['pagination']['first']['href']).to include('/v3/service_route_bindings?page=1&per_page=1')
19+
expect(parsed_response['pagination']['next']['href']).to include('/v3/service_route_bindings?page=2&per_page=1')
20+
expect(parsed_response['pagination']['last']['href']).to include("/v3/service_route_bindings?page=#{resources.length}&per_page=1")
21+
end
22+
23+
it 'keeps filtering information in links' do
24+
resources_guids = resources.map(&:guid)
25+
get "/v3/service_route_bindings?per_page=1&guids=#{resources_guids.join(',')}", nil, admin_headers
26+
27+
expect(last_response).to have_status_code(200)
28+
expect_route_bindings([resources[0]])
29+
30+
expect(parsed_response['pagination']['next']['href']).to include("guids=#{resources_guids.join('%2C')}")
31+
end
32+
end
33+
34+
it_behaves_like 'request_spec_shared_examples.rb list query endpoint' do
35+
let(:request) { 'v3/service_route_bindings' }
36+
let(:message) { VCAP::CloudController::ServiceRouteBindingsListMessage }
37+
let(:user_header) { headers_for(user) }
38+
let(:params) do
39+
{
40+
include: 'route,service_instance',
41+
route_guids: %w(foo bar),
42+
service_instance_names: %w(foo bar),
43+
service_instance_guids: %w(foo bar),
44+
per_page: '10',
45+
page: 2,
46+
order_by: 'updated_at',
47+
label_selector: 'foo==bar',
48+
guids: 'foo,bar',
49+
created_ats: "#{Time.now.utc.iso8601},#{Time.now.utc.iso8601}",
50+
updated_ats: { gt: Time.now.utc.iso8601 },
51+
}
52+
end
53+
end
54+
655
describe 'no bindings to list' do
756
let(:api_call) { ->(user_headers) { get '/v3/service_route_bindings', nil, user_headers } }
857
let(:expected_codes_and_responses) do
@@ -183,6 +232,12 @@
183232
expect(last_response).to have_status_code(400)
184233
end
185234
end
235+
236+
describe 'order_by' do
237+
it_behaves_like 'list endpoint order_by timestamps', '/v3/service_route_bindings' do
238+
let(:resource_klass) { VCAP::CloudController::RouteBinding }
239+
end
240+
end
186241
end
187242

188243
describe 'GET /v3/service_route_bindings/:guid' do

0 commit comments

Comments
 (0)