Exemplo n.º 1
0
    async def chaincode_instantiate(self):
        """
        Test instantiating an example chaincode to peer
        """
        logger.info("E2E: Chaincode instantiation start")

        org = "org1.example.com"
        args = ['a', '200', 'b', '300']

        # policy = s2d().parse("OR('Org1MSP.member', 'Org1MSP.admin')")
        policy = s2d().parse("OR('Org1MSP.member')")

        org_admin = self.client.get_user(org, "Admin")
        response = await self.client.chaincode_instantiate(
            requestor=org_admin,
            channel_name=self.channel_name,
            peers=['peer0.' + org],
            args=args,
            cc_name=CC_NAME,
            cc_version=CC_VERSION,
            cc_endorsement_policy=policy,
            wait_for_event=True)
        logger.info(
            "E2E: Chaincode instantiation response {}".format(response))
        policy = {
            'version':
            0,
            'rule': {
                'n_out_of': {
                    'n': 1,
                    'rules': [
                        {
                            'signed_by': 0
                        },
                        # {'signed_by': 1}
                    ]
                }
            },
            'identities': [
                {
                    'principal_classification': 'ROLE',
                    'principal': {
                        'msp_identifier': 'Org1MSP',
                        'role': 'MEMBER'
                    }
                },
                # {
                #     'principal_classification': 'ROLE',
                #     'principal': {
                #         'msp_identifier': 'Org1MSP',
                #         'role': 'ADMIN'
                #     }
                # },
            ]
        }
        self.assertEqual(response['name'], CC_NAME)
        self.assertEqual(response['version'], CC_VERSION)
        self.assertEqual(response['policy'], policy)
        logger.info("E2E: chaincode instantiation done")
    async def upgrade_chaincode(self):
        org = 'org1.example.com'

        org_admin = get_peer_org_user(org, 'Admin', self.client.state_store)
        peers = ['peer0.' + org, 'peer1.' + org]

        # create a channel
        response = await self.client.channel_create(
            'orderer.example.com',
            self.channel_name,
            org_admin,
            config_yaml=self.config_yaml,
            channel_profile=self.channel_profile)
        self.assertTrue(response)

        # join channel
        response = await self.client.channel_join(
            requestor=org_admin,
            channel_name=self.channel_name,
            peers=['peer0.' + org, 'peer1.' + org],
            orderer='orderer.example.com')
        self.assertTrue(response)

        instantiate_args = ['a', '200', 'b', '300']
        query_args = ['b']
        policy = s2d().parse("OR('Org1MSP.member')")

        chaincode = Chaincode(self.client, CC_NAME)
        res = await chaincode.install(org_admin, peers, CC_PATH, CC_VERSION)
        self.assertTrue(res)
        res = await chaincode.instantiate(org_admin,
                                          self.channel_name,
                                          peers,
                                          CC_VERSION,
                                          policy,
                                          args=instantiate_args,
                                          wait_for_event=True)
        self.assertTrue(res)
        res = await chaincode.query(org_admin, self.channel_name, peers,
                                    query_args)
        self.assertEqual(res, '300')
        res = await chaincode.install(org_admin, peers, CC_PATH,
                                      CC_UPGRADED_VERSION)
        self.assertTrue(res)
        res = await chaincode.upgrade(org_admin,
                                      self.channel_name,
                                      peers,
                                      CC_UPGRADED_VERSION,
                                      policy,
                                      args=instantiate_args,
                                      wait_for_event=True)
        self.assertTrue(res)
        res = await chaincode.query(org_admin, self.channel_name, peers,
                                    query_args)
        self.assertEqual(res, '300')
