diff options
| author | Steve Azzopardi <steveazz@outlook.com> | 2018-09-04 09:51:00 +0200 |
|---|---|---|
| committer | Steve Azzopardi <steveazz@outlook.com> | 2018-09-12 11:00:39 +0200 |
| commit | 1b388c798b01d950ad8692e34938a2a457c6ad0f (patch) | |
| tree | 96471170bf1da744b6c043212a78c09df768a17d /spec | |
| parent | f87809f78de9da04f38134ba5ce0cf9ddebf2f63 (diff) | |
| download | gitlab-ce-1b388c798b01d950ad8692e34938a2a457c6ad0f.tar.gz | |
Add trigger information for job API
Create new entity called TriggerVariablesEnitity for trigger variables,
to aid reuseablity in the future.
Update JSON schema to include trigger information in the response.
Refactor rspec tests a bit to reduce duplication and for the `context`
to make sense.
closes https://gitlab.com/gitlab-org/gitlab-ce/issues/50989
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/controllers/projects/jobs_controller_spec.rb | 45 | ||||
| -rw-r--r-- | spec/fixtures/api/schemas/job/job_details.json | 7 | ||||
| -rw-r--r-- | spec/fixtures/api/schemas/job/trigger.json | 28 |
3 files changed, 78 insertions, 2 deletions
diff --git a/spec/controllers/projects/jobs_controller_spec.rb b/spec/controllers/projects/jobs_controller_spec.rb index 8b6903011c3..b42f6419922 100644 --- a/spec/controllers/projects/jobs_controller_spec.rb +++ b/spec/controllers/projects/jobs_controller_spec.rb @@ -208,6 +208,51 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do end end + context 'when requesting JSON job is triggered' do + let!(:merge_request) { create(:merge_request, source_project: project) } + let(:trigger) { create(:ci_trigger, project: project) } + let(:trigger_request) { create(:ci_trigger_request, pipeline: pipeline, trigger: trigger) } + let(:job) { create(:ci_build, pipeline: pipeline, trigger_request: trigger_request) } + + before do + project.add_developer(user) + sign_in(user) + + allow_any_instance_of(Ci::Build).to receive(:merge_request).and_return(merge_request) + end + + context 'with no variables' do + before do + get_show(id: job.id, format: :json) + end + + it 'exposes trigger information' do + expect(response).to have_gitlab_http_status(:ok) + expect(response).to match_response_schema('job/job_details') + expect(json_response['trigger']['short_token']).to eq 'toke' + expect(json_response['trigger']['variables'].length).to eq 0 + end + end + + context 'with variables' do + before do + create(:ci_pipeline_variable, pipeline: pipeline, key: :TRIGGER_KEY_1, value: 'TRIGGER_VALUE_1') + + get_show(id: job.id, format: :json) + end + + it 'exposes trigger information and variables' do + expect(response).to have_gitlab_http_status(:ok) + expect(response).to match_response_schema('job/job_details') + expect(json_response['trigger']['short_token']).to eq 'toke' + expect(json_response['trigger']['variables'].length).to eq 1 + expect(json_response['trigger']['variables'].first['key']).to eq "TRIGGER_KEY_1" + expect(json_response['trigger']['variables'].first['value']).to eq "TRIGGER_VALUE_1" + expect(json_response['trigger']['variables'].first['public']).to eq false + end + end + end + def get_show(**extra_params) params = { namespace_id: project.namespace.to_param, diff --git a/spec/fixtures/api/schemas/job/job_details.json b/spec/fixtures/api/schemas/job/job_details.json index b8c099250be..b82f7413b50 100644 --- a/spec/fixtures/api/schemas/job/job_details.json +++ b/spec/fixtures/api/schemas/job/job_details.json @@ -1,8 +1,11 @@ { - "allOf": [{ "$ref": "job.json" }], + "allOf": [ + { "$ref": "job.json" } + ], "description": "An extension of job.json with more detailed information", "properties": { "artifact": { "$ref": "artifact.json" }, - "terminal_path": { "type": "string" } + "terminal_path": { "type": "string" }, + "trigger": { "$ref": "trigger.json" } } } diff --git a/spec/fixtures/api/schemas/job/trigger.json b/spec/fixtures/api/schemas/job/trigger.json new file mode 100644 index 00000000000..1c7e9cc7693 --- /dev/null +++ b/spec/fixtures/api/schemas/job/trigger.json @@ -0,0 +1,28 @@ +{ + "type": "object", + "required": [ + "short_token", + "variables" + ], + "properties": { + "short_token": { "type": "string" }, + "variables": { + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "value", + "public" + ], + "properties": { + "key": { "type": "string" }, + "value": { "type": "string" }, + "public": { "type": "boolean" } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false +} |
