Module: Sepa::AttributeChecks
Overview
Contains functionality to check the attributes passed to Client. Uses ActiveModel::Validations for the actual validation.
Constant Summary
Constants included from ErrorMessages
ErrorMessages::CONTENT_ERROR_MESSAGE, ErrorMessages::CUSTOMER_ID_ERROR_MESSAGE, ErrorMessages::DECRYPTION_ERROR_MESSAGE, ErrorMessages::ENCRYPTION_CERT_ERROR_MESSAGE, ErrorMessages::ENCRYPTION_CERT_REQUEST_ERROR_MESSAGE, ErrorMessages::ENCRYPTION_PRIVATE_KEY_ERROR_MESSAGE, ErrorMessages::ENVIRONMENT_ERROR_MESSAGE, ErrorMessages::FILE_REFERENCE_ERROR_MESSAGE, ErrorMessages::FILE_TYPE_ERROR_MESSAGE, ErrorMessages::HASH_ERROR_MESSAGE, ErrorMessages::NOT_OK_RESPONSE_CODE_ERROR_MESSAGE, ErrorMessages::PIN_ERROR_MESSAGE, ErrorMessages::SIGNATURE_ERROR_MESSAGE, ErrorMessages::SIGNING_CERT_REQUEST_ERROR_MESSAGE, ErrorMessages::STATUS_ERROR_MESSAGE, ErrorMessages::TARGET_ID_ERROR_MESSAGE
Instance Method Summary collapse
-
#allowed_commands ⇒ Array<Symbol>
Commands which are allowed for a specific bank.
-
#check_command ⇒ Object
Checks that Client#command is included in #allowed_commands.
-
#check_content ⇒ Object
Checks that the content (payload) of the request is somewhat correct.
-
#check_customer_id ⇒ Object
Checks that Client#customer_id is valid.
-
#check_encryption_cert_request ⇒ Object
Checks that encryption certificate signing request can be initialized properly.
-
#check_encryption_certificate ⇒ Object
Checks that Client#bank_encryption_certificate can be initialized properly.
-
#check_encryption_private_key ⇒ Object
Checks that Client#encryption_private_key can be initialized properly.
-
#check_environment ⇒ Object
Checks that Client#environment is included in Client::ENVIRONMENTS.
-
#check_file_reference ⇒ Object
Checks presence and length of Client#file_reference if Client#command is
:download_file
. -
#check_file_type ⇒ Object
Checks that Client#file_type is proper.
-
#check_keys ⇒ Object
Checks that signing keys and certificates can be initialized properly.
-
#check_pin ⇒ Object
Checks that the Client#pin used in certificate requests in valid.
-
#check_presence_and_length(attribute, length, error_message) ⇒ Object
Checks presence and length of an attribute.
-
#check_signing_csr ⇒ Object
Checks that signing certificate signing request can be initialized properly.
-
#check_status ⇒ Object
Checks that Client#status is included in Client::STATUSES.
-
#check_target_id ⇒ Object
Checks that Client#target_id is valid.
Instance Method Details
#allowed_commands ⇒ Array<Symbol>
Commands which are allowed for a specific bank
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/sepa/attribute_checks.rb', line 10 def allowed_commands case bank when :nordea [ STANDARD_COMMANDS, :get_certificate, :renew_certificate ].flatten when :danske [ STANDARD_COMMANDS - [:get_user_info], :create_certificate, :get_bank_certificate, :renew_certificate, ].flatten when :op [ STANDARD_COMMANDS - [:get_user_info], :get_certificate, :get_service_certificates, ].flatten else [] end end |
#check_command ⇒ Object
Checks that Client#command is included in #allowed_commands
37 38 39 |
# File 'lib/sepa/attribute_checks.rb', line 37 def check_command errors.add(:command, "Invalid command") unless allowed_commands.include? command end |
#check_content ⇒ Object
Checks that the content (payload) of the request is somewhat correct. This validation is only
run when Client#command is :upload_file
.
132 133 134 135 136 137 138 139 140 141 |
# File 'lib/sepa/attribute_checks.rb', line 132 def check_content return unless command == :upload_file check = true check &&= content check &&= content.respond_to? :length check &&= content.length > 0 errors.add(:content, CONTENT_ERROR_MESSAGE) unless check end |
#check_customer_id ⇒ Object
Checks that Client#customer_id is valid
161 162 163 164 165 |
# File 'lib/sepa/attribute_checks.rb', line 161 def check_customer_id unless customer_id && customer_id.respond_to?(:length) && customer_id.length.between?(1, 16) errors.add(:customer_id, CUSTOMER_ID_ERROR_MESSAGE) end end |
#check_encryption_cert_request ⇒ Object
Checks that encryption certificate signing request can be initialized properly.
72 73 74 75 76 77 78 |
# File 'lib/sepa/attribute_checks.rb', line 72 def check_encryption_cert_request return unless bank == :danske return unless [:create_certificate, :renew_certificate].include? command return if cert_request_valid?(encryption_csr) errors.add(:encryption_csr, ENCRYPTION_CERT_REQUEST_ERROR_MESSAGE) end |
#check_encryption_certificate ⇒ Object
Checks that Client#bank_encryption_certificate can be initialized properly. Only run if
Client#bank is :danske
and Client#command is not :get_bank_certificate
.
169 170 171 172 173 174 175 176 177 178 179 180 181 |
# File 'lib/sepa/attribute_checks.rb', line 169 def check_encryption_certificate return unless bank == :danske return if command == :get_bank_certificate unless bank_encryption_certificate return errors.add(:bank_encryption_certificate, ENCRYPTION_CERT_ERROR_MESSAGE) end x509_certificate bank_encryption_certificate rescue errors.add(:bank_encryption_certificate, ENCRYPTION_CERT_ERROR_MESSAGE) end |
#check_encryption_private_key ⇒ Object
Checks that Client#encryption_private_key can be initialized properly. Is only run if
Client#bank is :danske
and Client#command is not :create_certificate
or
:get_bank_certificate
.
202 203 204 205 206 207 208 209 210 |
# File 'lib/sepa/attribute_checks.rb', line 202 def check_encryption_private_key return unless bank == :danske return if [:create_certificate, :get_bank_certificate].include? command rsa_key encryption_private_key rescue errors.add :encryption_private_key, ENCRYPTION_PRIVATE_KEY_ERROR_MESSAGE end |
#check_environment ⇒ Object
Checks that Client#environment is included in Client::ENVIRONMENTS. Not run if
Client#command is :get_bank_certificate
.
152 153 154 155 156 157 158 |
# File 'lib/sepa/attribute_checks.rb', line 152 def check_environment return if command == :get_bank_certificate unless Client::ENVIRONMENTS.include? environment errors.add(:environment, ENVIRONMENT_ERROR_MESSAGE) end end |
#check_file_reference ⇒ Object
Checks presence and length of Client#file_reference if Client#command is :download_file
193 194 195 196 197 |
# File 'lib/sepa/attribute_checks.rb', line 193 def check_file_reference return unless command == :download_file check_presence_and_length :file_reference, 33, FILE_REFERENCE_ERROR_MESSAGE end |
#check_file_type ⇒ Object
Checks that Client#file_type is proper
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/sepa/attribute_checks.rb', line 81 def check_file_type if file_type.present? valid = file_type.size < 35 else return if bank == :op && %i(download_file download_file_list).include?(command) valid = !(%i( download_file download_file_list upload_file ).include? command) end errors.add(:file_type, FILE_TYPE_ERROR_MESSAGE) unless valid end |
#check_keys ⇒ Object
Checks that signing keys and certificates can be initialized properly.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/sepa/attribute_checks.rb', line 42 def check_keys return if %i( create_certificate get_bank_certificate get_certificate get_service_certificates ).include? command begin rsa_key signing_private_key rescue errors.add(:signing_private_key, "Invalid signing private key") end begin x509_certificate own_signing_certificate rescue errors.add(:own_signing_certificate, "Invalid signing certificate") end end |
#check_pin ⇒ Object
Checks that the Client#pin used in certificate requests in valid
144 145 146 147 148 |
# File 'lib/sepa/attribute_checks.rb', line 144 def check_pin return unless [:create_certificate, :get_certificate].include? command check_presence_and_length(:pin, 20, PIN_ERROR_MESSAGE) end |
#check_presence_and_length(attribute, length, error_message) ⇒ Object
Checks presence and length of an attribute
120 121 122 123 124 125 126 127 128 |
# File 'lib/sepa/attribute_checks.rb', line 120 def check_presence_and_length(attribute, length, ) check = true check &&= send(attribute) check &&= send(attribute).respond_to? :size check &&= send(attribute).size < length check &&= send(attribute).size > 0 errors.add(attribute, ) unless check end |
#check_signing_csr ⇒ Object
Checks that signing certificate signing request can be initialized properly.
64 65 66 67 68 69 |
# File 'lib/sepa/attribute_checks.rb', line 64 def check_signing_csr return unless [:get_certificate, :create_certificate, :renew_certificate].include? command return if cert_request_valid?(signing_csr) errors.add(:signing_csr, SIGNING_CERT_REQUEST_ERROR_MESSAGE) end |
#check_status ⇒ Object
Checks that Client#status is included in Client::STATUSES.
184 185 186 187 188 189 190 |
# File 'lib/sepa/attribute_checks.rb', line 184 def check_status return unless [:download_file_list, :download_file].include? command unless status && Client::STATUSES.include?(status) errors.add :status, STATUS_ERROR_MESSAGE end end |
#check_target_id ⇒ Object
Checks that Client#target_id is valid.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/sepa/attribute_checks.rb', line 99 def check_target_id return if %i( create_certificate get_bank_certificate get_certificate renew_certificate get_user_info ).include?(command) || %i( danske op ).include?(bank) check_presence_and_length(:target_id, 80, TARGET_ID_ERROR_MESSAGE) end |