github.com/adecaro/fabric-ca@v2.0.0-alpha+incompatible/lib/server/idemix/issuer_whitebox_test.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package idemix
     8  
     9  import (
    10  	"io/ioutil"
    11  	"os"
    12  	"path/filepath"
    13  	"testing"
    14  
    15  	"github.com/hyperledger/fabric-ca/lib/server/db"
    16  	dbutil "github.com/hyperledger/fabric-ca/lib/server/db/util"
    17  	"github.com/stretchr/testify/assert"
    18  )
    19  
    20  const (
    21  	testPublicKeyFile = "../../../testdata/IdemixPublicKey"
    22  	testSecretKeyFile = "../../../testdata/IdemixSecretKey"
    23  )
    24  
    25  // TestIssuer tests issuer
    26  func TestIssuer(t *testing.T) {
    27  	testdir, err := ioutil.TempDir(".", "issuerinittest")
    28  	if err != nil {
    29  		t.Fatalf("Failed to create temp directory: %s", err.Error())
    30  	}
    31  	defer os.RemoveAll(testdir)
    32  	err = os.MkdirAll(filepath.Join(testdir, "msp/keystore"), 0777)
    33  	if err != nil {
    34  		t.Fatalf("Failed to create directory: %s", err.Error())
    35  	}
    36  	issuer := issuer{name: "ca1", homeDir: testdir, cfg: &Config{}, db: &db.DB{}, idemixLib: NewLib()}
    37  	assert.NotNil(t, issuer.DB(), "DB() should not return nil")
    38  	assert.NotNil(t, issuer.IdemixLib(), "GetIdemixLib() should not return nil")
    39  	assert.Equal(t, "ca1", issuer.Name())
    40  	assert.Nil(t, issuer.IssuerCredential(), "IssueCredential() should return nil")
    41  	assert.Nil(t, issuer.RevocationAuthority(), "RevocationAuthority() should return nil")
    42  	assert.Nil(t, issuer.NonceManager(), "NonceManager() should return nil")
    43  	assert.Nil(t, issuer.IdemixRand(), "IdemixRand() should return nil")
    44  	assert.Nil(t, issuer.CredDBAccessor(), "CredDBAccessor() should return nil")
    45  
    46  	err = issuer.Init(false, nil, &dbutil.Levels{Credential: 1, RAInfo: 1, Nonce: 1})
    47  	assert.NoError(t, err, "Init should return not return an error if db is nil")
    48  
    49  	_, err = issuer.IssuerPublicKey()
    50  	assert.Error(t, err, "IssuerPublicKey should return an error because issuer is not initialized")
    51  	assert.Equal(t, "Issuer is not initialized", err.Error())
    52  
    53  	_, err = issuer.RevocationPublicKey()
    54  	assert.Error(t, err, "RevocationPublicKey should return an error because issuer is not initialized")
    55  	assert.Equal(t, "Issuer is not initialized", err.Error())
    56  
    57  	_, err = issuer.IssueCredential(nil)
    58  	assert.Error(t, err, "IssueCredential should return an error because issuer is not initialized")
    59  	assert.Equal(t, "Issuer is not initialized", err.Error())
    60  
    61  	_, err = issuer.GetCRI(nil)
    62  	assert.Error(t, err, "GetCRI should return an error because issuer is not initialized")
    63  	assert.Equal(t, "Issuer is not initialized", err.Error())
    64  
    65  	issuer.isInitialized = true
    66  	err = issuer.Init(false, nil, &dbutil.Levels{Credential: 1, RAInfo: 1, Nonce: 1})
    67  	assert.NoError(t, err, "Init should return not return an error if it is already initialized")
    68  }
    69  
    70  func TestIssuerPublicKey(t *testing.T) {
    71  	testdir, err := ioutil.TempDir(".", "issuerinittest")
    72  	if err != nil {
    73  		t.Fatalf("Failed to create temp directory: %s", err.Error())
    74  	}
    75  	defer os.RemoveAll(testdir)
    76  	err = os.MkdirAll(filepath.Join(testdir, "msp/keystore"), 0777)
    77  	if err != nil {
    78  		t.Fatalf("Failed to create directory: %s", err.Error())
    79  	}
    80  
    81  	issuer := issuer{name: "ca1",
    82  		homeDir:       testdir,
    83  		cfg:           &Config{IssuerPublicKeyfile: "IssuerPublicKey", IssuerSecretKeyfile: "IssuerSecretKey"},
    84  		db:            &db.DB{},
    85  		idemixLib:     NewLib(),
    86  		isInitialized: true,
    87  	}
    88  	issuerCred := NewIssuerCredential(testPublicKeyFile, testSecretKeyFile, NewLib())
    89  	issuer.issuerCred = issuerCred
    90  	_, err = issuer.IssuerPublicKey()
    91  	assert.Error(t, err, "issuer.IssuerCredential() should return an error as issuer credential has not been loaded")
    92  
    93  	err = issuer.issuerCred.Load()
    94  	if err != nil {
    95  		t.Fatalf("Failed to load issuer credential: %s", err.Error())
    96  	}
    97  	ik, _ := issuerCred.GetIssuerKey()
    98  	ik.Ipk = nil
    99  	_, err = issuer.IssuerPublicKey()
   100  	assert.Error(t, err, "issuer.IssuerCredential() should return an error as it should fail to marshal issuer public key")
   101  }
   102  func TestWallClock(t *testing.T) {
   103  	clock := wallClock{}
   104  	assert.NotNil(t, clock.Now())
   105  }