go_study/fabric-main/gossip/api/api_test.go

82 lines
2.0 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package api
import (
"bytes"
"testing"
"github.com/hyperledger/fabric/gossip/common"
"github.com/stretchr/testify/require"
)
func TestPeerIdentitySetByOrg(t *testing.T) {
p1 := PeerIdentityInfo{
Organization: OrgIdentityType("ORG1"),
Identity: PeerIdentityType("Peer1"),
}
p2 := PeerIdentityInfo{
Organization: OrgIdentityType("ORG2"),
Identity: PeerIdentityType("Peer2"),
}
is := PeerIdentitySet{
p1, p2,
}
m := is.ByOrg()
require.Len(t, m, 2)
require.Equal(t, PeerIdentitySet{p1}, m["ORG1"])
require.Equal(t, PeerIdentitySet{p2}, m["ORG2"])
}
func TestPeerIdentitySetByID(t *testing.T) {
p1 := PeerIdentityInfo{
Organization: OrgIdentityType("ORG1"),
PKIId: common.PKIidType("p1"),
}
p2 := PeerIdentityInfo{
Organization: OrgIdentityType("ORG2"),
PKIId: common.PKIidType("p2"),
}
is := PeerIdentitySet{
p1, p2,
}
require.Equal(t, map[string]PeerIdentityInfo{
"p1": p1,
"p2": p2,
}, is.ByID())
}
func TestPeerIdentitySetFilter(t *testing.T) {
p1 := PeerIdentityInfo{
Organization: OrgIdentityType("ORG1"),
PKIId: common.PKIidType("p1"),
}
p2 := PeerIdentityInfo{
Organization: OrgIdentityType("ORG2"),
PKIId: common.PKIidType("p2"),
}
p3 := PeerIdentityInfo{
Organization: OrgIdentityType("ORG2"),
PKIId: common.PKIidType("p3"),
}
is := PeerIdentitySet{
p1, p2, p3,
}
require.Equal(t, PeerIdentitySet{p1}, is.Filter(func(info PeerIdentityInfo) bool {
return bytes.Equal(info.Organization, OrgIdentityType("ORG1"))
}))
var emptySet PeerIdentitySet
require.Equal(t, emptySet, is.Filter(func(_ PeerIdentityInfo) bool {
return false
}))
require.Equal(t, PeerIdentitySet{p3}, is.Filter(func(info PeerIdentityInfo) bool {
return bytes.Equal(info.Organization, OrgIdentityType("ORG2"))
}).Filter(func(info PeerIdentityInfo) bool {
return bytes.Equal(info.PKIId, common.PKIidType("p3"))
}))
}