Files
gitlab-foss/spec/models/cloud_connector/service_access_token_spec.rb
2025-06-19 09:11:59 +00:00

70 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe CloudConnector::ServiceAccessToken, type: :model, feature_category: :system_access do
let_it_be(:expired_token) { create(:service_access_token, :expired) }
let_it_be(:active_token) { create(:service_access_token, :active) }
describe '.expired', :freeze_time do
it 'selects all expired tokens' do
expect(described_class.expired).to match_array([expired_token])
end
end
describe '.active', :freeze_time do
it 'selects all active tokens' do
expect(described_class.active).to match_array([active_token])
end
end
describe '#token' do
subject(:service_access_token) { described_class.new }
let(:token_value) { 'Abc' }
it 'is encrypted' do
service_access_token.token = token_value
aggregate_failures do
expect(service_access_token.encrypted_token_iv).to be_present
expect(service_access_token.encrypted_token).to be_present
expect(service_access_token.encrypted_token).not_to eq(token_value)
expect(service_access_token.token).to eq(token_value)
end
end
describe 'validations' do
it { is_expected.to validate_presence_of(:token) }
it { is_expected.to validate_presence_of(:expires_at) }
end
end
describe '#expired?' do
it 'returns false for active token' do
expect(active_token).not_to be_expired
end
it 'returns true for expired token' do
expect(expired_token).to be_expired
end
end
describe '#refresh_required?', :freeze_time do
let_it_be(:active_long_lived_token) { create(:service_access_token, expires_at: 3.days.from_now) }
let_it_be(:active_short_lived_token) { create(:service_access_token, expires_at: 1.day.from_now) }
it 'returns false for a token that lives longer 2 days' do
expect(active_long_lived_token.refresh_required?).to be false
end
it 'returns true for a token that expires within 2 days' do
expect(active_short_lived_token.refresh_required?).to be true
end
it 'returns true for expired token' do
expect(expired_token.refresh_required?).to be true
end
end
end