Improve code

This commit is contained in:
Katarzyna Kobierska 2016-08-30 13:03:29 +02:00
parent 2c8b830fdb
commit 1a7a900d8e
4 changed files with 25 additions and 29 deletions

View file

@ -5,22 +5,18 @@ module API
requires :content, type: String, desc: 'Content of .gitlab-ci.yml'
end
post 'ci/lint' do
error = Ci::GitlabCiYamlProcessor.validation_message(params[:content])
response = {
status: '',
error: ''
}
namespace 'ci' do
post '/lint' do
errors = Ci::GitlabCiYamlProcessor.validation_message(params[:content])
if error.blank?
response[:status] = 'valid'
else
response[:error] = error
response[:status] = 'invalid'
status 200
if errors.blank?
{ status: 'valid', errors: [] }
else
{ status: 'invalid', errors: [errors] }
end
end
status 200
response
end
end
end

View file

@ -79,15 +79,12 @@ module Ci
end
def self.validation_message(content)
if content.blank?
'Please provide content of .gitlab-ci.yml'
else
begin
Ci::GitlabCiYamlProcessor.new(content)
nil
rescue ValidationError, Psych::SyntaxError => e
e.message
end
return 'Please provide content of .gitlab-ci.yml' if content.blank?
begin
Ci::GitlabCiYamlProcessor.new(content)
nil
rescue ValidationError, Psych::SyntaxError => e
e.message
end
end

View file

@ -1256,7 +1256,8 @@ EOT
it "returns an error about invalid configutaion" do
content = YAML.dump("invalid: yaml: test")
expect(GitlabCiYamlProcessor.validation_message(content)).to eq "Invalid configuration format"
expect(GitlabCiYamlProcessor.validation_message(content))
.to eq "Invalid configuration format"
end
end
@ -1264,13 +1265,15 @@ EOT
it "returns an error about invalid tags" do
content = YAML.dump({ rspec: { script: "test", tags: "mysql" } })
expect(GitlabCiYamlProcessor.validation_message(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"
expect(GitlabCiYamlProcessor.validation_message(''))
.to eq "Please provide content of .gitlab-ci.yml"
end
end

View file

@ -15,7 +15,7 @@ describe API::Lint, api: true do
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('')
expect(json_response['errors']).to eq([])
end
end
@ -25,7 +25,7 @@ describe API::Lint, api: true do
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['errors']).to eq(['Invalid configuration format'])
end
it "responds with errors about invalid configuration" do
@ -33,7 +33,7 @@ describe API::Lint, api: true do
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['errors']).to eq(['jobs config should contain at least one visible job'])
end
end