|
|
@ -16,6 +16,15 @@ import (
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
func Test_newSigner(t *testing.T) {
|
|
|
|
func Test_newSigner(t *testing.T) {
|
|
|
|
|
|
|
|
pemBytes, err := ioutil.ReadFile("testdata/pub.pem")
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
pk, err := pemutil.ParseKey(pemBytes)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type args struct {
|
|
|
|
type args struct {
|
|
|
|
c KeyManagementClient
|
|
|
|
c KeyManagementClient
|
|
|
|
signingKey string
|
|
|
|
signingKey string
|
|
|
@ -24,22 +33,42 @@ func Test_newSigner(t *testing.T) {
|
|
|
|
name string
|
|
|
|
name string
|
|
|
|
args args
|
|
|
|
args args
|
|
|
|
want *Signer
|
|
|
|
want *Signer
|
|
|
|
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
}{
|
|
|
|
{"ok", args{&MockClient{}, "signingKey"}, &Signer{client: &MockClient{}, signingKey: "signingKey"}},
|
|
|
|
{"ok", args{&MockClient{
|
|
|
|
|
|
|
|
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
|
|
|
|
|
|
|
|
return &kmspb.PublicKey{Pem: string(pemBytes)}, nil
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}, "signingKey"}, &Signer{client: &MockClient{}, signingKey: "signingKey", publicKey: pk}, false},
|
|
|
|
|
|
|
|
{"fail get public key", args{&MockClient{
|
|
|
|
|
|
|
|
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
|
|
|
|
|
|
|
|
return nil, fmt.Errorf("an error")
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}, "signingKey"}, nil, true},
|
|
|
|
|
|
|
|
{"fail parse pem", args{&MockClient{
|
|
|
|
|
|
|
|
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
|
|
|
|
|
|
|
|
return &kmspb.PublicKey{Pem: string("bad pem")}, nil
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}, "signingKey"}, nil, true},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
if got := NewSigner(tt.args.c, tt.args.signingKey); !reflect.DeepEqual(got, tt.want) {
|
|
|
|
got, err := NewSigner(tt.args.c, tt.args.signingKey)
|
|
|
|
t.Errorf("newSigner() = %v, want %v", got, tt.want)
|
|
|
|
if (err != nil) != tt.wantErr {
|
|
|
|
|
|
|
|
t.Errorf("NewSigner() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if got != nil {
|
|
|
|
|
|
|
|
got.client = &MockClient{}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
|
|
|
|
|
|
t.Errorf("NewSigner() = %v, want %v", got, tt.want)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func Test_signer_Public(t *testing.T) {
|
|
|
|
func Test_signer_Public(t *testing.T) {
|
|
|
|
keyName := "projects/p/locations/l/keyRings/k/cryptoKeys/c/cryptoKeyVersions/1"
|
|
|
|
|
|
|
|
testError := fmt.Errorf("an error")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pemBytes, err := ioutil.ReadFile("testdata/pub.pem")
|
|
|
|
pemBytes, err := ioutil.ReadFile("testdata/pub.pem")
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
@ -52,42 +81,23 @@ func Test_signer_Public(t *testing.T) {
|
|
|
|
type fields struct {
|
|
|
|
type fields struct {
|
|
|
|
client KeyManagementClient
|
|
|
|
client KeyManagementClient
|
|
|
|
signingKey string
|
|
|
|
signingKey string
|
|
|
|
|
|
|
|
publicKey crypto.PublicKey
|
|
|
|
}
|
|
|
|
}
|
|
|
|
tests := []struct {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
name string
|
|
|
|
fields fields
|
|
|
|
fields fields
|
|
|
|
want crypto.PublicKey
|
|
|
|
want crypto.PublicKey
|
|
|
|
wantErr bool
|
|
|
|
|
|
|
|
}{
|
|
|
|
}{
|
|
|
|
{"ok", fields{&MockClient{
|
|
|
|
{"ok", fields{&MockClient{}, "signingKey", pk}, pk},
|
|
|
|
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
|
|
|
|
|
|
|
|
return &kmspb.PublicKey{Pem: string(pemBytes)}, nil
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}, keyName}, pk, false},
|
|
|
|
|
|
|
|
{"fail get public key", fields{&MockClient{
|
|
|
|
|
|
|
|
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
|
|
|
|
|
|
|
|
return nil, testError
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}, keyName}, nil, true},
|
|
|
|
|
|
|
|
{"fail parse pem", fields{
|
|
|
|
|
|
|
|
&MockClient{
|
|
|
|
|
|
|
|
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
|
|
|
|
|
|
|
|
return &kmspb.PublicKey{Pem: string("bad pem")}, nil
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}, keyName}, nil, true},
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
s := &Signer{
|
|
|
|
s := &Signer{
|
|
|
|
client: tt.fields.client,
|
|
|
|
client: tt.fields.client,
|
|
|
|
signingKey: tt.fields.signingKey,
|
|
|
|
signingKey: tt.fields.signingKey,
|
|
|
|
|
|
|
|
publicKey: tt.fields.publicKey,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
got := s.Public()
|
|
|
|
if got := s.Public(); !reflect.DeepEqual(got, tt.want) {
|
|
|
|
if _, ok := got.(error); ok != tt.wantErr {
|
|
|
|
|
|
|
|
t.Errorf("signer.Public() error = %v, wantErr %v", got, tt.wantErr)
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if !tt.wantErr && !reflect.DeepEqual(got, tt.want) {
|
|
|
|
|
|
|
|
t.Errorf("signer.Public() = %v, want %v", got, tt.want)
|
|
|
|
t.Errorf("signer.Public() = %v, want %v", got, tt.want)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|