Skip to content

Commit b62a643

Browse files
committed
Limit route policy includes to 'route' and 'source' only
Remove 'app', 'space', and 'organization' as separate include values. The 'source' include already resolves the underlying app/space/org from the source string (e.g. cf:app:<guid>), making the individual keywords redundant and confusing — especially since space_guids filters by route space while include=space would include the source space.
1 parent 991d44b commit b62a643

6 files changed

Lines changed: 20 additions & 21 deletions

File tree

app/decorators/include_route_policy_source_decorator.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ class IncludeRoutePolicySourceDecorator
88
def self.match?(include_params)
99
return false unless include_params
1010

11-
# Match if any of: source, app, space, organization
12-
include_params.intersect?(%w[source app space organization])
11+
include_params.include?('source')
1312
end
1413

1514
def self.decorate(hash, route_policies)

app/messages/route_policies_list_message.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class RoutePoliciesListMessage < ListMessage
1212
]
1313

1414
validates_with NoAdditionalParamsValidator
15-
validates_with IncludeParamValidator, valid_values: %w[source route app space organization]
15+
validates_with IncludeParamValidator, valid_values: %w[source route]
1616

1717
validates :space_guids, array: true, allow_nil: true
1818
validates :source_guids, array: true, allow_nil: true

app/messages/route_policy_show_message.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class RoutePolicyShowMessage < BaseMessage
55
register_allowed_keys [:include]
66

77
validates_with NoAdditionalParamsValidator
8-
validates_with IncludeParamValidator, valid_values: %w[source route app space organization]
8+
validates_with IncludeParamValidator, valid_values: %w[source route]
99

1010
def self.from_params(params)
1111
super(params, %w[include])

docs/v3/source/includes/resources/route_policies/_get.md.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Content-Type: application/json
2828

2929
Name | Type | Description
3030
---- | ---- | ------------
31-
**include** | _list of strings_ | Optionally include a list of unique related resources in the response; valid values are `route`, `app`, `space`, `organization`, and `source` (which includes the app, space, or organization referenced by the source field)
31+
**include** | _list of strings_ | Optionally include a list of unique related resources in the response; valid values are `route` and `source` (source includes the app, space, or organization referenced by the source field)
3232

3333
#### Permitted roles
3434

docs/v3/source/includes/resources/route_policies/_list.md.erb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ curl "https://api.example.org/v3/route_policies?include=route,source" \
5757
| **per_page** | _integer_ | Number of results per page; valid values are 1 through 5000
5858
| **order_by** | _string_ | Value to sort by. Defaults to ascending; prepend with `-` to sort descending. Valid values are `created_at`, `updated_at`
5959
| **label_selector** | _string_ | A query string containing a list of [label selector](#labels-and-selectors) requirements
60-
| **include** | _string_ | Optionally include related resources in the response; valid values are `route`, `app`, `space`, `organization`, and `source` (which includes app, space, or organization based on the source type)
60+
| **include** | _string_ | Optionally include related resources in the response; valid values are `route` and `source` (source includes the app, space, or organization based on the source type)
6161
| **created_ats** | _[timestamp](#timestamps)_ | Timestamp to filter by. When filtering on equality, several comma-delimited timestamps may be passed. Also supports filtering with [relational operators](#relational-operators)
6262
| **updated_ats** | _[timestamp](#timestamps)_ | Timestamp to filter by. When filtering on equality, several comma-delimited timestamps may be passed. Also supports filtering with [relational operators](#relational-operators)
6363

@@ -68,7 +68,7 @@ curl "https://api.example.org/v3/route_policies?include=route,source" \
6868
- **Filter by source type**: `GET /v3/route_policies?sources=cf:any`
6969
- **Find policies referencing a specific app**: `GET /v3/route_policies?source_guids=d76446a1-f429-4444-8797-be2f78b75b08`
7070
- **Include source resources**: `GET /v3/route_policies?include=source` (batch-loads the app, space, or org referenced in each policy's source)
71-
- **Include route and app**: `GET /v3/route_policies?include=route,app`
71+
- **Include route and source**: `GET /v3/route_policies?include=route,source`
7272

7373
#### Use cases
7474

spec/unit/messages/route_policies_list_message_spec.rb

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ module VCAP::CloudController
1414
'page' => 1,
1515
'per_page' => 5,
1616
'order_by' => 'created_at',
17-
'include' => 'source,route,app,space,organization'
17+
'include' => 'source,route'
1818
}
1919
end
2020

@@ -30,7 +30,7 @@ module VCAP::CloudController
3030
expect(message.page).to eq(1)
3131
expect(message.per_page).to eq(5)
3232
expect(message.order_by).to eq('created_at')
33-
expect(message.include).to eq(%w[source route app space organization])
33+
expect(message.include).to eq(%w[source route])
3434
end
3535

3636
it 'converts requested keys to symbols' do
@@ -59,7 +59,7 @@ module VCAP::CloudController
5959
page: 1,
6060
per_page: 5,
6161
order_by: 'created_at',
62-
include: %w[source route app space organization]
62+
include: %w[source route]
6363
}
6464
end
6565

@@ -81,7 +81,7 @@ module VCAP::CloudController
8181
page: 1,
8282
per_page: 5,
8383
order_by: 'created_at',
84-
include: %w[source route app space organization]
84+
include: %w[source route]
8585
})
8686
end.not_to raise_error
8787
end
@@ -106,22 +106,22 @@ module VCAP::CloudController
106106
message = RoutePoliciesListMessage.from_params({ 'include' => 'route' })
107107
expect(message).to be_valid
108108

109-
message = RoutePoliciesListMessage.from_params({ 'include' => 'app' })
110-
expect(message).to be_valid
111-
112-
message = RoutePoliciesListMessage.from_params({ 'include' => 'space' })
113-
expect(message).to be_valid
114-
115-
message = RoutePoliciesListMessage.from_params({ 'include' => 'organization' })
116-
expect(message).to be_valid
117-
118-
message = RoutePoliciesListMessage.from_params({ 'include' => 'source,route,app,space,organization' })
109+
message = RoutePoliciesListMessage.from_params({ 'include' => 'source,route' })
119110
expect(message).to be_valid
120111
end
121112

122113
it 'rejects invalid include values' do
123114
message = RoutePoliciesListMessage.from_params({ 'include' => 'invalid' })
124115
expect(message).not_to be_valid
116+
117+
message = RoutePoliciesListMessage.from_params({ 'include' => 'app' })
118+
expect(message).not_to be_valid
119+
120+
message = RoutePoliciesListMessage.from_params({ 'include' => 'space' })
121+
expect(message).not_to be_valid
122+
123+
message = RoutePoliciesListMessage.from_params({ 'include' => 'organization' })
124+
expect(message).not_to be_valid
125125
end
126126
end
127127

0 commit comments

Comments
 (0)