41 lines
900 B
Ruby
41 lines
900 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
RSpec.describe RsaKeyValidator do
|
||
|
let(:validatable) do
|
||
|
Class.new do
|
||
|
include ActiveModel::Validations
|
||
|
|
||
|
attr_accessor :signing_key
|
||
|
|
||
|
validates :signing_key, rsa_key: true
|
||
|
|
||
|
def initialize(signing_key)
|
||
|
@signing_key = signing_key
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
subject(:validator) { described_class.new(attributes: [:signing_key]) }
|
||
|
|
||
|
it 'is not valid when invalid RSA key is provided' do
|
||
|
record = validatable.new('invalid RSA key')
|
||
|
|
||
|
validator.validate(record)
|
||
|
|
||
|
aggregate_failures do
|
||
|
expect(record).not_to be_valid
|
||
|
expect(record.errors[:signing_key]).to include('is not a valid RSA key')
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it 'is valid when valid RSA key is provided' do
|
||
|
record = validatable.new(OpenSSL::PKey::RSA.new(1024).to_pem)
|
||
|
|
||
|
validator.validate(record)
|
||
|
|
||
|
expect(record).to be_valid
|
||
|
end
|
||
|
end
|