test(cypress): add test Chronograf/Admin/Org Mappings page (#5972)

* chore(ui): add data-test attributes

* chore(ui): add data-test attributes

* test(cypress): add all org test

* test(cypress): add All Orgs test

* chore(cypress): remove only

* chore(ui): add data-test attributes

* chore(ui): add data-test attributes

* test(cypress): add all org test

* test(cypress): add All Orgs test

* chore(cypress): remove only

* chore(ui): add data-test attributes

* chore(ui): add data-test attributes

* test(cypress): add all org test

* test(cypress): add All Orgs test

* chore(cypress): remove only

* chore(ui): add data-test attribute

* chore(cypress):  adjust all orgs test

* chore(cypress): adjust dashboard test

* chore(ui): eslint --fix

* chore(cypress): adjust all orgs test

* chore(cypress): format test

* chore(cypress): add fixture data

* chore(ui): add data-test attributes

* chore(cypress): adjust chronograf fixture

* chore(cypress): add deleteMappings custom command

* chore(ui): add data-test attributes

* test(cypress): add  deleteMappings into toInitialState

* chore(ui): adjust testId value

* test(cypress): add Orgs Mapping test

* chore(ui): adjust data-test attribute

* chore(ui):  add logic to data-test attribute

* chore(ui): add a default value to testId
pull/5979/head
Kevin Grossmann 2022-07-04 07:43:06 +02:00 committed by GitHub
parent 0b9fac3b06
commit 6be712ef16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 106 additions and 5 deletions

View File

@ -9,11 +9,21 @@
"organizations": [
{
"name": "SmallOrg",
"defaultRole": "reader"
"defaultRole": "reader",
"mapping": {
"scheme": "oauth2",
"provider": "oauth-mock",
"providerOrg": "default"
}
},
{
"name": "BigOrg",
"defaultRole": "member"
"defaultRole": "member",
"mapping": {
"scheme": "oauth2",
"provider": "oauth-mock-2",
"providerOrg": "default-2"
}
}
]
}

View File

@ -29,6 +29,7 @@ import {
writePoints,
clickAttached,
changeUserInfo,
deleteMappings,
} from './support/commands'
declare global {
@ -62,6 +63,7 @@ declare global {
writePoints: typeof writePoints
clickAttached: typeof clickAttached
changeUserInfo: typeof changeUserInfo
deleteMappings: typeof deleteMappings
}
}
}

View File

@ -238,4 +238,73 @@ describe('Chronograf', () => {
)
})
})
describe('Org Mapping', () => {
beforeEach(() => {
cy.visit(url + '/organization-mappings')
})
it('create, edit, and remove organization mapping', () => {
cy.getByTestID('providers--row').should('have.length', 1)
cy.get('.panel-title').should('have.text', '1 Map')
cy.getByTestID('create-mapping--button').click()
cy.getByTestID('cancel').click()
cy.getByTestID('providers--row').should('have.length', 1)
cy.getByTestID('create-mapping--button').click()
cy.getByTestID('providers--new-row').within(() => {
cy.getByTestID('dropdown-selected--*')
.click()
.then(() => {
cy.getByTestID(
`${chronograf.organizations[0].mapping.scheme}-dropdown-item`
).click()
})
cy.getByTestID(
`dropdown-selected--${chronograf.organizations[0].mapping.scheme}`
).should('contain.text', chronograf.organizations[0].mapping.scheme)
cy.getByTestID('new-provider-name').click()
cy.getByTestID('new-provider--input').type(
chronograf.organizations[0].mapping.provider + '{Enter}'
)
cy.getByTestID('new-provider-name').should(
'have.text',
chronograf.organizations[0].mapping.provider
)
cy.getByTestID('new-provider-org-name').click()
cy.getByTestID('new-provider-org--input').type(
chronograf.organizations[0].mapping.providerOrg + '{Enter}'
)
cy.getByTestID('new-provider-org-name').should(
'have.text',
chronograf.organizations[0].mapping.providerOrg
)
cy.getByTestID('confirm').click()
})
cy.reload()
cy.get('.panel-title').should('have.text', '2 Maps')
cy.getByTestID('providers--row')
.should('have.length', 2)
.eq(0)
.within(() => {
cy.getByTestID('provider-name').click()
cy.getByTestID('provider--input')
.clear()
.type(chronograf.organizations[1].mapping.provider + '{Enter}')
cy.getByTestID('provider-name').should(
'have.text',
chronograf.organizations[1].mapping.provider
)
cy.getByTestID('provider-org-name').click()
cy.getByTestID('provider-org--input').type(
chronograf.organizations[1].mapping.providerOrg + '{Enter}'
)
cy.getByTestID('provider-org-name').should(
'have.text',
chronograf.organizations[1].mapping.providerOrg
)
cy.getByTestID('delete-mapping--confirm-button').click()
cy.getByTestID('confirm-btn').click()
})
})
})
})

