diff options
author | Katarzyna Kobierska <kkobierska@gmail.com> | 2016-08-29 15:07:19 +0200 |
---|---|---|
committer | Katarzyna Kobierska <kkobierska@gmail.com> | 2016-09-07 12:10:49 +0200 |
commit | 2c8b830fdbf749e8bb7461d5c3ce4699b77ce3ca (patch) | |
tree | 10e0c44ca36349acf1378d3191267c9d1493b321 /spec | |
parent | bbba62fa51419b14be4f39873afdd45b5b248764 (diff) | |
download | gitlab-ce-2c8b830fdbf749e8bb7461d5c3ce4699b77ce3ca.tar.gz |
Code refactoring
Diffstat (limited to 'spec')
-rw-r--r-- | spec/lib/ci/gitlab_ci_yaml_processor_spec.rb | 27 | ||||
-rw-r--r-- | spec/requests/api/lint_spec.rb | 31 |
2 files changed, 36 insertions, 22 deletions
diff --git a/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb index d3a37ba6eb5..21aca9ee39f 100644 --- a/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb +++ b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb @@ -1252,20 +1252,33 @@ EOT end describe "#errors" do - describe "Error handling" do - it "returns an error if the YAML could not be parsed" do + context "when the YAML could not be parsed" do + it "returns an error about invalid configutaion" do content = YAML.dump("invalid: yaml: test") - expect(GitlabCiYamlProcessor.errors(content)).to eq "Invalid configuration format" + + expect(GitlabCiYamlProcessor.validation_message(content)).to eq "Invalid configuration format" end + end - it "returns an error if the tags parameter is invalid" do + context "when the tags parameter is invalid" do + it "returns an error about invalid tags" do content = YAML.dump({ rspec: { script: "test", tags: "mysql" } }) - expect(GitlabCiYamlProcessor.errors(content)).to eq "jobs:rspec tags should be an array of strings" + + expect(GitlabCiYamlProcessor.validation_message(content)).to eq "jobs:rspec tags should be an array of strings" + end + end + + context "when YMAL content is empty" do + it "returns an error about missing content" do + expect(GitlabCiYamlProcessor.validation_message('')).to eq "Please provide content of .gitlab-ci.yml" end + end - it "does not return any errors when the YAML is valid" do + context "when the YAML is valid" do + it "does not return any errors" do content = File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')) - expect(GitlabCiYamlProcessor.errors(content)).to eq nil + + expect(GitlabCiYamlProcessor.validation_message(content)).to be_nil end end end diff --git a/spec/requests/api/lint_spec.rb b/spec/requests/api/lint_spec.rb index 8bad57819c8..5f8c2829dfa 100644 --- a/spec/requests/api/lint_spec.rb +++ b/spec/requests/api/lint_spec.rb @@ -1,44 +1,45 @@ require 'spec_helper' -describe API::API do +describe API::Lint, api: true do include ApiHelpers - let(:yaml_content) do - File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')) - end + describe 'POST /ci/lint' do + let(:yaml_content) do + File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')) + end - describe 'POST /lint' do context 'with valid .gitlab-ci.yaml content' do - it 'validates the content' do - post api('/lint'), { content: yaml_content } + it 'passes validation' do + post api('/ci/lint'), { content: yaml_content } expect(response).to have_http_status(200) expect(json_response).to be_an Hash expect(json_response['status']).to eq('valid') + expect(json_response['error']).to eq('') end end context 'with an invalid .gitlab_ci.yml' do - it 'validates the content and shows an error message' do - post api('/lint'), { content: 'invalid content' } + it 'responds with errors about invalid syntax' do + post api('/ci/lint'), { content: 'invalid content' } expect(response).to have_http_status(200) expect(json_response['status']).to eq('invalid') - expect(json_response['error']).to eq(['Invalid configuration format']) + expect(json_response['error']).to eq('Invalid configuration format') end - it "validates the content and shows a configuration error" do - post api('/lint'), { content: '{ image: "ruby:2.1", services: ["postgres"] }' } + it "responds with errors about invalid configuration" do + post api('/ci/lint'), { content: '{ image: "ruby:2.1", services: ["postgres"] }' } expect(response).to have_http_status(200) expect(json_response['status']).to eq('invalid') - expect(json_response['error']).to eq(['jobs config should contain at least one visible job']) + expect(json_response['error']).to eq('jobs config should contain at least one visible job') end end context 'without the content parameter' do - it 'shows an error message' do - post api('/lint') + it 'responds with validation error about missing content' do + post api('/ci/lint') expect(response).to have_http_status(400) expect(json_response['error']).to eq('content is missing') |