Merge branch 'login_update_password' of github.com:gradido/gradido into login_update_password

This commit is contained in:
einhornimmond 2021-09-27 13:32:12 +02:00
commit b9854f494c
7 changed files with 37 additions and 18 deletions

View File

@ -9,6 +9,7 @@
containsUppercaseCharacter: true, containsUppercaseCharacter: true,
containsNumericCharacter: true, containsNumericCharacter: true,
atLeastEightCharactera: true, atLeastEightCharactera: true,
atLeastOneSpecialCharater: true,
}" }"
:label="register ? $t('form.password') : $t('form.password_new')" :label="register ? $t('form.password') : $t('form.password_new')"
:showAllErrors="true" :showAllErrors="true"

View File

@ -168,6 +168,7 @@
"lowercase": "Ein Kleinbuchstabe erforderlich.", "lowercase": "Ein Kleinbuchstabe erforderlich.",
"minimum": "Mindestens 8 Zeichen.", "minimum": "Mindestens 8 Zeichen.",
"one_number": "Eine Zahl erforderlich.", "one_number": "Eine Zahl erforderlich.",
"special-char": "Ein Sonderzeichen erforderlich (z.B. _ oder ä)",
"subtitle": "Werde Teil der Gemeinschaft!", "subtitle": "Werde Teil der Gemeinschaft!",
"title": "Erstelle dein Gradido-Konto", "title": "Erstelle dein Gradido-Konto",
"uppercase": "Ein Großbuchstabe erforderlich." "uppercase": "Ein Großbuchstabe erforderlich."

View File

@ -168,6 +168,7 @@
"lowercase": "One lowercase letter required.", "lowercase": "One lowercase letter required.",
"minimum": "8 characters minimum.", "minimum": "8 characters minimum.",
"one_number": "One number required.", "one_number": "One number required.",
"special-char": "One special character required (e.g. _ or ä)",
"subtitle": "Become a part of the community!", "subtitle": "Become a part of the community!",
"title": "Create your Gradido account", "title": "Create your Gradido account",
"uppercase": "One uppercase letter required." "uppercase": "One uppercase letter required."

View File

@ -112,6 +112,13 @@ export const loadAllRules = (i18nCallback) => {
message: (_, values) => i18nCallback.t('site.signup.minimum', values), message: (_, values) => i18nCallback.t('site.signup.minimum', values),
}) })
extend('atLeastOneSpecialCharater', {
validate(value) {
return !!value.match(/[^a-zA-Z0-9 \t\n]/)
},
message: (_, values) => i18nCallback.t('site.signup.special-char', values),
})
extend('samePassword', { extend('samePassword', {
validate(value, [pwd]) { validate(value, [pwd]) {
return value === pwd return value === pwd

View File

@ -131,8 +131,8 @@ describe('Register', () => {
wrapper.find('#registerFirstname').setValue('Max') wrapper.find('#registerFirstname').setValue('Max')
wrapper.find('#registerLastname').setValue('Mustermann') wrapper.find('#registerLastname').setValue('Mustermann')
wrapper.find('#Email-input-field').setValue('max.mustermann@gradido.net') wrapper.find('#Email-input-field').setValue('max.mustermann@gradido.net')
wrapper.find('input[name="form.password"]').setValue('Aa123456') wrapper.find('input[name="form.password"]').setValue('Aa123456_')
wrapper.find('input[name="form.passwordRepeat"]').setValue('Aa123456') wrapper.find('input[name="form.passwordRepeat"]').setValue('Aa123456_')
wrapper.find('.language-switch-select').findAll('option').at(1).setSelected() wrapper.find('.language-switch-select').findAll('option').at(1).setSelected()
wrapper.find('input[name="site.signup.agree"]').setChecked(true) wrapper.find('input[name="site.signup.agree"]').setChecked(true)
}) })
@ -185,8 +185,8 @@ describe('Register', () => {
wrapper.find('#registerFirstname').setValue('Max') wrapper.find('#registerFirstname').setValue('Max')
wrapper.find('#registerLastname').setValue('Mustermann') wrapper.find('#registerLastname').setValue('Mustermann')
wrapper.find('#Email-input-field').setValue('max.mustermann@gradido.net') wrapper.find('#Email-input-field').setValue('max.mustermann@gradido.net')
wrapper.find('input[name="form.password"]').setValue('Aa123456') wrapper.find('input[name="form.password"]').setValue('Aa123456_')
wrapper.find('input[name="form.passwordRepeat"]').setValue('Aa123456') wrapper.find('input[name="form.passwordRepeat"]').setValue('Aa123456_')
wrapper.find('.language-switch-select').findAll('option').at(1).setSelected() wrapper.find('.language-switch-select').findAll('option').at(1).setSelected()
}) })
@ -233,7 +233,7 @@ describe('Register', () => {
email: 'max.mustermann@gradido.net', email: 'max.mustermann@gradido.net',
firstName: 'Max', firstName: 'Max',
lastName: 'Mustermann', lastName: 'Mustermann',
password: 'Aa123456', password: 'Aa123456_',
language: 'de', language: 'de',
}, },
}), }),

View File

@ -138,8 +138,8 @@ describe('ResetPassword', () => {
beforeEach(async () => { beforeEach(async () => {
await wrapper.setData({ authenticated: true, sessionId: 1 }) await wrapper.setData({ authenticated: true, sessionId: 1 })
await wrapper.vm.$nextTick() await wrapper.vm.$nextTick()
await wrapper.findAll('input').at(0).setValue('Aa123456') await wrapper.findAll('input').at(0).setValue('Aa123456_')
await wrapper.findAll('input').at(1).setValue('Aa123456') await wrapper.findAll('input').at(1).setValue('Aa123456_')
await flushPromises() await flushPromises()
await wrapper.find('form').trigger('submit') await wrapper.find('form').trigger('submit')
}) })
@ -167,7 +167,7 @@ describe('ResetPassword', () => {
variables: { variables: {
sessionId: 1, sessionId: 1,
email: 'user@example.org', email: 'user@example.org',
password: 'Aa123456', password: 'Aa123456_',
}, },
}), }),
) )

