74 lines
2.2 KiB
JavaScript
74 lines
2.2 KiB
JavaScript
const schema = require('../../fixtures/schema_public.json');
|
|
const isEmailAvailableUrl = '**/rest/deutsch/V1/customers/isEmailAvailable';
|
|
const checkPasswordUrl = '**/rest/deutsch/V1/integration/customer/token';
|
|
|
|
describe('Login', () => {
|
|
beforeEach(() => {
|
|
cy.server();
|
|
});
|
|
|
|
it('works with valid email and password', () => {
|
|
cy.viewport('macbook-15');
|
|
|
|
cy.mockGraphql({
|
|
schema: schema,
|
|
operations: {
|
|
Login: variables => {
|
|
return {
|
|
login: {
|
|
errors: [],
|
|
message: 'success',
|
|
success: true
|
|
}
|
|
};
|
|
},
|
|
}
|
|
});
|
|
|
|
cy.route('POST', isEmailAvailableUrl, 'false');
|
|
cy.route({
|
|
method: 'POST',
|
|
url: checkPasswordUrl,
|
|
response: 'token12345ABCD+',
|
|
});
|
|
|
|
cy.visit('/hello');
|
|
cy.checkEmailAvailable('feuz@aebi.ch');
|
|
|
|
cy.get('[data-cy="login-title"]').contains('Bitte geben Sie das passende Passwort ein');
|
|
cy.enterPassword('abcd1234');
|
|
// As we cannot set the cookie in the right manner, we just check for the absence of errors.
|
|
// In real world the user gets redirect to another page
|
|
cy.get('[data-cy="email-local-errors"]').should('not.exist');
|
|
});
|
|
|
|
it('displays error message if password is wrong', () => {
|
|
cy.viewport('macbook-15');
|
|
cy.route('POST', isEmailAvailableUrl, 'false');
|
|
cy.route({
|
|
method: 'POST',
|
|
status: 401,
|
|
response: {
|
|
message: 'Sie haben sich nicht korrekt eingeloggt oder Ihr Konto ist vor\u00fcbergehend deaktiviert.'
|
|
},
|
|
url: checkPasswordUrl
|
|
});
|
|
|
|
cy.visit('/hello');
|
|
|
|
cy.checkEmailAvailable('feuz@aebi.ch');
|
|
cy.get('[data-cy="login-title"]').contains('Bitte geben Sie das passende Passwort ein');
|
|
|
|
cy.enterPassword('abcd1234');
|
|
cy.get('[data-cy="password-errors"]').contains('Die von Ihnen eingegebene E-Mail-Adresse und das Passwort passen nicht zusammen.');
|
|
});
|
|
|
|
it('displays error message if input is not an email address', () => {
|
|
cy.viewport('macbook-15');
|
|
cy.visit('/hello');
|
|
|
|
cy.checkEmailAvailable('feuzaebi.ch');
|
|
cy.get('[data-cy="email-local-errors"]').contains('Bitte geben Sie eine gülitge E-Mail an');
|
|
});
|
|
});
|