|
@@ -0,0 +1,65 @@
|
|
|
+# Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
|
|
|
+
|
|
|
+require 'rails_helper'
|
|
|
+
|
|
|
+RSpec.describe ExternalCredential, :aggregate_failures, current_user_id: 1, type: :model do
|
|
|
+ describe '#update_client_secret' do
|
|
|
+ let(:external_credential) { create(:external_credential, name: 'google', credentials:) }
|
|
|
+
|
|
|
+ let(:credentials) do
|
|
|
+ {
|
|
|
+ 'client_secret' => 'dummy-1337',
|
|
|
+ 'code' => 'code123',
|
|
|
+ 'grant_type' => 'authorization_code',
|
|
|
+ 'client_id' => 'dummy123',
|
|
|
+ 'redirect_uri' => described_class.callback_url('google'),
|
|
|
+ }
|
|
|
+ end
|
|
|
+
|
|
|
+ before do
|
|
|
+ allow(ExternalCredential::Google).to receive(:update_client_secret).and_call_original
|
|
|
+ end
|
|
|
+
|
|
|
+ context 'when credentials are not changed' do
|
|
|
+ it 'does not call update_client_secret on the backend module' do
|
|
|
+ external_credential.update!(created_at: Time.zone.now)
|
|
|
+
|
|
|
+ expect(ExternalCredential::Google).not_to have_received(:update_client_secret)
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ context 'when credentials are changed' do
|
|
|
+ context 'when client_secret is blank' do
|
|
|
+ it 'does not call update_client_secret on the backend module' do
|
|
|
+ external_credential.update!(credentials: credentials.merge('client_secret' => ''))
|
|
|
+
|
|
|
+ expect(ExternalCredential::Google).not_to have_received(:update_client_secret)
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ context 'when client_secret is not changed' do
|
|
|
+ it 'does not call update_client_secret on the backend module' do
|
|
|
+ external_credential.update!(credentials: credentials)
|
|
|
+
|
|
|
+ expect(ExternalCredential::Google).not_to have_received(:update_client_secret)
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ context 'when client_id is changed' do
|
|
|
+ it 'does not call update_client_secret on the backend module' do
|
|
|
+ external_credential.update!(credentials: credentials.merge('client_id' => 'dummy456'))
|
|
|
+
|
|
|
+ expect(ExternalCredential::Google).not_to have_received(:update_client_secret)
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ context 'when client_secret is changed' do
|
|
|
+ it 'calls update_client_secret on the backend module' do
|
|
|
+ external_credential.update!(credentials: credentials.merge('client_secret' => 'new-dummy-1337'))
|
|
|
+
|
|
|
+ expect(ExternalCredential::Google).to have_received(:update_client_secret).with('dummy-1337', 'new-dummy-1337')
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+end
|