View File

@ -105,12 +105,13 @@ describe('UserCard_FormUserPasswort', () => {
describe('validation', () => { describe('validation', () => {
it('displays all password requirements', () => { it('displays all password requirements', () => {
const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span') const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span')
expect(feedbackArray).toHaveLength(5) expect(feedbackArray).toHaveLength(6)
expect(feedbackArray.at(0).text()).toBe('validations.messages.required') expect(feedbackArray.at(0).text()).toBe('validations.messages.required')
expect(feedbackArray.at(1).text()).toBe('site.signup.lowercase') expect(feedbackArray.at(1).text()).toBe('site.signup.lowercase')
expect(feedbackArray.at(2).text()).toBe('site.signup.uppercase') expect(feedbackArray.at(2).text()).toBe('site.signup.uppercase')
expect(feedbackArray.at(3).text()).toBe('site.signup.one_number') expect(feedbackArray.at(3).text()).toBe('site.signup.one_number')
expect(feedbackArray.at(4).text()).toBe('site.signup.minimum') expect(feedbackArray.at(4).text()).toBe('site.signup.minimum')
expect(feedbackArray.at(5).text()).toBe('site.signup.special-char')
}) })
it('removes first message when a character is given', async () => { it('removes first message when a character is given', async () => {
@ -125,7 +126,7 @@ describe('UserCard_FormUserPasswort', () => {
await wrapper.findAll('input').at(1).setValue('a') await wrapper.findAll('input').at(1).setValue('a')
await flushPromises() await flushPromises()
const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span') const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span')
expect(feedbackArray).toHaveLength(3) expect(feedbackArray).toHaveLength(4)
expect(feedbackArray.at(0).text()).toBe('site.signup.uppercase') expect(feedbackArray.at(0).text()).toBe('site.signup.uppercase')
}) })
@ -133,7 +134,7 @@ describe('UserCard_FormUserPasswort', () => {
await wrapper.findAll('input').at(1).setValue('Aa') await wrapper.findAll('input').at(1).setValue('Aa')
await flushPromises() await flushPromises()
const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span') const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span')
expect(feedbackArray).toHaveLength(2) expect(feedbackArray).toHaveLength(3)
expect(feedbackArray.at(0).text()).toBe('site.signup.one_number') expect(feedbackArray.at(0).text()).toBe('site.signup.one_number')
}) })
@ -141,14 +142,22 @@ describe('UserCard_FormUserPasswort', () => {
await wrapper.findAll('input').at(1).setValue('Aa1') await wrapper.findAll('input').at(1).setValue('Aa1')
await flushPromises() await flushPromises()
const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span') const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span')
expect(feedbackArray).toHaveLength(1) expect(feedbackArray).toHaveLength(2)
expect(feedbackArray.at(0).text()).toBe('site.signup.minimum') expect(feedbackArray.at(0).text()).toBe('site.signup.minimum')
}) })
it('removes all messages when all rules are fulfilled', async () => { it('removes the first five messages when a eight lowercase, uppercase and numeric characters are given', async () => {
await wrapper.findAll('input').at(1).setValue('Aa123456') await wrapper.findAll('input').at(1).setValue('Aa123456')
await flushPromises() await flushPromises()
const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span') const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span')
expect(feedbackArray).toHaveLength(1)
expect(feedbackArray.at(0).text()).toBe('site.signup.special-char')
})
it('removes all messages when a eight lowercase, uppercase and numeric characters are given', async () => {
await wrapper.findAll('input').at(1).setValue('Aa123456_')
await flushPromises()
const feedbackArray = wrapper.findAll('div.invalid-feedback').at(1).findAll('span')
expect(feedbackArray).toHaveLength(0) expect(feedbackArray).toHaveLength(0)
}) })
}) })
@ -164,8 +173,8 @@ describe('UserCard_FormUserPasswort', () => {
}, },
}) })
await form.findAll('input').at(0).setValue('1234') await form.findAll('input').at(0).setValue('1234')
await form.findAll('input').at(1).setValue('Aa123456') await form.findAll('input').at(1).setValue('Aa123456_')
await form.findAll('input').at(2).setValue('Aa123456') await form.findAll('input').at(2).setValue('Aa123456_')
await form.trigger('submit') await form.trigger('submit')
await flushPromises() await flushPromises()
}) })
@ -176,7 +185,7 @@ describe('UserCard_FormUserPasswort', () => {
variables: { variables: {
email: 'user@example.org', email: 'user@example.org',
password: '1234', password: '1234',
passwordNew: 'Aa123456', passwordNew: 'Aa123456_',
}, },
}), }),
) )
@ -197,8 +206,8 @@ describe('UserCard_FormUserPasswort', () => {
message: 'error', message: 'error',
}) })
await form.findAll('input').at(0).setValue('1234') await form.findAll('input').at(0).setValue('1234')
await form.findAll('input').at(1).setValue('Aa123456') await form.findAll('input').at(1).setValue('Aa123456_')
await form.findAll('input').at(2).setValue('Aa123456') await form.findAll('input').at(2).setValue('Aa123456_')
await form.trigger('submit') await form.trigger('submit')
await flushPromises() await flushPromises()
}) })