github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/integration/pkcs11/pkcs11_suite_test.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package pkcs11
     8  
     9  import (
    10  	"encoding/json"
    11  	"testing"
    12  
    13  	bpkcs11 "github.com/hechain20/hechain/bccsp/pkcs11"
    14  	"github.com/hechain20/hechain/integration"
    15  	"github.com/hechain20/hechain/integration/nwo"
    16  	"github.com/hechain20/hechain/integration/nwo/commands"
    17  	. "github.com/onsi/ginkgo"
    18  	. "github.com/onsi/gomega"
    19  	"github.com/onsi/gomega/gbytes"
    20  	"github.com/onsi/gomega/gexec"
    21  )
    22  
    23  func TestPKCS11(t *testing.T) {
    24  	RegisterFailHandler(Fail)
    25  	lib, pin, label := bpkcs11.FindPKCS11Lib()
    26  	if lib == "" || pin == "" || label == "" {
    27  		t.Skip("Skipping PKCS11 Suite: Required ENV variables not set")
    28  	}
    29  	RunSpecs(t, "PKCS11 Suite")
    30  }
    31  
    32  var (
    33  	buildServer *nwo.BuildServer
    34  	components  *nwo.Components
    35  )
    36  
    37  var _ = SynchronizedBeforeSuite(func() []byte {
    38  	buildServer = nwo.NewBuildServer("-tags=pkcs11")
    39  	buildServer.Serve()
    40  
    41  	components = buildServer.Components()
    42  	payload, err := json.Marshal(components)
    43  	Expect(err).NotTo(HaveOccurred())
    44  	return payload
    45  }, func(payload []byte) {
    46  	err := json.Unmarshal(payload, &components)
    47  	Expect(err).NotTo(HaveOccurred())
    48  })
    49  
    50  var _ = SynchronizedAfterSuite(func() {
    51  }, func() {
    52  	buildServer.Shutdown()
    53  })
    54  
    55  func StartPort() int {
    56  	return integration.PKCS11Port.StartPortForNode()
    57  }
    58  
    59  func runQueryInvokeQuery(n *nwo.Network, orderer *nwo.Orderer, peer *nwo.Peer, channel string) {
    60  	By("querying the chaincode")
    61  	sess, err := n.PeerUserSession(peer, "User1", commands.ChaincodeQuery{
    62  		ChannelID: channel,
    63  		Name:      "mycc",
    64  		Ctor:      `{"Args":["query","a"]}`,
    65  	})
    66  	Expect(err).NotTo(HaveOccurred())
    67  	Eventually(sess, n.EventuallyTimeout).Should(gexec.Exit(0))
    68  	Expect(sess).To(gbytes.Say("100"))
    69  
    70  	sess, err = n.PeerUserSession(peer, "User1", commands.ChaincodeInvoke{
    71  		ChannelID: channel,
    72  		Orderer:   n.OrdererAddress(orderer, nwo.ListenPort),
    73  		Name:      "mycc",
    74  		Ctor:      `{"Args":["invoke","a","b","10"]}`,
    75  		PeerAddresses: []string{
    76  			n.PeerAddress(n.Peer("Org1", "peer0"), nwo.ListenPort),
    77  			n.PeerAddress(n.Peer("Org2", "peer0"), nwo.ListenPort),
    78  		},
    79  		WaitForEvent: true,
    80  	})
    81  	Expect(err).NotTo(HaveOccurred())
    82  	Eventually(sess, n.EventuallyTimeout).Should(gexec.Exit(0))
    83  	Expect(sess.Err).To(gbytes.Say("Chaincode invoke successful. result: status:200"))
    84  
    85  	sess, err = n.PeerUserSession(peer, "User1", commands.ChaincodeQuery{
    86  		ChannelID: channel,
    87  		Name:      "mycc",
    88  		Ctor:      `{"Args":["query","a"]}`,
    89  	})
    90  	Expect(err).NotTo(HaveOccurred())
    91  	Eventually(sess, n.EventuallyTimeout).Should(gexec.Exit(0))
    92  	Expect(sess).To(gbytes.Say("90"))
    93  }