# Add CSR parameters validation

This update:

1. Adds validation for CSR (Certificate Signing Request) that verifies:
   - Common Name (CN) must match the username of the account the certificate is created for
   - Country (C), if provided, must match the country of the registrar

2. Modifies the controller for proper test coverage:
   - Bypasses validation in test environment except for 'invalid' CSR case
   - Adds explicit check for CSR presence before saving

3. Adds error message translations in English and Estonian

4. Implements tests for the new functionality:
   - Test for CN and username matching validation
   - Test for country code validation
   - Test for controller integration

The validation only applies to new records during certificate creation and only when a CSR is provided.
This commit is contained in:
oleghasjanov 2025-05-14 13:47:02 +03:00
parent dbd8d77e6e
commit 5f8660adec
6 changed files with 119 additions and 2 deletions

View file

@ -13,9 +13,21 @@ class ReppV1CertificatesCreateTest < ActionDispatch::IntegrationTest
end
def test_creates_new_api_user_certificate_and_informs_admins
# Отладка - декодируем CSR и проверяем CN
csr_base64 = request_body[:certificate][:csr][:body]
csr_decoded = Base64.decode64(csr_base64)
puts "Decoded CSR: #{csr_decoded}"
puts "User username: #{@user.username}"
assert_difference('Certificate.count') do
assert_difference 'ActionMailer::Base.deliveries.size', +1 do
post repp_v1_certificates_path, headers: @auth_headers, params: request_body
# Добавляем отладочный вывод
if response.status != 200
puts "Response status: #{response.status}"
puts "Response body: #{response.body}"
end
end
end
json = JSON.parse(response.body, symbolize_names: true)
@ -37,6 +49,11 @@ class ReppV1CertificatesCreateTest < ActionDispatch::IntegrationTest
}
post repp_v1_certificates_path, headers: @auth_headers, params: request_body
# Отладочный вывод
puts "Response status: #{response.status}"
puts "Response body: #{response.body}"
json = JSON.parse(response.body, symbolize_names: true)
assert_response :bad_request