Add tests for CI_ENVIRONMENT_URL
This commit is contained in:
parent
3e190d8031
commit
b74b7309a5
|
@ -499,10 +499,13 @@ module Ci
|
||||||
end
|
end
|
||||||
|
|
||||||
def persisted_environment_variables
|
def persisted_environment_variables
|
||||||
persisted_environment.predefined_variables <<
|
variables = persisted_environment.predefined_variables
|
||||||
{ key: 'CI_ENVIRONMENT_URL',
|
|
||||||
value: expanded_environment_url,
|
variables << { key: 'CI_ENVIRONMENT_URL',
|
||||||
public: true }
|
value: expanded_environment_url,
|
||||||
|
public: true } if environment_url
|
||||||
|
|
||||||
|
variables
|
||||||
end
|
end
|
||||||
|
|
||||||
def legacy_variables
|
def legacy_variables
|
||||||
|
|
|
@ -20,6 +20,7 @@ describe Ci::Build, :models do
|
||||||
it { is_expected.to validate_presence_of(:ref) }
|
it { is_expected.to validate_presence_of(:ref) }
|
||||||
it { is_expected.to respond_to(:has_trace?) }
|
it { is_expected.to respond_to(:has_trace?) }
|
||||||
it { is_expected.to respond_to(:trace) }
|
it { is_expected.to respond_to(:trace) }
|
||||||
|
it { is_expected.to validate_length_of(:external_url).is_at_most(255) }
|
||||||
|
|
||||||
describe '#actionize' do
|
describe '#actionize' do
|
||||||
context 'when build is a created' do
|
context 'when build is a created' do
|
||||||
|
@ -427,6 +428,30 @@ describe Ci::Build, :models do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#expanded_environment_url' do
|
||||||
|
subject { build.expanded_environment_url }
|
||||||
|
|
||||||
|
context 'when environment uses $CI_COMMIT_REF_NAME' do
|
||||||
|
let(:build) do
|
||||||
|
create(:ci_build,
|
||||||
|
ref: 'master',
|
||||||
|
environment_url: 'http://review/$CI_COMMIT_REF_NAME')
|
||||||
|
end
|
||||||
|
|
||||||
|
it { is_expected.to eq('http://review/master') }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when environment uses yaml_variables containing symbol keys' do
|
||||||
|
let(:build) do
|
||||||
|
create(:ci_build,
|
||||||
|
yaml_variables: [{ key: :APP_HOST, value: 'host' }],
|
||||||
|
environment_url: 'http://review/$APP_HOST')
|
||||||
|
end
|
||||||
|
|
||||||
|
it { is_expected.to eq('http://review/host') }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#starts_environment?' do
|
describe '#starts_environment?' do
|
||||||
subject { build.starts_environment? }
|
subject { build.starts_environment? }
|
||||||
|
|
||||||
|
@ -1176,11 +1201,6 @@ describe Ci::Build, :models do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when build has an environment' do
|
context 'when build has an environment' do
|
||||||
before do
|
|
||||||
build.update(environment: 'production')
|
|
||||||
create(:environment, project: build.project, name: 'production', slug: 'prod-slug')
|
|
||||||
end
|
|
||||||
|
|
||||||
let(:environment_variables) do
|
let(:environment_variables) do
|
||||||
[
|
[
|
||||||
{ key: 'CI_ENVIRONMENT_NAME', value: 'production', public: true },
|
{ key: 'CI_ENVIRONMENT_NAME', value: 'production', public: true },
|
||||||
|
@ -1188,7 +1208,34 @@ describe Ci::Build, :models do
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
it { environment_variables.each { |v| is_expected.to include(v) } }
|
before do
|
||||||
|
build.update(environment: 'production')
|
||||||
|
create(:environment, project: build.project, name: 'production', slug: 'prod-slug')
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when no URL was set' do
|
||||||
|
it { environment_variables.each { |v| is_expected.to include(v) } }
|
||||||
|
|
||||||
|
it 'does not have CI_ENVIRONMENT_URL' do
|
||||||
|
keys = subject.map { |var| var[:key] }
|
||||||
|
|
||||||
|
expect(keys).to include('CI_ENVIRONMENT_NAME', 'CI_ENVIRONMENT_SLUG')
|
||||||
|
expect(keys).not_to include('CI_ENVIRONMENT_URL')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when an URL was set' do
|
||||||
|
before do
|
||||||
|
build.update(environment_url: 'http://host/$CI_JOB_NAME')
|
||||||
|
|
||||||
|
environment_variables <<
|
||||||
|
{ key: 'CI_ENVIRONMENT_URL',
|
||||||
|
value: 'http://host/test',
|
||||||
|
public: true }
|
||||||
|
end
|
||||||
|
|
||||||
|
it { environment_variables.each { |v| is_expected.to include(v) } }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when build started manually' do
|
context 'when build started manually' do
|
||||||
|
|
Loading…
Reference in New Issue