Sha256: a474778e27d6b9ca7ad7c3508b697228e5383d27e0b86aae1efd8614e7cde499

Contents?: true

Size: 1.26 KB

Versions: 4

Compression:

Stored size: 1.26 KB

Contents

require 'spec_helper'

describe JSON::JWK::JWKizable do
  shared_examples_for :jwkizable do
    describe '#to_jwk' do
      it { key.to_jwk.should be_instance_of JSON::JWK }
      it { key.to_jwk.should include *expected_attributes.collect(&:to_s) }
    end
  end

  describe OpenSSL::PKey::RSA do
    describe :public_key do
      let(:key) { public_key :rsa }
      let(:expected_attributes) { [:kty, :n, :e] }
      it_behaves_like :jwkizable
    end

    describe :private_key do
      let(:key) { private_key :rsa }
      let(:expected_attributes) { [:kty, :n, :e, :d] }
      it_behaves_like :jwkizable
    end
  end

  describe OpenSSL::PKey::EC do
    describe :public_key do
      let(:key) { public_key :ecdsa }
      let(:expected_attributes) { [:kty, :crv, :x, :y] }
      it_behaves_like :jwkizable
    end

    describe :private_key do
      let(:key) { private_key :ecdsa }
      let(:expected_attributes) { [:kty, :crv, :x, :y] } # NOTE: handled as public key
      it_behaves_like :jwkizable

      context 'when public key is not contained' do
        before { key.public_key = nil }
        it do
          expect do
            key.to_jwk
          end.to raise_error JSON::JWK::UnknownAlgorithm, 'EC private key is not supported yet'
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
json-jwt-1.2.3 spec/json/jwk/jwkizable_spec.rb
json-jwt-1.2.2 spec/json/jwk/jwkizable_spec.rb
json-jwt-1.2.1 spec/json/jwk/jwkizable_spec.rb
json-jwt-1.2.0 spec/json/jwk/jwkizable_spec.rb