104 lines
2.8 KiB
Ruby
104 lines
2.8 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
describe ServerlessDomainFinder do
|
||
|
let(:function_name) { 'test-function' }
|
||
|
let(:pages_domain_name) { 'serverless.gitlab.io' }
|
||
|
let(:valid_cluster_uuid) { 'aba1cdef123456f278' }
|
||
|
let(:invalid_cluster_uuid) { 'aba1cdef123456f178' }
|
||
|
let!(:environment) { create(:environment, name: 'test') }
|
||
|
|
||
|
let(:pages_domain) do
|
||
|
create(
|
||
|
:pages_domain,
|
||
|
:instance_serverless,
|
||
|
domain: pages_domain_name
|
||
|
)
|
||
|
end
|
||
|
|
||
|
let(:knative_with_ingress) do
|
||
|
create(
|
||
|
:clusters_applications_knative,
|
||
|
external_ip: '10.0.0.1'
|
||
|
)
|
||
|
end
|
||
|
|
||
|
let!(:serverless_domain_cluster) do
|
||
|
create(
|
||
|
:serverless_domain_cluster,
|
||
|
uuid: 'abcdef12345678',
|
||
|
pages_domain: pages_domain,
|
||
|
knative: knative_with_ingress
|
||
|
)
|
||
|
end
|
||
|
|
||
|
let(:valid_uri) { "https://#{function_name}-#{valid_cluster_uuid}#{"%x" % environment.id}-#{environment.slug}.#{pages_domain_name}" }
|
||
|
let(:valid_fqdn) { "#{function_name}-#{valid_cluster_uuid}#{"%x" % environment.id}-#{environment.slug}.#{pages_domain_name}" }
|
||
|
let(:invalid_uri) { "https://#{function_name}-#{invalid_cluster_uuid}#{"%x" % environment.id}-#{environment.slug}.#{pages_domain_name}" }
|
||
|
|
||
|
let(:valid_finder) { described_class.new(valid_uri) }
|
||
|
let(:invalid_finder) { described_class.new(invalid_uri) }
|
||
|
|
||
|
describe '#serverless?' do
|
||
|
context 'with a valid URI' do
|
||
|
subject { valid_finder.serverless? }
|
||
|
|
||
|
it { is_expected.to be_truthy }
|
||
|
end
|
||
|
|
||
|
context 'with an invalid URI' do
|
||
|
subject { invalid_finder.serverless? }
|
||
|
|
||
|
it { is_expected.to be_falsy }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '#serverless_domain_cluster_uuid' do
|
||
|
context 'with a valid URI' do
|
||
|
subject { valid_finder.serverless_domain_cluster_uuid }
|
||
|
|
||
|
it { is_expected.to eq serverless_domain_cluster.uuid }
|
||
|
end
|
||
|
|
||
|
context 'with an invalid URI' do
|
||
|
subject { invalid_finder.serverless_domain_cluster_uuid }
|
||
|
|
||
|
it { is_expected.to be_nil }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '#execute' do
|
||
|
context 'with a valid URI' do
|
||
|
let(:serverless_domain) do
|
||
|
create(
|
||
|
:serverless_domain,
|
||
|
function_name: function_name,
|
||
|
serverless_domain_cluster: serverless_domain_cluster,
|
||
|
environment: environment
|
||
|
)
|
||
|
end
|
||
|
|
||
|
subject { valid_finder.execute }
|
||
|
|
||
|
it 'has the correct function_name' do
|
||
|
expect(subject.function_name).to eq function_name
|
||
|
end
|
||
|
|
||
|
it 'has the correct serverless_domain_cluster' do
|
||
|
expect(subject.serverless_domain_cluster).to eq serverless_domain_cluster
|
||
|
end
|
||
|
|
||
|
it 'has the correct environment' do
|
||
|
expect(subject.environment).to eq environment
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'with an invalid URI' do
|
||
|
subject { invalid_finder.execute }
|
||
|
|
||
|
it { is_expected.to be_nil }
|
||
|
end
|
||
|
end
|
||
|
end
|