Improve code
This commit is contained in:
parent
2c8b830fdb
commit
1a7a900d8e
4 changed files with 25 additions and 29 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue