89 lines
1.8 KiB
Ruby
89 lines
1.8 KiB
Ruby
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe Issue1905ExchangeLoginFromRemoteId, type: :db_migration do
|
|
|
|
let(:backend) { ::Import::Exchange }
|
|
|
|
it 'removes :item_id from attributes' do
|
|
|
|
invalid_config = {
|
|
attributes: {
|
|
item_id: 'login',
|
|
some: 'other',
|
|
}
|
|
}
|
|
|
|
valid_config = ActiveSupport::HashWithIndifferentAccess.new(
|
|
attributes: {
|
|
some: 'other',
|
|
}
|
|
)
|
|
|
|
expect(backend).to receive(:config).and_return(invalid_config) # rubocop:disable RSpec/StubbedMock
|
|
allow(backend).to receive(:config).and_call_original
|
|
|
|
migrate
|
|
|
|
expect(backend.config).to eq(valid_config)
|
|
end
|
|
|
|
context 'no changes' do
|
|
|
|
it 'performs no action for new systems', system_init_done: false do
|
|
expect(backend).not_to receive(:config)
|
|
migrate
|
|
end
|
|
|
|
shared_examples 'irrelevant config' do
|
|
it 'does not change the config' do
|
|
allow(backend).to receive(:config).and_return(config)
|
|
expect(backend).not_to receive(:config=)
|
|
migrate
|
|
end
|
|
end
|
|
|
|
context 'blank config' do
|
|
let(:config) { nil }
|
|
|
|
it_behaves_like 'irrelevant config'
|
|
end
|
|
|
|
context 'blank attributes' do
|
|
let(:config) do
|
|
{
|
|
some: 'config'
|
|
}
|
|
end
|
|
|
|
it_behaves_like 'irrelevant config'
|
|
end
|
|
|
|
context 'blank attribute :item_id' do
|
|
let(:config) do
|
|
{
|
|
attributes: {
|
|
some: 'mapping'
|
|
}
|
|
}
|
|
end
|
|
|
|
it_behaves_like 'irrelevant config'
|
|
end
|
|
|
|
context 'attribute :item_id not mapping to login' do
|
|
|
|
let(:config) do
|
|
{
|
|
attributes: {
|
|
item_id: 'other_local_attribute'
|
|
}
|
|
}
|
|
end
|
|
|
|
it_behaves_like 'irrelevant config'
|
|
end
|
|
end
|
|
end
|