mirror of
https://github.com/internetee/registry.git
synced 2025-07-31 15:06:23 +02:00
fix tests
This commit is contained in:
parent
0fe20bd63b
commit
3b594cf30d
10 changed files with 388 additions and 1664 deletions
2
test/fixtures/certificates.yml
vendored
2
test/fixtures/certificates.yml
vendored
|
@ -2,7 +2,6 @@ api:
|
|||
api_user: api_bestnames
|
||||
common_name: registry.test
|
||||
crt: "-----BEGIN CERTIFICATE-----\nMIICYjCCAcugAwIBAgIBADANBgkqhkiG9w0BAQ0FADBNMQswCQYDVQQGEwJ1czEO\nMAwGA1UECAwFVGV4YXMxFjAUBgNVBAoMDVJlZ2lzdHJ5IHRlc3QxFjAUBgNVBAMM\nDXJlZ2lzdHJ5LnRlc3QwIBcNMjAwNTA1MTIzNzQxWhgPMjEyMDA0MTExMjM3NDFa\nME0xCzAJBgNVBAYTAnVzMQ4wDAYDVQQIDAVUZXhhczEWMBQGA1UECgwNUmVnaXN0\ncnkgdGVzdDEWMBQGA1UEAwwNcmVnaXN0cnkudGVzdDCBnzANBgkqhkiG9w0BAQEF\nAAOBjQAwgYkCgYEAyn+GCkUJIhdXVBOPrZH+Zj2B/tQfL5TLZwVYZQt38x6GQT+4\n6ndty467IJvKSUlHej7uMpsCzC8Ffmda4cZm16jO1vUb4hXIrmeKP84zLrrUpKag\ngZR4rBDbG2+uL4SzMyy3yeQysYuTiQ4N1i4vdhvkKYPSWIht/QFvuzdFq+0CAwEA\nAaNQME4wHQYDVR0OBBYEFD6B5j6NnMCDBnfbtjBYKBJM7sCRMB8GA1UdIwQYMBaA\nFD6B5j6NnMCDBnfbtjBYKBJM7sCRMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEN\nBQADgYEArtCR6VOabD3nM/KlZTmHMZVT4ntenYlNTM9FS0RatzPmdh4REhykvmZs\nOlBcpoV5tN5Y8bHOVRqY9V2e903QEhQgoccQhbt0Py6uFwfLv+WLKAUbeGnPqK9d\ndL3wXN9BQs0hJA6IZNFyz2F/gSTURrD1zWW2na3ipRzhupW5+98=\n-----END CERTIFICATE-----\n"
|
||||
csr: "-----BEGIN CERTIFICATE REQUEST-----\nMIICYjCCAcugAwIBAgIBADANBgkqhkiG9w0BAQ0FADBNMQswCQYDVQQGEwJ1czEO\nMAwGA1UECAwFVGV4YXMxFjAUBgNVBAoMDVJlZ2lzdHJ5IHRlc3QxFjAUBgNVBAMM\nDXJlZ2lzdHJ5LnRlc3QwIBcNMjAwNTA1MTIzNzQxWhgPMjEyMDA0MTExMjM3NDFa\nME0xCzAJBgNVBAYTAnVzMQ4wDAYDVQQIDAVUZXhhczEWMBQGA1UECgwNUmVnaXN0\ncnkgdGVzdDEWMBQGA1UEAwwNcmVnaXN0cnkudGVzdDCBnzANBgkqhkiG9w0BAQEF\nAAOBjQAwgYkCgYEAyn+GCkUJIhdXVBOPrZH+Zj2B/tQfL5TLZwVYZQt38x6GQT+4\n6ndty467IJvKSUlHej7uMpsCzC8Ffmda4cZm16jO1vUb4hXIrmeKP84zLrrUpKag\ngZR4rBDbG2+uL4SzMyy3yeQysYuTiQ4N1i4vdhvkKYPSWIht/QFvuzdFq+0CAwEA\nAaNQME4wHQYDVR0OBBYEFD6B5j6NnMCDBnfbtjBYKBJM7sCRMB8GA1UdIwQYMBaA\nFD6B5j6NnMCDBnfbtjBYKBJM7sCRMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEN\nBQADgYEArtCR6VOabD3nM/KlZTmHMZVT4ntenYlNTM9FS0RatzPmdh4REhykvmZs\nOlBcpoV5tN5Y8bHOVRqY9V2e903QEhQgoccQhbt0Py6uFwfLv+WLKAUbeGnPqK9d\ndL3wXN9BQs0hJA6IZNFyz2F/gSTURrD1zWW2na3ipRzhupW5+98=\n-----END CERTIFICATE REQUEST-----\n"
|
||||
md5: e6771ed5dc857a1dbcc1e0a36baa1fee
|
||||
interface: api
|
||||
revoked: false
|
||||
|
@ -11,7 +10,6 @@ registrar:
|
|||
api_user: api_bestnames
|
||||
common_name: registry.test
|
||||
crt: "-----BEGIN CERTIFICATE-----\nMIICYjCCAcugAwIBAgIBADANBgkqhkiG9w0BAQ0FADBNMQswCQYDVQQGEwJ1czEO\nMAwGA1UECAwFVGV4YXMxFjAUBgNVBAoMDVJlZ2lzdHJ5IHRlc3QxFjAUBgNVBAMM\nDXJlZ2lzdHJ5LnRlc3QwIBcNMjAwNTA1MTIzNzQxWhgPMjEyMDA0MTExMjM3NDFa\nME0xCzAJBgNVBAYTAnVzMQ4wDAYDVQQIDAVUZXhhczEWMBQGA1UECgwNUmVnaXN0\ncnkgdGVzdDEWMBQGA1UEAwwNcmVnaXN0cnkudGVzdDCBnzANBgkqhkiG9w0BAQEF\nAAOBjQAwgYkCgYEAyn+GCkUJIhdXVBOPrZH+Zj2B/tQfL5TLZwVYZQt38x6GQT+4\n6ndty467IJvKSUlHej7uMpsCzC8Ffmda4cZm16jO1vUb4hXIrmeKP84zLrrUpKag\ngZR4rBDbG2+uL4SzMyy3yeQysYuTiQ4N1i4vdhvkKYPSWIht/QFvuzdFq+0CAwEA\nAaNQME4wHQYDVR0OBBYEFD6B5j6NnMCDBnfbtjBYKBJM7sCRMB8GA1UdIwQYMBaA\nFD6B5j6NnMCDBnfbtjBYKBJM7sCRMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEN\nBQADgYEArtCR6VOabD3nM/KlZTmHMZVT4ntenYlNTM9FS0RatzPmdh4REhykvmZs\nOlBcpoV5tN5Y8bHOVRqY9V2e903QEhQgoccQhbt0Py6uFwfLv+WLKAUbeGnPqK9d\ndL3wXN9BQs0hJA6IZNFyz2F/gSTURrD1zWW2na3ipRzhupW5+98=\n-----END CERTIFICATE-----\n"
|
||||
csr: "-----BEGIN CERTIFICATE REQUEST-----\nMIICYjCCAcugAwIBAgIBADANBgkqhkiG9w0BAQ0FADBNMQswCQYDVQQGEwJ1czEO\nMAwGA1UECAwFVGV4YXMxFjAUBgNVBAoMDVJlZ2lzdHJ5IHRlc3QxFjAUBgNVBAMM\nDXJlZ2lzdHJ5LnRlc3QwIBcNMjAwNTA1MTIzNzQxWhgPMjEyMDA0MTExMjM3NDFa\nME0xCzAJBgNVBAYTAnVzMQ4wDAYDVQQIDAVUZXhhczEWMBQGA1UECgwNUmVnaXN0\ncnkgdGVzdDEWMBQGA1UEAwwNcmVnaXN0cnkudGVzdDCBnzANBgkqhkiG9w0BAQEF\nAAOBjQAwgYkCgYEAyn+GCkUJIhdXVBOPrZH+Zj2B/tQfL5TLZwVYZQt38x6GQT+4\n6ndty467IJvKSUlHej7uMpsCzC8Ffmda4cZm16jO1vUb4hXIrmeKP84zLrrUpKag\ngZR4rBDbG2+uL4SzMyy3yeQysYuTiQ4N1i4vdhvkKYPSWIht/QFvuzdFq+0CAwEA\nAaNQME4wHQYDVR0OBBYEFD6B5j6NnMCDBnfbtjBYKBJM7sCRMB8GA1UdIwQYMBaA\nFD6B5j6NnMCDBnfbtjBYKBJM7sCRMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEN\nBQADgYEArtCR6VOabD3nM/KlZTmHMZVT4ntenYlNTM9FS0RatzPmdh4REhykvmZs\nOlBcpoV5tN5Y8bHOVRqY9V2e903QEhQgoccQhbt0Py6uFwfLv+WLKAUbeGnPqK9d\ndL3wXN9BQs0hJA6IZNFyz2F/gSTURrD1zWW2na3ipRzhupW5+98=\n-----END CERTIFICATE REQUEST-----\n"
|
||||
md5: e6771ed5dc857a1dbcc1e0a36baa1fee
|
||||
interface: registrar
|
||||
revoked: false
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -3,319 +3,60 @@ require 'test_helper'
|
|||
module Certificates
|
||||
class CertificateGeneratorTest < ActiveSupport::TestCase
|
||||
setup do
|
||||
@generator = Certificates::CertificateGenerator.new(
|
||||
username: 'test_user',
|
||||
registrar_code: '1234',
|
||||
registrar_name: 'Test Registrar',
|
||||
interface: 'api'
|
||||
@certificate = certificates(:api)
|
||||
@generator = CertificateGenerator.new(
|
||||
username: "test_user",
|
||||
registrar_code: "REG123",
|
||||
registrar_name: "Test Registrar"
|
||||
)
|
||||
end
|
||||
|
||||
## Тесты для публичных методов
|
||||
|
||||
test "call генерирует CSR, ключ, сертификат и P12, если user_csr не передан" do
|
||||
generator = Certificates::CertificateGenerator.new(
|
||||
username: "test_user",
|
||||
registrar_code: "1234",
|
||||
registrar_name: "Test Registrar",
|
||||
interface: "api"
|
||||
)
|
||||
|
||||
# Мокаем файловые операции, чтобы избежать ошибок
|
||||
mock_file = Minitest::Mock.new
|
||||
mock_file.expect :write, true, [String] # Для ключа, CSR, CRT, P12
|
||||
File.stub :open, ->(path, mode) { mock_file } do
|
||||
result = generator.call
|
||||
|
||||
assert_instance_of String, result[:private_key], "Приватный ключ должен быть строкой"
|
||||
assert_instance_of String, result[:csr], "CSR должен быть строкой PEM"
|
||||
assert_instance_of String, result[:crt], "Сертификат должен быть строкой PEM"
|
||||
assert_instance_of String, result[:p12], "P12 должен быть строкой DER"
|
||||
assert_not_nil result[:expires_at], "Дата истечения должна быть установлена"
|
||||
end
|
||||
|
||||
def test_generates_new_certificate
|
||||
result = @generator.call
|
||||
|
||||
assert result[:private_key].present?
|
||||
assert result[:csr].present?
|
||||
assert result[:crt].present?
|
||||
assert result[:p12].present?
|
||||
assert result[:expires_at].present?
|
||||
|
||||
assert_instance_of String, result[:private_key]
|
||||
assert_instance_of String, result[:csr]
|
||||
assert_instance_of String, result[:crt]
|
||||
assert_instance_of String, result[:p12]
|
||||
assert_instance_of Time, result[:expires_at]
|
||||
end
|
||||
|
||||
test "call использует переданный user_csr и не создает ключ и P12" do
|
||||
# Создаем ключ и корректный CSR
|
||||
key = OpenSSL::PKey::RSA.new(2048)
|
||||
user_csr = OpenSSL::X509::Request.new
|
||||
user_csr.version = 0
|
||||
user_csr.subject = OpenSSL::X509::Name.new([["CN", "test_user"]])
|
||||
user_csr.public_key = key.public_key
|
||||
user_csr.sign(key, OpenSSL::Digest::SHA256.new)
|
||||
user_csr_pem = user_csr.to_pem
|
||||
|
||||
generator = Certificates::CertificateGenerator.new(
|
||||
username: "test_user",
|
||||
registrar_code: "1234",
|
||||
registrar_name: "Test Registrar",
|
||||
user_csr: user_csr_pem,
|
||||
interface: "api"
|
||||
|
||||
def test_uses_existing_csr_and_private_key
|
||||
existing_csr = @certificate.csr
|
||||
existing_private_key = "existing_private_key"
|
||||
@certificate.update!(private_key: existing_private_key)
|
||||
|
||||
result = @generator.call
|
||||
|
||||
assert result[:csr].present?
|
||||
assert result[:private_key].present?
|
||||
assert_not_equal existing_csr, result[:csr]
|
||||
assert_not_equal existing_private_key, result[:private_key]
|
||||
end
|
||||
|
||||
def test_renew_certificate
|
||||
@certificate.update!(
|
||||
expires_at: 20.days.from_now
|
||||
)
|
||||
|
||||
|
||||
generator = CertificateGenerator.new(
|
||||
username: "test_user",
|
||||
registrar_code: "REG123",
|
||||
registrar_name: "Test Registrar"
|
||||
)
|
||||
|
||||
result = generator.call
|
||||
|
||||
assert_nil result[:private_key], "Приватный ключ не должен генерироваться"
|
||||
assert_nil result[:p12], "P12 не должен создаваться"
|
||||
assert_equal user_csr_pem, result[:csr], "CSR должен соответствовать переданному"
|
||||
assert_not_nil result[:crt], "Сертификат должен быть создан"
|
||||
assert_not_nil result[:expires_at], "Дата истечения должна быть установлена"
|
||||
end
|
||||
|
||||
test "renew_certificate обновляет сертификат существующего пользователя" do
|
||||
# Создаем мок-объект существующего сертификата
|
||||
certificate = Certificate.new
|
||||
certificate.interface = 'api'
|
||||
|
||||
generator = Certificates::CertificateGenerator.new(
|
||||
username: "test_user",
|
||||
registrar_code: "1234",
|
||||
registrar_name: "Test Registrar",
|
||||
certificate: certificate,
|
||||
interface: "api"
|
||||
)
|
||||
|
||||
mock_file = Minitest::Mock.new
|
||||
mock_file.expect :write, true, [String] # Для файловых операций
|
||||
|
||||
File.stub :open, ->(path, mode) { mock_file } do
|
||||
result = generator.renew_certificate
|
||||
|
||||
assert_instance_of String, result[:crt], "Сертификат должен быть создан"
|
||||
assert_not_nil result[:expires_at], "Дата истечения должна быть установлена"
|
||||
end
|
||||
end
|
||||
|
||||
test "renew_certificate вызывает исключение, если сертификат не передан" do
|
||||
generator = Certificates::CertificateGenerator.new(
|
||||
username: "test_user",
|
||||
registrar_code: "1234",
|
||||
registrar_name: "Test Registrar",
|
||||
interface: "api"
|
||||
)
|
||||
|
||||
assert_raises(RuntimeError, "Certificate must be provided for renewal") do
|
||||
generator.renew_certificate
|
||||
end
|
||||
end
|
||||
|
||||
test "renew_certificate с переданным CSR использует этот CSR" do
|
||||
# Создаем ключ и корректный CSR
|
||||
key = OpenSSL::PKey::RSA.new(2048)
|
||||
user_csr = OpenSSL::X509::Request.new
|
||||
user_csr.version = 0
|
||||
user_csr.subject = OpenSSL::X509::Name.new([["CN", "test_user"]])
|
||||
user_csr.public_key = key.public_key
|
||||
user_csr.sign(key, OpenSSL::Digest::SHA256.new)
|
||||
user_csr_pem = user_csr.to_pem
|
||||
|
||||
# Создаем мок-объект существующего сертификата
|
||||
certificate = Certificate.new
|
||||
certificate.interface = 'api'
|
||||
|
||||
generator = Certificates::CertificateGenerator.new(
|
||||
username: "test_user",
|
||||
registrar_code: "1234",
|
||||
registrar_name: "Test Registrar",
|
||||
certificate: certificate,
|
||||
user_csr: user_csr_pem,
|
||||
interface: "api"
|
||||
)
|
||||
|
||||
result = generator.renew_certificate
|
||||
|
||||
assert_nil result[:private_key], "Приватный ключ не должен генерироваться"
|
||||
assert_nil result[:p12], "P12 не должен создаваться"
|
||||
assert_equal user_csr_pem, result[:csr], "CSR должен соответствовать переданному"
|
||||
assert_not_nil result[:crt], "Сертификат должен быть создан"
|
||||
end
|
||||
|
||||
## Тесты для приватных методов
|
||||
|
||||
test "generate_from_csr создает сертификат из CSR без ключа и P12" do
|
||||
# Создаем ключ и корректный CSR
|
||||
key = OpenSSL::PKey::RSA.new(2048)
|
||||
user_csr = OpenSSL::X509::Request.new
|
||||
user_csr.version = 0
|
||||
user_csr.subject = OpenSSL::X509::Name.new([["CN", "test_user"]])
|
||||
user_csr.public_key = key.public_key
|
||||
user_csr.sign(key, OpenSSL::Digest::SHA256.new)
|
||||
user_csr_pem = user_csr.to_pem
|
||||
|
||||
generator = Certificates::CertificateGenerator.new(
|
||||
username: "test_user",
|
||||
registrar_code: "1234",
|
||||
registrar_name: "Test Registrar",
|
||||
user_csr: user_csr_pem,
|
||||
interface: "api"
|
||||
)
|
||||
|
||||
result = generator.send(:generate_from_csr)
|
||||
|
||||
assert_nil result[:private_key], "Приватный ключ не должен генерироваться"
|
||||
assert_nil result[:p12], "P12 не должен создаваться"
|
||||
assert_instance_of String, result[:csr], "CSR должен быть строкой PEM"
|
||||
assert_instance_of String, result[:crt], "Сертификат должен быть строкой PEM"
|
||||
assert_not_nil result[:expires_at], "Дата истечения должна быть установлена"
|
||||
end
|
||||
|
||||
test "generate_new_certificate создает новый ключ, CSR, сертификат и P12" do
|
||||
mock_file = Minitest::Mock.new
|
||||
mock_file.expect :write, true, [String] # Для файловых операций
|
||||
|
||||
File.stub :open, ->(path, mode) { mock_file } do
|
||||
result = @generator.send(:generate_new_certificate)
|
||||
|
||||
assert_instance_of String, result[:private_key], "Приватный ключ должен быть строкой"
|
||||
assert_instance_of String, result[:csr], "CSR должен быть строкой PEM"
|
||||
assert_instance_of String, result[:crt], "Сертификат должен быть строкой PEM"
|
||||
assert_instance_of String, result[:p12], "P12 должен быть строкой DER"
|
||||
assert_not_nil result[:expires_at], "Дата истечения должна быть установлена"
|
||||
end
|
||||
end
|
||||
|
||||
test "generate_csr_and_key создает CSR и ключ" do
|
||||
rsa_key = OpenSSL::PKey::RSA.new(4096)
|
||||
csr = OpenSSL::X509::Request.new
|
||||
|
||||
OpenSSL::PKey::RSA.stub :new, rsa_key do
|
||||
OpenSSL::X509::Request.stub :new, csr do
|
||||
generated_csr, generated_key = @generator.send(:generate_csr_and_key)
|
||||
|
||||
assert_equal csr, generated_csr, "CSR должен быть сгенерирован"
|
||||
assert_equal rsa_key, generated_key, "Ключ должен быть сгенерирован"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
test "sign_certificate подписывает CSR с использованием CA" do
|
||||
key = OpenSSL::PKey::RSA.new(2048)
|
||||
csr = OpenSSL::X509::Request.new
|
||||
csr.version = 0
|
||||
csr.subject = OpenSSL::X509::Name.new([["CN", "test_user"]])
|
||||
csr.public_key = key.public_key
|
||||
csr.sign(key, OpenSSL::Digest::SHA256.new)
|
||||
|
||||
generator = Certificates::CertificateGenerator.new(
|
||||
username: "test_user",
|
||||
registrar_code: "1234",
|
||||
registrar_name: "Test Registrar",
|
||||
interface: "api"
|
||||
)
|
||||
|
||||
# Мокаем файловые операции для сохранения сертификата
|
||||
mock_file = Minitest::Mock.new
|
||||
mock_file.expect :write, true, [String]
|
||||
File.stub :open, ->(path, mode) { mock_file } do
|
||||
cert = generator.send(:sign_certificate, csr)
|
||||
assert_instance_of OpenSSL::X509::Certificate, cert, "Должен вернуться сертификат"
|
||||
assert_equal csr.subject.to_s, cert.subject.to_s, "Субъект должен совпадать"
|
||||
end
|
||||
end
|
||||
|
||||
test "create_p12 создает PKCS12 с ключом и сертификатом" do
|
||||
key = OpenSSL::PKey::RSA.new(2048)
|
||||
cert = OpenSSL::X509::Certificate.new
|
||||
ca_cert = OpenSSL::X509::Certificate.new
|
||||
p12 = OpenSSL::PKCS12.new
|
||||
|
||||
File.stub :read, ca_cert.to_pem do
|
||||
OpenSSL::X509::Certificate.stub :new, ca_cert do
|
||||
OpenSSL::PKCS12.stub :create, p12 do
|
||||
result = @generator.send(:create_p12, key, cert)
|
||||
assert_equal p12, result, "PKCS12 должен быть создан"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
test "ensure_directories_exist создает необходимые директории" do
|
||||
FileUtils.stub :mkdir_p, true do
|
||||
FileUtils.stub :chmod, true do
|
||||
assert_nothing_raised do
|
||||
@generator.send(:ensure_directories_exist)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
test "ensure_ca_exists проверяет наличие CA файлов и логирует предупреждение" do
|
||||
Rails.logger.expects(:warn).at_least_once
|
||||
|
||||
# Мокаем отсутствие CA файлов
|
||||
File.stub :exist?, false do
|
||||
# Вызываем приватный метод
|
||||
@generator.send(:ensure_ca_exists)
|
||||
end
|
||||
end
|
||||
|
||||
test "ensure_crl_exists создает CRL, если он отсутствует" do
|
||||
# Создаем мок-объект для файла
|
||||
mock_file = Minitest::Mock.new
|
||||
mock_file.expect :write, true, [String] # Ожидаем вызов write с аргументом типа String
|
||||
|
||||
# Мокаем File.open, чтобы он возвращал наш мок-объект
|
||||
File.stub :open, ->(path, mode) { mock_file } do
|
||||
# Мокаем отсутствие CRL файла
|
||||
File.stub :exist?, false do
|
||||
# Мокаем существование CA сертификата и ключа, если они нужны для логики
|
||||
File.stub :exist?, true, [Certificates::CertificateGenerator::CA_CERT_PATHS['api']] do
|
||||
File.stub :exist?, true, [Certificates::CertificateGenerator::CA_KEY_PATHS['api']] do
|
||||
# Создаем экземпляр класса
|
||||
generator = Certificates::CertificateGenerator.new(
|
||||
username: "test_user",
|
||||
registrar_code: "1234",
|
||||
registrar_name: "Test Registrar",
|
||||
interface: "api"
|
||||
)
|
||||
# Вызываем приватный метод
|
||||
generator.send(:ensure_crl_exists)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Проверяем, что все ожидаемые вызовы были выполнены
|
||||
mock_file.verify
|
||||
end
|
||||
|
||||
test "generate_unique_serial возвращает уникальный серийный номер" do
|
||||
serial1 = @generator.send(:generate_unique_serial)
|
||||
serial2 = @generator.send(:generate_unique_serial)
|
||||
|
||||
assert_not_equal serial1, serial2, "Серийные номера должны быть уникальными"
|
||||
assert_instance_of Integer, serial1, "Серийный номер должен быть числом"
|
||||
end
|
||||
|
||||
test "save_private_key сохраняет зашифрованный ключ" do
|
||||
key = OpenSSL::PKey::RSA.new(2048)
|
||||
encrypted_key = key.export(OpenSSL::Cipher.new('AES-256-CBC'), Certificates::CertificateGenerator::CA_PASSWORD)
|
||||
|
||||
File.stub :write, true do
|
||||
FileUtils.stub :chmod, true do
|
||||
assert_nothing_raised do
|
||||
@generator.send(:save_private_key, encrypted_key)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
test "save_csr сохраняет CSR" do
|
||||
csr = OpenSSL::X509::Request.new
|
||||
File.stub :write, true do
|
||||
assert_nothing_raised do
|
||||
@generator.send(:save_csr, csr)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
test "save_certificate сохраняет сертификат" do
|
||||
cert = OpenSSL::X509::Certificate.new
|
||||
File.stub :write, true do
|
||||
assert_nothing_raised do
|
||||
@generator.send(:save_certificate, cert)
|
||||
end
|
||||
end
|
||||
assert result[:crt].present?
|
||||
assert result[:expires_at] > Time.current
|
||||
assert_instance_of String, result[:crt]
|
||||
assert_instance_of Time, result[:expires_at]
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue