gitee.com/zhaochuninhefei/fabric-ca-gm@v0.0.2/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/rand" 10 "testing" 11 12 . "gitee.com/zhaochuninhefei/fabric-ca-gm/lib/server/idemix" 13 "gitee.com/zhaochuninhefei/fabric-ca-gm/lib/server/idemix/mocks" 14 "gitee.com/zhaochuninhefei/fabric-gm/idemix" 15 "gitee.com/zhaochuninhefei/gmgo/sm2" 16 fp256bn "github.com/hyperledger/fabric-amcl/amcl/FP256BN" 17 "github.com/pkg/errors" 18 "github.com/stretchr/testify/assert" 19 ) 20 21 func TestCRIInvalidTokenAuth(t *testing.T) { 22 ctx := new(mocks.ServerRequestCtx) 23 ctx.On("TokenAuthentication").Return("", errors.New("bad credentials")) 24 handler := CRIRequestHandler{Ctx: ctx} 25 _, err := handler.HandleRequest() 26 assert.Error(t, err, "Idemix CRI should fail if token auth credentials are invalid") 27 } 28 29 func TestCreateCRIError(t *testing.T) { 30 ctx := new(mocks.ServerRequestCtx) 31 ctx.On("TokenAuthentication").Return("", nil) 32 issuer := new(mocks.MyIssuer) 33 ra := new(mocks.RevocationAuthority) 34 ra.On("CreateCRI").Return(nil, errors.New("Failed to create CRI")) 35 issuer.On("RevocationAuthority").Return(ra) 36 handler := CRIRequestHandler{Ctx: ctx, Issuer: issuer} 37 _, err := handler.HandleRequest() 38 assert.Error(t, err) 39 } 40 41 func TestGetCRIMarshalError(t *testing.T) { 42 ctx := new(mocks.ServerRequestCtx) 43 ctx.On("TokenAuthentication").Return("", nil) 44 issuer := new(mocks.MyIssuer) 45 ra := new(mocks.RevocationAuthority) 46 ra.On("CreateCRI").Return(nil, nil) 47 issuer.On("RevocationAuthority").Return(ra) 48 handler := CRIRequestHandler{Ctx: ctx, Issuer: issuer} 49 _, err := handler.HandleRequest() 50 assert.Error(t, err, "GetCRI should have failed when marshalling idemix.CredentialRevocationInformation") 51 } 52 53 func TestGetCRI(t *testing.T) { 54 ctx := new(mocks.ServerRequestCtx) 55 ctx.On("TokenAuthentication").Return("", nil) 56 issuer := new(mocks.MyIssuer) 57 ra := new(mocks.RevocationAuthority) 58 // privateKey, err := ecdsa.GenerateKey(elliptic.P384(), rand.Reader) 59 privateKey, err := sm2.GenerateKey(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 }