12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe Issue3346Xoauth2TokenNotFetched, type: :db_migration do
- shared_examples 'XOAUTH2 channel migration' do |channel_type|
- context 'when valid Channel is present' do
- before do
- channel = create(channel_type)
- channel.options[:inbound][:options][:password] = 'some_password'
- channel.save!
- end
- it "doesn't refresh the token" do
- allow(ExternalCredential).to receive(:refresh_token)
- migrate
- expect(ExternalCredential).not_to have_received(:refresh_token)
- end
- end
- context 'when broken Channel is present' do
- before do
- channel = create(channel_type)
- channel.options[:inbound][:options].delete(:password)
- channel.save!
- end
- it 'refreshes the token' do
- allow(ExternalCredential).to receive(:refresh_token)
- migrate
- expect(ExternalCredential).to have_received(:refresh_token)
- end
- it "doesn't break if refresh fails" do
- allow(ExternalCredential).to receive(:refresh_token).and_raise(RuntimeError)
- expect { migrate }.not_to raise_error
- end
- end
- end
- context 'when Microsoft365 Channel is present' do
- it_behaves_like 'XOAUTH2 channel migration', :microsoft365_channel
- end
- context 'when Google Channel is present' do
- it_behaves_like 'XOAUTH2 channel migration', :google_channel
- end
- end
|