summaryrefslogtreecommitdiff
path: root/spec/lib/api/entities/ci/job_request/service_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/api/entities/ci/job_request/service_spec.rb')
-rw-r--r--spec/lib/api/entities/ci/job_request/service_spec.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/spec/lib/api/entities/ci/job_request/service_spec.rb b/spec/lib/api/entities/ci/job_request/service_spec.rb
new file mode 100644
index 00000000000..47c2c4e04c9
--- /dev/null
+++ b/spec/lib/api/entities/ci/job_request/service_spec.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe API::Entities::Ci::JobRequest::Service do
+ let(:ports) { [{ number: 80, protocol: 'http', name: 'name' }]}
+ let(:service) do
+ instance_double(
+ ::Gitlab::Ci::Build::Image,
+ name: 'image_name',
+ entrypoint: ['foo'],
+ ports: ports,
+ pull_policy: ['if-not-present'],
+ alias: 'alias',
+ command: 'command',
+ variables: [{ key: 'key', value: 'value' }]
+ )
+ end
+
+ let(:entity) { described_class.new(service) }
+
+ subject(:result) { entity.as_json }
+
+ it 'exposes attributes' do
+ expect(result).to eq(
+ name: 'image_name',
+ entrypoint: ['foo'],
+ ports: ports,
+ pull_policy: ['if-not-present'],
+ alias: 'alias',
+ command: 'command',
+ variables: [{ key: 'key', value: 'value' }]
+ )
+ end
+
+ context 'when the ports param is nil' do
+ let(:ports) { nil }
+
+ it 'does not return the ports' do
+ expect(subject[:ports]).to be_nil
+ end
+ end
+
+ context 'when the FF ci_docker_image_pull_policy is disabled' do
+ before do
+ stub_feature_flags(ci_docker_image_pull_policy: false)
+ end
+
+ it { is_expected.not_to have_key(:pull_policy) }
+ end
+end