View File

@ -487,6 +487,17 @@ export const deleteInfluxDBs = (sourceId: string) => {
})
}
export const deleteMappings = () => {
return cy.request('GET', `${apiUrl}/mappings`).then(({body: responseBody}) => {
console.log(responseBody)
cy.wrap(responseBody.mappings).each((map: any) => {
if(map.id !== 'default') {
cy.request('DELETE', `${apiUrl}/mappings/${map.id}`)
}
})
})
}
function wrapConnections() {
return cy
.request({
@ -557,6 +568,7 @@ export function toInitialState() {
})
})
cy.deleteMappings()
cy.deleteDashboards()
cy.deleteChronografUsers()
cy.deleteOrgs()
@ -605,3 +617,4 @@ Cypress.Commands.add('toInitialState', toInitialState)
Cypress.Commands.add('writePoints', writePoints)
Cypress.Commands.add('clickAttached', {prevSubject: 'element'}, clickAttached)
Cypress.Commands.add('changeUserInfo', changeUserInfo)
Cypress.Commands.add('deleteMappings', deleteMappings)

View File

@ -61,6 +61,7 @@ class ProvidersTable extends Component {
className="btn btn-sm btn-primary"
onClick={this.handleClickCreateMap}
disabled={isCreatingMap}
data-test="create-mapping--button"
>
<span className="icon plus" /> Create Mapping
</button>
@ -112,6 +113,7 @@ class ProvidersTable extends Component {
className="btn btn-sm btn-primary"
onClick={this.handleClickCreateMap}
disabled={isCreatingMap}
data-test="create-mapping--button"
>
<span className="icon plus" /> Create Mapping
</button>

View File

@ -61,7 +61,7 @@ class ProvidersTableRow extends Component {
const isDefaultMapping = DEFAULT_MAPPING_ID === mapping.id
return (
<div className="fancytable--row">
<div className="fancytable--row" data-test="providers--row">
<div className="fancytable--td provider--scheme">
<Dropdown
items={schemes}
@ -77,6 +77,7 @@ class ProvidersTableRow extends Component {
onBlur={this.handleChangeProvider}
disabled={isDefaultMapping}
tabIndex={rowIndex}
testId="provider"
/>
<InputClickToEdit
value={providerOrganization}
@ -84,6 +85,7 @@ class ProvidersTableRow extends Component {
onBlur={this.handleChangeProviderOrg}
disabled={isDefaultMapping}
tabIndex={rowIndex}
testId="provider-org"
/>
<div className="fancytable--td provider--arrow">
<span />
@ -103,6 +105,7 @@ class ProvidersTableRow extends Component {
confirmAction={this.handleDeleteMap}
confirmText="Delete this Mapping?"
disabled={isDefaultMapping}
testId="delete-mapping--confirm-button"
/>
</div>
)

View File

@ -63,7 +63,7 @@ class ProvidersTableRowNew extends PureComponent<Props, State> {
const preventCreate = !provider || !providerOrganization
return (
<div className="fancytable--row">
<div className="fancytable--row" data-test="providers--new-row">
<div className="fancytable--td provider--scheme">
<Dropdown
items={schemes}
@ -79,6 +79,7 @@ class ProvidersTableRowNew extends PureComponent<Props, State> {
onBlur={this.handleChangeProvider}
tabIndex={rowIndex}
placeholder="google"
testId="new-provider"
/>
<InputClickToEdit
value={providerOrganization}
@ -87,6 +88,7 @@ class ProvidersTableRowNew extends PureComponent<Props, State> {
onBlur={this.handleChangeProviderOrg}
tabIndex={rowIndex}
placeholder="*"
testId="new-provider-org"
/>
<div className="fancytable--td provider--arrow">
<span />

View File

@ -104,7 +104,7 @@ class InputClickToEdit extends PureComponent<Props, State> {
placeholder,
value,
appearAsNormalInput,
testId,
testId = 'icte',
} = this.props
const wrapperClass = `${wrapper}${