John Cowen 482426b13e UI: ACL Roles (#5635)
Adds support for ACL Roles and Service Identities CRUD, along with necessary changes to Tokens, and the CSS improvements required.

Also includes refinements/improvements for easier testing of deeply nested components.

1. ember-data adapter/serializer/model triplet for Roles
2. repository, form/validations and searching filter for Roles
3. Moves potentially, repeated, or soon to to repeated functionality
into a mixin (mainly for 'many policy' relationships)
4. A few styling tweaks for little edge cases around roles
5. Router additions, Route, Controller and templates for Roles

Also see: 

* UI: ACL Roles cont. plus Service Identities (#5661 and #5720)
2019-05-01 18:22:37 +00:00

140 lines
4.7 KiB
Gherkin

@setupApplicationTest
Feature: dc / acls / roles / as many / add new: Add new
Background:
Given 1 datacenter model with the value "datacenter"
And 1 token model from yaml
---
AccessorID: key
Description: The Description
Roles: ~
Policies: ~
ServiceIdentities: ~
---
And 1 policy model from yaml
---
ID: policy-1
Name: policy
---
When I visit the token page for yaml
---
dc: datacenter
token: key
---
Then the url should be /datacenter/acls/tokens/key
And I click roles.create
Then I fill in the roles.form with yaml
---
Name: New-Role
Description: New Role Description
---
Scenario: Add Policy-less Role
And I click submit on the roles.form
Then the last PUT request was made to "/v1/acl/role?dc=datacenter" with the body from yaml
---
Name: New-Role
Description: New Role Description
---
And I submit
Then a PUT request is made to "/v1/acl/token/key?dc=datacenter" with the body from yaml
---
Description: The Description
Roles:
- Name: New-Role
ID: ee52203d-989f-4f7a-ab5a-2bef004164ca-1
---
Then the url should be /datacenter/acls/tokens
And "[data-notification]" has the "notification-update" class
And "[data-notification]" has the "success" class
Scenario: Add Role that has an existing Policy
And I click "#new-role-toggle + div .ember-power-select-trigger"
And I click ".ember-power-select-option:first-child"
And I click submit on the roles.form
Then the last PUT request was made to "/v1/acl/role?dc=datacenter" with the body from yaml
---
Name: New-Role
Description: New Role Description
Policies:
- ID: policy-1
Name: policy
---
And I submit
Then a PUT request is made to "/v1/acl/token/key?dc=datacenter" with the body from yaml
---
Description: The Description
Roles:
- Name: New-Role
ID: ee52203d-989f-4f7a-ab5a-2bef004164ca-1
---
Then the url should be /datacenter/acls/tokens
And "[data-notification]" has the "notification-update" class
And "[data-notification]" has the "success" class
Scenario: Add Role and add a new Policy
And I click roles.form.policies.create
Then I fill in the roles.form.policies.form with yaml
---
Name: New-Policy
Description: New Policy Description
Rules: key {}
---
# This next line is actually the popped up policyForm due to the way things currently work
And I click submit on the roles.form
Then the last PUT request was made to "/v1/acl/policy?dc=datacenter" with the body from yaml
---
Name: New-Policy
Description: New Policy Description
Rules: key {}
---
And I click submit on the roles.form
Then the last PUT request was made to "/v1/acl/role?dc=datacenter" with the body from yaml
---
Name: New-Role
Description: New Role Description
Policies:
# TODO: Ouch, we need to do deep partial comparisons here
- ID: ee52203d-989f-4f7a-ab5a-2bef004164ca-1
Name: New-Policy
---
And I submit
Then a PUT request is made to "/v1/acl/token/key?dc=datacenter" with the body from yaml
---
Description: The Description
Roles:
- Name: New-Role
ID: ee52203d-989f-4f7a-ab5a-2bef004164ca-1
---
Then the url should be /datacenter/acls/tokens
And "[data-notification]" has the "notification-update" class
And "[data-notification]" has the "success" class
Scenario: Add Role and add a new Service Identity
And I click roles.form.policies.create
Then I fill in the roles.form.policies.form with yaml
---
Name: New-Service-Identity
---
And I click "[value='service-identity']"
# This next line is actually the popped up policyForm due to the way things currently work
And I click submit on the roles.form
And I click submit on the roles.form
Then the last PUT request was made to "/v1/acl/role?dc=datacenter" with the body from yaml
---
Name: New-Role
Description: New Role Description
ServiceIdentities:
- ServiceName: New-Service-Identity
---
And I submit
Then a PUT request is made to "/v1/acl/token/key?dc=datacenter" with the body from yaml
---
Description: The Description
Roles:
- Name: New-Role
ID: ee52203d-989f-4f7a-ab5a-2bef004164ca-1
---
Then the url should be /datacenter/acls/tokens
And "[data-notification]" has the "notification-update" class
And "[data-notification]" has the "success" class
@ignore:
Scenario: Click the cancel form
Then ok
# And I click cancel on the policyForm