summaryrefslogtreecommitdiff
path: root/spec/models
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2017-05-25 22:14:22 +0800
committerLin Jen-Shin <godfat@godfat.org>2017-05-25 22:14:22 +0800
commitb74b7309a5121be50fe6c07c85b61e258c113ce6 (patch)
treeca75d39392c6614b53a524dd99b4e34fb09ccb32 /spec/models
parent3e190d80310d900beaf42881e933ae4d3c2811a0 (diff)
downloadgitlab-ce-b74b7309a5121be50fe6c07c85b61e258c113ce6.tar.gz
Add tests for CI_ENVIRONMENT_URL
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/ci/build_spec.rb59
1 files changed, 53 insertions, 6 deletions
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb
index e971b4bc3f9..5b2c1472974 100644
--- a/spec/models/ci/build_spec.rb
+++ b/spec/models/ci/build_spec.rb
@@ -20,6 +20,7 @@ describe Ci::Build, :models do
it { is_expected.to validate_presence_of(:ref) }
it { is_expected.to respond_to(:has_trace?) }
it { is_expected.to respond_to(:trace) }
+ it { is_expected.to validate_length_of(:external_url).is_at_most(255) }
describe '#actionize' do
context 'when build is a created' do
@@ -427,6 +428,30 @@ describe Ci::Build, :models do
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
subject { build.starts_environment? }
@@ -1176,11 +1201,6 @@ describe Ci::Build, :models do
end
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
[
{ key: 'CI_ENVIRONMENT_NAME', value: 'production', public: true },
@@ -1188,7 +1208,34 @@ describe Ci::Build, :models do
]
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
context 'when build started manually' do