github.com/yacovm/fabric@v2.0.0-alpha.0.20191128145320-c5d4087dc723+incompatible/common/channelconfig/channel_test.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package channelconfig
     8  
     9  import (
    10  	"math"
    11  	"reflect"
    12  	"testing"
    13  
    14  	cb "github.com/hyperledger/fabric-protos-go/common"
    15  	"github.com/hyperledger/fabric/bccsp"
    16  	"github.com/hyperledger/fabric/bccsp/sw"
    17  	"github.com/hyperledger/fabric/common/util"
    18  	"github.com/stretchr/testify/assert"
    19  )
    20  
    21  func TestInterface(t *testing.T) {
    22  	_ = Channel(&ChannelConfig{})
    23  }
    24  
    25  func TestChannelConfig(t *testing.T) {
    26  	cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
    27  	assert.NoError(t, err)
    28  
    29  	cc, err := NewChannelConfig(
    30  		&cb.ConfigGroup{Groups: map[string]*cb.ConfigGroup{"UnknownGroupKey": {}}},
    31  		cryptoProvider,
    32  	)
    33  	assert.Error(t, err)
    34  	assert.Nil(t, cc)
    35  }
    36  
    37  func TestHashingAlgorithm(t *testing.T) {
    38  	cc := &ChannelConfig{protos: &ChannelProtos{HashingAlgorithm: &cb.HashingAlgorithm{}}}
    39  	assert.Error(t, cc.validateHashingAlgorithm(), "Must supply hashing algorithm")
    40  
    41  	cc = &ChannelConfig{protos: &ChannelProtos{HashingAlgorithm: &cb.HashingAlgorithm{Name: "MD5"}}}
    42  	assert.Error(t, cc.validateHashingAlgorithm(), "Bad hashing algorithm supplied")
    43  
    44  	cc = &ChannelConfig{protos: &ChannelProtos{HashingAlgorithm: &cb.HashingAlgorithm{Name: bccsp.SHA256}}}
    45  	assert.NoError(t, cc.validateHashingAlgorithm(), "Allowed hashing algorith SHA256 supplied")
    46  
    47  	assert.Equal(t, reflect.ValueOf(util.ComputeSHA256).Pointer(), reflect.ValueOf(cc.HashingAlgorithm()).Pointer(),
    48  		"Unexpected hashing algorithm returned")
    49  
    50  	cc = &ChannelConfig{protos: &ChannelProtos{HashingAlgorithm: &cb.HashingAlgorithm{Name: bccsp.SHA3_256}}}
    51  	assert.NoError(t, cc.validateHashingAlgorithm(), "Allowed hashing algorith SHA3_256 supplied")
    52  
    53  	assert.Equal(t, reflect.ValueOf(util.ComputeSHA3256).Pointer(), reflect.ValueOf(cc.HashingAlgorithm()).Pointer(),
    54  		"Unexpected hashing algorithm returned")
    55  }
    56  
    57  func TestBlockDataHashingStructure(t *testing.T) {
    58  	cc := &ChannelConfig{protos: &ChannelProtos{BlockDataHashingStructure: &cb.BlockDataHashingStructure{}}}
    59  	assert.Error(t, cc.validateBlockDataHashingStructure(), "Must supply block data hashing structure")
    60  
    61  	cc = &ChannelConfig{protos: &ChannelProtos{BlockDataHashingStructure: &cb.BlockDataHashingStructure{Width: 7}}}
    62  	assert.Error(t, cc.validateBlockDataHashingStructure(), "Invalid Merkle tree width supplied")
    63  
    64  	var width uint32 = math.MaxUint32
    65  	cc = &ChannelConfig{protos: &ChannelProtos{BlockDataHashingStructure: &cb.BlockDataHashingStructure{Width: width}}}
    66  	assert.NoError(t, cc.validateBlockDataHashingStructure(), "Valid Merkle tree width supplied")
    67  
    68  	assert.Equal(t, width, cc.BlockDataHashingStructureWidth(), "Unexpected width returned")
    69  }
    70  
    71  func TestOrdererAddresses(t *testing.T) {
    72  	cc := &ChannelConfig{protos: &ChannelProtos{OrdererAddresses: &cb.OrdererAddresses{}}}
    73  	assert.Error(t, cc.validateOrdererAddresses(), "Must supply orderer addresses")
    74  
    75  	cc = &ChannelConfig{protos: &ChannelProtos{OrdererAddresses: &cb.OrdererAddresses{Addresses: []string{"127.0.0.1:7050"}}}}
    76  	assert.NoError(t, cc.validateOrdererAddresses(), "Invalid orderer address supplied")
    77  
    78  	assert.Equal(t, "127.0.0.1:7050", cc.OrdererAddresses()[0], "Unexpected orderer address returned")
    79  }
    80  
    81  func TestConsortiumName(t *testing.T) {
    82  	cc := &ChannelConfig{protos: &ChannelProtos{Consortium: &cb.Consortium{Name: "TestConsortium"}}}
    83  	assert.Equal(t, "TestConsortium", cc.ConsortiumName(), "Unexpected consortium name returned")
    84  }