1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe Gql::Mutations::User::Current::RemoveLinkedAccount, type: :graphql do
- let(:user) { create(:agent) }
- let(:authorization) { create(:twitter_authorization, user: user) }
- let(:provider) { authorization.provider }
- let(:uid) { authorization.uid }
- let(:mutation) do
- <<~GQL
- mutation userCurrentRemoveLinkedAccount($provider: EnumAuthenticationProvider!, $uid: String!) {
- userCurrentRemoveLinkedAccount(provider: $provider, uid: $uid) {
- success
- }
- }
- GQL
- end
- let(:variables) { { provider:, uid: } }
- before do
- gql.execute(mutation, variables: variables)
- end
- context 'when user is authenticated', authenticated_as: :user do
- context 'with a valid authorization' do
- it 'removes the linked account' do
- expect { authorization.reload }.to raise_error(ActiveRecord::RecordNotFound)
- end
- end
- context 'without required permission' do
- let(:user) do
- create(:agent).tap do |user|
- user.roles.each { |role| role.permission_revoke('user_preferences') }
- end
- end
- it 'raises an error' do
- expect(gql.result.error_type).to eq(Exceptions::Forbidden)
- end
- end
- context 'without a valid authorization' do
- let(:uid) { 'invalid-uid' }
- it 'raises an error' do
- expect(gql.result.error_type).to eq(Exceptions::UnprocessableEntity)
- end
- end
- end
- it_behaves_like 'graphql responds with error if unauthenticated'
- end
|