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  }