github.com/adecaro/fabric-ca@v2.0.0-alpha+incompatible/lib/server/idemix/cri_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 package idemix_test 7 8 import ( 9 "crypto/ecdsa" 10 "crypto/elliptic" 11 "crypto/rand" 12 "testing" 13 14 fp256bn "github.com/hyperledger/fabric-amcl/amcl/FP256BN" 15 . "github.com/hyperledger/fabric-ca/lib/server/idemix" 16 "github.com/hyperledger/fabric-ca/lib/server/idemix/mocks" 17 "github.com/hyperledger/fabric/idemix" 18 "github.com/pkg/errors" 19 "github.com/stretchr/testify/assert" 20 ) 21 22 func TestCRIInvalidTokenAuth(t *testing.T) { 23 ctx := new(mocks.ServerRequestCtx) 24 ctx.On("TokenAuthentication").Return("", errors.New("bad credentials")) 25 handler := CRIRequestHandler{Ctx: ctx} 26 _, err := handler.HandleRequest() 27 assert.Error(t, err, "Idemix CRI should fail if token auth credentials are invalid") 28 } 29 30 func TestCreateCRIError(t *testing.T) { 31 ctx := new(mocks.ServerRequestCtx) 32 ctx.On("TokenAuthentication").Return("", nil) 33 issuer := new(mocks.MyIssuer) 34 ra := new(mocks.RevocationAuthority) 35 ra.On("CreateCRI").Return(nil, errors.New("Failed to create CRI")) 36 issuer.On("RevocationAuthority").Return(ra) 37 handler := CRIRequestHandler{Ctx: ctx, Issuer: issuer} 38 _, err := handler.HandleRequest() 39 assert.Error(t, err) 40 } 41 42 func TestGetCRIMarshalError(t *testing.T) { 43 ctx := new(mocks.ServerRequestCtx) 44 ctx.On("TokenAuthentication").Return("", nil) 45 issuer := new(mocks.MyIssuer) 46 ra := new(mocks.RevocationAuthority) 47 ra.On("CreateCRI").Return(nil, nil) 48 issuer.On("RevocationAuthority").Return(ra) 49 handler := CRIRequestHandler{Ctx: ctx, Issuer: issuer} 50 _, err := handler.HandleRequest() 51 assert.Error(t, err, "GetCRI should have failed when marshalling idemix.CredentialRevocationInformation") 52 } 53 54 func TestGetCRI(t *testing.T) { 55 ctx := new(mocks.ServerRequestCtx) 56 ctx.On("TokenAuthentication").Return("", nil) 57 issuer := new(mocks.MyIssuer) 58 ra := new(mocks.RevocationAuthority) 59 privateKey, err := ecdsa.GenerateKey(elliptic.P384(), rand.Reader) 60 if err != nil { 61 t.Fatalf("Failed to create ecdsa key: %s", err.Error()) 62 } 63 rnd, err := idemix.GetRand() 64 if err != nil { 65 t.Fatalf("Failed generate random number: %s", err.Error()) 66 } 67 cri, err := idemix.CreateCRI(privateKey, []*fp256bn.BIG{}, 1, idemix.ALG_NO_REVOCATION, rnd) 68 if err != nil { 69 t.Fatalf("Failed to create CRI: %s", err.Error()) 70 } 71 ra.On("CreateCRI").Return(cri, nil) 72 issuer.On("RevocationAuthority").Return(ra) 73 handler := CRIRequestHandler{Ctx: ctx, Issuer: issuer} 74 _, err = handler.HandleRequest() 75 assert.NoError(t, err) 76 }