Exemplo n.º 3
0
 def test_s2d_1AdminOr2Other(self):
     self.assertEqual(
         {
             'identities': [{
                 'role': {
                     'mspId': 'Org1',
                     'name': 'member'
                 }
             }, {
                 'role': {
                     'mspId': 'Org2',
                     'name': 'member'
                 }
             }, {
                 'role': {
                     'mspId': 'Org1',
                     'name': 'admin'
                 }
             }, {
                 'role': {
                     'mspId': 'Org2',
                     'name': 'admin'
                 }
             }],
             'policy': {
                 '1-of': [{
                     '2-of': [{
                         'signed-by': 0
                     }, {
                         'signed-by': 1
                     }]
                 }, {
                     'signed-by': 2
                 }, {
                     'signed-by': 3
                 }]
             }
         },
         s2d().parse(self._1AdminOr2Other))
    async def chaincode_instantiate(self):
        """
        Test instantiating an example chaincode to peer
        """
        logger.info("E2E: Chaincode instantiation start")

        org = "org1.example.com"

        policy = s2d().parse("OR('Org1MSP.member', 'Org2MSP.member')")

        collections_config = [{
            "name":
            "collectionMarbles",
            "policy":
            s2d().parse("OR('Org1MSP.member','Org2MSP.member')"),
            "requiredPeerCount":
            0,
            "maxPeerCount":
            1,
            "blockToLive":
            1000000,
            "memberOnlyRead":
            True
        }, {
            "name": "collectionMarblePrivateDetails",
            "policy": s2d().parse("OR('Org1MSP.member')"),
            "requiredPeerCount": 0,
            "maxPeerCount": 1,
            "blockToLive": 5,
            "memberOnlyRead": True
        }]

        org_admin = self.client.get_user(org, "Admin")
        response = await self.client.chaincode_instantiate(
            requestor=org_admin,
            channel_name=self.channel_name,
            peers=['peer0.' + org],
            args=None,
            cc_name=CC_NAME,
            cc_version=CC_VERSION,
            cc_endorsement_policy=policy,
            collections_config=collections_config,
            wait_for_event=True)
        logger.info(
            "E2E: Chaincode instantiation response {}".format(response))
        policy = {
            'version':
            0,
            'rule': {
                'n_out_of': {
                    'n': 1,
                    'rules': [{
                        'signed_by': 0
                    }, {
                        'signed_by': 1
                    }]
                }
            },
            'identities': [
                {
                    'principal_classification': 'ROLE',
                    'principal': {
                        'msp_identifier': 'Org1MSP',
                        'role': 'MEMBER'
                    }
                },
                {
                    'principal_classification': 'ROLE',
                    'principal': {
                        'msp_identifier': 'Org2MSP',
                        'role': 'MEMBER'
                    }
                },
            ]
        }

        self.assertEqual(response['name'], CC_NAME)
        self.assertEqual(response['version'], CC_VERSION)
        self.assertEqual(response['policy'], policy)
        logger.info("E2E: chaincode instantiation done")
Exemplo n.º 5
0
 def test_d2s_s2d_outof_complex(self):
     self.assertEqual(self.outof_complex,
                      d2s.parse(s2d().parse(self.outof_complex)))
Exemplo n.º 6
0
 def test_d2s_s2d_or(self):
     self.assertEqual(self.outof_or, d2s.parse(s2d().parse(self.or_)))
Exemplo n.º 7
0
 def test_s2d_complex(self):
     self.assertEqual(self.complex_d, s2d().parse(self.complex))
Exemplo n.º 8
0
 def test_s2d_and_(self):
     self.assertEqual(self.and_d, s2d().parse(self.and_))
Exemplo n.º 9
0
 def test_s2d_outof_and(self):
     self.assertEqual(self.and_d, s2d().parse(self.outof_and))
Exemplo n.º 10
0
 def test_s2d_or(self):
     self.assertEqual(self.or_d, s2d().parse(self.or_))
Exemplo n.º 11
0
    def makePolicy(self, orgs_mspid):
        roles = [f"'{x}.member'" for x in orgs_mspid]
        policy = f"OR({', '.join(roles)})"
        print('policy: ', policy, flush=True)

        return s2d().parse(policy)