Skip to content

Commit

Permalink
FABG-733] Negative revoked test not loading config
Browse files Browse the repository at this point in the history
This change fixes the negative test to be runnable.
The test is then disabled due to needing config fixes.

Change-Id: I88820f4223a681eee51ac6c4f3022cd202aa6212
Signed-off-by: Troy Ronda <troy@troyronda.com>
Signed-off-by: Sudesh Shetty <sudesh.shetty@securekey.com>
  • Loading branch information
sudeshrshetty committed Aug 22, 2018
1 parent fa3c843 commit e9474b4
Show file tree
Hide file tree
Showing 2 changed files with 154 additions and 159 deletions.
148 changes: 148 additions & 0 deletions test/integration/negative/revoked/main_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
/*
Copyright SecureKey Technologies Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/

package revoked

import (
"fmt"
"os"
"testing"

mspclient "github.com/hyperledger/fabric-sdk-go/pkg/client/msp"
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/core"
"github.com/hyperledger/fabric-sdk-go/pkg/core/config"
"github.com/hyperledger/fabric-sdk-go/pkg/core/config/lookup"
"github.com/hyperledger/fabric-sdk-go/pkg/core/mocks"
fabImpl "github.com/hyperledger/fabric-sdk-go/pkg/fab"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
"github.com/hyperledger/fabric-sdk-go/test/integration"
"github.com/pkg/errors"
)

const (
org1 = "Org1"
org2 = "Org2"
channelID = "orgchannel"
configFilename = "config_test.yaml"
)

// SDK
var sdk *fabsdk.FabricSDK

// Org MSP clients
var org1MspClient *mspclient.Client
var org2MspClient *mspclient.Client

func TestMain(m *testing.M) {
err := setup()
if err != nil {
panic(fmt.Sprintf("unable to setup [%s]", err))
}
r := m.Run()
teardown()
os.Exit(r)
}

func setup() error {
// Create SDK setup for the integration tests
var err error
sdk, err = fabsdk.New(getConfigBackend())
if err != nil {
return errors.Wrap(err, "Failed to create new SDK")
}

org1MspClient, err = mspclient.New(sdk.Context(), mspclient.WithOrg(org1))
if err != nil {
return errors.Wrap(err, "failed to create org1MspClient")
}

org2MspClient, err = mspclient.New(sdk.Context(), mspclient.WithOrg(org2))
if err != nil {
return errors.Wrap(err, "failed to create org2MspClient")
}

return nil
}

func teardown() {
if sdk != nil {
sdk.Close()
}
}

//configOverride to override existing config backend
type configOverride struct {
Client fabImpl.ClientConfig
Channels map[string]fabImpl.ChannelEndpointConfig
Organizations map[string]fabImpl.OrganizationConfig
Orderers map[string]fabImpl.OrdererConfig
Peers map[string]fabImpl.PeerConfig
}

func getConfigBackend() core.ConfigProvider {

return func() ([]core.ConfigBackend, error) {
configBackends, err := config.FromFile(integration.GetConfigPath(configFilename))()
if err != nil {
return nil, errors.Wrap(err, "failed to read config backend from file, %v")
}
backendMap := make(map[string]interface{})

networkConfig := configOverride{}
//get valid peer config
err = lookup.New(configBackends...).UnmarshalKey("peers", &networkConfig.Peers)
if err != nil {
return nil, errors.Wrap(err, "failed to unmarshal peer network config, %v")
}

//customize peer0.org2 to peer1.org2
peer2 := networkConfig.Peers["peer0.org2.example.com"]
peer2.URL = "peer1.org2.example.com:9051"
peer2.GRPCOptions["ssl-target-name-override"] = "peer1.org2.example.com"

//remove peer0.org2
delete(networkConfig.Peers, "peer0.org2.example.com")

//add peer1.org2
networkConfig.Peers["peer1.org2.example.com"] = peer2

//get valid org2
err = lookup.New(configBackends...).UnmarshalKey("organizations", &networkConfig.Organizations)
if err != nil {
return nil, errors.Wrap(err, "failed to unmarshal organizations network config, %v")
}

//Customize org2
org2 := networkConfig.Organizations["org2"]
org2.Peers = []string{"peer1.org2.example.com"}
org2.MSPID = "Org2MSP"
networkConfig.Organizations["org2"] = org2

//custom channel
err = lookup.New(configBackends...).UnmarshalKey("channels", &networkConfig.Channels)
if err != nil {
return nil, errors.Wrap(err, "failed to unmarshal entityMatchers network config, %v")
}

orgChannel := networkConfig.Channels[channelID]
delete(orgChannel.Peers, "peer0.org2.example.com")
orgChannel.Peers["peer1.org2.example.com"] = fabImpl.PeerChannelConfig{
EndorsingPeer: true,
ChaincodeQuery: true,
LedgerQuery: true,
EventSource: false,
}
networkConfig.Channels[channelID] = orgChannel

//Customize backend with update peers, organizations, channels and entity matchers config
backendMap["peers"] = networkConfig.Peers
backendMap["organizations"] = networkConfig.Organizations
backendMap["channels"] = networkConfig.Channels

backends := append([]core.ConfigBackend{}, &mocks.MockConfigBackend{KeyValueMap: backendMap})
return append(backends, configBackends...), nil
}
}
165 changes: 6 additions & 159 deletions test/integration/negative/revoked/revoked_peer_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// +build disabled

/*
Copyright SecureKey Technologies Inc. All Rights Reserved.
Expand All @@ -14,91 +16,29 @@ import (
"github.com/hyperledger/fabric-sdk-go/pkg/common/errors/status"
contextAPI "github.com/hyperledger/fabric-sdk-go/pkg/common/providers/context"
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/fab"
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/msp"

packager "github.com/hyperledger/fabric-sdk-go/pkg/fab/ccpackager/gopackager"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"

mspclient "github.com/hyperledger/fabric-sdk-go/pkg/client/msp"
"github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt"
"github.com/hyperledger/fabric-sdk-go/test/integration"

"os"

"runtime"

"github.com/hyperledger/fabric-sdk-go/pkg/client/channel"
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/core"
"github.com/hyperledger/fabric-sdk-go/pkg/core/config"
"github.com/hyperledger/fabric-sdk-go/pkg/core/config/lookup"
"github.com/hyperledger/fabric-sdk-go/pkg/core/mocks"
"github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/common/cauthdsl"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

const (
org1 = "Org1"
org2 = "Org2"
ordererAdminUser = "Admin"
ordererOrgName = "OrdererOrg"
org1AdminUser = "Admin"
org2AdminUser = "Admin"
org1User = "User1"
channelID = "orgchannel"
configFilename = "config_test.yaml"
org1AdminUser = "Admin"
org2AdminUser = "Admin"
org1User = "User1"
)

// SDK
var sdk *fabsdk.FabricSDK

// Org MSP clients
var org1MspClient *mspclient.Client
var org2MspClient *mspclient.Client

// Peers used for testing
var orgTestPeer0 fab.Peer
var orgTestPeer1 fab.Peer

func TestMain(m *testing.M) {
err := setup()
defer teardown()
var r int
if err == nil {
r = m.Run()
}
defer os.Exit(r)
runtime.Goexit()
}

func setup() error {
// Create SDK setup for the integration tests
var err error
sdk, err = fabsdk.New(getConfigBackend())
if err != nil {
return errors.Wrap(err, "Failed to create new SDK")
}

org1MspClient, err = mspclient.New(sdk.Context(), mspclient.WithOrg(org1))
if err != nil {
return errors.Wrap(err, "failed to create org1MspClient, err")
}

org2MspClient, err = mspclient.New(sdk.Context(), mspclient.WithOrg(org2))
if err != nil {
return errors.Wrap(err, "failed to create org2MspClient, err")
}

return nil
}

func teardown() {
if sdk != nil {
sdk.Close()
}
}

// TestRevokedPeer
func TestRevokedPeer(t *testing.T) {

Expand All @@ -108,30 +48,10 @@ func TestRevokedPeer(t *testing.T) {
defer integration.CleanupUserData(t, sdk)

//prepare contexts
ordererClientContext := sdk.Context(fabsdk.WithUser(ordererAdminUser), fabsdk.WithOrg(ordererOrgName))
org1AdminClientContext := sdk.Context(fabsdk.WithUser(org1AdminUser), fabsdk.WithOrg(org1))
org2AdminClientContext := sdk.Context(fabsdk.WithUser(org2AdminUser), fabsdk.WithOrg(org2))
org1ChannelClientContext := sdk.ChannelContext(channelID, fabsdk.WithUser(org1User), fabsdk.WithOrg(org1))

// Channel management client is responsible for managing channels (create/update channel)
chMgmtClient, err := resmgmt.New(ordererClientContext)
if err != nil {
t.Fatal(err)
}

// Get signing identity that is used to sign create channel request
org1AdminUser, err := org1MspClient.GetSigningIdentity(org1AdminUser)
if err != nil {
t.Fatalf("failed to get org1AdminUser, err : %s", err)
}

org2AdminUser, err := org2MspClient.GetSigningIdentity(org2AdminUser)
if err != nil {
t.Fatalf("failed to get org2AdminUser, err : %s", err)
}

createChannel(org1AdminUser, org2AdminUser, chMgmtClient, t)

// Org1 resource management client (Org1 is default org)
org1ResMgmt, err := resmgmt.New(org1AdminClientContext)
if err != nil {
Expand Down Expand Up @@ -212,6 +132,7 @@ func createCC(t *testing.T, org1ResMgmt *resmgmt.Client, org2ResMgmt *resmgmt.Cl
Args: integration.ExampleCCInitArgs(),
Policy: ccPolicy,
},
resmgmt.WithTargetEndpoints("peer1.org2.example.com"),
)
require.Errorf(t, err, "Expecting error instantiating CC on peer with revoked certificate")
stat, ok := status.FromError(err)
Expand All @@ -220,15 +141,6 @@ func createCC(t *testing.T, org1ResMgmt *resmgmt.Client, org2ResMgmt *resmgmt.Cl
require.Truef(t, strings.Contains(err.Error(), "the creator certificate is not valid"), "Expecting error message to contain 'the creator certificate is not valid'")
}

func createChannel(org1AdminUser msp.SigningIdentity, org2AdminUser msp.SigningIdentity, chMgmtClient *resmgmt.Client, t *testing.T) {
req := resmgmt.SaveChannelRequest{ChannelID: "orgchannel",
ChannelConfigPath: integration.GetChannelConfigPath("orgchannel.tx"),
SigningIdentities: []msp.SigningIdentity{org1AdminUser, org2AdminUser}}
txID, err := chMgmtClient.SaveChannel(req, resmgmt.WithRetry(retry.DefaultResMgmtOpts), resmgmt.WithOrdererEndpoint("orderer.example.com"))
require.Nil(t, err, "error should be nil")
require.NotEmpty(t, txID, "transaction ID should be populated")
}

func loadOrgPeers(t *testing.T, ctxProvider contextAPI.ClientProvider) {

ctx, err := ctxProvider()
Expand All @@ -253,68 +165,3 @@ func loadOrgPeers(t *testing.T, ctxProvider contextAPI.ClientProvider) {
}

}

func getConfigBackend() core.ConfigProvider {

return func() ([]core.ConfigBackend, error) {
configBackends, err := config.FromFile(integration.GetConfigPath(configFilename))()
if err != nil {
return nil, errors.Wrap(err, "failed to read config backend from file, %v")
}
backendMap := make(map[string]interface{})

networkConfig := fab.NetworkConfig{}
//get valid peer config
err = lookup.New(configBackends...).UnmarshalKey("peers", &networkConfig.Peers)
if err != nil {
return nil, errors.Wrap(err, "failed to unmarshal peer network config, %v")
}

//customize peer0.org2 to peer1.org2
peer2 := networkConfig.Peers["peer0.org2.example.com"]
peer2.URL = "peer1.org2.example.com:9051"
peer2.GRPCOptions["ssl-target-name-override"] = "peer1.org2.example.com"

//remove peer0.org2
delete(networkConfig.Peers, "peer0.org2.example.com")

//add peer1.org2
networkConfig.Peers["peer1.org2.example.com"] = peer2

//get valid org2
err = lookup.New(configBackends...).UnmarshalKey("organizations", &networkConfig.Organizations)
if err != nil {
return nil, errors.Wrap(err, "failed to unmarshal organizations network config, %v")
}

//Customize org2
org2 := networkConfig.Organizations["org2"]
org2.Peers = []string{"peer1.org2.example.com"}
org2.MSPID = "Org2MSP"
networkConfig.Organizations["org2"] = org2

//custom channel
err = lookup.New(configBackends...).UnmarshalKey("channels", &networkConfig.Channels)
if err != nil {
return nil, errors.Wrap(err, "failed to unmarshal entityMatchers network config, %v")
}

orgChannel := networkConfig.Channels[channelID]
delete(orgChannel.Peers, "peer0.org2.example.com")
orgChannel.Peers["peer1.org2.example.com"] = fab.PeerChannelConfig{
EndorsingPeer: true,
ChaincodeQuery: true,
LedgerQuery: true,
EventSource: false,
}
networkConfig.Channels[channelID] = orgChannel

//Customize backend with update peers, organizations, channels and entity matchers config
backendMap["peers"] = networkConfig.Peers
backendMap["organizations"] = networkConfig.Organizations
backendMap["channels"] = networkConfig.Channels

backends := append([]core.ConfigBackend{}, &mocks.MockConfigBackend{KeyValueMap: backendMap})
return append(backends, configBackends...), nil
}
}

0 comments on commit e9474b4

Please sign in to comment.