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')
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")
def test_d2s_s2d_outof_complex(self): self.assertEqual(self.outof_complex, d2s.parse(s2d().parse(self.outof_complex)))
def test_d2s_s2d_or(self): self.assertEqual(self.outof_or, d2s.parse(s2d().parse(self.or_)))
def test_s2d_complex(self): self.assertEqual(self.complex_d, s2d().parse(self.complex))
def test_s2d_and_(self): self.assertEqual(self.and_d, s2d().parse(self.and_))
def test_s2d_outof_and(self): self.assertEqual(self.and_d, s2d().parse(self.outof_and))
def test_s2d_or(self): self.assertEqual(self.or_d, s2d().parse(self.or_))
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)