Merge branch 'develop' into chore-form-width

This commit is contained in:
Randall Morey authored and GitHub committed 2020-09-27 13:54:31 -04:00
commit e62fd379e1
102 files changed
+469 -463

No files matched your search

@@ -3,6 +3,7 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
<form.input
@@ -16,6 +17,7 @@
@type="name"
@value={{@model.name}}
@label={{t "form.name.label"}}
@helperText={{t "form.name.help"}}
@error={{@model.errors.name}}
readonly={{false}}
as |field|>
@@ -33,6 +35,7 @@
@type="description"
@value={{@model.description}}
@label={{t "form.description.label"}}
@helperText={{t "form.description.help"}}
@error={{@model.errors.description}}
disabled={{@model.isSaving}}
readonly={{false}}
@@ -85,6 +88,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
@@ -3,6 +3,7 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
<form.input
@@ -16,6 +17,7 @@
@type="name"
@value={{@model.name}}
@label={{t "form.name.label"}}
@helperText={{t "form.name.help"}}
@error={{@model.errors.name}}
readonly={{false}}
as |field|>
@@ -33,6 +35,7 @@
@type="description"
@value={{@model.description}}
@label={{t "form.description.label"}}
@helperText={{t "form.description.help"}}
@error={{@model.errors.description}}
disabled={{@model.isSaving}}
readonly={{false}}
@@ -48,6 +51,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
</Rose::Form>
@@ -9,7 +9,7 @@
>
<form.actions
@submitText={{t "actions.add-members"}}
@submitText={{t "resources.group.actions.add-members"}}
@cancelText={{t "actions.cancel"}} />
<Rose::Table as |table|>
@@ -3,6 +3,7 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
@@ -11,6 +12,7 @@
@type="name"
@value={{@model.name}}
@label={{t "form.name.label"}}
@helperText={{t "form.name.help"}}
@error={{@model.errors.name}}
readonly={{false}}
as |field|>
@@ -28,6 +30,7 @@
@type="description"
@value={{@model.description}}
@label={{t "form.description.label"}}
@helperText={{t "form.description.help"}}
@error={{@model.errors.description}}
disabled={{@model.isSaving}}
readonly={{false}}
@@ -43,6 +46,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
@@ -3,6 +3,7 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
@@ -11,6 +12,7 @@
@type="name"
@value={{@model.name}}
@label={{t "form.name.label"}}
@helperText={{t "form.name.help"}}
@error={{@model.errors.name}}
readonly={{false}}
as |field|>
@@ -28,6 +30,7 @@
@type="description"
@value={{@model.description}}
@label={{t "form.description.label"}}
@helperText={{t "form.description.help"}}
@error={{@model.errors.description}}
disabled={{@model.isSaving}}
readonly={{false}}
@@ -43,6 +46,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
@@ -43,9 +43,9 @@
{{#unless this.hasAvailableHosts}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.no-host-set-hosts"}} as |message|>
<Rose::Message @title={{t "resources.host-set.host.messages.add.title"}} as |message|>
<message.description>
{{t "descriptions.no-host-set-hosts"}}
{{t "resources.host-set.host.messages.add.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.host-catalogs.host-catalog.host-sets.host-set.hosts">
<Rose::Icon @name="chevron-left" />
@@ -3,11 +3,12 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
<form.input
@value={{t (concat 'host-set.types.' @model.type)}}
@value={{t (concat 'resources.host-set.types.' @model.type)}}
@label={{t "form.type.label"}}
readonly={{true}}
@disabled={{true}} />
@@ -17,6 +18,7 @@
@type="name"
@value={{@model.name}}
@label={{t "form.name.label"}}
@helperText={{t "form.name.help"}}
@error={{@model.errors.name}}
readonly={{false}}
as |field|>
@@ -34,6 +36,7 @@
@type="description"
@value={{@model.description}}
@label={{t "form.description.label"}}
@helperText={{t "form.description.help"}}
@error={{@model.errors.description}}
disabled={{@model.isSaving}}
readonly={{false}}
@@ -49,6 +52,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
+3 -1
View File
@@ -3,11 +3,12 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
<form.input
@value={{t (concat 'host.types.' @model.type)}}
@value={{t (concat 'resources.host.types.' @model.type)}}
@label={{t "form.type.label"}}
readonly={{true}}
@disabled={{true}} />
@@ -69,6 +70,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
@@ -3,6 +3,7 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
@@ -11,6 +12,7 @@
@type="name"
@value={{@model.name}}
@label={{t "form.name.label"}}
@helperText={{t "form.name.help"}}
@error={{@model.errors.name}}
readonly={{false}}
as |field|>
@@ -28,6 +30,7 @@
@type="description"
@value={{@model.description}}
@label={{t "form.description.label"}}
@helperText={{t "form.description.help"}}
@error={{@model.errors.description}}
disabled={{@model.isSaving}}
readonly={{false}}
@@ -43,6 +46,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
@@ -3,6 +3,7 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
@@ -11,6 +12,7 @@
@type="name"
@value={{@model.name}}
@label={{t "form.name.label"}}
@helperText={{t "form.name.help"}}
@error={{@model.errors.name}}
readonly={{false}}
as |field|>
@@ -28,6 +30,7 @@
@type="description"
@value={{@model.description}}
@label={{t "form.description.label"}}
@helperText={{t "form.description.help"}}
@error={{@model.errors.description}}
disabled={{@model.isSaving}}
readonly={{false}}
@@ -43,6 +46,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
@@ -31,7 +31,7 @@
</row.cell>
<row.cell>{{principal.name}}</row.cell>
<row.cell>
<Rose::Badge>{{t (concat 'resources.' principal.constructor.modelName)}}</Rose::Badge>
<Rose::Badge>{{t (concat 'resources.role.principal.types.' principal.constructor.modelName)}}</Rose::Badge>
</row.cell>
</body.row>
{{/each}}
@@ -43,9 +43,9 @@
{{#unless this.hasAvailablePrincipals}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.no-principals-available"}} as |message|>
<Rose::Message @title={{t "resources.role.principal.messages.none.title"}} as |message|>
<message.description>
{{t "descriptions.no-principals-available"}}
{{t "resources.role.principal.messages.none.description"}}
</message.description>
<message.link @route="scopes.scope.roles.role.principals">
<Rose::Icon @name="chevron-left" />
@@ -14,7 +14,7 @@
@value={{this.newGrantString}}
as |input|>
<item.key>
<input.label>{{t "titles.new-grant"}}</input.label>
<input.label>{{t "resources.role.grant.actions.create"}}</input.label>
</item.key>
<item.cell>
<input.field title={{t "form.grant.help"}} />
+4 -2
View File
@@ -3,6 +3,7 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
@@ -11,8 +12,8 @@
@type="name"
@value={{@model.name}}
@label={{t "form.name.label"}}
@error={{@model.errors.name}}
@helperText={{t "form.name.help"}}
@error={{@model.errors.name}}
readonly={{false}}
as |field|>
{{#if @model.errors.name}}
@@ -29,8 +30,8 @@
@type="description"
@value={{@model.description}}
@label={{t "form.description.label"}}
@error={{@model.errors.description}}
@helperText={{t "form.description.help"}}
@error={{@model.errors.description}}
disabled={{@model.isSaving}}
readonly={{false}}
as |field|>
@@ -45,6 +46,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
@@ -1,44 +1,60 @@
<Rose::Form
class="full-width"
@onSubmit={{fn this.submit @submit}}
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
as |form|
>
{{#if this.hasAvailableHostSets}}
<Rose::Form
class="full-width"
@onSubmit={{fn this.submit @submit}}
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
as |form|
>
<form.actions
@submitText={{t "actions.add-host-sets"}}
@cancelText={{t "actions.cancel"}} />
<form.actions
@submitText={{t "actions.add-host-sets"}}
@cancelText={{t "actions.cancel"}} />
<Rose::Table as |table|>
<table.header as |header|>
<header.row as |row|>
<row.headerCell>{{t 'form.id.label'}}</row.headerCell>
<row.headerCell>{{t 'form.name.label'}}</row.headerCell>
<row.headerCell>{{t 'form.type.label'}}</row.headerCell>
<row.headerCell>{{t 'resources.host-catalog'}}</row.headerCell>
</header.row>
</table.header>
<table.body as |body|>
{{#each this.filteredHostSets as |hostSet|}}
<body.row as |row|>
<row.cell>
<form.checkbox
@label={{hostSet.id}}
@description={{hostSet.description}}
onChange={{fn this.toggleHostSet hostSet}} />
</row.cell>
<row.cell>{{hostSet.name}}</row.cell>
<row.cell>
<Rose::Badge>{{hostSet.type}}</Rose::Badge>
</row.cell>
<row.cell>
<code>{{hostSet.host_catalog_id}}</code>
</row.cell>
</body.row>
{{/each}}
</table.body>
</Rose::Table>
<Rose::Table as |table|>
<table.header as |header|>
<header.row as |row|>
<row.headerCell>{{t 'form.id.label'}}</row.headerCell>
<row.headerCell>{{t 'form.name.label'}}</row.headerCell>
<row.headerCell>{{t 'form.type.label'}}</row.headerCell>
<row.headerCell>{{t 'resources.host-catalog.title_plural'}}</row.headerCell>
</header.row>
</table.header>
<table.body as |body|>
{{#each this.filteredHostSets as |hostSet|}}
<body.row as |row|>
<row.cell>
<form.checkbox
@label={{hostSet.id}}
@description={{hostSet.description}}
onChange={{fn this.toggleHostSet hostSet}} />
</row.cell>
<row.cell>{{hostSet.name}}</row.cell>
<row.cell>
<Rose::Badge>{{t (concat 'resources.host-set.types.' hostSet.type)}}</Rose::Badge>
</row.cell>
<row.cell>
<code>{{hostSet.host_catalog_id}}</code>
</row.cell>
</body.row>
{{/each}}
</table.body>
</Rose::Table>
</Rose::Form>
</Rose::Form>
{{/if}}
{{#unless this.hasAvailableHostSets}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "resources.target.host-set.messages.none.title"}} as |message|>
<message.description>
{{t "resources.target.host-set.messages.none.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.targets.target.host-sets">
<Rose::Icon @name="chevron-left" />
{{t "actions.back"}}
</message.link>
</Rose::Message>
</Rose::Layout::Centered>
{{/unless}}
@@ -11,6 +11,16 @@ export default class FormTargetAddHostSetsComponent extends Component {
*/
selectedHostSetIDs = A();
/**
* Checks for unassigned hostsets.
* @param {[HostSetModel]} filteredHostSets
* @type {boolean}
*/
@computed('filteredHostSets')
get hasAvailableHostSets() {
return this.filteredHostSets.length > 0;
}
/**
* Host sets not already added to the target.
* @type {[HostSetModel]}
+5 -3
View File
@@ -3,11 +3,12 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
<form.input
@value={{t (concat 'target.types.' @model.type)}}
@value={{t (concat 'resources.target.types.' @model.type)}}
@label={{t "form.type.label"}}
readonly={{true}}
@disabled={{true}} />
@@ -17,8 +18,8 @@
@type="text"
@value={{@model.name}}
@label={{t "form.name.label"}}
@error={{@model.errors.name}}
@helperText={{t "form.name.help"}}
@error={{@model.errors.name}}
as |field|>
{{#if @model.errors.name}}
<field.errors as |errors|>
@@ -34,8 +35,8 @@
@type="text"
@value={{@model.description}}
@label={{t "form.description.label"}}
@error={{@model.errors.description}}
@helperText={{t "form.description.help"}}
@error={{@model.errors.description}}
as |field|>
{{#if @model.errors.description}}
<field.errors as |errors|>
@@ -69,6 +70,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
@@ -3,6 +3,7 @@
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
@@ -11,6 +12,7 @@
@type="name"
@value={{@model.name}}
@label={{t "form.name.label"}}
@helperText={{t "form.name.help"}}
@error={{@model.errors.name}}
readonly={{false}}
as |field|>
@@ -28,6 +30,7 @@
@type="description"
@value={{@model.description}}
@label={{t "form.description.label"}}
@helperText={{t "form.description.help"}}
@error={{@model.errors.description}}
disabled={{@model.isSaving}}
readonly={{false}}
@@ -43,6 +46,7 @@
<form.actions
@disabled={{if @model.cannotSave @model.cannotSave}}
@enableEditText={{t "actions.edit-form"}}
@submitText={{t "actions.save"}}
@cancelText={{t "actions.cancel"}} />
@@ -13,6 +13,6 @@ export default class ScopesScopeGroupsController extends Controller {
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.groups');
return this.intl.t('resources.group.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeGroupsGroupAddMembersController extends Controll
* @type {string}
*/
get breadCrumb() {
return this.intl.t('actions.add-members');
return this.intl.t('resources.group.messages.add-members.title');
}
}
+1 -1
View File
@@ -12,6 +12,6 @@ export default class ScopesScopeOrgsController extends Controller {
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.orgs');
return this.intl.t('resources.org.title_plural');
}
}
@@ -12,6 +12,6 @@ export default class ScopesScopeProjectsController extends Controller {
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.projects');
return this.intl.t('resources.project.title_plural');
}
}
@@ -12,6 +12,6 @@ export default class ScopesScopeProjectsProjectHostCatalogsController extends Co
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.host-catalogs');
return this.intl.t('resources.host-catalog.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeProjectsProjectHostCatalogsHostCatalogHostSetsCo
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.host-sets');
return this.intl.t('resources.host-set.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeProjectsProjectHostCatalogsHostCatalogHostsContr
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.hosts');
return this.intl.t('resources.host.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeProjectsProjectTargetsController extends Control
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.targets');
return this.intl.t('resources.target.title_plural');
}
}
@@ -12,6 +12,6 @@ export default class ScopesScopeProjectsProjectTargetsTargetAddHostSetsControlle
* @type {string}
*/
get breadCrumb() {
return this.intl.t('actions.add-host-sets');
return this.intl.t('resources.target.actions.add-host-sets');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeProjectsProjectTargetsTargetHostSetsController e
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.host-sets');
return this.intl.t('resources.host-set.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeRolesController extends Controller {
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.roles');
return this.intl.t('resources.role.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeRolesRoleAddPrincipalsController extends Control
* @type {string}
*/
get breadCrumb() {
return this.intl.t('actions.add-principals');
return this.intl.t('resources.role.principal.actions.add-principals');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeUsersController extends Controller {
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.users');
return this.intl.t('resources.user.title_plural');
}
}
+4 -4
View File
@@ -5,19 +5,19 @@
<sidebarLayout.sidebar>
<Rose::Nav::Sidebar @title={{t "titles.general"}} as |nav|>
<nav.link @route="scopes.scope.projects">
{{t "resources.projects"}}
{{t "resources.project.title_plural"}}
</nav.link>
</Rose::Nav::Sidebar>
<Rose::Nav::Sidebar @title={{t "titles.iam"}} as |nav|>
<nav.link @route="scopes.scope.users">
{{t "resources.users"}}
{{t "resources.user.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.groups">
{{t "resources.groups"}}
{{t "resources.group.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.roles">
{{t "resources.roles"}}
{{t "resources.role.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.auth-methods">
{{t "resources.auth-method.title_plural"}}
@@ -1,3 +1,3 @@
{{title (t "resources.groups")}}
{{title (t "resources.group.title_plural")}}
{{outlet}}
@@ -1,6 +1,6 @@
<Rose::Dropdown @text="{{t 'actions.manage'}}" @dropdownRight={{true}} as |dropdown|>
<dropdown.link @route="scopes.scope.groups.group.add-members">
{{t "actions.add-members"}}
{{t "resources.group.actions.add-members"}}
</dropdown.link>
<dropdown.button
@style="danger"
@@ -1,2 +1,2 @@
<h2>{{t "resources.group"}}</h2>
<p>{{t "resources.descriptions.group"}}</p>
<h2>{{t "resources.group.title"}}</h2>
<p>{{t "resources.group.description"}}</p>
@@ -3,6 +3,6 @@
{{t 'titles.details'}}
</nav.link>
<nav.link @route='scopes.scope.groups.group.members'>
{{t 'titles.members'}}
{{t 'resources.group.messages.members.title'}}
</nav.link>
</Rose::Nav::Tabs>
@@ -1,4 +1,4 @@
{{title (t "actions.add-members")}}
{{title (t "resources.group.messages.add-members.title")}}
<Form::Group::AddMembers
@model={{@model.group}}
@@ -1 +1,2 @@
<h2>{{t "actions.add-members"}}</h2>
<h2>{{t "resources.group.messages.add-members.title"}}</h2>
<p>{{t "resources.group.messages.add-members.description"}}</p>
@@ -1,4 +1,4 @@
<Form::Project
<Form::Group
@model={{@model}}
@submit={{route-action "save" @model}}
@cancel={{route-action "cancel" @model}}
@@ -1,4 +1,4 @@
{{title (t 'titles.members')}}
{{title (t 'resources.group.messages.members.title')}}
{{#if @model.members}}
@@ -43,9 +43,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.group-members-welcome"}} as |message|>
<Rose::Message @title={{t "resources.group.messages.members.title"}} as |message|>
<message.description>
{{t "descriptions.group-members-welcome"}}
{{t "resources.group.messages.members.description"}}
</message.description>
</Rose::Message>
</Rose::Layout::Centered>
@@ -5,8 +5,8 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.groups"}}</h2>
<p>{{t "resources.descriptions.groups"}}</p>
<h2>{{t "resources.group.title_plural"}}</h2>
<p>{{t "resources.group.description"}}</p>
</page.header>
<page.actions>
@@ -49,9 +49,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t 'titles.groups-welcome'}} as |message|>
<Rose::Message @title={{t 'resources.group.messages.welcome.title'}} as |message|>
<message.description>
{{t 'descriptions.groups-welcome'}}
{{t 'resources.group.description'}}
</message.description>
<message.link @route="scopes.scope.groups.new">
<Rose::Icon @name="plus-circle-outline" />
+1 -1
View File
@@ -1,3 +1,3 @@
{{title (t "resources.orgs")}}
{{title (t "resources.org.title_plural")}}
{{outlet}}
@@ -5,8 +5,10 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.orgs"}}</h2>
<p>{{t "resources.descriptions.orgs"}}</p>
<h2>{{t "resources.org.title_plural"}}</h2>
{{#if @model}}
<p>{{t "resources.org.description"}}</p>
{{/if}}
</page.header>
<page.actions>
@@ -39,9 +41,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t 'titles.orgs-welcome'}} as |message|>
<Rose::Message @title={{t 'resources.org.messages.welcome.title'}} as |message|>
<message.description>
{{t 'descriptions.orgs-welcome'}}
{{t 'resources.org.description'}}
</message.description>
<message.link @route="scopes.scope.orgs.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -1,3 +1,3 @@
{{title (t "resources.projects")}}
{{title (t "resources.project.title_plural")}}
{{outlet}}
@@ -5,8 +5,10 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.projects"}}</h2>
<p>{{t "resources.descriptions.projects"}}</p>
<h2>{{t "resources.project.title_plural"}}</h2>
{{#if @model}}
<p>{{t "resources.project.description"}}</p>
{{/if}}
</page.header>
<page.actions>
@@ -39,9 +41,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t 'titles.projects-welcome'}} as |message|>
<Rose::Message @title={{t 'resources.project.messages.welcome.title'}} as |message|>
<message.description>
{{t 'descriptions.projects-welcome'}}
{{t 'resources.project.description'}}
</message.description>
<message.link @route="scopes.scope.projects.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -1,11 +1,11 @@
<Rose::Nav::Sidebar @title={{t "titles.resources"}} as |nav|>
<nav.link @route="scopes.scope.projects.project.sessions">
{{t "resources.sessions"}}
{{t "resources.session.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.projects.project.targets">
{{t "resources.targets"}}
{{t "resources.target.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.projects.project.host-catalogs">
{{t "resources.host-catalogs"}}
{{t "resources.host-catalog.title_plural"}}
</nav.link>
</Rose::Nav::Sidebar>
@@ -1,3 +1,3 @@
{{title (t "resources.host-catalogs")}}
{{title (t "resources.host-catalog.title_plural")}}
{{outlet}}
@@ -1,3 +1,5 @@
{{title @model.displayName}}
<Rose::Layout::Page as |page|>
<page.breadcrumbs>
@@ -3,13 +3,13 @@
@route="scopes.scope.projects.project.host-catalogs.host-catalog.hosts.new"
@model={{@model}}
>
{{t "actions.add-host"}}
{{t "resources.host.actions.add"}}
</dropdown.link>
<dropdown.link
@route="scopes.scope.projects.project.host-catalogs.host-catalog.host-sets.new"
@model={{@model}}
>
{{t "actions.add-host-set"}}
{{t "resources.host-set.actions.add"}}
</dropdown.link>
<dropdown.separator />
<dropdown.button
@@ -17,6 +17,6 @@
@disabled={{@model.canSave}}
{{on "click" (route-action "delete" @model)}}
>
{{t 'actions.delete-host-catalog'}}
{{t 'resources.host-catalog.actions.delete'}}
</dropdown.button>
</Rose::Dropdown>
@@ -1,2 +1,2 @@
<h2>{{t "resources.host-catalog"}}</h2>
<p>{{t "resources.descriptions.host-catalog"}}</p>
<h2>{{t "resources.host-catalog.title"}}</h2>
<p>{{t "resources.host-catalog.description"}}</p>
@@ -3,9 +3,9 @@
{{t 'titles.details'}}
</nav.link>
<nav.link @route='scopes.scope.projects.project.host-catalogs.host-catalog.host-sets'>
{{t 'titles.host-sets'}}
{{t 'resources.host-set.title_plural'}}
</nav.link>
<nav.link @route='scopes.scope.projects.project.host-catalogs.host-catalog.hosts'>
{{t 'titles.hosts'}}
{{t 'resources.host.title_plural'}}
</nav.link>
</Rose::Nav::Tabs>
@@ -1,3 +1,3 @@
{{title (t "resources.host-sets")}}
{{title (t "resources.host-set.title_plural")}}
{{outlet}}
@@ -1,12 +1,12 @@
<Rose::Dropdown @text="{{t 'actions.manage'}}" @dropdownRight={{true}} as |dropdown|>
<dropdown.link @route="scopes.scope.projects.project.host-catalogs.host-catalog.host-sets.host-set.add-hosts">
{{t 'actions.add-hosts'}}
{{t 'resources.host-set.actions.add-hosts'}}
</dropdown.link>
<dropdown.button
@style="danger"
@disabled={{@model.canSave}}
{{on "click" (route-action "delete" @model)}}
>
{{t 'actions.delete-host-set'}}
{{t 'resources.host-set.actions.delete'}}
</dropdown.button>
</Rose::Dropdown>
@@ -1,2 +1,2 @@
<h2>{{t "resources.host-set"}}</h2>
<p>{{t "resources.descriptions.host-set"}}</p>
<h2>{{t "resources.host-set.title"}}</h2>
<p>{{t "resources.host-set.description"}}</p>
@@ -3,6 +3,6 @@
{{t 'titles.details'}}
</nav.link>
<nav.link @route='scopes.scope.projects.project.host-catalogs.host-catalog.host-sets.host-set.hosts'>
{{t 'resources.hosts'}}
{{t 'resources.host.title_plural'}}
</nav.link>
</Rose::Nav::Tabs>
@@ -1,4 +1,4 @@
{{title (t "actions.add-hosts")}}
{{title (t "resources.host-set.actions.add-hosts")}}
<Form::HostSet::AddHosts
@model={{@model.hostSet}}
@@ -1 +1,2 @@
<h2>{{t "actions.add-hosts"}}</h2>
<h2>{{t "resources.host-set.host.messages.add.title"}}</h2>
<p>{{t "resources.host-set.host.messages.add.description"}}</p>
@@ -52,9 +52,9 @@
{{#unless @model.hosts}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.no-host-set-hosts"}} as |message|>
<Rose::Message @title={{t "resources.host-set.host.messages.none.title"}} as |message|>
<message.description>
{{t "descriptions.no-host-set-hosts"}}
{{t "resources.host-set.host.messages.none.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.host-catalogs.host-catalog.hosts.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -21,7 +21,9 @@
<p>{{hostSet.description}}</p>
</row.headerCell>
<row.cell>
<Rose::Badge>{{hostSet.type}}</Rose::Badge>
<Rose::Badge>
{{t (concat 'resources.host-set.types.' hostSet.type)}}
</Rose::Badge>
</row.cell>
<row.cell>
<code>{{hostSet.id}}</code>
@@ -34,9 +36,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.host-sets-welcome"}} as |message|>
<Rose::Message @title={{t "resources.host-set.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.host-sets-welcome"}}
{{t "resources.host-set.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.host-catalogs.host-catalog.host-sets.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -1,3 +1,3 @@
{{title (t "resources.hosts")}}
{{title (t "resources.host.title_plural")}}
{{outlet}}
@@ -4,6 +4,6 @@
@disabled={{@model.canSave}}
{{on "click" (route-action "delete" @model)}}
>
{{t 'actions.delete-host'}}
{{t 'resources.host.actions.delete'}}
</dropdown.button>
</Rose::Dropdown>
@@ -1,2 +1,2 @@
<h2>{{t "resources.host"}}</h2>
<p>{{t "resources.descriptions.host"}}</p>
<h2>{{t "resources.host.title"}}</h2>
<p>{{t "resources.host.description"}}</p>
@@ -22,7 +22,9 @@
<p>{{host.description}}</p>
</row.headerCell>
<row.cell>
<Rose::Badge>{{host.type}}</Rose::Badge>
<Rose::Badge>
{{t (concat 'resources.host.types.' host.type)}}
</Rose::Badge>
</row.cell>
<row.cell>
<code>{{host.id}}</code>
@@ -38,9 +40,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.hosts-welcome"}} as |message|>
<Rose::Message @title={{t "resources.host.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.hosts-welcome"}}
{{t "resources.host.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.host-catalogs.host-catalog.hosts.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -5,8 +5,8 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.host-catalogs"}}</h2>
<p>{{t "resources.descriptions.host-catalogs"}}</p>
<h2>{{t "resources.host-catalog.title_plural"}}</h2>
<p>{{t "resources.host-catalog.description"}}</p>
</page.header>
<page.actions>
@@ -43,7 +43,7 @@
</row.headerCell>
<row.cell>
<Rose::Badge>
{{hostCatalog.type}}
{{t (concat 'resources.host-catalog.types.' hostCatalog.type)}}
</Rose::Badge>
</row.cell>
<row.cell>
@@ -57,9 +57,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.host-catalogs-welcome"}} as |message|>
<Rose::Message @title={{t "resources.host-catalog.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.host-catalogs-welcome"}}
{{t "resources.host-catalog.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.host-catalogs.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -5,8 +5,8 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.project"}}</h2>
<p>{{t "resources.descriptions.project"}}</p>
<h2>{{t "resources.project.title"}}</h2>
<p>{{t "resources.project.description"}}</p>
</page.header>
<page.navigation>
@@ -1,3 +1,3 @@
{{title (t "resources.sessions")}}
{{title (t "resources.session.title_plural")}}
{{outlet}}
@@ -5,7 +5,8 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.sessions"}}</h2>
<h2>{{t "resources.session.title_plural"}}</h2>
<p>{{t "resources.session.description"}}</p>
</page.header>
<page.body>
@@ -16,8 +17,8 @@
<table.header as |header|>
<header.row as |row|>
<row.headerCell>{{t "form.id.label"}}</row.headerCell>
<row.headerCell>{{t "resources.user"}}</row.headerCell>
<row.headerCell>{{t "resources.target"}}</row.headerCell>
<row.headerCell>{{t "resources.user.title"}}</row.headerCell>
<row.headerCell>{{t "resources.target.title"}}</row.headerCell>
<row.headerCell>{{t "form.started.label"}}</row.headerCell>
<row.headerCell>{{t "form.status.label"}}</row.headerCell>
<row.headerCell>{{t "titles.actions"}}</row.headerCell>
@@ -52,9 +53,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.no-sessions"}} as |message|>
<Rose::Message @title={{t "resources.session.messages.none.title"}} as |message|>
<message.description>
{{t "descriptions.no-sessions"}}
{{t "resources.session.messages.none.description"}}
</message.description>
</Rose::Message>
</Rose::Layout::Centered>
@@ -1,3 +1,3 @@
{{title (t "resources.targets")}}
{{title (t "resources.target.title_plural")}}
{{outlet}}
@@ -5,8 +5,10 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.targets"}}</h2>
<p>{{t "resources.descriptions.targets"}}</p>
<h2>{{t "resources.target.title_plural"}}</h2>
{{#if @model}}
<p>{{t "resources.target.description"}}</p>
{{/if}}
</page.header>
<page.actions>
@@ -44,7 +46,7 @@
<row.cell>
{{#if target.type}}
<Rose::Badge>
{{t (concat "target.types." target.type)}}
{{t (concat "resources.target.types." target.type)}}
</Rose::Badge>
{{/if}}
</row.cell>
@@ -59,9 +61,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.targets-welcome"}} as |message|>
<Rose::Message @title={{t "resources.target.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.targets-welcome"}}
{{t "resources.target.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.targets.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -1,12 +1,12 @@
<Rose::Dropdown @text="{{t 'actions.manage'}}" @dropdownRight={{true}} as |dropdown|>
<dropdown.link @route="scopes.scope.projects.project.targets.target.add-host-sets">
{{t 'actions.add-host-sets'}}
{{t 'resources.target.actions.add-host-sets'}}
</dropdown.link>
<dropdown.button
@style="danger"
@disabled={{@model.canSave}}
{{on "click" (route-action "delete" @model)}}
>
{{t 'actions.delete-target'}}
{{t 'resources.target.actions.delete'}}
</dropdown.button>
</Rose::Dropdown>
@@ -1,2 +1,2 @@
<h2>{{t "resources.target"}}</h2>
<p>{{t "resources.descriptions.target"}}</p>
<h2>{{t "resources.target.title"}}</h2>
<p>{{t "resources.target.description"}}</p>
@@ -3,6 +3,6 @@
{{t 'titles.details'}}
</nav.link>
<nav.link @route='scopes.scope.projects.project.targets.target.host-sets'>
{{t 'titles.host-sets'}}
{{t 'resources.host-set.title_plural'}}
</nav.link>
</Rose::Nav::Tabs>
@@ -1,4 +1,4 @@
{{title (t 'actions.add-host-sets')}}
{{title (t 'resources.target.actions.add-host-sets')}}
{{#if @model.hostSets}}
<Form::Target::AddHostSets
@@ -12,9 +12,9 @@
{{#unless @model.hostSets}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.no-host-sets-for-target"}} as |message|>
<Rose::Message @title={{t "resources.target.host-set.messages.none.title"}} as |message|>
<message.description>
{{t "descriptions.no-host-sets-for-target"}}
{{t "resources.target.host-set.messages.none.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.targets.target.host-sets">
<Rose::Icon @name="chevron-left" />
@@ -1 +1,2 @@
<h2>{{t "actions.add-host-sets"}}</h2>
<h2>{{t "resources.target.host-set.messages.add.title"}}</h2>
<p>{{t "resources.target.host-set.messages.add.description"}}</p>
@@ -1,4 +1,4 @@
{{title (t "resources.host-sets")}}
{{title (t "resources.host-set.title_plural")}}
{{#if @model.hostSets}}
@@ -19,7 +19,7 @@
<p>{{hostSet.model.description}}</p>
</row.headerCell>
<row.cell>
<Rose::Badge>{{hostSet.model.type}}</Rose::Badge>
<Rose::Badge>{{t (concat 'resources.host-set.types.' hostSet.model.type)}}</Rose::Badge>
</row.cell>
<row.cell>
<code>{{hostSet.model.id}}</code>
@@ -48,9 +48,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.target-host-sets-welcome"}} as |message|>
<Rose::Message @title={{t "resources.target.host-set.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.target-host-sets-welcome"}}
{{t "resources.target.host-set.messages.welcome.description"}}
</message.description>
</Rose::Message>
</Rose::Layout::Centered>
+1 -1
View File
@@ -1,3 +1,3 @@
{{title (t "resources.roles")}}
{{title (t "resources.role.title_plural")}}
{{outlet}}
@@ -5,8 +5,10 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.roles"}}</h2>
<p>{{t "resources.descriptions.roles"}}</p>
<h2>{{t "resources.role.title_plural"}}</h2>
{{#if @model}}
<p>{{t "resources.role.description"}}</p>
{{/if}}
</page.header>
<page.actions>
@@ -49,9 +51,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t 'titles.roles-welcome'}} as |message|>
<Rose::Message @title={{t 'resources.role.messages.welcome.title'}} as |message|>
<message.description>
{{t 'descriptions.roles-welcome'}}
{{t 'resources.role.description'}}
</message.description>
<message.link @route="scopes.scope.roles.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -1,12 +1,12 @@
<Rose::Dropdown @text="{{t 'actions.manage'}}" @dropdownRight={{true}} as |dropdown|>
<dropdown.link @route="scopes.scope.roles.role.add-principals">
{{t 'actions.add-principals'}}
{{t 'resources.role.principal.actions.add-principals'}}
</dropdown.link>
<dropdown.button
@style="danger"
@disabled={{@model.canSave}}
{{on "click" (route-action "delete" @model)}}
>
{{t 'actions.delete-role'}}
{{t 'resources.role.actions.delete'}}
</dropdown.button>
</Rose::Dropdown>
@@ -1,2 +1,2 @@
<h2>{{t "resources.role"}}</h2>
<p>{{t "resources.descriptions.role"}}</p>
<h2>{{t "resources.role.title"}}</h2>
<p>{{t "resources.role.description"}}</p>
@@ -3,9 +3,9 @@
{{t 'titles.settings'}}
</nav.link>
<nav.link @route='scopes.scope.roles.role.principals'>
{{t 'titles.principals'}}
{{t 'resources.role.principal.title_plural'}}
</nav.link>
<nav.link @route='scopes.scope.roles.role.grants'>
{{t 'titles.grants'}}
{{t 'resources.role.grant.title_plural'}}
</nav.link>
</Rose::Nav::Tabs>
@@ -1,4 +1,4 @@
{{title (t "actions.add-principals")}}
{{title (t "resources.role.principal.actions.add-principals")}}
<Form::Role::AddPrincipals
@model={{@model.role}}
@@ -1 +1,2 @@
<h2>{{t "actions.add-principals"}}</h2>
<h2>{{t "resources.role.principal.messages.add-principals.title"}}</h2>
<p>{{t "resources.role.principal.messages.add-principals.description"}}</p>
@@ -1,4 +1,4 @@
{{title (t 'titles.grants')}}
{{title (t 'resources.role.grant.title_plural')}}
<Form::Role::Grants
@model={{@model}}
@@ -1,2 +1,2 @@
<h2>{{t "resources.role"}}</h2>
<p>{{t "resources.descriptions.grants"}}</p>
<h2>{{t "resources.role.title"}}</h2>
<p>{{t "resources.role.grant.description"}}</p>
@@ -1,4 +1,4 @@
{{title (t 'titles.principals')}}
{{title (t 'resources.role.principal.title_plural')}}
{{#if @model}}
@@ -18,7 +18,7 @@
{{principal.model.displayName}}
</row.headerCell>
<row.cell>
{{t (concat 'resources.' principal.type)}}
{{t (concat 'resources.role.principal.types.' principal.type)}}
</row.cell>
<row.cell>
<code>{{principal.model.id}}</code>
@@ -47,10 +47,14 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.role-principals-welcome"}} as |message|>
<Rose::Message @title={{t "resources.role.principal.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.role-principals-welcome"}}
{{t "resources.role.principal.messages.welcome.description"}}
</message.description>
<message.link @route="scopes.scope.roles.role.add-principals">
<Rose::Icon @name="plus-circle-outline" />
{{t 'resources.role.principal.actions.add-principals'}}
</message.link>
</Rose::Message>
</Rose::Layout::Centered>
@@ -1,2 +1,2 @@
<h2>{{t "resources.role"}}</h2>
<p>{{t "resources.descriptions.principals"}}</p>
<h2>{{t "resources.role.title"}}</h2>
<p>{{t "resources.role.principal.description"}}</p>
+1 -1
View File
@@ -1,3 +1,3 @@
{{title (t "resources.users")}}
{{title (t "resources.user.title_plural")}}
{{outlet}}
@@ -5,8 +5,10 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.users"}}</h2>
<p>{{t "resources.descriptions.users"}}</p>
<h2>{{t "resources.user.title_plural"}}</h2>
{{#if @model}}
<p>{{t "resources.user.description"}}</p>
{{/if}}
</page.header>
<page.actions>
@@ -49,9 +51,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t 'titles.users-welcome'}} as |message|>
<Rose::Message @title={{t 'resources.user.messages.welcome.title'}} as |message|>
<message.description>
{{t 'descriptions.users-welcome'}}
{{t 'resources.user.description'}}
</message.description>
<message.link @route="scopes.scope.users.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -5,8 +5,8 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.user"}}</h2>
<p>{{t "resources.descriptions.user"}}</p>
<h2>{{t "resources.user.title"}}</h2>
<p>{{t "resources.user.description"}}</p>
</page.header>
<page.actions>
@@ -80,6 +80,7 @@ module('Acceptance | accounts', function (hooks) {
assert.expect(1);
await visit(urls.account);
await fillIn('[name="name"]', 'update name');
await click('form [type="button"]');
await click('form [type="submit"]:not(:disabled)');
assert.equal(this.server.db.accounts[0].name, 'update name');
});
@@ -87,6 +88,7 @@ module('Acceptance | accounts', function (hooks) {
test('can update an account and cancel changes', async function (assert) {
assert.expect(1);
await visit(urls.account)
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'update name');
await click('form button:not([type="submit"])');
assert.notEqual(this.server.db.accounts[0].name, 'update name');
@@ -174,6 +176,7 @@ module('Acceptance | accounts', function (hooks) {
});
await visit(urls.account);
await fillIn('[name="name"]', 'save account');
await click('form [type="button"]');
await click('form [type="submit"]');
await a11yAudit();
assert.ok(
@@ -228,6 +231,7 @@ module('Acceptance | accounts', function (hooks) {
);
});
await visit(urls.account);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'existing account');
await click('form [type="submit"]');
await a11yAudit();
@@ -66,6 +66,7 @@ module('Acceptance | auth methods', function (hooks) {
test('can update an auth method and save changes', async function (assert) {
assert.expect(1);
await visit(urls.authMethod);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'update name');
await click('form [type="submit"]:not(:disabled)');
assert.equal(this.server.db.authMethods[0].name, 'update name');
@@ -74,6 +75,7 @@ module('Acceptance | auth methods', function (hooks) {
test('can update an auth method and cancel changes', async function (assert) {
assert.expect(1);
await visit(urls.authMethod)
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'update name');
await click('form button:not([type="submit"])');
assert.notEqual(this.server.db.authMethods[0].name, 'update name');
@@ -160,6 +162,7 @@ module('Acceptance | auth methods', function (hooks) {
});
await visit(urls.authMethod);
await fillIn('[name="name"]', 'save auth method');
await click('form [type="button"]');
await click('form [type="submit"]');
await a11yAudit();
assert.ok(
@@ -192,7 +195,7 @@ module('Acceptance | auth methods', function (hooks) {
);
});
test('saving a new auth method with invalid fields displays error messages', async function (assert) {
test('saving an existing auth method with invalid fields displays error messages', async function (assert) {
assert.expect(2);
this.server.patch('/auth-methods/:id', () => {
return new Response(
@@ -214,6 +217,7 @@ module('Acceptance | auth methods', function (hooks) {
);
});
await visit(urls.authMethod);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'existing auth method');
await click('form [type="submit"]');
await a11yAudit();
@@ -251,6 +255,7 @@ module('Acceptance | auth methods', function (hooks) {
);
});
await visit(urls.authMethod);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'existing auth method');
await click('form [type="submit"]');
await a11yAudit();
+3 -23
View File
@@ -116,6 +116,7 @@ module('Acceptance | groups', function (hooks) {
test('can save changes to an existing group', async function (assert) {
assert.expect(2);
await visit(urls.group);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Updated admin group');
await click('.rose-form-actions [type="submit"]');
assert.equal(currentURL(), urls.group);
@@ -125,6 +126,7 @@ module('Acceptance | groups', function (hooks) {
test('can cancel changes to an existing group', async function (assert) {
assert.expect(1);
await visit(urls.group);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Updated admin group');
await click('.rose-form-actions [type="button"]');
assert.notEqual(find('[name="name"]').value, 'Updated admin group');
@@ -160,6 +162,7 @@ module('Acceptance | groups', function (hooks) {
);
});
await visit(urls.group);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'random string');
await click('[type="submit"]');
assert.ok(
@@ -174,29 +177,6 @@ module('Acceptance | groups', function (hooks) {
);
});
test('errors are displayed when save project fails', async function (assert) {
assert.expect(1);
this.server.patch('/groups/:id', () => {
return new Response(
490,
{},
{
status: 490,
code: 'error',
message: 'Oops.',
}
);
});
await visit(urls.group);
await fillIn('[name="name"]', 'Role name');
await click('[type="submit"]');
assert.ok(
find('[role="alert"]').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
});
test('errors are displayed when delete project fails', async function (assert) {
assert.expect(1);
this.server.del('/groups/:id', () => {
+3 -24
View File
@@ -84,6 +84,7 @@ module('Acceptance | host catalogs', function (hooks) {
test('can update host catalog and save changes', async function (assert) {
assert.expect(1);
await visit(urls.hostCatalog);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Test Name');
await click('form [type="submit"]:not(:disabled)');
assert.equal(this.server.db.hostCatalogs[0].name, 'Test Name');
@@ -92,6 +93,7 @@ module('Acceptance | host catalogs', function (hooks) {
test('can update host catalog and cancel changes', async function (assert) {
assert.expect(1);
await visit(urls.hostCatalog);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Test Name');
await click('form button:not([type="submit"])');
assert.notEqual(this.server.db.hostCatalogs[0].name, 'Test Name');
@@ -115,30 +117,6 @@ module('Acceptance | host catalogs', function (hooks) {
assert.equal(this.server.db.hostCatalogs.length, hostCatalogsCount);
});
test('errors are displayed when save host catalog fails', async function (assert) {
assert.expect(1);
this.server.patch('/host-catalogs/:id', () => {
return new Response(
490,
{},
{
status: 490,
code: 'error',
message: 'Oops.',
}
);
});
await visit(urls.hostCatalog);
await fillIn('[name="name"]', 'random string');
await click('form [type="submit"]');
await a11yAudit();
assert.ok(
find('[role="alert"]').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
});
test('errors are displayed when delete host catalog fails', async function (assert) {
assert.expect(1);
this.server.del('/host-catalogs/:id', () => {
@@ -221,6 +199,7 @@ module('Acceptance | host catalogs', function (hooks) {
);
});
await visit(urls.hostCatalog);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'random string');
await click('form [type="submit"]');
await a11yAudit();
+3 -20
View File
@@ -73,6 +73,7 @@ module('Acceptance | host sets', function (hooks) {
test('can update a host set and save changes', async function (assert) {
assert.expect(3);
await visit(urls.hostSet);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Updated name');
await fillIn('[name="description"]', 'Updated description');
await click('.rose-form-actions [type="submit"]');
@@ -84,6 +85,7 @@ module('Acceptance | host sets', function (hooks) {
test('can update a host set and cancel changes', async function (assert) {
assert.expect(1);
await visit(urls.hostSet);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Updated name');
await click('.rose-form-actions [type="button"]');
assert.notEqual(find('[name="name"]').value, 'Updated name');
@@ -120,6 +122,7 @@ module('Acceptance | host sets', function (hooks) {
);
});
await visit(urls.hostSet);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'existing host');
await click('[type="submit"]');
await a11yAudit();
@@ -127,26 +130,6 @@ module('Acceptance | host sets', function (hooks) {
assert.ok(find('.rose-form-error-message'));
});
test('errors are displayed when save on host set fails', async function (assert) {
assert.expect(1);
this.server.patch('/host-sets/:id', () => {
return new Response(
490,
{},
{
status: 490,
code: 'error',
message: 'Oops.',
}
);
});
await visit(urls.hostSet);
await fillIn('[name="name"]', 'save host');
await click('form [type="submit"]');
await a11yAudit();
assert.ok(find('[role="alert"]'));
});
test('errors are displayed when delete on a host set fails', async function (assert) {
assert.expect(1);
this.server.del('/host-sets/:id', () => {
+3 -20
View File
@@ -73,6 +73,7 @@ module('Acceptance | hosts', function (hooks) {
test('can update a host and save changes', async function (assert) {
assert.expect(4);
await visit(urls.host);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Updated name');
await fillIn('[name="description"]', 'Updated description');
await fillIn('[name="address"]', '::1');
@@ -86,6 +87,7 @@ module('Acceptance | hosts', function (hooks) {
test('can update a host and cancel changes', async function (assert) {
assert.expect(1);
await visit(urls.host);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Updated name');
await click('.rose-form-actions [type="button"]');
assert.notEqual(find('[name="name"]').value, 'Updated name');
@@ -122,6 +124,7 @@ module('Acceptance | hosts', function (hooks) {
);
});
await visit(urls.host);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'existing host');
await click('[type="submit"]');
await a11yAudit();
@@ -129,26 +132,6 @@ module('Acceptance | hosts', function (hooks) {
assert.ok(find('.rose-form-error-message'));
});
test('errors are displayed when save on host fails', async function (assert) {
assert.expect(1);
this.server.patch('/hosts/:id', () => {
return new Response(
490,
{},
{
status: 490,
code: 'error',
message: 'Oops.',
}
);
});
await visit(urls.host);
await fillIn('[name="name"]', 'save host');
await click('form [type="submit"]');
await a11yAudit();
assert.ok(find('[role="alert"]'));
});
test('errors are displayed when delete on a host fails', async function (assert) {
assert.expect(1);
this.server.del('/hosts/:id', () => {
+3 -23
View File
@@ -117,6 +117,7 @@ module('Acceptance | projects', function (hooks) {
assert.expect(3);
assert.notEqual(existingProject.name, 'random string');
await visit(existingProjectURL);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'random string');
await click('.rose-form-actions [type="submit"]');
assert.equal(currentURL(), existingProjectURL);
@@ -126,6 +127,7 @@ module('Acceptance | projects', function (hooks) {
test('can cancel changes to existing project', async function (assert) {
assert.expect(2);
await visit(existingProjectURL);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'random string');
await click('.rose-form-actions [type="button"]');
assert.notEqual(existingProject.name, 'random string');
@@ -161,6 +163,7 @@ module('Acceptance | projects', function (hooks) {
);
});
await visit(existingProjectURL);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'random string');
await click('[type="submit"]');
assert.ok(
@@ -175,29 +178,6 @@ module('Acceptance | projects', function (hooks) {
);
});
test('errors are displayed when save project fails', async function (assert) {
assert.expect(1);
this.server.patch('/scopes/:id', () => {
return new Response(
490,
{},
{
status: 490,
code: 'error',
message: 'Oops.',
}
);
});
await visit(existingProjectURL);
await fillIn('[name="name"]', 'random string');
await click('[type="submit"]');
assert.ok(
find('[role="alert"]').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
});
test('errors are displayed when delete project fails', async function (assert) {
assert.expect(1);
this.server.del('/scopes/:id', () => {
+3 -23
View File
@@ -62,6 +62,7 @@ module('Acceptance | roles', function (hooks) {
test('can save changes to an existing role', async function (assert) {
assert.expect(2);
await visit(urls.role);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Updated admin role');
await click('.rose-form-actions [type="submit"]');
assert.equal(currentURL(), urls.role);
@@ -71,6 +72,7 @@ module('Acceptance | roles', function (hooks) {
test('can cancel changes to an existing role', async function (assert) {
assert.expect(1);
await visit(urls.role);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Updated admin role');
await click('.rose-form-actions [type="button"]');
assert.notEqual(find('[name="name"]').value, 'Updated admin role');
@@ -154,6 +156,7 @@ module('Acceptance | roles', function (hooks) {
);
});
await visit(urls.role);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'random string');
await click('[type="submit"]');
assert.ok(
@@ -168,29 +171,6 @@ module('Acceptance | roles', function (hooks) {
);
});
test('errors are displayed when save project fails', async function (assert) {
assert.expect(1);
this.server.patch('/roles/:id', () => {
return new Response(
490,
{},
{
status: 490,
code: 'error',
message: 'Oops.',
}
);
});
await visit(urls.role);
await fillIn('[name="name"]', 'Role name');
await click('[type="submit"]');
assert.ok(
find('[role="alert"]').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
});
test('errors are displayed when delete project fails', async function (assert) {
assert.expect(1);
this.server.del('/roles/:id', () => {
+4 -21
View File
@@ -92,6 +92,7 @@ module('Acceptance | targets', function (hooks) {
test('can update a target and save changes', async function (assert) {
assert.expect(2);
await visit(urls.target);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'update name');
await fillIn('[name="default_port"]', '1234');
await click('form [type="submit"]:not(:disabled)');
@@ -102,6 +103,7 @@ module('Acceptance | targets', function (hooks) {
test('can update a target and cancel changes', async function (assert) {
assert.expect(2);
await visit(urls.target);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'update name');
await fillIn('[name="default_port"]', '1234');
await click('form button:not([type="submit"])');
@@ -167,26 +169,6 @@ module('Acceptance | targets', function (hooks) {
assert.ok(find('.rose-form-error-message'));
});
test('errors are displayed when save on target fails', async function (assert) {
assert.expect(1);
this.server.patch('/targets/:id', () => {
return new Response(
490,
{},
{
status: 490,
code: 'error',
message: 'Oops.',
}
);
});
await visit(urls.target);
await fillIn('[name="name"]', 'save target');
await click('form [type="submit"]');
await a11yAudit();
assert.ok(find('[role="alert"]'));
});
test('errors are displayed when delete on a target fails', async function (assert) {
assert.expect(1);
this.server.del('/targets/:id', () => {
@@ -228,6 +210,7 @@ module('Acceptance | targets', function (hooks) {
);
});
await visit(urls.target);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'existing target');
await click('form [type="submit"]');
await a11yAudit();
@@ -245,7 +228,7 @@ module('Acceptance | targets', function (hooks) {
assert.equal(findAll('tbody tr').length, targetHostSetCount);
});
test('can delete a host sets', async function (assert) {
test('can remove a host sets', async function (assert) {
assert.expect(2);
const targetHostSetCount = instances.target.hostSets.length;
await visit(urls.targetHostSets);
+3 -23
View File
@@ -112,6 +112,7 @@ module('Acceptance | users', function (hooks) {
test('can save changes to an existing user', async function (assert) {
assert.expect(2);
await visit(userURL);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Updated user name');
await click('.rose-form-actions [type="submit"]');
assert.equal(currentURL(), userURL);
@@ -121,6 +122,7 @@ module('Acceptance | users', function (hooks) {
test('can cancel changes to an existing user', async function (assert) {
assert.expect(1);
await visit(userURL);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'Unsaved user name');
await click('.rose-form-actions [type="button"]');
assert.notEqual(find('[name="name"]').value, 'Unsaved user name');
@@ -156,6 +158,7 @@ module('Acceptance | users', function (hooks) {
);
});
await visit(userURL);
await click('form [type="button"]', 'Activate edit mode');
await fillIn('[name="name"]', 'User name');
await click('[type="submit"]');
assert.ok(
@@ -170,29 +173,6 @@ module('Acceptance | users', function (hooks) {
);
});
test('errors are displayed when saving user fails', async function (assert) {
assert.expect(1);
this.server.patch('/users/:id', () => {
return new Response(
490,
{},
{
status: 490,
code: 'error',
message: 'Oops.',
}
);
});
await visit(userURL);
await fillIn('[name="name"]', 'User name');
await click('[type="submit"]');
assert.ok(
find('[role="alert"]').textContent.trim(),
'Oops.',
'Displays primary error message.'
);
});
test('errors are displayed when user deletion fails', async function (assert) {
assert.expect(1);
this.server.del('/users/:id', () => {
+1
View File
@@ -27,3 +27,4 @@ add-members: Add Members
add-hosts: Add Hosts
set-password: Set Password
change-password: Change Password
edit-form: Edit Form
+1 -52
View File
@@ -5,15 +5,6 @@ auth:
no-scopes: No scopes were found. To authenticate, ask your administrator to create an scope and grant you access.
choose-org: Choose a scope to authenticate.
authenticating-with-org: "You are authenticating with {name}."
host-set:
types:
static: Static
target:
types:
tcp: TCP
host:
types:
static: Static
titles:
iam: IAM
new: New
@@ -23,49 +14,7 @@ titles:
overview: Overview
settings: Settings
empty-set: No Items Yet
orgs-welcome: Welcome to Orgs
projects-welcome: Welcome to Projects
host-catalogs-welcome: Welcome to Host Catalogs
host-sets-welcome: Welcome to Host Sets
hosts-welcome: Welcome to Hosts
users-welcome: Welcome to Users
roles-welcome: Welcome to Roles
groups-welcome: Welcome to Groups
targets-welcome: Create your first Target
target-host-sets-welcome: No Host Sets Associated
grants: Permissions
new-grant: New Grant
principals: Principals
host-sets: Host Sets
hosts: Hosts
targets: Targets
global: Global
no-host-set-hosts: No Hosts Available
no-host-sets-for-target: No Host Sets Available
role-principals-welcome: No Principals Associated
no-principals-available: No Principals Available
members: Members
group-members-welcome: Welcome to Members
no-available-users: No Users Available
no-sessions: No Active Sessions
actions: Actions
descriptions:
host-catalogs: Overview of collections of hosts and host sets.
empty-set: There are no items to display yet. You may be able to add items or try back later.
orgs-welcome: Create your orgs here.
projects-welcome: Projects allow you to create and manage host catalogs. To start, create a project.
host-catalogs-welcome: Host catalogs allow you to configure to collect and create hosts and host sets. To start, create a host catalog.
host-sets-welcome: Configure a static host set in this host catalog.
hosts-welcome: Configure a static host in this host catalog.
users-welcome: Users are authorized to access Boundary.
roles-welcome: Roles are collections of capabilities that can be granted to user and/or groups.
groups-welcome: Groups are collections of users.
targets-welcome: Targets provide Users the means to connect to and interact networked services. A Target contains a collection of Hosts and a collection of Credentials.
target-host-sets-welcome: Add Host Sets to this target to provide access.
no-host-set-hosts: Before associating hosts with this host set, create hosts within the host catalog.
no-host-sets-for-target: No host sets are available to add to this target.
role-principals-welcome: No principals are available in this role.
no-principals-available: Principals are not available for assignment.
group-members-welcome: Users belonging to this group appear here.
no-available-users: No users are available to add to this group.
no-sessions: There are no active sessions at this time.
empty-set: There are no items to display yet. You may be able to add items or try back later.
Loaded 100 of 102 files, more files were not shown because too many files have changed in this diff. Show more