github.com/s7techlab/cckit@v0.10.5/examples/cpaper_proxy/cpaper_proxy_test.go (about)

     1  package cpaper_proxy_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  
    10  	cpservice "github.com/s7techlab/cckit/examples/cpaper_asservice"
    11  	"github.com/s7techlab/cckit/examples/cpaper_asservice/testdata"
    12  	"github.com/s7techlab/cckit/examples/cpaper_proxy"
    13  	"github.com/s7techlab/cckit/extensions/crosscc"
    14  	"github.com/s7techlab/cckit/gateway"
    15  	idtestdata "github.com/s7techlab/cckit/identity/testdata"
    16  	testcc "github.com/s7techlab/cckit/testing"
    17  )
    18  
    19  func TestService(t *testing.T) {
    20  	RegisterFailHandler(Fail)
    21  	RunSpecs(t, "Gateway suite")
    22  }
    23  
    24  const (
    25  	Channel1             = `channel1`
    26  	Channel2             = `channel2`
    27  	ChaincodeCPaperProxy = `cpaper_proxy`
    28  	ChaincodeCPaper      = `cpaper`
    29  )
    30  
    31  var (
    32  	ctx = gateway.ContextWithSigner(
    33  		context.Background(),
    34  		idtestdata.Certificates[0].MustIdentity(idtestdata.DefaultMSP),
    35  	)
    36  
    37  	Id = &cpaper_proxy.Id{
    38  		Issuer:      testdata.Id1.Issuer,
    39  		PaperNumber: testdata.Id1.PaperNumber,
    40  	}
    41  )
    42  
    43  var _ = Describe(`Chaincode service resolving`, func() {
    44  
    45  	Context(`Services in one chaincode`, func() {
    46  
    47  		var (
    48  			cPaperGateway      *cpservice.CPaperServiceGateway
    49  			cPaperProxyGateway *cpaper_proxy.CPaperProxyServiceGateway
    50  		)
    51  
    52  		It("Init", func() {
    53  			cpaperProxyCC, err := cpaper_proxy.NewCCWithLocalCpaper()
    54  			Expect(err).NotTo(HaveOccurred())
    55  
    56  			mockStub := testcc.NewMockStub(ChaincodeCPaperProxy, cpaperProxyCC)
    57  			peer := testcc.NewPeer().WithChannel(Channel1, mockStub)
    58  
    59  			// both gw are looking to same channel / chaincode
    60  			cPaperProxyGateway = cpaper_proxy.NewCPaperProxyServiceGateway(peer, Channel1, ChaincodeCPaperProxy)
    61  			cPaperGateway = cpservice.NewCPaperServiceGateway(peer, Channel1, ChaincodeCPaperProxy)
    62  		})
    63  
    64  		It("Initial empty result", func() {
    65  
    66  			_, err := cPaperProxyGateway.GetFromCPaper(ctx, Id)
    67  			Expect(err).To(HaveOccurred())
    68  		})
    69  
    70  		It("Allow to add cpaper", func() {
    71  			_, err := cPaperGateway.Issue(ctx, testdata.Issue1)
    72  			Expect(err).NotTo(HaveOccurred())
    73  		})
    74  
    75  		It("Allow to get data from cpaper service via proxy service", func() {
    76  			_, err := cPaperProxyGateway.GetFromCPaper(ctx, Id)
    77  			Expect(err).NotTo(HaveOccurred())
    78  		})
    79  
    80  	})
    81  
    82  	Context(`Services in separate chaincodes`, func() {
    83  
    84  		var (
    85  			cPaperGateway      *cpservice.CPaperServiceGateway
    86  			cPaperProxyGateway *cpaper_proxy.CPaperProxyServiceGateway
    87  
    88  			cPaperProxyCCSettingGateway *crosscc.SettingServiceGateway
    89  		)
    90  
    91  		It("Init", func() {
    92  			cPaperProxyCC, err := cpaper_proxy.NewCCWithRemoteCpaper()
    93  			Expect(err).NotTo(HaveOccurred())
    94  
    95  			cPaperCC, err := cpservice.NewCC()
    96  			Expect(err).NotTo(HaveOccurred())
    97  
    98  			mockStub1 := testcc.NewMockStub(ChaincodeCPaperProxy, cPaperProxyCC)
    99  			mockStub2 := testcc.NewMockStub(ChaincodeCPaper, cPaperCC)
   100  			peer := testcc.NewPeer().
   101  				WithChannel(Channel1, mockStub1).
   102  				WithChannel(Channel2, mockStub2)
   103  
   104  			// gw are looking to separate channels / chaincodes
   105  			cPaperProxyGateway = cpaper_proxy.NewCPaperProxyServiceGateway(peer, Channel1, ChaincodeCPaperProxy)
   106  			cPaperGateway = cpservice.NewCPaperServiceGateway(peer, Channel2, ChaincodeCPaper)
   107  			cPaperProxyCCSettingGateway = crosscc.NewSettingServiceGateway(peer, Channel1, ChaincodeCPaperProxy)
   108  		})
   109  
   110  		It("Initial empty result", func() {
   111  			_, err := cPaperProxyGateway.GetFromCPaper(ctx, Id)
   112  			Expect(err).To(HaveOccurred())
   113  
   114  		})
   115  
   116  		It("Allow to add cpaper", func() {
   117  			_, err := cPaperGateway.Issue(ctx, testdata.Issue1)
   118  			Expect(err).NotTo(HaveOccurred())
   119  		})
   120  
   121  		It("Disallow to get data from cpaper service via proxy service while chaincode locator setting is empty", func() {
   122  			_, err := cPaperProxyGateway.GetFromCPaper(ctx, Id)
   123  			Expect(err).To(HaveOccurred())
   124  			Expect(err.Error()).To(ContainSubstring(`chaincode locator not found`))
   125  		})
   126  
   127  		It("Allow to set setting for chaincode", func() {
   128  			//_, err := cPaperGateway.Issue(ctx, testdata.Issue1)
   129  			//Expect(err).NotTo(HaveOccurred())
   130  
   131  			_, err := cPaperProxyCCSettingGateway.ServiceLocatorSet(ctx, &crosscc.ServiceLocatorSetRequest{
   132  				Service:   cPaperGateway.ServiceDef().Name(),
   133  				Channel:   Channel2,
   134  				Chaincode: ChaincodeCPaper,
   135  			})
   136  			Expect(err).NotTo(HaveOccurred())
   137  		})
   138  
   139  		It("Allow to get data from cpaper service via proxy service", func() {
   140  			_, err := cPaperProxyGateway.GetFromCPaper(ctx, Id)
   141  			Expect(err).NotTo(HaveOccurred())
   142  		})
   143  	})
   144  
   145  })