Merge branch 'CID-367-fix_nonexiting_user_message' into bug_fix
This commit is contained in:
commit
919afa854d
@ -148,6 +148,7 @@ module Devops
|
|||||||
"Deploy environment '#{deploy_env}' has been deleted from project '#{project.id}'."
|
"Deploy environment '#{deploy_env}' has been deleted from project '#{project.id}'."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# updates only run_list and description
|
||||||
def update_project id
|
def update_project id
|
||||||
body = parser.update
|
body = parser.update
|
||||||
old_project = Devops::Db.connector.project id
|
old_project = Devops::Db.connector.project id
|
||||||
|
|||||||
@ -385,13 +385,9 @@ module Devops
|
|||||||
# 201 - Created
|
# 201 - Created
|
||||||
app.post_with_headers "/project", :headers => [:accept, :content_type] do
|
app.post_with_headers "/project", :headers => [:accept, :content_type] do
|
||||||
check_privileges("project", "w")
|
check_privileges("project", "w")
|
||||||
begin
|
res = Devops::API2_0::Handler::Project.new(request).create_project
|
||||||
res = Devops::API2_0::Handler::Project.new(request).create_project
|
res = "Created. " + res
|
||||||
res = "Created. " + res
|
create_response(res, nil, 201)
|
||||||
create_response(res, nil, 201)
|
|
||||||
rescue InvalidRecord => e
|
|
||||||
halt_response(e.message)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
=begin
|
=begin
|
||||||
|
|||||||
@ -63,7 +63,8 @@ module Devops
|
|||||||
true
|
true
|
||||||
rescue InvalidRecord => e
|
rescue InvalidRecord => e
|
||||||
error_message = self.build_error_message(e.message)
|
error_message = self.build_error_message(e.message)
|
||||||
raise InvalidRecord.new(error_message)
|
# e.class may be InvalidRecord or its descendants
|
||||||
|
raise e.class.new(error_message)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -7,10 +7,10 @@ module Validators
|
|||||||
end
|
end
|
||||||
|
|
||||||
def validate!
|
def validate!
|
||||||
raise InvalidRecord.new(message) unless valid?
|
raise error_class.new(message) unless valid?
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
DevopsLogger.logger.error [e.message, e.backtrace].join("\n")
|
DevopsLogger.logger.error [e.message, e.backtrace].join("\n")
|
||||||
raise InvalidRecord.new("An error raised during validation with #{self.class}: #{e.class}: #{e.message}")
|
raise error_class.new("An error raised during validation with #{self.class}: #{e.class}: #{e.message}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def valid?
|
def valid?
|
||||||
@ -21,9 +21,21 @@ module Validators
|
|||||||
raise 'override me'
|
raise 'override me'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def error_class
|
||||||
|
self.class.get_error_class
|
||||||
|
end
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
|
def get_error_class
|
||||||
|
@error_class || InvalidRecord
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def error_class(klass)
|
||||||
|
@error_class = klass
|
||||||
|
end
|
||||||
|
|
||||||
# this method delegates @valid? and @message methods to helper validator, passed as block
|
# this method delegates @valid? and @message methods to helper validator, passed as block
|
||||||
def delegate_to_helper_validator(&block)
|
def delegate_to_helper_validator(&block)
|
||||||
|
|
||||||
|
|||||||
@ -14,6 +14,18 @@ module Validators
|
|||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# do not rescue children validators' errors. With this:
|
||||||
|
# class of child validator's error doesn't disappeared
|
||||||
|
# logs doesn't contain two similar records
|
||||||
|
def validate!
|
||||||
|
raise error_class.new(message) unless valid?
|
||||||
|
rescue InvalidRecord => e
|
||||||
|
raise e
|
||||||
|
rescue StandardError => e
|
||||||
|
DevopsLogger.logger.error [e.message, e.backtrace].join("\n")
|
||||||
|
raise error_class.new("An error raised during validation with #{self.class}: #{e.class}: #{e.message}")
|
||||||
|
end
|
||||||
|
|
||||||
def message
|
def message
|
||||||
"Invalid project: #{@msg}."
|
"Invalid project: #{@msg}."
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
module Validators
|
module Validators
|
||||||
class DeployEnv::Users < Base
|
class DeployEnv::Users < Base
|
||||||
|
error_class ::Devops::NonExistingUser
|
||||||
|
|
||||||
delegate_to_helper_validator { Helpers::Users.new(@model.users) }
|
delegate_to_helper_validator { Helpers::Users.new(@model.users) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
|
require 'exceptions/non_existing_user'
|
||||||
module Validators
|
module Validators
|
||||||
class Helpers::Users < Base
|
class Helpers::Users < Base
|
||||||
|
|
||||||
|
error_class ::Devops::NonExistingUser
|
||||||
|
|
||||||
def valid?
|
def valid?
|
||||||
available_users = ::Devops::Db.connector.users_names(@model)
|
available_users = ::Devops::Db.connector.users_names(@model)
|
||||||
@nonexistent_users = (@model || []) - available_users
|
@nonexistent_users = (@model || []) - available_users
|
||||||
|
|||||||
@ -13,7 +13,9 @@ module Devops
|
|||||||
end
|
end
|
||||||
|
|
||||||
def http_body
|
def http_body
|
||||||
JSON.pretty_generate(message: self.message)
|
error_body = {message: self.message}
|
||||||
|
error_body[:error_type] = error_type if respond_to?(:error_type)
|
||||||
|
JSON.pretty_generate(error_body)
|
||||||
end
|
end
|
||||||
|
|
||||||
def http_headers
|
def http_headers
|
||||||
|
|||||||
8
devops-service/exceptions/non_existing_user.rb
Normal file
8
devops-service/exceptions/non_existing_user.rb
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
require_relative 'invalid_record'
|
||||||
|
module Devops
|
||||||
|
class NonExistingUser < ::InvalidRecord
|
||||||
|
def error_type
|
||||||
|
'unknown_user'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -22,6 +22,13 @@ RSpec.describe Devops::Model::DeployEnvEc2, type: :model do
|
|||||||
|
|
||||||
it_behaves_like 'deploy env'
|
it_behaves_like 'deploy env'
|
||||||
it_behaves_like 'cloud deploy env'
|
it_behaves_like 'cloud deploy env'
|
||||||
|
|
||||||
|
it 'raises Devops::NonExistingUser when passing non existing user' do
|
||||||
|
env = build(:deploy_env_ec2, users: %w(wrong))
|
||||||
|
expect {
|
||||||
|
env.validate!
|
||||||
|
}.to raise_error Devops::NonExistingUser
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#initialize' do
|
describe '#initialize' do
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user