From cea7d7fc3472315e545893c87ae18a58ee86b72f Mon Sep 17 00:00:00 2001 From: Lyuben Penkovski <lyuben.penkovski@vereign.com> Date: Fri, 24 Jun 2022 11:24:35 +0300 Subject: [PATCH] Unit tests for service.GetKeys --- internal/service/signer/service_test.go | 90 +++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/internal/service/signer/service_test.go b/internal/service/signer/service_test.go index a182a67..33f063b 100644 --- a/internal/service/signer/service_test.go +++ b/internal/service/signer/service_test.go @@ -63,6 +63,96 @@ func TestService_GetKey(t *testing.T) { }) } +func TestService_GetKeys(t *testing.T) { + t.Run("signer returns error when getting keys", func(t *testing.T) { + vaultError := &signerfakes.FakeVault{ + KeysStub: func(ctx context.Context) ([]*signer.VaultKey, error) { + return nil, errors.New(errors.Internal, "some error") + }, + } + + svc := signer.New(vaultError, "issuer", "default key", []string{}, http.DefaultClient, zap.NewNop()) + result, err := svc.GetKeys(context.Background()) + assert.Nil(t, result) + assert.Error(t, err) + e, ok := err.(*errors.Error) + assert.True(t, ok) + assert.Equal(t, errors.Internal, e.Kind) + }) + + t.Run("signer returns one ecdsa-p256 key successfully", func(t *testing.T) { + signerOK := &signerfakes.FakeVault{ + KeysStub: func(ctx context.Context) ([]*signer.VaultKey, error) { + return []*signer.VaultKey{ + { + Name: "key1", + Type: "ecdsa-p256", + PublicKey: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERTx/2cyYcGVSIRP/826S32BiZxSg\nnzyXgRYmKP8N2l26ec/MwCdsHIEyraX1ZYqwMUT4wO9fqFiGsRKyMBpPnQ==\n-----END PUBLIC KEY-----\n", + }, + }, nil + }, + } + + svc := signer.New(signerOK, "issuer", "default key", []string{"ecdsa-p256"}, http.DefaultClient, zap.NewNop()) + result, err := svc.GetKeys(context.Background()) + assert.NotNil(t, result) + assert.NoError(t, err) + + assert.Len(t, result, 1) + assert.Equal(t, "key1", result[0].ID) + assert.Equal(t, "JsonWebKey2020", result[0].Type) + assert.NotNil(t, result[0].PublicKeyJWK) + + pub, ok := result[0].PublicKeyJWK.(*jose.JSONWebKey) + assert.True(t, ok) + assert.NotNil(t, pub) + assert.IsType(t, (*ecdsa.PublicKey)(nil), pub.Key) + }) + + t.Run("signer returns two ecdsa-p256 key successfully", func(t *testing.T) { + signerOK := &signerfakes.FakeVault{ + KeysStub: func(ctx context.Context) ([]*signer.VaultKey, error) { + return []*signer.VaultKey{ + { + Name: "key1", + Type: "ecdsa-p256", + PublicKey: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERTx/2cyYcGVSIRP/826S32BiZxSg\nnzyXgRYmKP8N2l26ec/MwCdsHIEyraX1ZYqwMUT4wO9fqFiGsRKyMBpPnQ==\n-----END PUBLIC KEY-----\n", + }, + { + Name: "key2", + Type: "ecdsa-p256", + PublicKey: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERTx/2cyYcGVSIRP/826S32BiZxSg\nnzyXgRYmKP8N2l26ec/MwCdsHIEyraX1ZYqwMUT4wO9fqFiGsRKyMBpPnQ==\n-----END PUBLIC KEY-----\n", + }, + }, nil + }, + } + + svc := signer.New(signerOK, "issuer", "default key", []string{"ecdsa-p256"}, http.DefaultClient, zap.NewNop()) + result, err := svc.GetKeys(context.Background()) + assert.NotNil(t, result) + assert.NoError(t, err) + assert.Len(t, result, 2) + + assert.Equal(t, "key1", result[0].ID) + assert.Equal(t, "JsonWebKey2020", result[0].Type) + assert.NotNil(t, result[0].PublicKeyJWK) + + pub, ok := result[0].PublicKeyJWK.(*jose.JSONWebKey) + assert.True(t, ok) + assert.NotNil(t, pub) + assert.IsType(t, (*ecdsa.PublicKey)(nil), pub.Key) + + assert.Equal(t, "key2", result[1].ID) + assert.Equal(t, "JsonWebKey2020", result[1].Type) + assert.NotNil(t, result[1].PublicKeyJWK) + + pub, ok = result[1].PublicKeyJWK.(*jose.JSONWebKey) + assert.True(t, ok) + assert.NotNil(t, pub) + assert.IsType(t, (*ecdsa.PublicKey)(nil), pub.Key) + }) +} + func TestService_CredentialProof(t *testing.T) { tests := []struct { name string -- GitLab