12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe Gql::Mutations::User::Current::ChangePassword, type: :graphql do
- context 'when changing the password', authenticated_as: :agent do
- let(:agent) { create(:agent, password: 'password') }
- let(:mutation) do
- <<~MUTATION
- mutation userCurrentChangePassword($currentPassword: String!, $newPassword: String!) {
- userCurrentChangePassword(currentPassword: $currentPassword, newPassword: $newPassword) {
- success
- errors {
- message
- field
- }
- }
- }
- MUTATION
- end
- let(:variables) { {} }
- before do
- gql.execute(mutation, variables: variables)
- end
- context 'with invalid current password' do
- let(:variables) do
- {
- currentPassword: 'foobar',
- newPassword: 'new_password'
- }
- end
- it 'fails with error message', :aggregate_failures do
- errors = gql.result.data[:errors].first
- expect(errors['message']).to eq('The current password you provided is incorrect.')
- expect(errors['field']).to eq('current_password')
- end
- end
- context 'with password policy violation' do
- let(:variables) do
- {
- currentPassword: 'password',
- newPassword: 'FooBarbazbaz'
- }
- end
- it 'fails with error message', :aggregate_failures do
- errors = gql.result.data[:errors].first
- expect(errors['message']).to eq('Invalid password, it must contain at least 1 digit!')
- expect(errors['field']).to eq('new_password')
- end
- end
- context 'with valid passwords' do
- let(:variables) do
- {
- currentPassword: 'password',
- newPassword: 'IamAValidPassword111einseinself'
- }
- end
- it 'succeeds' do
- expect(gql.result.data[:success]).to be_truthy
- end
- end
- end
- end
|