accounts-frontend/tests-e2e/cypress/integration/dev/applications.test.ts

118 lines
3.4 KiB
TypeScript

describe('Applications', () => {
describe('user', () => {
before(() => {
cy.login({ accounts: ['default'] }).then(({ accounts: [user] }) => {
cy.visit('/dev/applications');
// remove all previously added apps
cy.window().then(async (win) => {
const { oauthApi } = (win as any) as {
oauthApi: typeof import('app/services/api/oauth').default;
};
const apps = await oauthApi.getAppsByUser(user.id);
await Promise.all(apps.map((app) => oauthApi.delete(app.clientId)));
});
});
});
it('should add website app', () => {
cy.server();
cy.route({
method: 'POST',
url: '/api/v1/oauth2/*/reset',
}).as('revoke');
cy.route({
method: 'DELETE',
url: '/api/v1/oauth2/*',
}).as('delete');
cy.route({
method: 'POST',
url: '/api/v1/oauth2/*/reset?regenerateSecret',
}).as('revokeSecret');
cy.visit('/dev/applications');
cy.get('[data-e2e="noApps"]').should('exist');
cy.get('[data-e2e="newApp"]').click();
cy.url().should('include', '/dev/applications/new');
cy.get('[value="application"]').check({ force: true });
cy.get('[name="name"]').type('The Foo');
cy.get('[name="description"]').type('The Foo Description');
cy.get('[name="websiteUrl"]').type('https://ely.by');
cy.get('[name="redirectUri"]').type('https://ely.by/the/redirect/uri');
cy.get('[type="submit"]').click();
cy.url().should('include', '/dev/applications#the-foo');
cy.get('[data-e2e-app-name="The Foo"]').should('exist');
// test cancel
cy.contains('Cancel').should('not.exist');
cy.contains('Revoke all tokens').click();
cy.contains('Cancel').click();
cy.contains('Cancel').should('not.exist');
// test revoke tokens
cy.contains('Revoke all tokens').click();
cy.contains('Continue').click();
cy.wait('@revoke');
cy.contains('Cancel').should('not.exist');
// test reset client secret
cy.getByTestId('client-secret').then(([el]) => {
const prevSecret = el.value;
cy.getByTestId('client-secret').should('have.value', prevSecret);
cy.contains('Reset Client Secret').click();
cy.contains('Continue').click();
cy.wait('@revokeSecret');
cy.contains('Cancel').should('not.exist');
cy.getByTestId('client-secret').should('not.have.value', prevSecret);
});
// test delete
cy.contains('Delete').click();
cy.getByTestId('delete-app').click();
cy.wait('@delete');
cy.contains("You don't have any app registered yet.").should(
'be.visible',
);
});
});
describe('guest', () => {
it('should render login button', () => {
cy.visit('/dev/applications');
cy.get('[data-e2e-content] [href="/login"]').click();
cy.url().should('include', '/login');
});
it('should not allow create new app', () => {
cy.visit('/dev/applications/new');
cy.url().should('include', '/login');
});
it('should not allow edit app', () => {
cy.visit('/dev/applications/foo-bar');
cy.url().should('include', '/login');
});
it('should have feedback popup link', () => {
cy.visit('/dev/applications');
cy.get('[data-e2e-content] [data-e2e-button="feedbackPopup"]').click();
cy.getByTestId('feedbackPopup').should('be.visible');
});
});
});