Merge branch 'CID-367-fix_nonexiting_user_message' into qa
This commit is contained in:
		
						commit
						16baa89bc2
					
				| @ -146,6 +146,7 @@ module Devops | ||||
|           project.delete_deploy_env(deploy_env) | ||||
|         end | ||||
| 
 | ||||
|         # updates only run_list and description | ||||
|         def update_project id | ||||
|           body = parser.update | ||||
|           old_project = Devops::Db.connector.project id | ||||
|  | ||||
| @ -368,13 +368,9 @@ module Devops | ||||
|           #   201 - Created | ||||
|           app.post_with_headers "/project", :headers => [:accept, :content_type] do | ||||
|             check_privileges("project", "w") | ||||
|             begin | ||||
|               res = Devops::API2_0::Handler::Project.new(request).create_project | ||||
|               res = "Created. " + res | ||||
|               create_response(res, nil, 201) | ||||
|             rescue InvalidRecord => e | ||||
|               halt_response(e.message) | ||||
|             end | ||||
|             res = Devops::API2_0::Handler::Project.new(request).create_project | ||||
|             res = "Created. " + res | ||||
|             create_response(res, nil, 201) | ||||
|           end | ||||
| 
 | ||||
| =begin | ||||
|  | ||||
| @ -63,7 +63,8 @@ module Devops | ||||
|           true | ||||
|         rescue InvalidRecord => e | ||||
|           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 | ||||
| 
 | ||||
|  | ||||
| @ -7,10 +7,10 @@ module Validators | ||||
|     end | ||||
| 
 | ||||
|     def validate! | ||||
|       raise InvalidRecord.new(message) unless valid? | ||||
|       raise error_class.new(message) unless valid? | ||||
|     rescue StandardError => e | ||||
|       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 | ||||
| 
 | ||||
|     def valid? | ||||
| @ -21,9 +21,21 @@ module Validators | ||||
|       raise 'override me' | ||||
|     end | ||||
| 
 | ||||
|     def error_class | ||||
|       self.class.get_error_class | ||||
|     end | ||||
| 
 | ||||
|     class << self | ||||
|       def get_error_class | ||||
|         @error_class || InvalidRecord | ||||
|       end | ||||
| 
 | ||||
|       private | ||||
| 
 | ||||
|       def error_class(klass) | ||||
|         @error_class = klass | ||||
|       end | ||||
| 
 | ||||
|       # this method delegates @valid? and @message methods to helper validator, passed as block | ||||
|       def delegate_to_helper_validator(&block) | ||||
| 
 | ||||
|  | ||||
| @ -14,6 +14,18 @@ module Validators | ||||
|       true | ||||
|     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 | ||||
|       "Invalid project: #{@msg}." | ||||
|     end | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| module Validators | ||||
|   class DeployEnv::Users < Base | ||||
|     error_class ::Devops::NonExistingUser | ||||
| 
 | ||||
|     delegate_to_helper_validator { Helpers::Users.new(@model.users) } | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -1,6 +1,9 @@ | ||||
| require 'exceptions/non_existing_user' | ||||
| module Validators | ||||
|   class Helpers::Users < Base | ||||
| 
 | ||||
|     error_class ::Devops::NonExistingUser | ||||
| 
 | ||||
|     def valid? | ||||
|       available_users = ::Devops::Db.connector.users_names(@model) | ||||
|       @nonexistent_users = (@model || []) - available_users | ||||
|  | ||||
| @ -13,7 +13,9 @@ module Devops | ||||
|       end | ||||
| 
 | ||||
|       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 | ||||
| 
 | ||||
|       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 '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 | ||||
| 
 | ||||
|   describe '#initialize' do | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Anton Chuchkalov
						Anton Chuchkalov