github.com/kchristidis/fabric@v1.0.4-0.20171028114726-837acd08cde1/protos/common/policies_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package common 8 9 import ( 10 "testing" 11 12 proto "github.com/golang/protobuf/proto" 13 common1 "github.com/hyperledger/fabric/protos/msp" 14 "github.com/stretchr/testify/assert" 15 ) 16 17 func TestPoliciesEnums(t *testing.T) { 18 var policy Policy_PolicyType 19 policy = 0 20 assert.Equal(t, "UNKNOWN", policy.String()) 21 policy = 1 22 assert.Equal(t, "SIGNATURE", policy.String()) 23 policy = 2 24 assert.Equal(t, "MSP", policy.String()) 25 policy = 3 26 assert.Equal(t, "IMPLICIT_META", policy.String()) 27 28 _, _ = policy.EnumDescriptor() 29 30 var meta ImplicitMetaPolicy_Rule 31 meta = 0 32 assert.Equal(t, "ANY", meta.String()) 33 meta = 1 34 assert.Equal(t, "ALL", meta.String()) 35 meta = 2 36 assert.Equal(t, "MAJORITY", meta.String()) 37 38 _, _ = meta.EnumDescriptor() 39 } 40 41 func TestPoliciesStructs(t *testing.T) { 42 var policy *Policy 43 assert.Equal(t, int32(0), policy.GetType()) 44 assert.Nil(t, policy.GetValue()) 45 policy = &Policy{ 46 Value: []byte("policy"), 47 Type: int32(1), 48 } 49 assert.Equal(t, int32(1), policy.GetType()) 50 assert.NotNil(t, policy.GetValue()) 51 policy.Reset() 52 assert.Nil(t, policy.GetValue()) 53 _, _ = policy.Descriptor() 54 _ = policy.String() 55 policy.ProtoMessage() 56 57 var env *SignaturePolicyEnvelope 58 env = nil 59 assert.Equal(t, int32(0), env.GetVersion()) 60 assert.Nil(t, env.GetIdentities()) 61 assert.Nil(t, env.GetRule()) 62 env = &SignaturePolicyEnvelope{ 63 Rule: &SignaturePolicy{}, 64 Identities: []*common1.MSPPrincipal{&common1.MSPPrincipal{}}, 65 Version: int32(1), 66 } 67 assert.Equal(t, int32(1), env.GetVersion()) 68 assert.NotNil(t, env.GetIdentities()) 69 assert.NotNil(t, env.GetRule()) 70 env.Reset() 71 assert.Nil(t, env.GetIdentities()) 72 assert.Nil(t, env.GetRule()) 73 _, _ = env.Descriptor() 74 _ = env.String() 75 env.ProtoMessage() 76 77 var sigpolicy *SignaturePolicy 78 sigpolicy = nil 79 assert.Nil(t, sigpolicy.GetType()) 80 assert.Nil(t, sigpolicy.GetNOutOf()) 81 assert.Equal(t, int32(0), sigpolicy.GetSignedBy()) 82 sigpolicy = &SignaturePolicy{ 83 Type: &SignaturePolicy_SignedBy{ 84 SignedBy: 2, 85 }, 86 } 87 assert.Equal(t, int32(2), sigpolicy.GetSignedBy()) 88 bytes, err := proto.Marshal(sigpolicy) 89 assert.NoError(t, err, "Error marshaling SignedBy policy") 90 _ = proto.Size(sigpolicy) 91 err = proto.Unmarshal(bytes, &SignaturePolicy{}) 92 assert.NoError(t, err, "Error unmarshaling SignedBy policy") 93 sigpolicy = &SignaturePolicy{ 94 Type: &SignaturePolicy_NOutOf_{ 95 NOutOf: &SignaturePolicy_NOutOf{}, 96 }, 97 } 98 assert.NotNil(t, sigpolicy.GetNOutOf()) 99 bytes, err = proto.Marshal(sigpolicy) 100 assert.NoError(t, err, "Error marshaling NOutOf policy") 101 _ = proto.Size(sigpolicy) 102 err = proto.Unmarshal(bytes, &SignaturePolicy{}) 103 assert.NoError(t, err, "Error unmarshaling NoutOf policy") 104 _, _ = sigpolicy.Descriptor() 105 _ = sigpolicy.String() 106 sigpolicy.ProtoMessage() 107 108 var n *SignaturePolicy_NOutOf 109 n = nil 110 assert.Equal(t, int32(0), n.GetN()) 111 assert.Nil(t, n.GetRules()) 112 n = &SignaturePolicy_NOutOf{ 113 Rules: []*SignaturePolicy{&SignaturePolicy{}}, 114 N: int32(1), 115 } 116 assert.Equal(t, int32(1), n.GetN()) 117 assert.NotNil(t, n.GetRules()) 118 n.Reset() 119 assert.Nil(t, n.GetRules()) 120 _, _ = n.Descriptor() 121 _ = n.String() 122 n.ProtoMessage() 123 124 var impolicy *ImplicitMetaPolicy 125 impolicy = nil 126 assert.Equal(t, "", impolicy.GetSubPolicy()) 127 assert.Equal(t, ImplicitMetaPolicy_ANY, impolicy.GetRule()) 128 impolicy = &ImplicitMetaPolicy{ 129 SubPolicy: "subpolicy", 130 Rule: ImplicitMetaPolicy_MAJORITY, 131 } 132 assert.Equal(t, "subpolicy", impolicy.GetSubPolicy()) 133 assert.Equal(t, ImplicitMetaPolicy_MAJORITY, impolicy.GetRule()) 134 impolicy.Reset() 135 assert.Equal(t, "", impolicy.GetSubPolicy()) 136 _, _ = impolicy.Descriptor() 137 _ = impolicy.String() 138 impolicy.ProtoMessage() 139 140 }