diff --git a/bccsp/bccsp_test.go b/bccsp/bccsp_test.go index 6e50d47f66a..36a1aab8eeb 100644 --- a/bccsp/bccsp_test.go +++ b/bccsp/bccsp_test.go @@ -21,7 +21,7 @@ import ( "strings" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestAESOpts(t *testing.T) { @@ -32,18 +32,18 @@ func TestAESOpts(t *testing.T) { &AES256KeyGenOpts{ephemeral}, } { expectedAlgorithm := reflect.TypeOf(opts).String()[7:13] - assert.Equal(t, expectedAlgorithm, opts.Algorithm()) - assert.Equal(t, ephemeral, opts.Ephemeral()) + require.Equal(t, expectedAlgorithm, opts.Algorithm()) + require.Equal(t, ephemeral, opts.Ephemeral()) } } test(true) test(false) opts := &AESKeyGenOpts{true} - assert.Equal(t, "AES", opts.Algorithm()) - assert.True(t, opts.Ephemeral()) + require.Equal(t, "AES", opts.Algorithm()) + require.True(t, opts.Ephemeral()) opts.Temporary = false - assert.False(t, opts.Ephemeral()) + require.False(t, opts.Ephemeral()) } func TestECDSAOpts(t *testing.T) { @@ -53,8 +53,8 @@ func TestECDSAOpts(t *testing.T) { &ECDSAP384KeyGenOpts{ephemeral}, } { expectedAlgorithm := reflect.TypeOf(opts).String()[7:16] - assert.Equal(t, expectedAlgorithm, opts.Algorithm()) - assert.Equal(t, ephemeral, opts.Ephemeral()) + require.Equal(t, expectedAlgorithm, opts.Algorithm()) + require.Equal(t, ephemeral, opts.Ephemeral()) } } test(true) @@ -67,51 +67,51 @@ func TestECDSAOpts(t *testing.T) { &ECDSAPrivateKeyImportOpts{ephemeral}, &ECDSAGoPublicKeyImportOpts{ephemeral}, } { - assert.Equal(t, "ECDSA", opts.Algorithm()) - assert.Equal(t, ephemeral, opts.Ephemeral()) + require.Equal(t, "ECDSA", opts.Algorithm()) + require.Equal(t, ephemeral, opts.Ephemeral()) } } test(true) test(false) opts := &ECDSAReRandKeyOpts{Temporary: true} - assert.True(t, opts.Ephemeral()) + require.True(t, opts.Ephemeral()) opts.Temporary = false - assert.False(t, opts.Ephemeral()) - assert.Equal(t, "ECDSA_RERAND", opts.Algorithm()) - assert.Empty(t, opts.ExpansionValue()) + require.False(t, opts.Ephemeral()) + require.Equal(t, "ECDSA_RERAND", opts.Algorithm()) + require.Empty(t, opts.ExpansionValue()) } func TestHashOpts(t *testing.T) { for _, ho := range []HashOpts{&SHA256Opts{}, &SHA384Opts{}, &SHA3_256Opts{}, &SHA3_384Opts{}} { s := strings.Replace(reflect.TypeOf(ho).String(), "*bccsp.", "", -1) algorithm := strings.Replace(s, "Opts", "", -1) - assert.Equal(t, algorithm, ho.Algorithm()) + require.Equal(t, algorithm, ho.Algorithm()) ho2, err := GetHashOpt(algorithm) - assert.NoError(t, err) - assert.Equal(t, ho.Algorithm(), ho2.Algorithm()) + require.NoError(t, err) + require.Equal(t, ho.Algorithm(), ho2.Algorithm()) } _, err := GetHashOpt("foo") - assert.Error(t, err) - assert.Contains(t, err.Error(), "hash function not recognized") + require.Error(t, err) + require.Contains(t, err.Error(), "hash function not recognized") - assert.Equal(t, "SHA", (&SHAOpts{}).Algorithm()) + require.Equal(t, "SHA", (&SHAOpts{}).Algorithm()) } func TestHMAC(t *testing.T) { opts := &HMACTruncated256AESDeriveKeyOpts{Arg: []byte("arg")} - assert.False(t, opts.Ephemeral()) + require.False(t, opts.Ephemeral()) opts.Temporary = true - assert.True(t, opts.Ephemeral()) - assert.Equal(t, "HMAC_TRUNCATED_256", opts.Algorithm()) - assert.Equal(t, []byte("arg"), opts.Argument()) + require.True(t, opts.Ephemeral()) + require.Equal(t, "HMAC_TRUNCATED_256", opts.Algorithm()) + require.Equal(t, []byte("arg"), opts.Argument()) opts2 := &HMACDeriveKeyOpts{Arg: []byte("arg")} - assert.False(t, opts2.Ephemeral()) + require.False(t, opts2.Ephemeral()) opts2.Temporary = true - assert.True(t, opts2.Ephemeral()) - assert.Equal(t, "HMAC", opts2.Algorithm()) - assert.Equal(t, []byte("arg"), opts2.Argument()) + require.True(t, opts2.Ephemeral()) + require.Equal(t, "HMAC", opts2.Algorithm()) + require.Equal(t, []byte("arg"), opts2.Argument()) } func TestKeyGenOpts(t *testing.T) { @@ -127,8 +127,8 @@ func TestKeyGenOpts(t *testing.T) { &AES256ImportKeyOpts{ephemeral}, } { expectedAlgorithm := expectedAlgorithms[reflect.TypeOf(opts)] - assert.Equal(t, expectedAlgorithm, opts.Algorithm()) - assert.Equal(t, ephemeral, opts.Ephemeral()) + require.Equal(t, expectedAlgorithm, opts.Algorithm()) + require.Equal(t, ephemeral, opts.Ephemeral()) } } test(true) diff --git a/bccsp/factory/nopkcs11_test.go b/bccsp/factory/nopkcs11_test.go index c6a3f835066..8326fa8f8ee 100644 --- a/bccsp/factory/nopkcs11_test.go +++ b/bccsp/factory/nopkcs11_test.go @@ -11,7 +11,7 @@ package factory import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInitFactories(t *testing.T) { @@ -19,10 +19,10 @@ func TestInitFactories(t *testing.T) { ProviderName: "SW", SwOpts: &SwOpts{}, }) - assert.EqualError(t, err, "Failed initializing BCCSP: Could not initialize BCCSP SW [Failed initializing configuration at [0,]: Hash Family not supported []]") + require.EqualError(t, err, "Failed initializing BCCSP: Could not initialize BCCSP SW [Failed initializing configuration at [0,]: Hash Family not supported []]") err = initFactories(&FactoryOpts{ ProviderName: "PKCS11", }) - assert.EqualError(t, err, "Could not find default `PKCS11` BCCSP") + require.EqualError(t, err, "Could not find default `PKCS11` BCCSP") } diff --git a/bccsp/factory/opts_test.go b/bccsp/factory/opts_test.go index 7e830603392..e352f320265 100644 --- a/bccsp/factory/opts_test.go +++ b/bccsp/factory/opts_test.go @@ -18,9 +18,9 @@ package factory import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestFactoryOptsFactoryName(t *testing.T) { - assert.Equal(t, GetDefaultOpts().FactoryName(), "SW") + require.Equal(t, GetDefaultOpts().FactoryName(), "SW") } diff --git a/bccsp/factory/pkcs11_test.go b/bccsp/factory/pkcs11_test.go index 0fa782eae47..b5a7ad02ae6 100644 --- a/bccsp/factory/pkcs11_test.go +++ b/bccsp/factory/pkcs11_test.go @@ -13,7 +13,7 @@ import ( "testing" "github.com/hyperledger/fabric/bccsp/pkcs11" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestExportedInitFactories(t *testing.T) { @@ -21,15 +21,15 @@ func TestExportedInitFactories(t *testing.T) { factoriesInitError = initFactories(nil) err := InitFactories(nil) - assert.NoError(t, err) + require.NoError(t, err) } func TestInitFactories(t *testing.T) { err := initFactories(nil) - assert.NoError(t, err) + require.NoError(t, err) err = initFactories(&FactoryOpts{}) - assert.NoError(t, err) + require.NoError(t, err) } func TestInitFactoriesInvalidArgs(t *testing.T) { @@ -37,21 +37,21 @@ func TestInitFactoriesInvalidArgs(t *testing.T) { ProviderName: "SW", SwOpts: &SwOpts{}, }) - assert.EqualError(t, err, "Failed initializing SW.BCCSP: Could not initialize BCCSP SW [Failed initializing configuration at [0,]: Hash Family not supported []]") + require.EqualError(t, err, "Failed initializing SW.BCCSP: Could not initialize BCCSP SW [Failed initializing configuration at [0,]: Hash Family not supported []]") err = initFactories(&FactoryOpts{ ProviderName: "PKCS11", Pkcs11Opts: &pkcs11.PKCS11Opts{}, }) - assert.EqualError(t, err, "Failed initializing PKCS11.BCCSP: Could not initialize BCCSP PKCS11 [Failed initializing configuration: Hash Family not supported []]") + require.EqualError(t, err, "Failed initializing PKCS11.BCCSP: Could not initialize BCCSP PKCS11 [Failed initializing configuration: Hash Family not supported []]") } func TestGetBCCSPFromOpts(t *testing.T) { opts := GetDefaultOpts() opts.SwOpts.FileKeystore = &FileKeystoreOpts{KeyStorePath: os.TempDir()} csp, err := GetBCCSPFromOpts(opts) - assert.NoError(t, err) - assert.NotNil(t, csp) + require.NoError(t, err) + require.NotNil(t, csp) lib, pin, label := pkcs11.FindPKCS11Lib() csp, err = GetBCCSPFromOpts(&FactoryOpts{ @@ -64,12 +64,12 @@ func TestGetBCCSPFromOpts(t *testing.T) { Label: label, }, }) - assert.NoError(t, err) - assert.NotNil(t, csp) + require.NoError(t, err) + require.NotNil(t, csp) csp, err = GetBCCSPFromOpts(&FactoryOpts{ ProviderName: "BadName", }) - assert.EqualError(t, err, "Could not find BCCSP, no 'BadName' provider") - assert.Nil(t, csp) + require.EqualError(t, err, "Could not find BCCSP, no 'BadName' provider") + require.Nil(t, csp) } diff --git a/bccsp/factory/pkcs11factory_test.go b/bccsp/factory/pkcs11factory_test.go index c8516dc7b47..fdc90273d99 100644 --- a/bccsp/factory/pkcs11factory_test.go +++ b/bccsp/factory/pkcs11factory_test.go @@ -12,28 +12,28 @@ import ( "testing" "github.com/hyperledger/fabric/bccsp/pkcs11" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestPKCS11FactoryName(t *testing.T) { f := &PKCS11Factory{} - assert.Equal(t, f.Name(), PKCS11BasedFactoryName) + require.Equal(t, f.Name(), PKCS11BasedFactoryName) } func TestPKCS11FactoryGetInvalidArgs(t *testing.T) { f := &PKCS11Factory{} _, err := f.Get(nil) - assert.Error(t, err, "Invalid config. It must not be nil.") + require.Error(t, err, "Invalid config. It must not be nil.") _, err = f.Get(&FactoryOpts{}) - assert.Error(t, err, "Invalid config. It must not be nil.") + require.Error(t, err, "Invalid config. It must not be nil.") opts := &FactoryOpts{ Pkcs11Opts: &pkcs11.PKCS11Opts{}, } _, err = f.Get(opts) - assert.Error(t, err, "CSP:500 - Failed initializing configuration at [0,]") + require.Error(t, err, "CSP:500 - Failed initializing configuration at [0,]") } func TestPKCS11FactoryGet(t *testing.T) { @@ -50,8 +50,8 @@ func TestPKCS11FactoryGet(t *testing.T) { }, } csp, err := f.Get(opts) - assert.NoError(t, err) - assert.NotNil(t, csp) + require.NoError(t, err) + require.NotNil(t, csp) opts = &FactoryOpts{ Pkcs11Opts: &pkcs11.PKCS11Opts{ @@ -63,8 +63,8 @@ func TestPKCS11FactoryGet(t *testing.T) { }, } csp, err = f.Get(opts) - assert.NoError(t, err) - assert.NotNil(t, csp) + require.NoError(t, err) + require.NotNil(t, csp) opts = &FactoryOpts{ Pkcs11Opts: &pkcs11.PKCS11Opts{ @@ -76,8 +76,8 @@ func TestPKCS11FactoryGet(t *testing.T) { }, } csp, err = f.Get(opts) - assert.NoError(t, err) - assert.NotNil(t, csp) + require.NoError(t, err) + require.NotNil(t, csp) } func TestPKCS11FactoryGetEmptyKeyStorePath(t *testing.T) { @@ -94,8 +94,8 @@ func TestPKCS11FactoryGetEmptyKeyStorePath(t *testing.T) { }, } csp, err := f.Get(opts) - assert.NoError(t, err) - assert.NotNil(t, csp) + require.NoError(t, err) + require.NotNil(t, csp) opts = &FactoryOpts{ Pkcs11Opts: &pkcs11.PKCS11Opts{ @@ -107,6 +107,6 @@ func TestPKCS11FactoryGetEmptyKeyStorePath(t *testing.T) { }, } csp, err = f.Get(opts) - assert.NoError(t, err) - assert.NotNil(t, csp) + require.NoError(t, err) + require.NotNil(t, csp) } diff --git a/bccsp/factory/swfactory_test.go b/bccsp/factory/swfactory_test.go index 31c05d33fe9..2d3f847c69a 100644 --- a/bccsp/factory/swfactory_test.go +++ b/bccsp/factory/swfactory_test.go @@ -19,28 +19,28 @@ import ( "os" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSWFactoryName(t *testing.T) { f := &SWFactory{} - assert.Equal(t, f.Name(), SoftwareBasedFactoryName) + require.Equal(t, f.Name(), SoftwareBasedFactoryName) } func TestSWFactoryGetInvalidArgs(t *testing.T) { f := &SWFactory{} _, err := f.Get(nil) - assert.Error(t, err, "Invalid config. It must not be nil.") + require.Error(t, err, "Invalid config. It must not be nil.") _, err = f.Get(&FactoryOpts{}) - assert.Error(t, err, "Invalid config. It must not be nil.") + require.Error(t, err, "Invalid config. It must not be nil.") opts := &FactoryOpts{ SwOpts: &SwOpts{}, } _, err = f.Get(opts) - assert.Error(t, err, "CSP:500 - Failed initializing configuration at [0,]") + require.Error(t, err, "CSP:500 - Failed initializing configuration at [0,]") } func TestSWFactoryGet(t *testing.T) { @@ -53,8 +53,8 @@ func TestSWFactoryGet(t *testing.T) { }, } csp, err := f.Get(opts) - assert.NoError(t, err) - assert.NotNil(t, csp) + require.NoError(t, err) + require.NotNil(t, csp) opts = &FactoryOpts{ SwOpts: &SwOpts{ @@ -64,7 +64,7 @@ func TestSWFactoryGet(t *testing.T) { }, } csp, err = f.Get(opts) - assert.NoError(t, err) - assert.NotNil(t, csp) + require.NoError(t, err) + require.NotNil(t, csp) } diff --git a/bccsp/pkcs11/ecdsakey_test.go b/bccsp/pkcs11/ecdsakey_test.go index 3af5c2ae8ec..f889eb39b81 100644 --- a/bccsp/pkcs11/ecdsakey_test.go +++ b/bccsp/pkcs11/ecdsakey_test.go @@ -13,23 +13,23 @@ import ( "testing" "github.com/hyperledger/fabric/bccsp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestX509PublicKeyImportOptsKeyImporter(t *testing.T) { ki := currentBCCSP _, err := ki.KeyImport("Hello World", &bccsp.X509PublicKeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "[X509PublicKeyImportOpts] Invalid raw material. Expected *x509.Certificate") + require.Error(t, err) + require.Contains(t, err.Error(), "[X509PublicKeyImportOpts] Invalid raw material. Expected *x509.Certificate") _, err = ki.KeyImport(nil, &bccsp.X509PublicKeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw. Cannot be nil") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw. Cannot be nil") cert := &x509.Certificate{} cert.PublicKey = "Hello world" _, err = ki.KeyImport(cert, &bccsp.X509PublicKeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Certificate's public key type not recognized. Supported keys: [ECDSA]") + require.Error(t, err) + require.Contains(t, err.Error(), "Certificate's public key type not recognized. Supported keys: [ECDSA]") } diff --git a/bccsp/pkcs11/impl_test.go b/bccsp/pkcs11/impl_test.go index 264a918c794..a97219c4844 100644 --- a/bccsp/pkcs11/impl_test.go +++ b/bccsp/pkcs11/impl_test.go @@ -31,7 +31,7 @@ import ( "github.com/hyperledger/fabric/bccsp/signer" "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/bccsp/utils" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "golang.org/x/crypto/sha3" ) @@ -128,14 +128,14 @@ func TestNew(t *testing.T) { // Test for nil keystore _, err := New(opts, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid bccsp.KeyStore instance. It must be different from nil") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid bccsp.KeyStore instance. It must be different from nil") // Test for invalid PKCS11 loadLib opts.Library = "" _, err = New(opts, currentKS) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed initializing PKCS11 library") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed initializing PKCS11 library") } func TestFindPKCS11LibEnvVars(t *testing.T) { @@ -157,9 +157,9 @@ func TestFindPKCS11LibEnvVars(t *testing.T) { os.Setenv("PKCS11_LABEL", dummy_PKCS11_LABEL) lib, pin, label := FindPKCS11Lib() - assert.EqualValues(t, dummy_PKCS11_LIB, lib, "FindPKCS11Lib did not return expected library") - assert.EqualValues(t, dummy_PKCS11_PIN, pin, "FindPKCS11Lib did not return expected pin") - assert.EqualValues(t, dummy_PKCS11_LABEL, label, "FindPKCS11Lib did not return expected label") + require.EqualValues(t, dummy_PKCS11_LIB, lib, "FindPKCS11Lib did not return expected library") + require.EqualValues(t, dummy_PKCS11_PIN, pin, "FindPKCS11Lib did not return expected pin") + require.EqualValues(t, dummy_PKCS11_LABEL, label, "FindPKCS11Lib did not return expected label") }) t.Run("MissingEnvironment", func(t *testing.T) { @@ -168,8 +168,8 @@ func TestFindPKCS11LibEnvVars(t *testing.T) { os.Unsetenv("PKCS11_LABEL") _, pin, label := FindPKCS11Lib() - assert.EqualValues(t, "98765432", pin, "FindPKCS11Lib did not return expected pin") - assert.EqualValues(t, "ForFabric", label, "FindPKCS11Lib did not return expected label") + require.EqualValues(t, "98765432", pin, "FindPKCS11Lib did not return expected pin") + require.EqualValues(t, "ForFabric", label, "FindPKCS11Lib did not return expected label") }) os.Setenv("PKCS11_LIB", orig_PKCS11_LIB) @@ -558,12 +558,12 @@ func TestECDSASign(t *testing.T) { } _, err = currentBCCSP.Sign(nil, digest, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid Key. It must not be nil") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid Key. It must not be nil") _, err = currentBCCSP.Sign(k, nil, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid digest. Cannot be empty") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid digest. Cannot be empty") } func TestECDSAVerify(t *testing.T) { @@ -606,16 +606,16 @@ func TestECDSAVerify(t *testing.T) { } _, err = currentBCCSP.Verify(nil, signature, digest, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid Key. It must not be nil") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid Key. It must not be nil") _, err = currentBCCSP.Verify(pk, nil, digest, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid signature. Cannot be empty") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid signature. Cannot be empty") _, err = currentBCCSP.Verify(pk, signature, nil, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid digest. Cannot be empty") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid digest. Cannot be empty") // Import the exported public key pkRaw, err := pk.Bytes() diff --git a/bccsp/pkcs11/pkcs11_test.go b/bccsp/pkcs11/pkcs11_test.go index b28eda6cf59..099628684a5 100644 --- a/bccsp/pkcs11/pkcs11_test.go +++ b/bccsp/pkcs11/pkcs11_test.go @@ -15,15 +15,15 @@ import ( "github.com/hyperledger/fabric/bccsp" "github.com/miekg/pkcs11" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestKeyGenFailures(t *testing.T) { var testOpts bccsp.KeyGenOpts ki := currentBCCSP _, err := ki.KeyGen(testOpts) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid Opts parameter. It must not be nil") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid Opts parameter. It must not be nil") } func TestLoadLib(t *testing.T) { @@ -32,41 +32,41 @@ func TestLoadLib(t *testing.T) { // Test for no specified PKCS11 library _, _, _, err := loadLib("", pin, label) - assert.Error(t, err) - assert.Contains(t, err.Error(), "No PKCS11 library default") + require.Error(t, err) + require.Contains(t, err.Error(), "No PKCS11 library default") // Test for invalid PKCS11 library _, _, _, err = loadLib("badLib", pin, label) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Instantiate failed") + require.Error(t, err) + require.Contains(t, err.Error(), "Instantiate failed") // Test for invalid label _, _, _, err = loadLib(lib, pin, "badLabel") - assert.Error(t, err) - assert.Contains(t, err.Error(), "could not find token with label") + require.Error(t, err) + require.Contains(t, err.Error(), "could not find token with label") // Test for no pin _, _, _, err = loadLib(lib, "", label) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Login failed: pkcs11") + require.Error(t, err) + require.Contains(t, err.Error(), "Login failed: pkcs11") } func TestNamedCurveFromOID(t *testing.T) { // Test for valid P224 elliptic curve namedCurve := namedCurveFromOID(oidNamedCurveP224) - assert.Equal(t, elliptic.P224(), namedCurve, "Did not receive expected named curve for oidNamedCurveP224") + require.Equal(t, elliptic.P224(), namedCurve, "Did not receive expected named curve for oidNamedCurveP224") // Test for valid P256 elliptic curve namedCurve = namedCurveFromOID(oidNamedCurveP256) - assert.Equal(t, elliptic.P256(), namedCurve, "Did not receive expected named curve for oidNamedCurveP256") + require.Equal(t, elliptic.P256(), namedCurve, "Did not receive expected named curve for oidNamedCurveP256") // Test for valid P256 elliptic curve namedCurve = namedCurveFromOID(oidNamedCurveP384) - assert.Equal(t, elliptic.P384(), namedCurve, "Did not receive expected named curve for oidNamedCurveP384") + require.Equal(t, elliptic.P384(), namedCurve, "Did not receive expected named curve for oidNamedCurveP384") // Test for valid P521 elliptic curve namedCurve = namedCurveFromOID(oidNamedCurveP521) - assert.Equal(t, elliptic.P521(), namedCurve, "Did not receive expected named curved for oidNamedCurveP521") + require.Equal(t, elliptic.P521(), namedCurve, "Did not receive expected named curved for oidNamedCurveP521") testAsn1Value := asn1.ObjectIdentifier{4, 9, 15, 1} namedCurve = namedCurveFromOID(testAsn1Value) @@ -79,7 +79,7 @@ func TestPKCS11GetSession(t *testing.T) { var sessions []pkcs11.SessionHandle for i := 0; i < 3*sessionCacheSize; i++ { session, err := currentBCCSP.(*impl).getSession() - assert.NoError(t, err) + require.NoError(t, err) sessions = append(sessions, session) } @@ -96,12 +96,12 @@ func TestPKCS11GetSession(t *testing.T) { // Should be able to get sessionCacheSize cached sessions for i := 0; i < sessionCacheSize; i++ { session, err := currentBCCSP.(*impl).getSession() - assert.NoError(t, err) + require.NoError(t, err) sessions = append(sessions, session) } _, err := currentBCCSP.(*impl).getSession() - assert.EqualError(t, err, "OpenSession failed: pkcs11: 0x3: CKR_SLOT_ID_INVALID") + require.EqualError(t, err, "OpenSession failed: pkcs11: 0x3: CKR_SLOT_ID_INVALID") // Cleanup for _, session := range sessions { @@ -135,8 +135,8 @@ func TestPKCS11ECKeySignVerify(t *testing.T) { } _, _, err = currentBCCSP.(*impl).signP11ECDSA(nil, hash1) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Private key not found") + require.Error(t, err) + require.Contains(t, err.Error(), "Private key not found") pass, err := currentBCCSP.(*impl).verifyP11ECDSA(key, hash1, R, S, currentTestConfig.securityLevel/8) if err != nil { diff --git a/bccsp/signer/signer_test.go b/bccsp/signer/signer_test.go index 7edab3bdaed..34275cb0187 100644 --- a/bccsp/signer/signer_test.go +++ b/bccsp/signer/signer_test.go @@ -24,46 +24,46 @@ import ( "testing" "github.com/hyperledger/fabric/bccsp/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInitFailures(t *testing.T) { _, err := New(nil, &mocks.MockKey{}) - assert.Error(t, err) + require.Error(t, err) _, err = New(&mocks.MockBCCSP{}, nil) - assert.Error(t, err) + require.Error(t, err) _, err = New(&mocks.MockBCCSP{}, &mocks.MockKey{Symm: true}) - assert.Error(t, err) + require.Error(t, err) _, err = New(&mocks.MockBCCSP{}, &mocks.MockKey{PKErr: errors.New("No PK")}) - assert.Error(t, err) - assert.Equal(t, "failed getting public key: No PK", err.Error()) + require.Error(t, err) + require.Equal(t, "failed getting public key: No PK", err.Error()) _, err = New(&mocks.MockBCCSP{}, &mocks.MockKey{PK: &mocks.MockKey{BytesErr: errors.New("No bytes")}}) - assert.Error(t, err) - assert.Equal(t, "failed marshalling public key: No bytes", err.Error()) + require.Error(t, err) + require.Equal(t, "failed marshalling public key: No bytes", err.Error()) _, err = New(&mocks.MockBCCSP{}, &mocks.MockKey{PK: &mocks.MockKey{BytesValue: []byte{0, 1, 2, 3}}}) - assert.Error(t, err) + require.Error(t, err) } func TestInit(t *testing.T) { k, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) pkRaw, err := x509.MarshalPKIXPublicKey(&k.PublicKey) - assert.NoError(t, err) + require.NoError(t, err) signer, err := New(&mocks.MockBCCSP{}, &mocks.MockKey{PK: &mocks.MockKey{BytesValue: pkRaw}}) - assert.NoError(t, err) - assert.NotNil(t, signer) + require.NoError(t, err) + require.NotNil(t, signer) // Test public key R, S, err := ecdsa.Sign(rand.Reader, k, []byte{0, 1, 2, 3}) - assert.NoError(t, err) + require.NoError(t, err) - assert.True(t, ecdsa.Verify(signer.Public().(*ecdsa.PublicKey), []byte{0, 1, 2, 3}, R, S)) + require.True(t, ecdsa.Verify(signer.Public().(*ecdsa.PublicKey), []byte{0, 1, 2, 3}, R, S)) } func TestPublic(t *testing.T) { @@ -71,7 +71,7 @@ func TestPublic(t *testing.T) { signer := &bccspCryptoSigner{pk: pk} pk2 := signer.Public() - assert.NotNil(t, pk, pk2) + require.NotNil(t, pk, pk2) } func TestSign(t *testing.T) { @@ -86,8 +86,8 @@ func TestSign(t *testing.T) { SignArgKey: expectedKey, SignDigestArg: expectedDigest, SignOptsArg: expectedOpts, SignValue: expectedSig}} signature, err := signer.Sign(nil, expectedDigest, expectedOpts) - assert.NoError(t, err) - assert.Equal(t, expectedSig, signature) + require.NoError(t, err) + require.Equal(t, expectedSig, signature) signer = &bccspCryptoSigner{ key: expectedKey, @@ -95,27 +95,27 @@ func TestSign(t *testing.T) { SignArgKey: expectedKey, SignDigestArg: expectedDigest, SignOptsArg: expectedOpts, SignErr: errors.New("no signature")}} _, err = signer.Sign(nil, expectedDigest, expectedOpts) - assert.Error(t, err) - assert.Equal(t, err.Error(), "no signature") + require.Error(t, err) + require.Equal(t, err.Error(), "no signature") signer = &bccspCryptoSigner{ key: nil, csp: &mocks.MockBCCSP{SignArgKey: expectedKey, SignDigestArg: expectedDigest, SignOptsArg: expectedOpts}} _, err = signer.Sign(nil, expectedDigest, expectedOpts) - assert.Error(t, err) - assert.Equal(t, err.Error(), "invalid key") + require.Error(t, err) + require.Equal(t, err.Error(), "invalid key") signer = &bccspCryptoSigner{ key: expectedKey, csp: &mocks.MockBCCSP{SignArgKey: expectedKey, SignDigestArg: expectedDigest, SignOptsArg: expectedOpts}} _, err = signer.Sign(nil, nil, expectedOpts) - assert.Error(t, err) - assert.Equal(t, err.Error(), "invalid digest") + require.Error(t, err) + require.Equal(t, err.Error(), "invalid digest") signer = &bccspCryptoSigner{ key: expectedKey, csp: &mocks.MockBCCSP{SignArgKey: expectedKey, SignDigestArg: expectedDigest, SignOptsArg: expectedOpts}} _, err = signer.Sign(nil, expectedDigest, nil) - assert.Error(t, err) - assert.Equal(t, err.Error(), "invalid opts") + require.Error(t, err) + require.Equal(t, err.Error(), "invalid opts") } diff --git a/bccsp/sw/aes_test.go b/bccsp/sw/aes_test.go index f9c68e44923..4eadc73e950 100644 --- a/bccsp/sw/aes_test.go +++ b/bccsp/sw/aes_test.go @@ -26,7 +26,7 @@ import ( "github.com/hyperledger/fabric/bccsp" "github.com/hyperledger/fabric/bccsp/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // TestCBCPKCS7EncryptCBCPKCS7Decrypt encrypts using CBCPKCS7Encrypt and decrypts using CBCPKCS7Decrypt. @@ -294,7 +294,7 @@ func TestCBCEncrypt_EmptyPlaintext(t *testing.T) { t.Log("Message length: ", len(emptyPlaintext)) ciphertext, encErr := aesCBCEncrypt(key, emptyPlaintext) - assert.NoError(t, encErr) + require.NoError(t, encErr) t.Log("Ciphertext length: ", len(ciphertext)) @@ -456,7 +456,7 @@ func TestCBCEncryptWithIVCBCDecrypt(t *testing.T) { iv := make([]byte, aes.BlockSize) _, err := io.ReadFull(rand.Reader, iv) - assert.NoError(t, err) + require.NoError(t, err) encrypted, encErr := aesCBCEncryptWithIV(iv, key, ptext) if encErr != nil { @@ -545,33 +545,33 @@ func TestPkcs7UnPaddingInvalidInputs(t *testing.T) { t.Parallel() _, err := pkcs7UnPadding([]byte{1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}) - assert.Error(t, err) - assert.Equal(t, "Invalid pkcs7 padding (pad[i] != unpadding)", err.Error()) + require.Error(t, err) + require.Equal(t, "Invalid pkcs7 padding (pad[i] != unpadding)", err.Error()) } func TestAESCBCEncryptInvalidInputs(t *testing.T) { t.Parallel() _, err := aesCBCEncrypt(nil, []byte{0, 1, 2, 3}) - assert.Error(t, err) - assert.Equal(t, "Invalid plaintext. It must be a multiple of the block size", err.Error()) + require.Error(t, err) + require.Equal(t, "Invalid plaintext. It must be a multiple of the block size", err.Error()) _, err = aesCBCEncrypt([]byte{0}, []byte{1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}) - assert.Error(t, err) + require.Error(t, err) } func TestAESCBCDecryptInvalidInputs(t *testing.T) { t.Parallel() _, err := aesCBCDecrypt([]byte{0}, []byte{1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}) - assert.Error(t, err) + require.Error(t, err) _, err = aesCBCDecrypt([]byte{1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, []byte{0}) - assert.Error(t, err) + require.Error(t, err) _, err = aesCBCDecrypt([]byte{1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, []byte{1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}) - assert.Error(t, err) + require.Error(t, err) } // TestAESCBCPKCS7EncryptorDecrypt tests the integration of @@ -580,7 +580,7 @@ func TestAESCBCPKCS7EncryptorDecrypt(t *testing.T) { t.Parallel() raw, err := GetRandomBytes(32) - assert.NoError(t, err) + require.NoError(t, err) k := &aesPrivateKey{privKey: raw, exportable: false} @@ -588,43 +588,43 @@ func TestAESCBCPKCS7EncryptorDecrypt(t *testing.T) { encryptor := &aescbcpkcs7Encryptor{} _, err = encryptor.Encrypt(k, msg, nil) - assert.Error(t, err) + require.Error(t, err) _, err = encryptor.Encrypt(k, msg, &mocks.EncrypterOpts{}) - assert.Error(t, err) + require.Error(t, err) _, err = encryptor.Encrypt(k, msg, &bccsp.AESCBCPKCS7ModeOpts{IV: []byte{1}}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid IV. It must have length the block size") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid IV. It must have length the block size") _, err = encryptor.Encrypt(k, msg, &bccsp.AESCBCPKCS7ModeOpts{IV: []byte{1}, PRNG: rand.Reader}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid options. Either IV or PRNG should be different from nil, or both nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid options. Either IV or PRNG should be different from nil, or both nil.") _, err = encryptor.Encrypt(k, msg, bccsp.AESCBCPKCS7ModeOpts{}) - assert.NoError(t, err) + require.NoError(t, err) ct, err := encryptor.Encrypt(k, msg, &bccsp.AESCBCPKCS7ModeOpts{}) - assert.NoError(t, err) + require.NoError(t, err) decryptor := &aescbcpkcs7Decryptor{} _, err = decryptor.Decrypt(k, ct, nil) - assert.Error(t, err) + require.Error(t, err) _, err = decryptor.Decrypt(k, ct, &mocks.EncrypterOpts{}) - assert.Error(t, err) + require.Error(t, err) msg2, err := decryptor.Decrypt(k, ct, &bccsp.AESCBCPKCS7ModeOpts{}) - assert.NoError(t, err) - assert.Equal(t, msg, msg2) + require.NoError(t, err) + require.Equal(t, msg, msg2) } func TestAESCBCPKCS7EncryptorWithIVSameCiphertext(t *testing.T) { t.Parallel() raw, err := GetRandomBytes(32) - assert.NoError(t, err) + require.NoError(t, err) k := &aesPrivateKey{privKey: raw, exportable: false} @@ -634,23 +634,23 @@ func TestAESCBCPKCS7EncryptorWithIVSameCiphertext(t *testing.T) { iv := make([]byte, aes.BlockSize) ct, err := encryptor.Encrypt(k, msg, &bccsp.AESCBCPKCS7ModeOpts{IV: iv}) - assert.NoError(t, err) - assert.NotNil(t, ct) - assert.Equal(t, iv, ct[:aes.BlockSize]) + require.NoError(t, err) + require.NotNil(t, ct) + require.Equal(t, iv, ct[:aes.BlockSize]) ct2, err := encryptor.Encrypt(k, msg, &bccsp.AESCBCPKCS7ModeOpts{IV: iv}) - assert.NoError(t, err) - assert.NotNil(t, ct2) - assert.Equal(t, iv, ct2[:aes.BlockSize]) + require.NoError(t, err) + require.NotNil(t, ct2) + require.Equal(t, iv, ct2[:aes.BlockSize]) - assert.Equal(t, ct, ct2) + require.Equal(t, ct, ct2) } func TestAESCBCPKCS7EncryptorWithRandSameCiphertext(t *testing.T) { t.Parallel() raw, err := GetRandomBytes(32) - assert.NoError(t, err) + require.NoError(t, err) k := &aesPrivateKey{privKey: raw, exportable: false} @@ -660,19 +660,19 @@ func TestAESCBCPKCS7EncryptorWithRandSameCiphertext(t *testing.T) { r := mrand.New(mrand.NewSource(0)) iv := make([]byte, aes.BlockSize) _, err = io.ReadFull(r, iv) - assert.NoError(t, err) + require.NoError(t, err) r = mrand.New(mrand.NewSource(0)) ct, err := encryptor.Encrypt(k, msg, &bccsp.AESCBCPKCS7ModeOpts{PRNG: r}) - assert.NoError(t, err) - assert.NotNil(t, ct) - assert.Equal(t, iv, ct[:aes.BlockSize]) + require.NoError(t, err) + require.NotNil(t, ct) + require.Equal(t, iv, ct[:aes.BlockSize]) r = mrand.New(mrand.NewSource(0)) ct2, err := encryptor.Encrypt(k, msg, &bccsp.AESCBCPKCS7ModeOpts{PRNG: r}) - assert.NoError(t, err) - assert.NotNil(t, ct2) - assert.Equal(t, iv, ct2[:aes.BlockSize]) + require.NoError(t, err) + require.NotNil(t, ct2) + require.Equal(t, iv, ct2[:aes.BlockSize]) - assert.Equal(t, ct, ct2) + require.Equal(t, ct, ct2) } diff --git a/bccsp/sw/dummyks_test.go b/bccsp/sw/dummyks_test.go index 4810a85b1d3..17aa7cfa64c 100644 --- a/bccsp/sw/dummyks_test.go +++ b/bccsp/sw/dummyks_test.go @@ -19,14 +19,14 @@ import ( "testing" "github.com/hyperledger/fabric/bccsp/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewDummyKeyStore(t *testing.T) { t.Parallel() ks := NewDummyKeyStore() - assert.NotNil(t, ks) + require.NotNil(t, ks) } func TestDummyKeyStore_GetKey(t *testing.T) { @@ -34,14 +34,14 @@ func TestDummyKeyStore_GetKey(t *testing.T) { ks := NewDummyKeyStore() _, err := ks.GetKey([]byte{0, 1, 2, 3, 4}) - assert.Error(t, err) + require.Error(t, err) } func TestDummyKeyStore_ReadOnly(t *testing.T) { t.Parallel() ks := NewDummyKeyStore() - assert.True(t, ks.ReadOnly()) + require.True(t, ks.ReadOnly()) } func TestDummyKeyStore_StoreKey(t *testing.T) { @@ -49,5 +49,5 @@ func TestDummyKeyStore_StoreKey(t *testing.T) { ks := NewDummyKeyStore() err := ks.StoreKey(&mocks.MockKey{}) - assert.Error(t, err) + require.Error(t, err) } diff --git a/bccsp/sw/ecdsa_test.go b/bccsp/sw/ecdsa_test.go index dcc5c93ed83..2e17191dd75 100644 --- a/bccsp/sw/ecdsa_test.go +++ b/bccsp/sw/ecdsa_test.go @@ -26,13 +26,13 @@ import ( "testing" "github.com/hyperledger/fabric/bccsp/utils" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSignECDSABadParameter(t *testing.T) { // Generate a key lowLevelKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) // Induce an error on the underlying ecdsa algorithm curve := *elliptic.P256().Params() @@ -40,8 +40,8 @@ func TestSignECDSABadParameter(t *testing.T) { lowLevelKey.Curve = &curve _, err = signECDSA(lowLevelKey, []byte("hello world"), nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "zero parameter") + require.Error(t, err) + require.Contains(t, err.Error(), "zero parameter") } func TestVerifyECDSA(t *testing.T) { @@ -49,28 +49,28 @@ func TestVerifyECDSA(t *testing.T) { // Generate a key lowLevelKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) msg := []byte("hello world") sigma, err := signECDSA(lowLevelKey, msg, nil) - assert.NoError(t, err) + require.NoError(t, err) valid, err := verifyECDSA(&lowLevelKey.PublicKey, sigma, msg, nil) - assert.NoError(t, err) - assert.True(t, valid) + require.NoError(t, err) + require.True(t, valid) _, err = verifyECDSA(&lowLevelKey.PublicKey, nil, msg, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed unmashalling signature [") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed unmashalling signature [") R, S, err := utils.UnmarshalECDSASignature(sigma) - assert.NoError(t, err) + require.NoError(t, err) S.Add(utils.GetCurveHalfOrdersAt(elliptic.P256()), big.NewInt(1)) sigmaWrongS, err := utils.MarshalECDSASignature(R, S) - assert.NoError(t, err) + require.NoError(t, err) _, err = verifyECDSA(&lowLevelKey.PublicKey, sigmaWrongS, msg, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid S. Must be smaller than half the order [") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid S. Must be smaller than half the order [") } func TestEcdsaSignerSign(t *testing.T) { @@ -82,48 +82,48 @@ func TestEcdsaSignerSign(t *testing.T) { // Generate a key lowLevelKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) k := &ecdsaPrivateKey{lowLevelKey} pk, err := k.PublicKey() - assert.NoError(t, err) + require.NoError(t, err) // Sign msg := []byte("Hello World") sigma, err := signer.Sign(k, msg, nil) - assert.NoError(t, err) - assert.NotNil(t, sigma) + require.NoError(t, err) + require.NotNil(t, sigma) // Verify valid, err := verifyECDSA(&lowLevelKey.PublicKey, sigma, msg, nil) - assert.NoError(t, err) - assert.True(t, valid) + require.NoError(t, err) + require.True(t, valid) valid, err = verifierPrivateKey.Verify(k, sigma, msg, nil) - assert.NoError(t, err) - assert.True(t, valid) + require.NoError(t, err) + require.True(t, valid) valid, err = verifierPublicKey.Verify(pk, sigma, msg, nil) - assert.NoError(t, err) - assert.True(t, valid) + require.NoError(t, err) + require.True(t, valid) } func TestEcdsaPrivateKey(t *testing.T) { t.Parallel() lowLevelKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) k := &ecdsaPrivateKey{lowLevelKey} - assert.False(t, k.Symmetric()) - assert.True(t, k.Private()) + require.False(t, k.Symmetric()) + require.True(t, k.Private()) _, err = k.Bytes() - assert.Error(t, err) - assert.Contains(t, err.Error(), "Not supported.") + require.Error(t, err) + require.Contains(t, err.Error(), "Not supported.") k.privKey = nil ski := k.SKI() - assert.Nil(t, ski) + require.Nil(t, ski) k.privKey = lowLevelKey ski = k.SKI() @@ -131,29 +131,29 @@ func TestEcdsaPrivateKey(t *testing.T) { hash := sha256.New() hash.Write(raw) ski2 := hash.Sum(nil) - assert.Equal(t, ski2, ski, "SKI is not computed in the right way.") + require.Equal(t, ski2, ski, "SKI is not computed in the right way.") pk, err := k.PublicKey() - assert.NoError(t, err) - assert.NotNil(t, pk) + require.NoError(t, err) + require.NotNil(t, pk) ecdsaPK, ok := pk.(*ecdsaPublicKey) - assert.True(t, ok) - assert.Equal(t, &lowLevelKey.PublicKey, ecdsaPK.pubKey) + require.True(t, ok) + require.Equal(t, &lowLevelKey.PublicKey, ecdsaPK.pubKey) } func TestEcdsaPublicKey(t *testing.T) { t.Parallel() lowLevelKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) k := &ecdsaPublicKey{&lowLevelKey.PublicKey} - assert.False(t, k.Symmetric()) - assert.False(t, k.Private()) + require.False(t, k.Symmetric()) + require.False(t, k.Private()) k.pubKey = nil ski := k.SKI() - assert.Nil(t, ski) + require.Nil(t, ski) k.pubKey = &lowLevelKey.PublicKey ski = k.SKI() @@ -161,22 +161,22 @@ func TestEcdsaPublicKey(t *testing.T) { hash := sha256.New() hash.Write(raw) ski2 := hash.Sum(nil) - assert.Equal(t, ski, ski2, "SKI is not computed in the right way.") + require.Equal(t, ski, ski2, "SKI is not computed in the right way.") pk, err := k.PublicKey() - assert.NoError(t, err) - assert.Equal(t, k, pk) + require.NoError(t, err) + require.Equal(t, k, pk) bytes, err := k.Bytes() - assert.NoError(t, err) + require.NoError(t, err) bytes2, err := x509.MarshalPKIXPublicKey(k.pubKey) - assert.NoError(t, err) - assert.Equal(t, bytes2, bytes, "bytes are not computed in the right way.") + require.NoError(t, err) + require.Equal(t, bytes2, bytes, "bytes are not computed in the right way.") invalidCurve := &elliptic.CurveParams{Name: "P-Invalid"} invalidCurve.BitSize = 1024 k.pubKey = &ecdsa.PublicKey{Curve: invalidCurve, X: big.NewInt(1), Y: big.NewInt(1)} _, err = k.Bytes() - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed marshalling key [") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed marshalling key [") } diff --git a/bccsp/sw/enc_test.go b/bccsp/sw/enc_test.go index d2d4d474ebc..51a745756ae 100644 --- a/bccsp/sw/enc_test.go +++ b/bccsp/sw/enc_test.go @@ -23,7 +23,7 @@ import ( mocks2 "github.com/hyperledger/fabric/bccsp/mocks" "github.com/hyperledger/fabric/bccsp/sw/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestEncrypt(t *testing.T) { @@ -47,6 +47,6 @@ func TestEncrypt(t *testing.T) { csp := CSP{Encryptors: encryptors} ct, err := csp.Encrypt(expectedKey, expectedPlaintext, expectedOpts) - assert.Equal(t, expectedCiphertext, ct) - assert.Equal(t, expectedErr, err) + require.Equal(t, expectedCiphertext, ct) + require.Equal(t, expectedErr, err) } diff --git a/bccsp/sw/fileks_test.go b/bccsp/sw/fileks_test.go index f8eb7e1da14..a39350a430b 100644 --- a/bccsp/sw/fileks_test.go +++ b/bccsp/sw/fileks_test.go @@ -16,14 +16,14 @@ import ( "path/filepath" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInvalidStoreKey(t *testing.T) { t.Parallel() tempDir, err := ioutil.TempDir("", "bccspks") - assert.NoError(t, err) + require.NoError(t, err) defer os.RemoveAll(tempDir) ks, err := NewFileBasedKeyStore(nil, filepath.Join(tempDir, "bccspks"), false) @@ -59,20 +59,20 @@ func TestInvalidStoreKey(t *testing.T) { func TestBigKeyFile(t *testing.T) { ksPath, err := ioutil.TempDir("", "bccspks") - assert.NoError(t, err) + require.NoError(t, err) defer os.RemoveAll(ksPath) ks, err := NewFileBasedKeyStore(nil, ksPath, false) - assert.NoError(t, err) + require.NoError(t, err) // Generate a key for keystore to find privKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) cspKey := &ecdsaPrivateKey{privKey} ski := cspKey.SKI() rawKey, err := privateKeyToPEM(privKey, nil) - assert.NoError(t, err) + require.NoError(t, err) // Large padding array, of some values PEM parser will NOOP bigBuff := make([]byte, 1<<17) @@ -85,56 +85,56 @@ func TestBigKeyFile(t *testing.T) { ioutil.WriteFile(filepath.Join(ksPath, "bigfile.pem"), bigBuff, 0666) _, err = ks.GetKey(ski) - assert.Error(t, err) + require.Error(t, err) expected := fmt.Sprintf("key with SKI %x not found in %s", ski, ksPath) - assert.EqualError(t, err, expected) + require.EqualError(t, err, expected) // 1k, so that the key would be found ioutil.WriteFile(filepath.Join(ksPath, "smallerfile.pem"), bigBuff[0:1<<10], 0666) _, err = ks.GetKey(ski) - assert.NoError(t, err) + require.NoError(t, err) } func TestReInitKeyStore(t *testing.T) { ksPath, err := ioutil.TempDir("", "bccspks") - assert.NoError(t, err) + require.NoError(t, err) defer os.RemoveAll(ksPath) ks, err := NewFileBasedKeyStore(nil, ksPath, false) - assert.NoError(t, err) + require.NoError(t, err) fbKs, isFileBased := ks.(*fileBasedKeyStore) - assert.True(t, isFileBased) + require.True(t, isFileBased) err = fbKs.Init(nil, ksPath, false) - assert.EqualError(t, err, "keystore is already initialized") + require.EqualError(t, err, "keystore is already initialized") } func TestDirExists(t *testing.T) { r, err := dirExists("") - assert.False(t, r) - assert.NoError(t, err) + require.False(t, r) + require.NoError(t, err) r, err = dirExists(os.TempDir()) - assert.NoError(t, err) - assert.Equal(t, true, r) + require.NoError(t, err) + require.Equal(t, true, r) r, err = dirExists(filepath.Join(os.TempDir(), "7rhf90239vhev90")) - assert.NoError(t, err) - assert.Equal(t, false, r) + require.NoError(t, err) + require.Equal(t, false, r) } func TestDirEmpty(t *testing.T) { _, err := dirEmpty("") - assert.Error(t, err) + require.Error(t, err) path := filepath.Join(os.TempDir(), "7rhf90239vhev90") defer os.Remove(path) os.Mkdir(path, os.ModePerm) r, err := dirEmpty(path) - assert.NoError(t, err) - assert.Equal(t, true, r) + require.NoError(t, err) + require.Equal(t, true, r) r, err = dirEmpty(os.TempDir()) - assert.NoError(t, err) - assert.Equal(t, false, r) + require.NoError(t, err) + require.Equal(t, false, r) } diff --git a/bccsp/sw/hash_test.go b/bccsp/sw/hash_test.go index 270efb1868c..a3d8dd91bd9 100644 --- a/bccsp/sw/hash_test.go +++ b/bccsp/sw/hash_test.go @@ -24,7 +24,7 @@ import ( mocks2 "github.com/hyperledger/fabric/bccsp/mocks" "github.com/hyperledger/fabric/bccsp/sw/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestHash(t *testing.T) { @@ -44,8 +44,8 @@ func TestHash(t *testing.T) { } csp := CSP{Hashers: hashers} value, err := csp.Hash(expectetMsg, expectedOpts) - assert.Equal(t, expectetValue, value) - assert.Nil(t, err) + require.Equal(t, expectetValue, value) + require.Nil(t, err) hashers = make(map[reflect.Type]Hasher) hashers[reflect.TypeOf(&mocks2.HashOpts{})] = &mocks.Hasher{ @@ -56,8 +56,8 @@ func TestHash(t *testing.T) { } csp = CSP{Hashers: hashers} value, err = csp.Hash(expectetMsg, expectedOpts) - assert.Nil(t, value) - assert.Contains(t, err.Error(), expectedErr.Error()) + require.Nil(t, value) + require.Contains(t, err.Error(), expectedErr.Error()) } func TestGetHash(t *testing.T) { @@ -75,8 +75,8 @@ func TestGetHash(t *testing.T) { } csp := CSP{Hashers: hashers} value, err := csp.GetHash(expectedOpts) - assert.Equal(t, expectetValue, value) - assert.Nil(t, err) + require.Equal(t, expectetValue, value) + require.Nil(t, err) hashers = make(map[reflect.Type]Hasher) hashers[reflect.TypeOf(&mocks2.HashOpts{})] = &mocks.Hasher{ @@ -86,8 +86,8 @@ func TestGetHash(t *testing.T) { } csp = CSP{Hashers: hashers} value, err = csp.GetHash(expectedOpts) - assert.Nil(t, value) - assert.Contains(t, err.Error(), expectedErr.Error()) + require.Nil(t, value) + require.Contains(t, err.Error(), expectedErr.Error()) } func TestHasher(t *testing.T) { @@ -97,13 +97,13 @@ func TestHasher(t *testing.T) { msg := []byte("Hello World") out, err := hasher.Hash(msg, nil) - assert.NoError(t, err) + require.NoError(t, err) h := sha256.New() h.Write(msg) out2 := h.Sum(nil) - assert.Equal(t, out, out2) + require.Equal(t, out, out2) hf, err := hasher.GetHash(nil) - assert.NoError(t, err) - assert.Equal(t, hf, sha256.New()) + require.NoError(t, err) + require.Equal(t, hf, sha256.New()) } diff --git a/bccsp/sw/impl_test.go b/bccsp/sw/impl_test.go index d5afc63d07c..cef910c1591 100644 --- a/bccsp/sw/impl_test.go +++ b/bccsp/sw/impl_test.go @@ -30,7 +30,7 @@ import ( "github.com/hyperledger/fabric/bccsp/signer" "github.com/hyperledger/fabric/bccsp/sw/mocks" "github.com/hyperledger/fabric/bccsp/utils" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "golang.org/x/crypto/sha3" ) @@ -46,11 +46,11 @@ type testConfig struct { func (tc testConfig) Provider(t *testing.T) (bccsp.BCCSP, bccsp.KeyStore, func()) { td, err := ioutil.TempDir(tempDir, "test") - assert.NoError(t, err) + require.NoError(t, err) ks, err := NewFileBasedKeyStore(nil, td, false) - assert.NoError(t, err) + require.NoError(t, err) p, err := NewWithParams(tc.securityLevel, tc.hashFamily, ks) - assert.NoError(t, err) + require.NoError(t, err) return p, ks, func() { os.RemoveAll(td) } } @@ -1344,15 +1344,15 @@ func TestAddWrapper(t *testing.T) { defer cleanup() sw, ok := p.(*CSP) - assert.True(t, ok) + require.True(t, ok) tester := func(o interface{}, getter func(t reflect.Type) (interface{}, bool)) { tt := reflect.TypeOf(o) err := sw.AddWrapper(tt, o) - assert.NoError(t, err) + require.NoError(t, err) o2, ok := getter(tt) - assert.True(t, ok) - assert.Equal(t, o, o2) + require.True(t, ok) + require.Equal(t, o, o2) } tester(&mocks.KeyGenerator{}, func(t reflect.Type) (interface{}, bool) { o, ok := sw.KeyGenerators[t]; return o, ok }) @@ -1366,6 +1366,6 @@ func TestAddWrapper(t *testing.T) { // Add invalid wrapper err := sw.AddWrapper(reflect.TypeOf(cleanup), cleanup) - assert.Error(t, err) - assert.Equal(t, err.Error(), "wrapper type not valid, must be on of: KeyGenerator, KeyDeriver, KeyImporter, Encryptor, Decryptor, Signer, Verifier, Hasher") + require.Error(t, err) + require.Equal(t, err.Error(), "wrapper type not valid, must be on of: KeyGenerator, KeyDeriver, KeyImporter, Encryptor, Decryptor, Signer, Verifier, Hasher") } diff --git a/bccsp/sw/keyderiv_test.go b/bccsp/sw/keyderiv_test.go index 1971e0a4bd3..9d7edc05f93 100644 --- a/bccsp/sw/keyderiv_test.go +++ b/bccsp/sw/keyderiv_test.go @@ -23,7 +23,7 @@ import ( mocks2 "github.com/hyperledger/fabric/bccsp/mocks" "github.com/hyperledger/fabric/bccsp/sw/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestKeyDeriv(t *testing.T) { @@ -43,8 +43,8 @@ func TestKeyDeriv(t *testing.T) { } csp := CSP{KeyDerivers: keyDerivers} value, err := csp.KeyDeriv(expectedKey, expectedOpts) - assert.Nil(t, value) - assert.Contains(t, err.Error(), expectedErr.Error()) + require.Nil(t, value) + require.Contains(t, err.Error(), expectedErr.Error()) keyDerivers = make(map[reflect.Type]KeyDeriver) keyDerivers[reflect.TypeOf(&mocks2.MockKey{})] = &mocks.KeyDeriver{ @@ -55,8 +55,8 @@ func TestKeyDeriv(t *testing.T) { } csp = CSP{KeyDerivers: keyDerivers} value, err = csp.KeyDeriv(expectedKey, expectedOpts) - assert.Equal(t, expectetValue, value) - assert.Nil(t, err) + require.Equal(t, expectetValue, value) + require.Nil(t, err) } func TestECDSAPublicKeyKeyDeriver(t *testing.T) { @@ -65,12 +65,12 @@ func TestECDSAPublicKeyKeyDeriver(t *testing.T) { kd := ecdsaPublicKeyKeyDeriver{} _, err := kd.KeyDeriv(&mocks2.MockKey{}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid opts parameter. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid opts parameter. It must not be nil.") _, err = kd.KeyDeriv(&ecdsaPublicKey{}, &mocks2.KeyDerivOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'KeyDerivOpts' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'KeyDerivOpts' provided [") } func TestECDSAPrivateKeyKeyDeriver(t *testing.T) { @@ -79,12 +79,12 @@ func TestECDSAPrivateKeyKeyDeriver(t *testing.T) { kd := ecdsaPrivateKeyKeyDeriver{} _, err := kd.KeyDeriv(&mocks2.MockKey{}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid opts parameter. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid opts parameter. It must not be nil.") _, err = kd.KeyDeriv(&ecdsaPrivateKey{}, &mocks2.KeyDerivOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'KeyDerivOpts' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'KeyDerivOpts' provided [") } func TestAESPrivateKeyKeyDeriver(t *testing.T) { @@ -93,10 +93,10 @@ func TestAESPrivateKeyKeyDeriver(t *testing.T) { kd := aesPrivateKeyKeyDeriver{} _, err := kd.KeyDeriv(&mocks2.MockKey{}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid opts parameter. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid opts parameter. It must not be nil.") _, err = kd.KeyDeriv(&aesPrivateKey{}, &mocks2.KeyDerivOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'KeyDerivOpts' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'KeyDerivOpts' provided [") } diff --git a/bccsp/sw/keygen_test.go b/bccsp/sw/keygen_test.go index b3309a88f97..288eb4d8c6d 100644 --- a/bccsp/sw/keygen_test.go +++ b/bccsp/sw/keygen_test.go @@ -14,7 +14,7 @@ import ( mocks2 "github.com/hyperledger/fabric/bccsp/mocks" "github.com/hyperledger/fabric/bccsp/sw/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestKeyGen(t *testing.T) { @@ -32,8 +32,8 @@ func TestKeyGen(t *testing.T) { } csp := CSP{KeyGenerators: keyGenerators} value, err := csp.KeyGen(expectedOpts) - assert.Nil(t, value) - assert.Contains(t, err.Error(), expectedErr.Error()) + require.Nil(t, value) + require.Contains(t, err.Error(), expectedErr.Error()) keyGenerators = make(map[reflect.Type]KeyGenerator) keyGenerators[reflect.TypeOf(&mocks2.KeyGenOpts{})] = &mocks.KeyGenerator{ @@ -43,8 +43,8 @@ func TestKeyGen(t *testing.T) { } csp = CSP{KeyGenerators: keyGenerators} value, err = csp.KeyGen(expectedOpts) - assert.Equal(t, expectetValue, value) - assert.Nil(t, err) + require.Equal(t, expectetValue, value) + require.Nil(t, err) } func TestECDSAKeyGenerator(t *testing.T) { @@ -53,12 +53,12 @@ func TestECDSAKeyGenerator(t *testing.T) { kg := &ecdsaKeyGenerator{curve: elliptic.P256()} k, err := kg.KeyGen(nil) - assert.NoError(t, err) + require.NoError(t, err) ecdsaK, ok := k.(*ecdsaPrivateKey) - assert.True(t, ok) - assert.NotNil(t, ecdsaK.privKey) - assert.Equal(t, ecdsaK.privKey.Curve, elliptic.P256()) + require.True(t, ok) + require.NotNil(t, ecdsaK.privKey) + require.Equal(t, ecdsaK.privKey.Curve, elliptic.P256()) } func TestAESKeyGenerator(t *testing.T) { @@ -67,12 +67,12 @@ func TestAESKeyGenerator(t *testing.T) { kg := &aesKeyGenerator{length: 32} k, err := kg.KeyGen(nil) - assert.NoError(t, err) + require.NoError(t, err) aesK, ok := k.(*aesPrivateKey) - assert.True(t, ok) - assert.NotNil(t, aesK.privKey) - assert.Equal(t, len(aesK.privKey), 32) + require.True(t, ok) + require.NotNil(t, aesK.privKey) + require.Equal(t, len(aesK.privKey), 32) } func TestAESKeyGeneratorInvalidInputs(t *testing.T) { @@ -81,6 +81,6 @@ func TestAESKeyGeneratorInvalidInputs(t *testing.T) { kg := &aesKeyGenerator{length: -1} _, err := kg.KeyGen(nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Len must be larger than 0") + require.Error(t, err) + require.Contains(t, err.Error(), "Len must be larger than 0") } diff --git a/bccsp/sw/keyimport_test.go b/bccsp/sw/keyimport_test.go index e12e29d614a..fa6a930e16f 100644 --- a/bccsp/sw/keyimport_test.go +++ b/bccsp/sw/keyimport_test.go @@ -26,7 +26,7 @@ import ( mocks2 "github.com/hyperledger/fabric/bccsp/mocks" "github.com/hyperledger/fabric/bccsp/sw/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestKeyImport(t *testing.T) { @@ -46,8 +46,8 @@ func TestKeyImport(t *testing.T) { } csp := CSP{KeyImporters: keyImporters} value, err := csp.KeyImport(expectedRaw, expectedOpts) - assert.Nil(t, value) - assert.Contains(t, err.Error(), expectedErr.Error()) + require.Nil(t, value) + require.Contains(t, err.Error(), expectedErr.Error()) keyImporters = make(map[reflect.Type]KeyImporter) keyImporters[reflect.TypeOf(&mocks2.KeyDerivOpts{})] = &mocks.KeyImporter{ @@ -58,8 +58,8 @@ func TestKeyImport(t *testing.T) { } csp = CSP{KeyImporters: keyImporters} value, err = csp.KeyImport(expectedRaw, expectedOpts) - assert.Equal(t, expectetValue, value) - assert.Nil(t, err) + require.Equal(t, expectetValue, value) + require.Nil(t, err) } func TestAES256ImportKeyOptsKeyImporter(t *testing.T) { @@ -68,20 +68,20 @@ func TestAES256ImportKeyOptsKeyImporter(t *testing.T) { ki := aes256ImportKeyOptsKeyImporter{} _, err := ki.KeyImport("Hello World", &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") _, err = ki.KeyImport(nil, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") _, err = ki.KeyImport([]byte(nil), &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. It must not be nil.") _, err = ki.KeyImport([]byte{0}, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid Key Length [") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid Key Length [") } func TestHMACImportKeyOptsKeyImporter(t *testing.T) { @@ -90,16 +90,16 @@ func TestHMACImportKeyOptsKeyImporter(t *testing.T) { ki := hmacImportKeyOptsKeyImporter{} _, err := ki.KeyImport("Hello World", &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") _, err = ki.KeyImport(nil, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") _, err = ki.KeyImport([]byte(nil), &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. It must not be nil.") } func TestECDSAPKIXPublicKeyImportOptsKeyImporter(t *testing.T) { @@ -108,28 +108,28 @@ func TestECDSAPKIXPublicKeyImportOptsKeyImporter(t *testing.T) { ki := ecdsaPKIXPublicKeyImportOptsKeyImporter{} _, err := ki.KeyImport("Hello World", &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") _, err = ki.KeyImport(nil, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") _, err = ki.KeyImport([]byte(nil), &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw. It must not be nil.") _, err = ki.KeyImport([]byte{0}, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed converting PKIX to ECDSA public key [") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed converting PKIX to ECDSA public key [") k, err := rsa.GenerateKey(rand.Reader, 512) - assert.NoError(t, err) + require.NoError(t, err) raw, err := x509.MarshalPKIXPublicKey(&k.PublicKey) - assert.NoError(t, err) + require.NoError(t, err) _, err = ki.KeyImport(raw, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed casting to ECDSA public key. Invalid raw material.") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed casting to ECDSA public key. Invalid raw material.") } func TestECDSAPrivateKeyImportOptsKeyImporter(t *testing.T) { @@ -138,27 +138,27 @@ func TestECDSAPrivateKeyImportOptsKeyImporter(t *testing.T) { ki := ecdsaPrivateKeyImportOptsKeyImporter{} _, err := ki.KeyImport("Hello World", &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") _, err = ki.KeyImport(nil, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected byte array.") _, err = ki.KeyImport([]byte(nil), &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw. It must not be nil.") _, err = ki.KeyImport([]byte{0}, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed converting PKIX to ECDSA public key") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed converting PKIX to ECDSA public key") k, err := rsa.GenerateKey(rand.Reader, 512) - assert.NoError(t, err) + require.NoError(t, err) raw := x509.MarshalPKCS1PrivateKey(k) _, err = ki.KeyImport(raw, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed casting to ECDSA private key. Invalid raw material.") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed casting to ECDSA private key. Invalid raw material.") } func TestECDSAGoPublicKeyImportOptsKeyImporter(t *testing.T) { @@ -167,12 +167,12 @@ func TestECDSAGoPublicKeyImportOptsKeyImporter(t *testing.T) { ki := ecdsaGoPublicKeyImportOptsKeyImporter{} _, err := ki.KeyImport("Hello World", &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected *ecdsa.PublicKey.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected *ecdsa.PublicKey.") _, err = ki.KeyImport(nil, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected *ecdsa.PublicKey.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected *ecdsa.PublicKey.") } func TestX509PublicKeyImportOptsKeyImporter(t *testing.T) { @@ -181,16 +181,16 @@ func TestX509PublicKeyImportOptsKeyImporter(t *testing.T) { ki := x509PublicKeyImportOptsKeyImporter{} _, err := ki.KeyImport("Hello World", &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected *x509.Certificate.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected *x509.Certificate.") _, err = ki.KeyImport(nil, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw material. Expected *x509.Certificate.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw material. Expected *x509.Certificate.") cert := &x509.Certificate{} cert.PublicKey = "Hello world" _, err = ki.KeyImport(cert, &mocks2.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Certificate's public key type not recognized. Supported keys: [ECDSA]") + require.Error(t, err) + require.Contains(t, err.Error(), "Certificate's public key type not recognized. Supported keys: [ECDSA]") } diff --git a/bccsp/sw/keys_test.go b/bccsp/sw/keys_test.go index 62ba60a4a6f..f5311d34f65 100644 --- a/bccsp/sw/keys_test.go +++ b/bccsp/sw/keys_test.go @@ -15,7 +15,7 @@ import ( "encoding/pem" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestOidFromNamedCurve(t *testing.T) { @@ -81,8 +81,8 @@ func TestOidFromNamedCurve(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { oid, ok := oidFromNamedCurve(test.curve) - assert.Equal(t, oid, test.expected.oid) - assert.Equal(t, ok, test.expected.ok) + require.Equal(t, oid, test.expected.oid) + require.Equal(t, ok, test.expected.ok) }) } @@ -186,7 +186,7 @@ func TestECDSAKeys(t *testing.T) { t.Fatalf("Failed converting private key to encrypted PEM [%s]", err) } _, err = pemToPrivateKey(encPEM, nil) - assert.Error(t, err) + require.Error(t, err) encKeyFromPEM, err := pemToPrivateKey(encPEM, []byte("passwd")) if err != nil { t.Fatalf("Failed converting DER to private key [%s]", err) @@ -247,7 +247,7 @@ func TestECDSAKeys(t *testing.T) { t.Fatalf("Failed converting private key to encrypted PEM [%s]", err) } _, err = pemToPublicKey(encPEM, nil) - assert.Error(t, err) + require.Error(t, err) pkFromEncPEM, err := pemToPublicKey(encPEM, []byte("passwd")) if err != nil { t.Fatalf("Failed converting DER to private key [%s]", err) @@ -288,9 +288,9 @@ func TestECDSAKeys(t *testing.T) { // Public Key DER format der, err = x509.MarshalPKIXPublicKey(&key.PublicKey) - assert.NoError(t, err) + require.NoError(t, err) keyFromDER, err = derToPublicKey(der) - assert.NoError(t, err) + require.NoError(t, err) ecdsaPkFromPEM = keyFromDER.(*ecdsa.PublicKey) // TODO: check the curve if key.X.Cmp(ecdsaPkFromPEM.X) != 0 { @@ -306,66 +306,66 @@ func TestAESKey(t *testing.T) { pem := aesToPEM(k) k2, err := pemToAES(pem, nil) - assert.NoError(t, err) - assert.Equal(t, k, k2) + require.NoError(t, err) + require.Equal(t, k, k2) pem, err = aesToEncryptedPEM(k, k) - assert.NoError(t, err) + require.NoError(t, err) k2, err = pemToAES(pem, k) - assert.NoError(t, err) - assert.Equal(t, k, k2) + require.NoError(t, err) + require.Equal(t, k, k2) _, err = pemToAES(pem, nil) - assert.Error(t, err) + require.Error(t, err) _, err = aesToEncryptedPEM(k, nil) - assert.NoError(t, err) + require.NoError(t, err) k2, err = pemToAES(pem, k) - assert.NoError(t, err) - assert.Equal(t, k, k2) + require.NoError(t, err) + require.Equal(t, k, k2) } func TestDERToPublicKey(t *testing.T) { _, err := derToPublicKey(nil) - assert.Error(t, err) + require.Error(t, err) } func TestNil(t *testing.T) { _, err := privateKeyToEncryptedPEM(nil, nil) - assert.Error(t, err) + require.Error(t, err) _, err = privateKeyToEncryptedPEM((*ecdsa.PrivateKey)(nil), nil) - assert.Error(t, err) + require.Error(t, err) _, err = privateKeyToEncryptedPEM("Hello World", nil) - assert.Error(t, err) + require.Error(t, err) _, err = pemToAES(nil, nil) - assert.Error(t, err) + require.Error(t, err) _, err = aesToEncryptedPEM(nil, nil) - assert.Error(t, err) + require.Error(t, err) _, err = publicKeyToPEM(nil, nil) - assert.Error(t, err) + require.Error(t, err) _, err = publicKeyToPEM((*ecdsa.PublicKey)(nil), nil) - assert.Error(t, err) + require.Error(t, err) _, err = publicKeyToPEM(nil, []byte("hello world")) - assert.Error(t, err) + require.Error(t, err) _, err = publicKeyToPEM("hello world", nil) - assert.Error(t, err) + require.Error(t, err) _, err = publicKeyToPEM("hello world", []byte("hello world")) - assert.Error(t, err) + require.Error(t, err) _, err = publicKeyToEncryptedPEM(nil, nil) - assert.Error(t, err) + require.Error(t, err) _, err = publicKeyToEncryptedPEM((*ecdsa.PublicKey)(nil), nil) - assert.Error(t, err) + require.Error(t, err) _, err = publicKeyToEncryptedPEM("hello world", nil) - assert.Error(t, err) + require.Error(t, err) _, err = publicKeyToEncryptedPEM("hello world", []byte("Hello world")) - assert.Error(t, err) + require.Error(t, err) } diff --git a/bccsp/sw/sign_test.go b/bccsp/sw/sign_test.go index f98bf44d909..194412c63e6 100644 --- a/bccsp/sw/sign_test.go +++ b/bccsp/sw/sign_test.go @@ -23,7 +23,7 @@ import ( mocks2 "github.com/hyperledger/fabric/bccsp/mocks" "github.com/hyperledger/fabric/bccsp/sw/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSign(t *testing.T) { @@ -45,8 +45,8 @@ func TestSign(t *testing.T) { } csp := CSP{Signers: signers} value, err := csp.Sign(expectedKey, expectetDigest, expectedOpts) - assert.Equal(t, expectetValue, value) - assert.Nil(t, err) + require.Equal(t, expectetValue, value) + require.Nil(t, err) signers = make(map[reflect.Type]Signer) signers[reflect.TypeOf(&mocks2.MockKey{})] = &mocks.Signer{ @@ -58,6 +58,6 @@ func TestSign(t *testing.T) { } csp = CSP{Signers: signers} value, err = csp.Sign(expectedKey, expectetDigest, expectedOpts) - assert.Nil(t, value) - assert.Contains(t, err.Error(), expectedErr.Error()) + require.Nil(t, value) + require.Contains(t, err.Error(), expectedErr.Error()) } diff --git a/bccsp/sw/sw_test.go b/bccsp/sw/sw_test.go index 754afc33d87..d119b2f3c10 100644 --- a/bccsp/sw/sw_test.go +++ b/bccsp/sw/sw_test.go @@ -24,42 +24,42 @@ import ( "github.com/hyperledger/fabric/bccsp" "github.com/hyperledger/fabric/bccsp/mocks" mocks2 "github.com/hyperledger/fabric/bccsp/sw/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestKeyGenInvalidInputs(t *testing.T) { // Init a BCCSP instance with a key store that returns an error on store csp, err := NewWithParams(256, "SHA2", &mocks.KeyStore{StoreKeyErr: errors.New("cannot store key")}) - assert.NoError(t, err) + require.NoError(t, err) _, err = csp.KeyGen(nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid Opts parameter. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid Opts parameter. It must not be nil.") _, err = csp.KeyGen(&mocks.KeyGenOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'KeyGenOpts' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'KeyGenOpts' provided [") _, err = csp.KeyGen(&bccsp.ECDSAP256KeyGenOpts{}) - assert.Error(t, err, "Generation of a non-ephemeral key must fail. KeyStore is programmed to fail.") - assert.Contains(t, err.Error(), "cannot store key") + require.Error(t, err, "Generation of a non-ephemeral key must fail. KeyStore is programmed to fail.") + require.Contains(t, err.Error(), "cannot store key") } func TestKeyDerivInvalidInputs(t *testing.T) { csp, err := NewWithParams(256, "SHA2", &mocks.KeyStore{StoreKeyErr: errors.New("cannot store key")}) - assert.NoError(t, err) + require.NoError(t, err) _, err = csp.KeyDeriv(nil, &bccsp.ECDSAReRandKeyOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid Key. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid Key. It must not be nil.") _, err = csp.KeyDeriv(&mocks.MockKey{}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid opts. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid opts. It must not be nil.") _, err = csp.KeyDeriv(&mocks.MockKey{}, &bccsp.ECDSAReRandKeyOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'Key' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'Key' provided [") keyDerivers := make(map[reflect.Type]KeyDeriver) keyDerivers[reflect.TypeOf(&mocks.MockKey{})] = &mocks2.KeyDeriver{ @@ -70,132 +70,132 @@ func TestKeyDerivInvalidInputs(t *testing.T) { } csp.(*CSP).KeyDerivers = keyDerivers _, err = csp.KeyDeriv(&mocks.MockKey{}, &mocks.KeyDerivOpts{EphemeralValue: false}) - assert.Error(t, err, "KeyDerivation of a non-ephemeral key must fail. KeyStore is programmed to fail.") - assert.Contains(t, err.Error(), "cannot store key") + require.Error(t, err, "KeyDerivation of a non-ephemeral key must fail. KeyStore is programmed to fail.") + require.Contains(t, err.Error(), "cannot store key") } func TestKeyImportInvalidInputs(t *testing.T) { csp, err := NewWithParams(256, "SHA2", &mocks.KeyStore{}) - assert.NoError(t, err) + require.NoError(t, err) _, err = csp.KeyImport(nil, &bccsp.AES256ImportKeyOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid raw. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid raw. It must not be nil.") _, err = csp.KeyImport([]byte{0, 1, 2, 3, 4}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid opts. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid opts. It must not be nil.") _, err = csp.KeyImport([]byte{0, 1, 2, 3, 4}, &mocks.KeyImportOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'KeyImportOpts' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'KeyImportOpts' provided [") } func TestGetKeyInvalidInputs(t *testing.T) { // Init a BCCSP instance with a key store that returns an error on get csp, err := NewWithParams(256, "SHA2", &mocks.KeyStore{GetKeyErr: errors.New("cannot get key")}) - assert.NoError(t, err) + require.NoError(t, err) _, err = csp.GetKey(nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "cannot get key") + require.Error(t, err) + require.Contains(t, err.Error(), "cannot get key") // Init a BCCSP instance with a key store that returns a given key k := &mocks.MockKey{} csp, err = NewWithParams(256, "SHA2", &mocks.KeyStore{GetKeyValue: k}) - assert.NoError(t, err) + require.NoError(t, err) // No SKI is needed here k2, err := csp.GetKey(nil) - assert.NoError(t, err) - assert.Equal(t, k, k2, "Keys must be the same.") + require.NoError(t, err) + require.Equal(t, k, k2, "Keys must be the same.") } func TestSignInvalidInputs(t *testing.T) { csp, err := NewWithParams(256, "SHA2", &mocks.KeyStore{}) - assert.NoError(t, err) + require.NoError(t, err) _, err = csp.Sign(nil, []byte{1, 2, 3, 5}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid Key. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid Key. It must not be nil.") _, err = csp.Sign(&mocks.MockKey{}, nil, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid digest. Cannot be empty.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid digest. Cannot be empty.") _, err = csp.Sign(&mocks.MockKey{}, []byte{1, 2, 3, 5}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'SignKey' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'SignKey' provided [") } func TestVerifyInvalidInputs(t *testing.T) { csp, err := NewWithParams(256, "SHA2", &mocks.KeyStore{}) - assert.NoError(t, err) + require.NoError(t, err) _, err = csp.Verify(nil, []byte{1, 2, 3, 5}, []byte{1, 2, 3, 5}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid Key. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid Key. It must not be nil.") _, err = csp.Verify(&mocks.MockKey{}, nil, []byte{1, 2, 3, 5}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid signature. Cannot be empty.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid signature. Cannot be empty.") _, err = csp.Verify(&mocks.MockKey{}, []byte{1, 2, 3, 5}, nil, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid digest. Cannot be empty.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid digest. Cannot be empty.") _, err = csp.Verify(&mocks.MockKey{}, []byte{1, 2, 3, 5}, []byte{1, 2, 3, 5}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'VerifyKey' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'VerifyKey' provided [") } func TestEncryptInvalidInputs(t *testing.T) { csp, err := NewWithParams(256, "SHA2", &mocks.KeyStore{}) - assert.NoError(t, err) + require.NoError(t, err) _, err = csp.Encrypt(nil, []byte{1, 2, 3, 4}, &bccsp.AESCBCPKCS7ModeOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid Key. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid Key. It must not be nil.") _, err = csp.Encrypt(&mocks.MockKey{}, []byte{1, 2, 3, 4}, &bccsp.AESCBCPKCS7ModeOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'EncryptKey' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'EncryptKey' provided [") } func TestDecryptInvalidInputs(t *testing.T) { csp, err := NewWithParams(256, "SHA2", &mocks.KeyStore{}) - assert.NoError(t, err) + require.NoError(t, err) _, err = csp.Decrypt(nil, []byte{1, 2, 3, 4}, &bccsp.AESCBCPKCS7ModeOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid Key. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid Key. It must not be nil.") _, err = csp.Decrypt(&mocks.MockKey{}, []byte{1, 2, 3, 4}, &bccsp.AESCBCPKCS7ModeOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'DecryptKey' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'DecryptKey' provided [") } func TestHashInvalidInputs(t *testing.T) { csp, err := NewWithParams(256, "SHA2", &mocks.KeyStore{}) - assert.NoError(t, err) + require.NoError(t, err) _, err = csp.Hash(nil, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid opts. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid opts. It must not be nil.") _, err = csp.Hash(nil, &mocks.HashOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'HashOpt' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'HashOpt' provided [") } func TestGetHashInvalidInputs(t *testing.T) { csp, err := NewWithParams(256, "SHA2", &mocks.KeyStore{}) - assert.NoError(t, err) + require.NoError(t, err) _, err = csp.GetHash(nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid opts. It must not be nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid opts. It must not be nil.") _, err = csp.GetHash(&mocks.HashOpts{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Unsupported 'HashOpt' provided [") + require.Error(t, err) + require.Contains(t, err.Error(), "Unsupported 'HashOpt' provided [") } diff --git a/bccsp/sw/verify_test.go b/bccsp/sw/verify_test.go index 2aec126d10f..1da7cc6e489 100644 --- a/bccsp/sw/verify_test.go +++ b/bccsp/sw/verify_test.go @@ -23,7 +23,7 @@ import ( mocks2 "github.com/hyperledger/fabric/bccsp/mocks" "github.com/hyperledger/fabric/bccsp/sw/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestVerify(t *testing.T) { @@ -47,8 +47,8 @@ func TestVerify(t *testing.T) { } csp := CSP{Verifiers: verifiers} value, err := csp.Verify(expectedKey, expectetSignature, expectetDigest, expectedOpts) - assert.Equal(t, expectetValue, value) - assert.Nil(t, err) + require.Equal(t, expectetValue, value) + require.Nil(t, err) verifiers = make(map[reflect.Type]Verifier) verifiers[reflect.TypeOf(&mocks2.MockKey{})] = &mocks.Verifier{ @@ -61,6 +61,6 @@ func TestVerify(t *testing.T) { } csp = CSP{Verifiers: verifiers} value, err = csp.Verify(expectedKey, expectetSignature, expectetDigest, expectedOpts) - assert.False(t, value) - assert.Contains(t, err.Error(), expectedErr.Error()) + require.False(t, value) + require.Contains(t, err.Error(), expectedErr.Error()) } diff --git a/bccsp/utils/ecdsa_test.go b/bccsp/utils/ecdsa_test.go index 7f3b03484dd..3f01144e3ac 100644 --- a/bccsp/utils/ecdsa_test.go +++ b/bccsp/utils/ecdsa_test.go @@ -13,98 +13,98 @@ import ( "math/big" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestUnmarshalECDSASignature(t *testing.T) { _, _, err := UnmarshalECDSASignature(nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed unmashalling signature [") + require.Error(t, err) + require.Contains(t, err.Error(), "failed unmashalling signature [") _, _, err = UnmarshalECDSASignature([]byte{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed unmashalling signature [") + require.Error(t, err) + require.Contains(t, err.Error(), "failed unmashalling signature [") _, _, err = UnmarshalECDSASignature([]byte{0}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed unmashalling signature [") + require.Error(t, err) + require.Contains(t, err.Error(), "failed unmashalling signature [") sigma, err := MarshalECDSASignature(big.NewInt(-1), big.NewInt(1)) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = UnmarshalECDSASignature(sigma) - assert.Error(t, err) - assert.Contains(t, err.Error(), "invalid signature, R must be larger than zero") + require.Error(t, err) + require.Contains(t, err.Error(), "invalid signature, R must be larger than zero") sigma, err = MarshalECDSASignature(big.NewInt(0), big.NewInt(1)) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = UnmarshalECDSASignature(sigma) - assert.Error(t, err) - assert.Contains(t, err.Error(), "invalid signature, R must be larger than zero") + require.Error(t, err) + require.Contains(t, err.Error(), "invalid signature, R must be larger than zero") sigma, err = MarshalECDSASignature(big.NewInt(1), big.NewInt(0)) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = UnmarshalECDSASignature(sigma) - assert.Error(t, err) - assert.Contains(t, err.Error(), "invalid signature, S must be larger than zero") + require.Error(t, err) + require.Contains(t, err.Error(), "invalid signature, S must be larger than zero") sigma, err = MarshalECDSASignature(big.NewInt(1), big.NewInt(-1)) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = UnmarshalECDSASignature(sigma) - assert.Error(t, err) - assert.Contains(t, err.Error(), "invalid signature, S must be larger than zero") + require.Error(t, err) + require.Contains(t, err.Error(), "invalid signature, S must be larger than zero") sigma, err = MarshalECDSASignature(big.NewInt(1), big.NewInt(1)) - assert.NoError(t, err) + require.NoError(t, err) R, S, err := UnmarshalECDSASignature(sigma) - assert.NoError(t, err) - assert.Equal(t, big.NewInt(1), R) - assert.Equal(t, big.NewInt(1), S) + require.NoError(t, err) + require.Equal(t, big.NewInt(1), R) + require.Equal(t, big.NewInt(1), S) } func TestIsLowS(t *testing.T) { lowLevelKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) lowS, err := IsLowS(&lowLevelKey.PublicKey, big.NewInt(0)) - assert.NoError(t, err) - assert.True(t, lowS) + require.NoError(t, err) + require.True(t, lowS) s := new(big.Int) s = s.Set(GetCurveHalfOrdersAt(elliptic.P256())) lowS, err = IsLowS(&lowLevelKey.PublicKey, s) - assert.NoError(t, err) - assert.True(t, lowS) + require.NoError(t, err) + require.True(t, lowS) s = s.Add(s, big.NewInt(1)) lowS, err = IsLowS(&lowLevelKey.PublicKey, s) - assert.NoError(t, err) - assert.False(t, lowS) + require.NoError(t, err) + require.False(t, lowS) s, err = ToLowS(&lowLevelKey.PublicKey, s) - assert.NoError(t, err) + require.NoError(t, err) lowS, err = IsLowS(&lowLevelKey.PublicKey, s) - assert.NoError(t, err) - assert.True(t, lowS) + require.NoError(t, err) + require.True(t, lowS) } func TestSignatureToLowS(t *testing.T) { lowLevelKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) s := new(big.Int) s = s.Set(GetCurveHalfOrdersAt(elliptic.P256())) s = s.Add(s, big.NewInt(1)) lowS, err := IsLowS(&lowLevelKey.PublicKey, s) - assert.NoError(t, err) - assert.False(t, lowS) + require.NoError(t, err) + require.False(t, lowS) sigma, err := MarshalECDSASignature(big.NewInt(1), s) - assert.NoError(t, err) + require.NoError(t, err) sigma2, err := SignatureToLowS(&lowLevelKey.PublicKey, sigma) - assert.NoError(t, err) + require.NoError(t, err) _, s, err = UnmarshalECDSASignature(sigma2) - assert.NoError(t, err) + require.NoError(t, err) lowS, err = IsLowS(&lowLevelKey.PublicKey, s) - assert.NoError(t, err) - assert.True(t, lowS) + require.NoError(t, err) + require.True(t, lowS) } diff --git a/cmd/common/cli_test.go b/cmd/common/cli_test.go index ba10ad5de75..6b290ceee64 100644 --- a/cmd/common/cli_test.go +++ b/cmd/common/cli_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/cmd/common/signer" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCLI(t *testing.T) { @@ -39,7 +39,7 @@ func TestCLI(t *testing.T) { } // Else, the command was executed - so ensure it was executed // with the expected config - assert.Equal(t, Config{ + require.Equal(t, Config{ SignerConfig: signer.Config{ MSPID: "SampleOrg", KeyPath: "key.pem", @@ -56,9 +56,9 @@ func TestCLI(t *testing.T) { // Overwrite user home directory with testdata dir := filepath.Join("testdata", "non_existent_config") cli.Run([]string{"test", "--configFile", filepath.Join(dir, "config.yaml")}) - assert.Contains(t, testBuff.String(), fmt.Sprint("Failed loading config open ", dir)) - assert.Contains(t, testBuff.String(), "config.yaml: no such file or directory") - assert.True(t, exited) + require.Contains(t, testBuff.String(), fmt.Sprint("Failed loading config open ", dir)) + require.Contains(t, testBuff.String(), "config.yaml: no such file or directory") + require.True(t, exited) }) t.Run("Loading a valid config and the command succeeds", func(t *testing.T) { @@ -69,8 +69,8 @@ func TestCLI(t *testing.T) { dir := filepath.Join("testdata", "valid_config") // Ensure that a valid config results in running our command cli.Run([]string{"test", "--configFile", filepath.Join(dir, "config.yaml")}) - assert.True(t, testCmdInvoked) - assert.False(t, exited) + require.True(t, testCmdInvoked) + require.False(t, exited) }) t.Run("Loading a valid config but the command fails", func(t *testing.T) { @@ -85,9 +85,9 @@ func TestCLI(t *testing.T) { dir := filepath.Join("testdata", "valid_config") // Ensure that a valid config results in running our command cli.Run([]string{"test", "--configFile", filepath.Join(dir, "config.yaml")}) - assert.True(t, testCmdInvoked) - assert.True(t, exited) - assert.Contains(t, testBuff.String(), "something went wrong") + require.True(t, testCmdInvoked) + require.True(t, exited) + require.Contains(t, testBuff.String(), "something went wrong") }) t.Run("Saving a config", func(t *testing.T) { @@ -106,14 +106,14 @@ func TestCLI(t *testing.T) { os.Create(userKey) cli.Run([]string{saveConfigCommand, "--MSP=SampleOrg", userCertFlag, userKeyFlag}) - assert.Contains(t, testBuff.String(), "--configFile must be used to specify the configuration file") + require.Contains(t, testBuff.String(), "--configFile must be used to specify the configuration file") testBuff.Reset() // Persist the config cli.Run([]string{saveConfigCommand, "--MSP=SampleOrg", userCertFlag, userKeyFlag, "--configFile", filepath.Join(dir, "config.yaml")}) // Run a different command and ensure the config was successfully persisted cli.Command("assert", "", func(conf Config) error { - assert.Equal(t, Config{ + require.Equal(t, Config{ SignerConfig: signer.Config{ MSPID: "SampleOrg", KeyPath: userKey, diff --git a/cmd/common/comm/client_test.go b/cmd/common/comm/client_test.go index 00a2eb025e7..33880dab46a 100644 --- a/cmd/common/comm/client_test.go +++ b/cmd/common/comm/client_test.go @@ -16,7 +16,6 @@ import ( "time" "github.com/hyperledger/fabric/internal/pkg/comm" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -28,14 +27,14 @@ func TestTLSClient(t *testing.T) { Certificate: loadFileOrDie(filepath.Join("testdata", "server", "cert.pem")), }, }) - assert.NoError(t, err) + require.NoError(t, err) go srv.Start() defer srv.Stop() conf := Config{ PeerCACertPath: filepath.Join("testdata", "server", "ca.pem"), } cl, err := NewClient(conf) - assert.NoError(t, err) + require.NoError(t, err) _, port, _ := net.SplitHostPort(srv.Address()) dial := cl.NewDialer(net.JoinHostPort("localhost", port)) conn, err := dial() @@ -49,22 +48,22 @@ func TestDialBadEndpoint(t *testing.T) { Timeout: 100 * time.Millisecond, } cl, err := NewClient(conf) - assert.NoError(t, err) + require.NoError(t, err) dial := cl.NewDialer("non_existent_host.xyz.blabla:9999") _, err = dial() - assert.Error(t, err) + require.Error(t, err) } func TestNonTLSClient(t *testing.T) { srv, err := comm.NewGRPCServer("127.0.0.1:", comm.ServerConfig{ SecOpts: comm.SecureOptions{}, }) - assert.NoError(t, err) + require.NoError(t, err) go srv.Start() defer srv.Stop() conf := Config{} cl, err := NewClient(conf) - assert.NoError(t, err) + require.NoError(t, err) _, port, _ := net.SplitHostPort(srv.Address()) dial := cl.NewDialer(net.JoinHostPort("127.0.0.1", port)) conn, err := dial() @@ -77,8 +76,8 @@ func TestClientBadConfig(t *testing.T) { PeerCACertPath: filepath.Join("testdata", "server", "non_existent_file"), } cl, err := NewClient(conf) - assert.Nil(t, cl) - assert.Contains(t, err.Error(), "open testdata/server/non_existent_file: no such file or directory") + require.Nil(t, cl) + require.Contains(t, err.Error(), "open testdata/server/non_existent_file: no such file or directory") conf = Config{ PeerCACertPath: filepath.Join("testdata", "server", "ca.pem"), @@ -86,8 +85,8 @@ func TestClientBadConfig(t *testing.T) { CertPath: "non_existent_file", } cl, err = NewClient(conf) - assert.Nil(t, cl) - assert.Contains(t, err.Error(), "open non_existent_file: no such file or directory") + require.Nil(t, cl) + require.Contains(t, err.Error(), "open non_existent_file: no such file or directory") conf = Config{ PeerCACertPath: filepath.Join("testdata", "server", "ca.pem"), @@ -95,8 +94,8 @@ func TestClientBadConfig(t *testing.T) { CertPath: "non_existent_file", } cl, err = NewClient(conf) - assert.Nil(t, cl) - assert.Contains(t, err.Error(), "open non_existent_file: no such file or directory") + require.Nil(t, cl) + require.Contains(t, err.Error(), "open non_existent_file: no such file or directory") } func loadFileOrDie(path string) []byte { diff --git a/cmd/common/config_test.go b/cmd/common/config_test.go index 60cead5d122..6044e5566cf 100644 --- a/cmd/common/config_test.go +++ b/cmd/common/config_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/cmd/common/comm" "github.com/hyperledger/fabric/cmd/common/signer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestConfig(t *testing.T) { @@ -40,26 +40,26 @@ func TestConfig(t *testing.T) { err := c.ToFile(configFilePath) defer os.RemoveAll(configFilePath) - assert.NoError(t, err) + require.NoError(t, err) c2, err := ConfigFromFile(configFilePath) - assert.NoError(t, err) - assert.Equal(t, c, c2) + require.NoError(t, err) + require.Equal(t, c, c2) }) t.Run("bad config isn't saved", func(t *testing.T) { c := Config{} err := c.ToFile(configFilePath) - assert.Contains(t, err.Error(), "config isn't valid") + require.Contains(t, err.Error(), "config isn't valid") }) t.Run("bad config isn't loaded", func(t *testing.T) { _, err := ConfigFromFile(filepath.Join("testdata", "not_a_yaml.yaml")) - assert.Contains(t, err.Error(), "error unmarshaling YAML file") + require.Contains(t, err.Error(), "error unmarshaling YAML file") }) t.Run("file that doesn't exist isn't loaded", func(t *testing.T) { _, err := ConfigFromFile(filepath.Join("testdata", "not_a_file.yaml")) - assert.Contains(t, err.Error(), "no such file or directory") + require.Contains(t, err.Error(), "no such file or directory") }) } diff --git a/cmd/common/signer/signer_test.go b/cmd/common/signer/signer_test.go index 9022314a0ab..082b2d3ba1c 100644 --- a/cmd/common/signer/signer_test.go +++ b/cmd/common/signer/signer_test.go @@ -17,7 +17,7 @@ import ( "github.com/hyperledger/fabric/bccsp/utils" "github.com/hyperledger/fabric/common/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSigner(t *testing.T) { @@ -28,14 +28,14 @@ func TestSigner(t *testing.T) { } signer, err := NewSigner(conf) - assert.NoError(t, err) + require.NoError(t, err) msg := []byte("foo") sig, err := signer.Sign(msg) - assert.NoError(t, err) + require.NoError(t, err) r, s, err := utils.UnmarshalECDSASignature(sig) - assert.NoError(t, err) + require.NoError(t, err) ecdsa.Verify(&signer.key.PublicKey, util.ComputeSHA256(msg), r, s) } @@ -47,16 +47,16 @@ ZsQXrlIqlmNalfYPX+NDDELqlpXQBeEqnA== -----END EC PRIVATE KEY-----` pemBlock, _ := pem.Decode([]byte(key)) - assert.NotNil(t, pemBlock) + require.NotNil(t, pemBlock) ecPK, err := x509.ParseECPrivateKey(pemBlock.Bytes) - assert.NoError(t, err) + require.NoError(t, err) ec1, err := x509.MarshalECPrivateKey(ecPK) - assert.NoError(t, err) + require.NoError(t, err) pkcs8, err := x509.MarshalPKCS8PrivateKey(ecPK) - assert.NoError(t, err) + require.NoError(t, err) for _, testCase := range []struct { description string @@ -73,12 +73,12 @@ ZsQXrlIqlmNalfYPX+NDDELqlpXQBeEqnA== } { t.Run(testCase.description, func(t *testing.T) { tmpFile, err := ioutil.TempFile("", "key") - assert.NoError(t, err) + require.NoError(t, err) defer os.Remove(tmpFile.Name()) err = ioutil.WriteFile(tmpFile.Name(), []byte(testCase.keyBytes), 0600) - assert.NoError(t, err) + require.NoError(t, err) signer, err := NewSigner(Config{ MSPID: "MSPID", @@ -86,8 +86,8 @@ ZsQXrlIqlmNalfYPX+NDDELqlpXQBeEqnA== KeyPath: tmpFile.Name(), }) - assert.NoError(t, err) - assert.NotNil(t, signer) + require.NoError(t, err) + require.NotNil(t, signer) }) } } @@ -99,8 +99,8 @@ func TestSignerBadConfig(t *testing.T) { } signer, err := NewSigner(conf) - assert.EqualError(t, err, "open testdata/signer/non_existent_cert: no such file or directory") - assert.Nil(t, signer) + require.EqualError(t, err, "open testdata/signer/non_existent_cert: no such file or directory") + require.Nil(t, signer) conf = Config{ MSPID: "SampleOrg", @@ -109,8 +109,8 @@ func TestSignerBadConfig(t *testing.T) { } signer, err = NewSigner(conf) - assert.EqualError(t, err, "open testdata/signer/non_existent_cert: no such file or directory") - assert.Nil(t, signer) + require.EqualError(t, err, "open testdata/signer/non_existent_cert: no such file or directory") + require.Nil(t, signer) conf = Config{ MSPID: "SampleOrg", @@ -119,8 +119,8 @@ func TestSignerBadConfig(t *testing.T) { } signer, err = NewSigner(conf) - assert.EqualError(t, err, "failed to decode PEM block from testdata/signer/broken_private_key") - assert.Nil(t, signer) + require.EqualError(t, err, "failed to decode PEM block from testdata/signer/broken_private_key") + require.Nil(t, signer) conf = Config{ MSPID: "SampleOrg", @@ -129,6 +129,6 @@ func TestSignerBadConfig(t *testing.T) { } signer, err = NewSigner(conf) - assert.EqualError(t, err, "failed to parse private key: x509: failed to parse EC private key: asn1: syntax error: sequence truncated") - assert.Nil(t, signer) + require.EqualError(t, err, "failed to parse private key: x509: failed to parse EC private key: asn1: syntax error: sequence truncated") + require.Nil(t, signer) } diff --git a/cmd/configtxgen/main_test.go b/cmd/configtxgen/main_test.go index 2549c529f1a..f842db8b364 100644 --- a/cmd/configtxgen/main_test.go +++ b/cmd/configtxgen/main_test.go @@ -17,7 +17,7 @@ import ( "github.com/hyperledger/fabric/bccsp/factory" "github.com/hyperledger/fabric/core/config/configtest" "github.com/hyperledger/fabric/internal/configtxgen/genesisconfig" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var tmpDir string @@ -35,7 +35,7 @@ func TestMain(m *testing.M) { } func TestInspectMissing(t *testing.T) { - assert.EqualError(t, doInspectBlock("NonSenseBlockFileThatDoesn'tActuallyExist"), "could not read block NonSenseBlockFileThatDoesn'tActuallyExist") + require.EqualError(t, doInspectBlock("NonSenseBlockFileThatDoesn'tActuallyExist"), "could not read block NonSenseBlockFileThatDoesn'tActuallyExist") } func TestInspectBlock(t *testing.T) { @@ -43,15 +43,15 @@ func TestInspectBlock(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleInsecureSoloProfile, configtest.GetDevConfigDir()) - assert.NoError(t, doOutputBlock(config, "foo", blockDest), "Good block generation request") - assert.NoError(t, doInspectBlock(blockDest), "Good block inspection request") + require.NoError(t, doOutputBlock(config, "foo", blockDest), "Good block generation request") + require.NoError(t, doInspectBlock(blockDest), "Good block inspection request") } func TestInspectBlockErr(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleInsecureSoloProfile, configtest.GetDevConfigDir()) - assert.EqualError(t, doOutputBlock(config, "foo", ""), "error writing genesis block: open : no such file or directory") - assert.EqualError(t, doInspectBlock(""), "could not read block ") + require.EqualError(t, doOutputBlock(config, "foo", ""), "error writing genesis block: open : no such file or directory") + require.EqualError(t, doInspectBlock(""), "could not read block ") } func TestMissingOrdererSection(t *testing.T) { @@ -60,7 +60,7 @@ func TestMissingOrdererSection(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleInsecureSoloProfile, configtest.GetDevConfigDir()) config.Orderer = nil - assert.EqualError(t, doOutputBlock(config, "foo", blockDest), "refusing to generate block which is missing orderer section") + require.EqualError(t, doOutputBlock(config, "foo", blockDest), "refusing to generate block which is missing orderer section") } func TestMissingConsortiumSection(t *testing.T) { @@ -69,7 +69,7 @@ func TestMissingConsortiumSection(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleInsecureSoloProfile, configtest.GetDevConfigDir()) config.Consortiums = nil - assert.NoError(t, doOutputBlock(config, "foo", blockDest), "Missing consortiums section") + require.NoError(t, doOutputBlock(config, "foo", blockDest), "Missing consortiums section") } func TestMissingConsortiumValue(t *testing.T) { @@ -78,17 +78,17 @@ func TestMissingConsortiumValue(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir()) config.Consortium = "" - assert.EqualError(t, doOutputChannelCreateTx(config, nil, "foo", configTxDest), "config update generation failure: cannot define a new channel with no Consortium value") + require.EqualError(t, doOutputChannelCreateTx(config, nil, "foo", configTxDest), "config update generation failure: cannot define a new channel with no Consortium value") } func TestUnsuccessfulChannelTxFileCreation(t *testing.T) { configTxDest := filepath.Join(tmpDir, "configtx") config := genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir()) - assert.NoError(t, ioutil.WriteFile(configTxDest, []byte{}, 0440)) + require.NoError(t, ioutil.WriteFile(configTxDest, []byte{}, 0440)) defer os.Remove(configTxDest) - assert.EqualError(t, doOutputChannelCreateTx(config, nil, "foo", configTxDest), fmt.Sprintf("error writing channel create tx: open %s: permission denied", configTxDest)) + require.EqualError(t, doOutputChannelCreateTx(config, nil, "foo", configTxDest), fmt.Sprintf("error writing channel create tx: open %s: permission denied", configTxDest)) } func TestMissingApplicationValue(t *testing.T) { @@ -97,11 +97,11 @@ func TestMissingApplicationValue(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir()) config.Application = nil - assert.EqualError(t, doOutputChannelCreateTx(config, nil, "foo", configTxDest), "could not generate default config template: channel template configs must contain an application section") + require.EqualError(t, doOutputChannelCreateTx(config, nil, "foo", configTxDest), "could not generate default config template: channel template configs must contain an application section") } func TestInspectMissingConfigTx(t *testing.T) { - assert.EqualError(t, doInspectChannelCreateTx("ChannelCreateTxFileWhichDoesn'tReallyExist"), "could not read channel create tx: open ChannelCreateTxFileWhichDoesn'tReallyExist: no such file or directory") + require.EqualError(t, doInspectChannelCreateTx("ChannelCreateTxFileWhichDoesn'tReallyExist"), "could not read channel create tx: open ChannelCreateTxFileWhichDoesn'tReallyExist: no such file or directory") } func TestInspectConfigTx(t *testing.T) { @@ -109,8 +109,8 @@ func TestInspectConfigTx(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir()) - assert.NoError(t, doOutputChannelCreateTx(config, nil, "foo", configTxDest), "Good outputChannelCreateTx generation request") - assert.NoError(t, doInspectChannelCreateTx(configTxDest), "Good configtx inspection request") + require.NoError(t, doOutputChannelCreateTx(config, nil, "foo", configTxDest), "Good outputChannelCreateTx generation request") + require.NoError(t, doInspectChannelCreateTx(configTxDest), "Good configtx inspection request") } func TestGenerateAnchorPeersUpdate(t *testing.T) { @@ -118,7 +118,7 @@ func TestGenerateAnchorPeersUpdate(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir()) - assert.NoError(t, doOutputAnchorPeersUpdate(config, "foo", configTxDest, genesisconfig.SampleOrgName), "Good anchorPeerUpdate request") + require.NoError(t, doOutputAnchorPeersUpdate(config, "foo", configTxDest, genesisconfig.SampleOrgName), "Good anchorPeerUpdate request") } func TestBadAnchorPeersUpdates(t *testing.T) { @@ -126,15 +126,15 @@ func TestBadAnchorPeersUpdates(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir()) - assert.EqualError(t, doOutputAnchorPeersUpdate(config, "foo", configTxDest, ""), "must specify an organization to update the anchor peer for") + require.EqualError(t, doOutputAnchorPeersUpdate(config, "foo", configTxDest, ""), "must specify an organization to update the anchor peer for") backupApplication := config.Application config.Application = nil - assert.EqualError(t, doOutputAnchorPeersUpdate(config, "foo", configTxDest, genesisconfig.SampleOrgName), "cannot update anchor peers without an application section") + require.EqualError(t, doOutputAnchorPeersUpdate(config, "foo", configTxDest, genesisconfig.SampleOrgName), "cannot update anchor peers without an application section") config.Application = backupApplication config.Application.Organizations[0] = &genesisconfig.Organization{Name: "FakeOrg", ID: "FakeOrg"} - assert.EqualError(t, doOutputAnchorPeersUpdate(config, "foo", configTxDest, genesisconfig.SampleOrgName), "error parsing profile as channel group: could not create application group: failed to create application org: 1 - Error loading MSP configuration for org FakeOrg: unknown MSP type ''") + require.EqualError(t, doOutputAnchorPeersUpdate(config, "foo", configTxDest, genesisconfig.SampleOrgName), "error parsing profile as channel group: could not create application group: failed to create application org: 1 - Error loading MSP configuration for org FakeOrg: unknown MSP type ''") } func TestConfigTxFlags(t *testing.T) { @@ -166,9 +166,9 @@ func TestConfigTxFlags(t *testing.T) { main() _, err := os.Stat(configTxDest) - assert.NoError(t, err, "Configtx file is written successfully") + require.NoError(t, err, "Configtx file is written successfully") _, err = os.Stat(configTxDestAnchorPeers) - assert.NoError(t, err, "Configtx anchor peers file is written successfully") + require.NoError(t, err, "Configtx anchor peers file is written successfully") } func TestBlockFlags(t *testing.T) { @@ -191,21 +191,21 @@ func TestBlockFlags(t *testing.T) { main() _, err := os.Stat(blockDest) - assert.NoError(t, err, "Block file is written successfully") + require.NoError(t, err, "Block file is written successfully") } func TestPrintOrg(t *testing.T) { factory.InitFactories(nil) config := genesisconfig.LoadTopLevel(configtest.GetDevConfigDir()) - assert.NoError(t, doPrintOrg(config, genesisconfig.SampleOrgName), "Good org to print") + require.NoError(t, doPrintOrg(config, genesisconfig.SampleOrgName), "Good org to print") err := doPrintOrg(config, genesisconfig.SampleOrgName+".wrong") - assert.Error(t, err, "Bad org name") - assert.Regexp(t, "organization [^ ]* not found", err.Error()) + require.Error(t, err, "Bad org name") + require.Regexp(t, "organization [^ ]* not found", err.Error()) config.Organizations[0] = &genesisconfig.Organization{Name: "FakeOrg", ID: "FakeOrg"} err = doPrintOrg(config, "FakeOrg") - assert.Error(t, err, "Fake org") - assert.Regexp(t, "bad org definition", err.Error()) + require.Error(t, err, "Fake org") + require.Regexp(t, "bad org definition", err.Error()) } diff --git a/common/capabilities/application_test.go b/common/capabilities/application_test.go index ad6c0a22729..fbeb2452119 100644 --- a/common/capabilities/application_test.go +++ b/common/capabilities/application_test.go @@ -10,99 +10,99 @@ import ( "testing" cb "github.com/hyperledger/fabric-protos-go/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestApplicationV10(t *testing.T) { ap := NewApplicationProvider(map[string]*cb.Capability{}) - assert.NoError(t, ap.Supported()) + require.NoError(t, ap.Supported()) } func TestApplicationV11(t *testing.T) { ap := NewApplicationProvider(map[string]*cb.Capability{ ApplicationV1_1: {}, }) - assert.NoError(t, ap.Supported()) - assert.True(t, ap.ForbidDuplicateTXIdInBlock()) - assert.True(t, ap.V1_1Validation()) + require.NoError(t, ap.Supported()) + require.True(t, ap.ForbidDuplicateTXIdInBlock()) + require.True(t, ap.V1_1Validation()) } func TestApplicationV12(t *testing.T) { ap := NewApplicationProvider(map[string]*cb.Capability{ ApplicationV1_2: {}, }) - assert.NoError(t, ap.Supported()) - assert.True(t, ap.ForbidDuplicateTXIdInBlock()) - assert.True(t, ap.V1_1Validation()) - assert.True(t, ap.V1_2Validation()) - assert.True(t, ap.ACLs()) - assert.True(t, ap.CollectionUpgrade()) - assert.True(t, ap.PrivateChannelData()) + require.NoError(t, ap.Supported()) + require.True(t, ap.ForbidDuplicateTXIdInBlock()) + require.True(t, ap.V1_1Validation()) + require.True(t, ap.V1_2Validation()) + require.True(t, ap.ACLs()) + require.True(t, ap.CollectionUpgrade()) + require.True(t, ap.PrivateChannelData()) } func TestApplicationV13(t *testing.T) { ap := NewApplicationProvider(map[string]*cb.Capability{ ApplicationV1_3: {}, }) - assert.NoError(t, ap.Supported()) - assert.True(t, ap.ForbidDuplicateTXIdInBlock()) - assert.True(t, ap.V1_1Validation()) - assert.True(t, ap.V1_2Validation()) - assert.True(t, ap.V1_3Validation()) - assert.True(t, ap.KeyLevelEndorsement()) - assert.True(t, ap.ACLs()) - assert.True(t, ap.CollectionUpgrade()) - assert.True(t, ap.PrivateChannelData()) + require.NoError(t, ap.Supported()) + require.True(t, ap.ForbidDuplicateTXIdInBlock()) + require.True(t, ap.V1_1Validation()) + require.True(t, ap.V1_2Validation()) + require.True(t, ap.V1_3Validation()) + require.True(t, ap.KeyLevelEndorsement()) + require.True(t, ap.ACLs()) + require.True(t, ap.CollectionUpgrade()) + require.True(t, ap.PrivateChannelData()) } func TestApplicationV142(t *testing.T) { ap := NewApplicationProvider(map[string]*cb.Capability{ ApplicationV1_4_2: {}, }) - assert.NoError(t, ap.Supported()) - assert.True(t, ap.ForbidDuplicateTXIdInBlock()) - assert.True(t, ap.V1_1Validation()) - assert.True(t, ap.V1_2Validation()) - assert.True(t, ap.V1_3Validation()) - assert.True(t, ap.KeyLevelEndorsement()) - assert.True(t, ap.ACLs()) - assert.True(t, ap.CollectionUpgrade()) - assert.True(t, ap.PrivateChannelData()) - assert.True(t, ap.StorePvtDataOfInvalidTx()) + require.NoError(t, ap.Supported()) + require.True(t, ap.ForbidDuplicateTXIdInBlock()) + require.True(t, ap.V1_1Validation()) + require.True(t, ap.V1_2Validation()) + require.True(t, ap.V1_3Validation()) + require.True(t, ap.KeyLevelEndorsement()) + require.True(t, ap.ACLs()) + require.True(t, ap.CollectionUpgrade()) + require.True(t, ap.PrivateChannelData()) + require.True(t, ap.StorePvtDataOfInvalidTx()) } func TestApplicationV20(t *testing.T) { ap := NewApplicationProvider(map[string]*cb.Capability{ ApplicationV2_0: {}, }) - assert.NoError(t, ap.Supported()) - assert.True(t, ap.ForbidDuplicateTXIdInBlock()) - assert.True(t, ap.V1_1Validation()) - assert.True(t, ap.V1_2Validation()) - assert.True(t, ap.V1_3Validation()) - assert.True(t, ap.V2_0Validation()) - assert.True(t, ap.KeyLevelEndorsement()) - assert.True(t, ap.ACLs()) - assert.True(t, ap.CollectionUpgrade()) - assert.True(t, ap.PrivateChannelData()) - assert.True(t, ap.LifecycleV20()) - assert.True(t, ap.StorePvtDataOfInvalidTx()) + require.NoError(t, ap.Supported()) + require.True(t, ap.ForbidDuplicateTXIdInBlock()) + require.True(t, ap.V1_1Validation()) + require.True(t, ap.V1_2Validation()) + require.True(t, ap.V1_3Validation()) + require.True(t, ap.V2_0Validation()) + require.True(t, ap.KeyLevelEndorsement()) + require.True(t, ap.ACLs()) + require.True(t, ap.CollectionUpgrade()) + require.True(t, ap.PrivateChannelData()) + require.True(t, ap.LifecycleV20()) + require.True(t, ap.StorePvtDataOfInvalidTx()) } func TestApplicationPvtDataExperimental(t *testing.T) { ap := NewApplicationProvider(map[string]*cb.Capability{ ApplicationPvtDataExperimental: {}, }) - assert.True(t, ap.PrivateChannelData()) + require.True(t, ap.PrivateChannelData()) } func TestHasCapability(t *testing.T) { ap := NewApplicationProvider(map[string]*cb.Capability{}) - assert.True(t, ap.HasCapability(ApplicationV1_1)) - assert.True(t, ap.HasCapability(ApplicationV1_2)) - assert.True(t, ap.HasCapability(ApplicationV1_3)) - assert.True(t, ap.HasCapability(ApplicationV2_0)) - assert.True(t, ap.HasCapability(ApplicationPvtDataExperimental)) - assert.True(t, ap.HasCapability(ApplicationResourcesTreeExperimental)) - assert.False(t, ap.HasCapability("default")) + require.True(t, ap.HasCapability(ApplicationV1_1)) + require.True(t, ap.HasCapability(ApplicationV1_2)) + require.True(t, ap.HasCapability(ApplicationV1_3)) + require.True(t, ap.HasCapability(ApplicationV2_0)) + require.True(t, ap.HasCapability(ApplicationPvtDataExperimental)) + require.True(t, ap.HasCapability(ApplicationResourcesTreeExperimental)) + require.False(t, ap.HasCapability("default")) } diff --git a/common/capabilities/capabilities_test.go b/common/capabilities/capabilities_test.go index ec4a0ddc40d..f0ea1da1b43 100644 --- a/common/capabilities/capabilities_test.go +++ b/common/capabilities/capabilities_test.go @@ -10,7 +10,7 @@ import ( "testing" cb "github.com/hyperledger/fabric-protos-go/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSatisfied(t *testing.T) { @@ -20,7 +20,7 @@ func TestSatisfied(t *testing.T) { NewOrdererProvider(capsMap).registry, NewApplicationProvider(capsMap).registry, } { - assert.Nil(t, provider.Supported()) + require.Nil(t, provider.Supported()) } } @@ -33,6 +33,6 @@ func TestNotSatisfied(t *testing.T) { NewOrdererProvider(capsMap).registry, NewApplicationProvider(capsMap).registry, } { - assert.Error(t, provider.Supported()) + require.Error(t, provider.Supported()) } } diff --git a/common/capabilities/channel_test.go b/common/capabilities/channel_test.go index 0aa17769bb7..41fe22ef691 100644 --- a/common/capabilities/channel_test.go +++ b/common/capabilities/channel_test.go @@ -11,25 +11,25 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestChannelV10(t *testing.T) { cp := NewChannelProvider(map[string]*cb.Capability{}) - assert.NoError(t, cp.Supported()) - assert.True(t, cp.MSPVersion() == msp.MSPv1_0) - assert.False(t, cp.ConsensusTypeMigration()) - assert.False(t, cp.OrgSpecificOrdererEndpoints()) + require.NoError(t, cp.Supported()) + require.True(t, cp.MSPVersion() == msp.MSPv1_0) + require.False(t, cp.ConsensusTypeMigration()) + require.False(t, cp.OrgSpecificOrdererEndpoints()) } func TestChannelV11(t *testing.T) { cp := NewChannelProvider(map[string]*cb.Capability{ ChannelV1_1: {}, }) - assert.NoError(t, cp.Supported()) - assert.True(t, cp.MSPVersion() == msp.MSPv1_1) - assert.False(t, cp.ConsensusTypeMigration()) - assert.False(t, cp.OrgSpecificOrdererEndpoints()) + require.NoError(t, cp.Supported()) + require.True(t, cp.MSPVersion() == msp.MSPv1_1) + require.False(t, cp.ConsensusTypeMigration()) + require.False(t, cp.OrgSpecificOrdererEndpoints()) } func TestChannelV13(t *testing.T) { @@ -37,18 +37,18 @@ func TestChannelV13(t *testing.T) { ChannelV1_1: {}, ChannelV1_3: {}, }) - assert.NoError(t, cp.Supported()) - assert.True(t, cp.MSPVersion() == msp.MSPv1_3) - assert.False(t, cp.ConsensusTypeMigration()) - assert.False(t, cp.OrgSpecificOrdererEndpoints()) + require.NoError(t, cp.Supported()) + require.True(t, cp.MSPVersion() == msp.MSPv1_3) + require.False(t, cp.ConsensusTypeMigration()) + require.False(t, cp.OrgSpecificOrdererEndpoints()) cp = NewChannelProvider(map[string]*cb.Capability{ ChannelV1_3: {}, }) - assert.NoError(t, cp.Supported()) - assert.True(t, cp.MSPVersion() == msp.MSPv1_3) - assert.False(t, cp.ConsensusTypeMigration()) - assert.False(t, cp.OrgSpecificOrdererEndpoints()) + require.NoError(t, cp.Supported()) + require.True(t, cp.MSPVersion() == msp.MSPv1_3) + require.False(t, cp.ConsensusTypeMigration()) + require.False(t, cp.OrgSpecificOrdererEndpoints()) } func TestChannelV142(t *testing.T) { @@ -56,18 +56,18 @@ func TestChannelV142(t *testing.T) { ChannelV1_3: {}, ChannelV1_4_2: {}, }) - assert.NoError(t, cp.Supported()) - assert.True(t, cp.MSPVersion() == msp.MSPv1_3) - assert.True(t, cp.ConsensusTypeMigration()) - assert.True(t, cp.OrgSpecificOrdererEndpoints()) + require.NoError(t, cp.Supported()) + require.True(t, cp.MSPVersion() == msp.MSPv1_3) + require.True(t, cp.ConsensusTypeMigration()) + require.True(t, cp.OrgSpecificOrdererEndpoints()) cp = NewChannelProvider(map[string]*cb.Capability{ ChannelV1_4_2: {}, }) - assert.NoError(t, cp.Supported()) - assert.True(t, cp.MSPVersion() == msp.MSPv1_3) - assert.True(t, cp.ConsensusTypeMigration()) - assert.True(t, cp.OrgSpecificOrdererEndpoints()) + require.NoError(t, cp.Supported()) + require.True(t, cp.MSPVersion() == msp.MSPv1_3) + require.True(t, cp.ConsensusTypeMigration()) + require.True(t, cp.OrgSpecificOrdererEndpoints()) } func TestChannelV143(t *testing.T) { @@ -76,28 +76,28 @@ func TestChannelV143(t *testing.T) { ChannelV1_4_2: {}, ChannelV1_4_3: {}, }) - assert.NoError(t, cp.Supported()) - assert.True(t, cp.MSPVersion() == msp.MSPv1_4_3) - assert.True(t, cp.ConsensusTypeMigration()) - assert.True(t, cp.OrgSpecificOrdererEndpoints()) + require.NoError(t, cp.Supported()) + require.True(t, cp.MSPVersion() == msp.MSPv1_4_3) + require.True(t, cp.ConsensusTypeMigration()) + require.True(t, cp.OrgSpecificOrdererEndpoints()) cp = NewChannelProvider(map[string]*cb.Capability{ ChannelV1_4_3: {}, }) - assert.NoError(t, cp.Supported()) - assert.True(t, cp.MSPVersion() == msp.MSPv1_4_3) - assert.True(t, cp.ConsensusTypeMigration()) - assert.True(t, cp.OrgSpecificOrdererEndpoints()) + require.NoError(t, cp.Supported()) + require.True(t, cp.MSPVersion() == msp.MSPv1_4_3) + require.True(t, cp.ConsensusTypeMigration()) + require.True(t, cp.OrgSpecificOrdererEndpoints()) } func TestChannelV20(t *testing.T) { cp := NewChannelProvider(map[string]*cb.Capability{ ChannelV2_0: {}, }) - assert.NoError(t, cp.Supported()) - assert.True(t, cp.MSPVersion() == msp.MSPv1_4_3) - assert.True(t, cp.ConsensusTypeMigration()) - assert.True(t, cp.OrgSpecificOrdererEndpoints()) + require.NoError(t, cp.Supported()) + require.True(t, cp.MSPVersion() == msp.MSPv1_4_3) + require.True(t, cp.ConsensusTypeMigration()) + require.True(t, cp.OrgSpecificOrdererEndpoints()) } func TestChannelNotSupported(t *testing.T) { @@ -106,5 +106,5 @@ func TestChannelNotSupported(t *testing.T) { ChannelV1_3: {}, "Bogus_Not_Supported": {}, }) - assert.EqualError(t, cp.Supported(), "Channel capability Bogus_Not_Supported is required but not supported") + require.EqualError(t, cp.Supported(), "Channel capability Bogus_Not_Supported is required but not supported") } diff --git a/common/capabilities/orderer_test.go b/common/capabilities/orderer_test.go index c9783385bd2..19f4286a238 100644 --- a/common/capabilities/orderer_test.go +++ b/common/capabilities/orderer_test.go @@ -10,59 +10,59 @@ import ( "testing" cb "github.com/hyperledger/fabric-protos-go/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestOrdererV10(t *testing.T) { op := NewOrdererProvider(map[string]*cb.Capability{}) - assert.NoError(t, op.Supported()) - assert.Equal(t, ordererTypeName, op.Type()) - assert.False(t, op.PredictableChannelTemplate()) - assert.False(t, op.Resubmission()) - assert.False(t, op.ExpirationCheck()) - assert.False(t, op.ConsensusTypeMigration()) - assert.False(t, op.UseChannelCreationPolicyAsAdmins()) + require.NoError(t, op.Supported()) + require.Equal(t, ordererTypeName, op.Type()) + require.False(t, op.PredictableChannelTemplate()) + require.False(t, op.Resubmission()) + require.False(t, op.ExpirationCheck()) + require.False(t, op.ConsensusTypeMigration()) + require.False(t, op.UseChannelCreationPolicyAsAdmins()) } func TestOrdererV11(t *testing.T) { op := NewOrdererProvider(map[string]*cb.Capability{ OrdererV1_1: {}, }) - assert.NoError(t, op.Supported()) - assert.True(t, op.PredictableChannelTemplate()) - assert.True(t, op.Resubmission()) - assert.True(t, op.ExpirationCheck()) - assert.False(t, op.ConsensusTypeMigration()) - assert.False(t, op.UseChannelCreationPolicyAsAdmins()) + require.NoError(t, op.Supported()) + require.True(t, op.PredictableChannelTemplate()) + require.True(t, op.Resubmission()) + require.True(t, op.ExpirationCheck()) + require.False(t, op.ConsensusTypeMigration()) + require.False(t, op.UseChannelCreationPolicyAsAdmins()) } func TestOrdererV142(t *testing.T) { op := NewOrdererProvider(map[string]*cb.Capability{ OrdererV1_4_2: {}, }) - assert.NoError(t, op.Supported()) - assert.True(t, op.PredictableChannelTemplate()) - assert.True(t, op.Resubmission()) - assert.True(t, op.ExpirationCheck()) - assert.True(t, op.ConsensusTypeMigration()) - assert.False(t, op.UseChannelCreationPolicyAsAdmins()) + require.NoError(t, op.Supported()) + require.True(t, op.PredictableChannelTemplate()) + require.True(t, op.Resubmission()) + require.True(t, op.ExpirationCheck()) + require.True(t, op.ConsensusTypeMigration()) + require.False(t, op.UseChannelCreationPolicyAsAdmins()) } func TestOrdererV20(t *testing.T) { op := NewOrdererProvider(map[string]*cb.Capability{ OrdererV2_0: {}, }) - assert.NoError(t, op.Supported()) - assert.True(t, op.PredictableChannelTemplate()) - assert.True(t, op.UseChannelCreationPolicyAsAdmins()) - assert.True(t, op.Resubmission()) - assert.True(t, op.ExpirationCheck()) - assert.True(t, op.ConsensusTypeMigration()) + require.NoError(t, op.Supported()) + require.True(t, op.PredictableChannelTemplate()) + require.True(t, op.UseChannelCreationPolicyAsAdmins()) + require.True(t, op.Resubmission()) + require.True(t, op.ExpirationCheck()) + require.True(t, op.ConsensusTypeMigration()) } func TestNotSupported(t *testing.T) { op := NewOrdererProvider(map[string]*cb.Capability{ OrdererV1_1: {}, OrdererV2_0: {}, "Bogus_Not_Supported": {}, }) - assert.EqualError(t, op.Supported(), "Orderer capability Bogus_Not_Supported is required but not supported") + require.EqualError(t, op.Supported(), "Orderer capability Bogus_Not_Supported is required but not supported") } diff --git a/common/cauthdsl/cauthdsl_test.go b/common/cauthdsl/cauthdsl_test.go index 7b3e56c7fc6..e0411267d95 100644 --- a/common/cauthdsl/cauthdsl_test.go +++ b/common/cauthdsl/cauthdsl_test.go @@ -17,7 +17,7 @@ import ( mb "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric/common/policydsl" "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var invalidSignature = []byte("badsigned") @@ -163,57 +163,57 @@ func TestNegatively(t *testing.T) { func TestNilSignaturePolicyEnvelope(t *testing.T) { _, err := compile(nil, nil) - assert.Error(t, err, "Fail to compile") + require.Error(t, err, "Fail to compile") } func TestSignedByMspClient(t *testing.T) { e := policydsl.SignedByMspClient("A") - assert.Equal(t, 1, len(e.Identities)) + require.Equal(t, 1, len(e.Identities)) role := &mb.MSPRole{} err := proto.Unmarshal(e.Identities[0].Principal, role) - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, role.MspIdentifier, "A") - assert.Equal(t, role.Role, mb.MSPRole_CLIENT) + require.Equal(t, role.MspIdentifier, "A") + require.Equal(t, role.Role, mb.MSPRole_CLIENT) e = policydsl.SignedByAnyClient([]string{"A"}) - assert.Equal(t, 1, len(e.Identities)) + require.Equal(t, 1, len(e.Identities)) role = &mb.MSPRole{} err = proto.Unmarshal(e.Identities[0].Principal, role) - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, role.MspIdentifier, "A") - assert.Equal(t, role.Role, mb.MSPRole_CLIENT) + require.Equal(t, role.MspIdentifier, "A") + require.Equal(t, role.Role, mb.MSPRole_CLIENT) } func TestSignedByMspPeer(t *testing.T) { e := policydsl.SignedByMspPeer("A") - assert.Equal(t, 1, len(e.Identities)) + require.Equal(t, 1, len(e.Identities)) role := &mb.MSPRole{} err := proto.Unmarshal(e.Identities[0].Principal, role) - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, role.MspIdentifier, "A") - assert.Equal(t, role.Role, mb.MSPRole_PEER) + require.Equal(t, role.MspIdentifier, "A") + require.Equal(t, role.Role, mb.MSPRole_PEER) e = policydsl.SignedByAnyPeer([]string{"A"}) - assert.Equal(t, 1, len(e.Identities)) + require.Equal(t, 1, len(e.Identities)) role = &mb.MSPRole{} err = proto.Unmarshal(e.Identities[0].Principal, role) - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, role.MspIdentifier, "A") - assert.Equal(t, role.Role, mb.MSPRole_PEER) + require.Equal(t, role.MspIdentifier, "A") + require.Equal(t, role.Role, mb.MSPRole_PEER) } func TestReturnNil(t *testing.T) { policy := policydsl.Envelope(policydsl.And(policydsl.SignedBy(-1), policydsl.SignedBy(-2)), signers) spe, err := compile(policy.Rule, policy.Identities) - assert.Nil(t, spe) - assert.EqualError(t, err, "identity index out of range, requested -1, but identities length is 2") + require.Nil(t, spe) + require.EqualError(t, err, "identity index out of range, requested -1, but identities length is 2") } diff --git a/common/cauthdsl/policy_test.go b/common/cauthdsl/policy_test.go index e63bfde861c..e66e6fe2a5b 100644 --- a/common/cauthdsl/policy_test.go +++ b/common/cauthdsl/policy_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/common/policies" "github.com/hyperledger/fabric/common/policydsl" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var acceptAllPolicy *cb.Policy @@ -61,13 +61,13 @@ func TestAccept(t *testing.T) { policyID: {Policy: acceptAllPolicy}, }, }) - assert.NoError(t, err) - assert.NotNil(t, m) + require.NoError(t, err) + require.NotNil(t, m) policy, ok := m.GetPolicy(policyID) - assert.True(t, ok, "Should have found policy which was just added, but did not") + require.True(t, ok, "Should have found policy which was just added, but did not") err = policy.EvaluateSignedData([]*protoutil.SignedData{{Identity: []byte("identity"), Data: []byte("data"), Signature: []byte("sig")}}) - assert.NoError(t, err, "Should not have errored evaluating an acceptAll policy") + require.NoError(t, err, "Should not have errored evaluating an acceptAll policy") } func TestReject(t *testing.T) { @@ -77,76 +77,76 @@ func TestReject(t *testing.T) { policyID: {Policy: rejectAllPolicy}, }, }) - assert.NoError(t, err) - assert.NotNil(t, m) + require.NoError(t, err) + require.NotNil(t, m) policy, ok := m.GetPolicy(policyID) - assert.True(t, ok, "Should have found policy which was just added, but did not") + require.True(t, ok, "Should have found policy which was just added, but did not") err = policy.EvaluateSignedData([]*protoutil.SignedData{{Identity: []byte("identity"), Data: []byte("data"), Signature: []byte("sig")}}) - assert.Error(t, err, "Should have errored evaluating an rejectAll policy") + require.Error(t, err, "Should have errored evaluating an rejectAll policy") } func TestRejectOnUnknown(t *testing.T) { m, err := policies.NewManagerImpl("test", providerMap(), &cb.ConfigGroup{}) - assert.NoError(t, err) - assert.NotNil(t, m) + require.NoError(t, err) + require.NotNil(t, m) policy, ok := m.GetPolicy("FakePolicyID") - assert.False(t, ok, "Should not have found policy which was never added, but did") + require.False(t, ok, "Should not have found policy which was never added, but did") err = policy.EvaluateSignedData([]*protoutil.SignedData{{Identity: []byte("identity"), Data: []byte("data"), Signature: []byte("sig")}}) - assert.Error(t, err, "Should have errored evaluating the default policy") + require.Error(t, err, "Should have errored evaluating the default policy") } func TestNewPolicyErrorCase(t *testing.T) { provider := NewPolicyProvider(nil) pol1, msg1, err1 := provider.NewPolicy([]byte{0}) - assert.Nil(t, pol1) - assert.Nil(t, msg1) - assert.EqualError(t, err1, "Error unmarshaling to SignaturePolicy: proto: common.SignaturePolicyEnvelope: illegal tag 0 (wire type 0)") + require.Nil(t, pol1) + require.Nil(t, msg1) + require.EqualError(t, err1, "Error unmarshaling to SignaturePolicy: proto: common.SignaturePolicyEnvelope: illegal tag 0 (wire type 0)") sigPolicy2 := &cb.SignaturePolicyEnvelope{Version: -1} data2 := marshalOrPanic(sigPolicy2) pol2, msg2, err2 := provider.NewPolicy(data2) - assert.Nil(t, pol2) - assert.Nil(t, msg2) - assert.EqualError(t, err2, "This evaluator only understands messages of version 0, but version was -1") + require.Nil(t, pol2) + require.Nil(t, msg2) + require.EqualError(t, err2, "This evaluator only understands messages of version 0, but version was -1") pol3, msg3, err3 := provider.NewPolicy([]byte{}) - assert.Nil(t, pol3) - assert.Nil(t, msg3) - assert.EqualError(t, err3, "Empty policy element") + require.Nil(t, pol3) + require.Nil(t, msg3) + require.EqualError(t, err3, "Empty policy element") var pol4 *policy err4 := pol4.EvaluateSignedData([]*protoutil.SignedData{}) - assert.EqualError(t, err4, "no such policy") + require.EqualError(t, err4, "no such policy") } func TestEnvelopeBasedPolicyProvider(t *testing.T) { pp := &EnvelopeBasedPolicyProvider{Deserializer: &mockDeserializer{}} p, err := pp.NewPolicy(nil) - assert.Nil(t, p) - assert.Error(t, err, "invalid arguments") + require.Nil(t, p) + require.Error(t, err, "invalid arguments") p, err = pp.NewPolicy(&cb.SignaturePolicyEnvelope{}) - assert.Nil(t, p) - assert.Error(t, err, "Empty policy element") + require.Nil(t, p) + require.Error(t, err, "Empty policy element") p, err = pp.NewPolicy(policydsl.SignedByMspPeer("primus inter pares")) - assert.NotNil(t, p) - assert.NoError(t, err) + require.NotNil(t, p) + require.NoError(t, err) } func TestConverter(t *testing.T) { p := policy{} cp, err := p.Convert() - assert.Nil(t, cp) - assert.Error(t, err) - assert.Contains(t, err.Error(), "nil policy field") + require.Nil(t, cp) + require.Error(t, err) + require.Contains(t, err.Error(), "nil policy field") p.signaturePolicyEnvelope = policydsl.RejectAllPolicy cp, err = p.Convert() - assert.NotNil(t, cp) - assert.NoError(t, err) - assert.Equal(t, cp, policydsl.RejectAllPolicy) + require.NotNil(t, cp) + require.NoError(t, err) + require.Equal(t, cp, policydsl.RejectAllPolicy) } diff --git a/common/chaincode/metadata_test.go b/common/chaincode/metadata_test.go index 87817ff0e86..87b0d65b783 100644 --- a/common/chaincode/metadata_test.go +++ b/common/chaincode/metadata_test.go @@ -10,7 +10,7 @@ import ( "testing" "github.com/hyperledger/fabric-protos-go/gossip" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestToChaincodes(t *testing.T) { @@ -20,7 +20,7 @@ func TestToChaincodes(t *testing.T) { Version: "1.0", }, } - assert.Equal(t, []*gossip.Chaincode{ + require.Equal(t, []*gossip.Chaincode{ {Name: "foo", Version: "1.0"}, }, ccs.AsChaincodes()) } @@ -35,11 +35,11 @@ func TestMetadataMapping(t *testing.T) { } mm.Update(md1) res, found := mm.Lookup("cc1") - assert.Equal(t, md1, res) - assert.True(t, found) + require.Equal(t, md1, res) + require.True(t, found) res, found = mm.Lookup("cc2") - assert.Zero(t, res) - assert.False(t, found) + require.Zero(t, res) + require.False(t, found) md2 := Metadata{ Name: "cc1", Id: []byte{1}, @@ -48,8 +48,8 @@ func TestMetadataMapping(t *testing.T) { } mm.Update(md2) res, found = mm.Lookup("cc1") - assert.True(t, found) - assert.Equal(t, md2, res) + require.True(t, found) + require.Equal(t, md2, res) - assert.Equal(t, MetadataSet{md2}, mm.Aggregate()) + require.Equal(t, MetadataSet{md2}, mm.Aggregate()) } diff --git a/common/channelconfig/acls_test.go b/common/channelconfig/acls_test.go index 780b2a82607..713b364404e 100644 --- a/common/channelconfig/acls_test.go +++ b/common/channelconfig/acls_test.go @@ -10,7 +10,7 @@ import ( "testing" pb "github.com/hyperledger/fabric-protos-go/peer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const ( @@ -28,32 +28,32 @@ var sampleAPIsProvider = map[string]*pb.APIResource{ func TestGreenAPIsPath(t *testing.T) { ag := newAPIsProvider(sampleAPIsProvider) - assert.NotNil(t, ag) + require.NotNil(t, ag) t.Run("PresentAPIs", func(t *testing.T) { - assert.Equal(t, "/Channel/Application/"+sampleAPI1PolicyRef, ag.PolicyRefForAPI(sampleAPI1Name)) - assert.Equal(t, sampleAPI2PolicyRef, ag.PolicyRefForAPI(sampleAPI2Name)) + require.Equal(t, "/Channel/Application/"+sampleAPI1PolicyRef, ag.PolicyRefForAPI(sampleAPI1Name)) + require.Equal(t, sampleAPI2PolicyRef, ag.PolicyRefForAPI(sampleAPI2Name)) }) t.Run("MissingAPIs", func(t *testing.T) { - assert.Empty(t, ag.PolicyRefForAPI("missing")) + require.Empty(t, ag.PolicyRefForAPI("missing")) }) } func TestNilACLs(t *testing.T) { ccg := newAPIsProvider(nil) - assert.NotNil(t, ccg) - assert.NotNil(t, ccg.aclPolicyRefs) - assert.Empty(t, ccg.aclPolicyRefs) + require.NotNil(t, ccg) + require.NotNil(t, ccg.aclPolicyRefs) + require.Empty(t, ccg.aclPolicyRefs) } func TestEmptyACLs(t *testing.T) { ccg := newAPIsProvider(map[string]*pb.APIResource{}) - assert.NotNil(t, ccg) - assert.NotNil(t, ccg.aclPolicyRefs) - assert.Empty(t, ccg.aclPolicyRefs) + require.NotNil(t, ccg) + require.NotNil(t, ccg.aclPolicyRefs) + require.Empty(t, ccg.aclPolicyRefs) } func TestEmptyPolicyRef(t *testing.T) { @@ -63,9 +63,9 @@ func TestEmptyPolicyRef(t *testing.T) { ccg := newAPIsProvider(ars) - assert.NotNil(t, ccg) - assert.NotNil(t, ccg.aclPolicyRefs) - assert.Empty(t, ccg.aclPolicyRefs) + require.NotNil(t, ccg) + require.NotNil(t, ccg.aclPolicyRefs) + require.Empty(t, ccg.aclPolicyRefs) ars = map[string]*pb.APIResource{ "unsetAPI": {PolicyRef: ""}, @@ -74,9 +74,9 @@ func TestEmptyPolicyRef(t *testing.T) { ccg = newAPIsProvider(ars) - assert.NotNil(t, ccg) - assert.NotNil(t, ccg.aclPolicyRefs) - assert.NotEmpty(t, ccg.aclPolicyRefs) - assert.NotContains(t, ccg.aclPolicyRefs, sampleAPI1Name) + require.NotNil(t, ccg) + require.NotNil(t, ccg.aclPolicyRefs) + require.NotEmpty(t, ccg.aclPolicyRefs) + require.NotContains(t, ccg.aclPolicyRefs, sampleAPI1Name) } diff --git a/common/channelconfig/bundle_test.go b/common/channelconfig/bundle_test.go index 8fb47264651..a1e5b497c76 100644 --- a/common/channelconfig/bundle_test.go +++ b/common/channelconfig/bundle_test.go @@ -12,7 +12,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" ab "github.com/hyperledger/fabric-protos-go/orderer" cc "github.com/hyperledger/fabric/common/capabilities" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestValidateNew(t *testing.T) { @@ -28,8 +28,8 @@ func TestValidateNew(t *testing.T) { } err := cb.ValidateNew(nb) - assert.Error(t, err) - assert.Regexp(t, "current config has orderer section, but new config does not", err.Error()) + require.Error(t, err) + require.Regexp(t, "current config has orderer section, but new config does not", err.Error()) }) t.Run("DisappearingApplicationConfig", func(t *testing.T) { @@ -44,8 +44,8 @@ func TestValidateNew(t *testing.T) { } err := cb.ValidateNew(nb) - assert.Error(t, err) - assert.Regexp(t, "current config has application section, but new config does not", err.Error()) + require.Error(t, err) + require.Regexp(t, "current config has application section, but new config does not", err.Error()) }) t.Run("DisappearingConsortiumsConfig", func(t *testing.T) { @@ -60,8 +60,8 @@ func TestValidateNew(t *testing.T) { } err := cb.ValidateNew(nb) - assert.Error(t, err) - assert.Regexp(t, "current config has consortiums section, but new config does not", err.Error()) + require.Error(t, err) + require.Regexp(t, "current config has consortiums section, but new config does not", err.Error()) }) t.Run("Prevent adding ConsortiumsConfig to standard channel", func(t *testing.T) { @@ -76,7 +76,7 @@ func TestValidateNew(t *testing.T) { } err := cb.ValidateNew(nb) - assert.EqualError(t, err, "current config has no consortiums section, but new config does") + require.EqualError(t, err, "current config has no consortiums section, but new config does") }) t.Run("ConsensusTypeChange", func(t *testing.T) { @@ -113,8 +113,8 @@ func TestValidateNew(t *testing.T) { } err := currb.ValidateNew(newb) - assert.Error(t, err) - assert.Contains(t, err.Error(), "attempted to change consensus type from") + require.Error(t, err) + require.Contains(t, err.Error(), "attempted to change consensus type from") }) t.Run("OrdererOrgMSPIDChange", func(t *testing.T) { @@ -160,8 +160,8 @@ func TestValidateNew(t *testing.T) { } err := currb.ValidateNew(newb) - assert.Error(t, err) - assert.Regexp(t, "orderer org org3 attempted to change MSP ID from", err.Error()) + require.Error(t, err) + require.Regexp(t, "orderer org org3 attempted to change MSP ID from", err.Error()) }) t.Run("ApplicationOrgMSPIDChange", func(t *testing.T) { @@ -195,8 +195,8 @@ func TestValidateNew(t *testing.T) { } err := currb.ValidateNew(nb) - assert.Error(t, err) - assert.Regexp(t, "application org org3 attempted to change MSP ID from", err.Error()) + require.Error(t, err) + require.Regexp(t, "application org org3 attempted to change MSP ID from", err.Error()) }) t.Run("ConsortiumOrgMSPIDChange", func(t *testing.T) { @@ -240,8 +240,8 @@ func TestValidateNew(t *testing.T) { } err := currb.ValidateNew(nb) - assert.Error(t, err) - assert.Regexp(t, "consortium consortium1 org org3 attempted to change MSP ID from", err.Error()) + require.Error(t, err) + require.Regexp(t, "consortium consortium1 org org3 attempted to change MSP ID from", err.Error()) }) } @@ -251,23 +251,23 @@ func TestValidateNewWithConsensusMigration(t *testing.T) { b0 := generateMigrationBundle(sysChan, "kafka", ab.ConsensusType_STATE_NORMAL) b1 := generateMigrationBundle(sysChan, "kafka", ab.ConsensusType_STATE_NORMAL) err := b0.ValidateNew(b1) - assert.NoError(t, err) + require.NoError(t, err) b2 := generateMigrationBundle(sysChan, "kafka", ab.ConsensusType_STATE_MAINTENANCE) err = b1.ValidateNew(b2) - assert.NoError(t, err) + require.NoError(t, err) b3 := generateMigrationBundle(sysChan, "etcdraft", ab.ConsensusType_STATE_MAINTENANCE) err = b2.ValidateNew(b3) - assert.NoError(t, err) + require.NoError(t, err) b4 := generateMigrationBundle(sysChan, "etcdraft", ab.ConsensusType_STATE_NORMAL) err = b3.ValidateNew(b4) - assert.NoError(t, err) + require.NoError(t, err) b5 := generateMigrationBundle(sysChan, "etcdraft", ab.ConsensusType_STATE_NORMAL) err = b4.ValidateNew(b5) - assert.NoError(t, err) + require.NoError(t, err) } }) @@ -276,11 +276,11 @@ func TestValidateNewWithConsensusMigration(t *testing.T) { b1 := generateMigrationBundle(sysChan, "kafka", ab.ConsensusType_STATE_NORMAL) b2 := generateMigrationBundle(sysChan, "kafka", ab.ConsensusType_STATE_MAINTENANCE) err := b1.ValidateNew(b2) - assert.NoError(t, err) + require.NoError(t, err) b3 := generateMigrationBundle(sysChan, "kafka", ab.ConsensusType_STATE_NORMAL) err = b2.ValidateNew(b3) - assert.NoError(t, err) + require.NoError(t, err) } }) } @@ -322,15 +322,15 @@ func TestPrevalidation(t *testing.T) { t.Run("NilConfig", func(t *testing.T) { err := preValidate(nil) - assert.Error(t, err) - assert.Regexp(t, "channelconfig Config cannot be nil", err.Error()) + require.Error(t, err) + require.Regexp(t, "channelconfig Config cannot be nil", err.Error()) }) t.Run("NilChannelGroup", func(t *testing.T) { err := preValidate(&cb.Config{}) - assert.Error(t, err) - assert.Regexp(t, "config must contain a channel group", err.Error()) + require.Error(t, err) + require.Regexp(t, "config must contain a channel group", err.Error()) }) t.Run("BadChannelCapabilities", func(t *testing.T) { @@ -345,8 +345,8 @@ func TestPrevalidation(t *testing.T) { }, }) - assert.Error(t, err) - assert.Regexp(t, "cannot enable channel capabilities without orderer support first", err.Error()) + require.Error(t, err) + require.Regexp(t, "cannot enable channel capabilities without orderer support first", err.Error()) }) t.Run("BadApplicationCapabilities", func(t *testing.T) { @@ -363,8 +363,8 @@ func TestPrevalidation(t *testing.T) { }, }) - assert.Error(t, err) - assert.Regexp(t, "cannot enable application capabilities without orderer support first", err.Error()) + require.Error(t, err) + require.Regexp(t, "cannot enable application capabilities without orderer support first", err.Error()) }) t.Run("ValidCapabilities", func(t *testing.T) { @@ -388,6 +388,6 @@ func TestPrevalidation(t *testing.T) { }, }) - assert.NoError(t, err) + require.NoError(t, err) }) } diff --git a/common/channelconfig/channel_test.go b/common/channelconfig/channel_test.go index ce9a9905b14..d74c1c715bb 100644 --- a/common/channelconfig/channel_test.go +++ b/common/channelconfig/channel_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/bccsp" "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/common/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInterface(t *testing.T) { @@ -24,61 +24,61 @@ func TestInterface(t *testing.T) { func TestChannelConfig(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cc, err := NewChannelConfig( &cb.ConfigGroup{Groups: map[string]*cb.ConfigGroup{"UnknownGroupKey": {}}}, cryptoProvider, ) - assert.Error(t, err) - assert.Nil(t, cc) + require.Error(t, err) + require.Nil(t, cc) } func TestHashingAlgorithm(t *testing.T) { cc := &ChannelConfig{protos: &ChannelProtos{HashingAlgorithm: &cb.HashingAlgorithm{}}} - assert.Error(t, cc.validateHashingAlgorithm(), "Must supply hashing algorithm") + require.Error(t, cc.validateHashingAlgorithm(), "Must supply hashing algorithm") cc = &ChannelConfig{protos: &ChannelProtos{HashingAlgorithm: &cb.HashingAlgorithm{Name: "MD5"}}} - assert.Error(t, cc.validateHashingAlgorithm(), "Bad hashing algorithm supplied") + require.Error(t, cc.validateHashingAlgorithm(), "Bad hashing algorithm supplied") cc = &ChannelConfig{protos: &ChannelProtos{HashingAlgorithm: &cb.HashingAlgorithm{Name: bccsp.SHA256}}} - assert.NoError(t, cc.validateHashingAlgorithm(), "Allowed hashing algorith SHA256 supplied") + require.NoError(t, cc.validateHashingAlgorithm(), "Allowed hashing algorith SHA256 supplied") - assert.Equal(t, reflect.ValueOf(util.ComputeSHA256).Pointer(), reflect.ValueOf(cc.HashingAlgorithm()).Pointer(), + require.Equal(t, reflect.ValueOf(util.ComputeSHA256).Pointer(), reflect.ValueOf(cc.HashingAlgorithm()).Pointer(), "Unexpected hashing algorithm returned") cc = &ChannelConfig{protos: &ChannelProtos{HashingAlgorithm: &cb.HashingAlgorithm{Name: bccsp.SHA3_256}}} - assert.NoError(t, cc.validateHashingAlgorithm(), "Allowed hashing algorith SHA3_256 supplied") + require.NoError(t, cc.validateHashingAlgorithm(), "Allowed hashing algorith SHA3_256 supplied") - assert.Equal(t, reflect.ValueOf(util.ComputeSHA3256).Pointer(), reflect.ValueOf(cc.HashingAlgorithm()).Pointer(), + require.Equal(t, reflect.ValueOf(util.ComputeSHA3256).Pointer(), reflect.ValueOf(cc.HashingAlgorithm()).Pointer(), "Unexpected hashing algorithm returned") } func TestBlockDataHashingStructure(t *testing.T) { cc := &ChannelConfig{protos: &ChannelProtos{BlockDataHashingStructure: &cb.BlockDataHashingStructure{}}} - assert.Error(t, cc.validateBlockDataHashingStructure(), "Must supply block data hashing structure") + require.Error(t, cc.validateBlockDataHashingStructure(), "Must supply block data hashing structure") cc = &ChannelConfig{protos: &ChannelProtos{BlockDataHashingStructure: &cb.BlockDataHashingStructure{Width: 7}}} - assert.Error(t, cc.validateBlockDataHashingStructure(), "Invalid Merkle tree width supplied") + require.Error(t, cc.validateBlockDataHashingStructure(), "Invalid Merkle tree width supplied") var width uint32 = math.MaxUint32 cc = &ChannelConfig{protos: &ChannelProtos{BlockDataHashingStructure: &cb.BlockDataHashingStructure{Width: width}}} - assert.NoError(t, cc.validateBlockDataHashingStructure(), "Valid Merkle tree width supplied") + require.NoError(t, cc.validateBlockDataHashingStructure(), "Valid Merkle tree width supplied") - assert.Equal(t, width, cc.BlockDataHashingStructureWidth(), "Unexpected width returned") + require.Equal(t, width, cc.BlockDataHashingStructureWidth(), "Unexpected width returned") } func TestOrdererAddresses(t *testing.T) { cc := &ChannelConfig{protos: &ChannelProtos{OrdererAddresses: &cb.OrdererAddresses{}}} - assert.Error(t, cc.validateOrdererAddresses(), "Must supply orderer addresses") + require.Error(t, cc.validateOrdererAddresses(), "Must supply orderer addresses") cc = &ChannelConfig{protos: &ChannelProtos{OrdererAddresses: &cb.OrdererAddresses{Addresses: []string{"127.0.0.1:7050"}}}} - assert.NoError(t, cc.validateOrdererAddresses(), "Invalid orderer address supplied") + require.NoError(t, cc.validateOrdererAddresses(), "Invalid orderer address supplied") - assert.Equal(t, "127.0.0.1:7050", cc.OrdererAddresses()[0], "Unexpected orderer address returned") + require.Equal(t, "127.0.0.1:7050", cc.OrdererAddresses()[0], "Unexpected orderer address returned") } func TestConsortiumName(t *testing.T) { cc := &ChannelConfig{protos: &ChannelProtos{Consortium: &cb.Consortium{Name: "TestConsortium"}}} - assert.Equal(t, "TestConsortium", cc.ConsortiumName(), "Unexpected consortium name returned") + require.Equal(t, "TestConsortium", cc.ConsortiumName(), "Unexpected consortium name returned") } diff --git a/common/channelconfig/consortium_test.go b/common/channelconfig/consortium_test.go index 5ff542c1b2b..77b62664950 100644 --- a/common/channelconfig/consortium_test.go +++ b/common/channelconfig/consortium_test.go @@ -11,17 +11,17 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestConsortiumConfig(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cc, err := NewConsortiumConfig(&cb.ConfigGroup{}, NewMSPConfigHandler(msp.MSPv1_0, cryptoProvider)) - assert.NoError(t, err) + require.NoError(t, err) orgs := cc.Organizations() - assert.Equal(t, 0, len(orgs)) + require.Equal(t, 0, len(orgs)) policy := cc.ChannelCreationPolicy() - assert.EqualValues(t, cb.Policy_UNKNOWN, policy.Type, "Expected policy type to be UNKNOWN") + require.EqualValues(t, cb.Policy_UNKNOWN, policy.Type, "Expected policy type to be UNKNOWN") } diff --git a/common/channelconfig/consortiums_test.go b/common/channelconfig/consortiums_test.go index cf877ccd27f..3b50dfd9b1b 100644 --- a/common/channelconfig/consortiums_test.go +++ b/common/channelconfig/consortiums_test.go @@ -9,10 +9,10 @@ import ( "testing" cb "github.com/hyperledger/fabric-protos-go/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestConsortiums(t *testing.T) { _, err := NewConsortiumsConfig(&cb.ConfigGroup{}, nil) - assert.NoError(t, err) + require.NoError(t, err) } diff --git a/common/channelconfig/msp_test.go b/common/channelconfig/msp_test.go index 16ddf952972..9441d59003f 100644 --- a/common/channelconfig/msp_test.go +++ b/common/channelconfig/msp_test.go @@ -14,13 +14,13 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/core/config/configtest" "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestMSPConfigManager(t *testing.T) { mspDir := configtest.GetDevMspDir() conf, err := msp.GetLocalMspConfig(mspDir, nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) // test success: @@ -30,38 +30,38 @@ func TestMSPConfigManager(t *testing.T) { mspCH := NewMSPConfigHandler(ver, factory.GetDefault()) _, err = mspCH.ProposeMSP(conf) - assert.NoError(t, err) + require.NoError(t, err) mgr, err := mspCH.CreateMSPManager() - assert.NoError(t, err) - assert.NotNil(t, mgr) + require.NoError(t, err) + require.NotNil(t, mgr) msps, err := mgr.GetMSPs() - assert.NoError(t, err) + require.NoError(t, err) if len(msps) == 0 { t.Fatalf("There are no MSPS in the manager") } for _, mspInst := range msps { - assert.Equal(t, mspInst.GetVersion(), msp.MSPVersion(ver)) + require.Equal(t, mspInst.GetVersion(), msp.MSPVersion(ver)) } } } func TestMSPConfigFailure(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mspCH := NewMSPConfigHandler(msp.MSPv1_0, cryptoProvider) // begin/propose/commit t.Run("Bad proto", func(t *testing.T) { _, err := mspCH.ProposeMSP(&mspprotos.MSPConfig{Config: []byte("BARF!")}) - assert.Error(t, err) + require.Error(t, err) }) t.Run("Bad MSP Type", func(t *testing.T) { _, err := mspCH.ProposeMSP(&mspprotos.MSPConfig{Type: int32(10)}) - assert.Error(t, err) + require.Error(t, err) }) } diff --git a/common/channelconfig/orderer_test.go b/common/channelconfig/orderer_test.go index ca0f69cf073..d161b30a12a 100644 --- a/common/channelconfig/orderer_test.go +++ b/common/channelconfig/orderer_test.go @@ -10,7 +10,7 @@ import ( "testing" ab "github.com/hyperledger/fabric-protos-go/orderer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestBatchSize(t *testing.T) { @@ -19,33 +19,33 @@ func TestBatchSize(t *testing.T) { validPreferredMaxBytes := uint32(500) oc := &OrdererConfig{protos: &OrdererProtos{BatchSize: &ab.BatchSize{MaxMessageCount: validMaxMessageCount, AbsoluteMaxBytes: validAbsoluteMaxBytes, PreferredMaxBytes: validPreferredMaxBytes}}} - assert.NoError(t, oc.validateBatchSize(), "BatchSize was valid") + require.NoError(t, oc.validateBatchSize(), "BatchSize was valid") oc = &OrdererConfig{protos: &OrdererProtos{BatchSize: &ab.BatchSize{MaxMessageCount: 0, AbsoluteMaxBytes: validAbsoluteMaxBytes, PreferredMaxBytes: validPreferredMaxBytes}}} - assert.Error(t, oc.validateBatchSize(), "MaxMessageCount was zero") + require.Error(t, oc.validateBatchSize(), "MaxMessageCount was zero") oc = &OrdererConfig{protos: &OrdererProtos{BatchSize: &ab.BatchSize{MaxMessageCount: validMaxMessageCount, AbsoluteMaxBytes: 0, PreferredMaxBytes: validPreferredMaxBytes}}} - assert.Error(t, oc.validateBatchSize(), "AbsoluteMaxBytes was zero") + require.Error(t, oc.validateBatchSize(), "AbsoluteMaxBytes was zero") oc = &OrdererConfig{protos: &OrdererProtos{BatchSize: &ab.BatchSize{MaxMessageCount: validMaxMessageCount, AbsoluteMaxBytes: validAbsoluteMaxBytes, PreferredMaxBytes: validAbsoluteMaxBytes + 1}}} - assert.Error(t, oc.validateBatchSize(), "PreferredMaxBytes larger to AbsoluteMaxBytes") + require.Error(t, oc.validateBatchSize(), "PreferredMaxBytes larger to AbsoluteMaxBytes") } func TestBatchTimeout(t *testing.T) { oc := &OrdererConfig{protos: &OrdererProtos{BatchTimeout: &ab.BatchTimeout{Timeout: "1s"}}} - assert.NoError(t, oc.validateBatchTimeout(), "Valid batch timeout") + require.NoError(t, oc.validateBatchTimeout(), "Valid batch timeout") oc = &OrdererConfig{protos: &OrdererProtos{BatchTimeout: &ab.BatchTimeout{Timeout: "-1s"}}} - assert.Error(t, oc.validateBatchTimeout(), "Negative batch timeout") + require.Error(t, oc.validateBatchTimeout(), "Negative batch timeout") oc = &OrdererConfig{protos: &OrdererProtos{BatchTimeout: &ab.BatchTimeout{Timeout: "0s"}}} - assert.Error(t, oc.validateBatchTimeout(), "Zero batch timeout") + require.Error(t, oc.validateBatchTimeout(), "Zero batch timeout") } func TestKafkaBrokers(t *testing.T) { oc := &OrdererConfig{protos: &OrdererProtos{KafkaBrokers: &ab.KafkaBrokers{Brokers: []string{"127.0.0.1:9092", "foo.bar:9092"}}}} - assert.NoError(t, oc.validateKafkaBrokers(), "Valid kafka brokers") + require.NoError(t, oc.validateKafkaBrokers(), "Valid kafka brokers") oc = &OrdererConfig{protos: &OrdererProtos{KafkaBrokers: &ab.KafkaBrokers{Brokers: []string{"127.0.0.1", "foo.bar", "127.0.0.1:-1", "localhost:65536", "foo.bar.:9092", ".127.0.0.1:9092", "-foo.bar:9092"}}}} - assert.Error(t, oc.validateKafkaBrokers(), "Invalid kafka brokers") + require.Error(t, oc.validateKafkaBrokers(), "Invalid kafka brokers") } diff --git a/common/channelconfig/realconfig_test.go b/common/channelconfig/realconfig_test.go index 0ad63d5a11b..3a991e523f0 100644 --- a/common/channelconfig/realconfig_test.go +++ b/common/channelconfig/realconfig_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/internal/configtxgen/encoder" "github.com/hyperledger/fabric/internal/configtxgen/genesisconfig" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestWithRealConfigtx(t *testing.T) { @@ -24,10 +24,10 @@ func TestWithRealConfigtx(t *testing.T) { gb := encoder.New(conf).GenesisBlockForChannel("foo") env := protoutil.ExtractEnvelopeOrPanic(gb, 0) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, err = channelconfig.NewBundleFromEnvelope(env, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) } func TestOrgSpecificOrdererEndpoints(t *testing.T) { @@ -37,12 +37,12 @@ func TestOrgSpecificOrdererEndpoints(t *testing.T) { conf.Capabilities = map[string]bool{"V1_3": true} cg, err := encoder.NewChannelGroup(conf) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, err = channelconfig.NewChannelConfig(cg, cryptoProvider) - assert.EqualError(t, err, "could not create channel Orderer sub-group config: Orderer Org SampleOrg cannot contain endpoints value until V1_4_2+ capabilities have been enabled") + require.EqualError(t, err, "could not create channel Orderer sub-group config: Orderer Org SampleOrg cannot contain endpoints value until V1_4_2+ capabilities have been enabled") }) t.Run("Without_Capability_NoOSNs", func(t *testing.T) { @@ -52,31 +52,31 @@ func TestOrgSpecificOrdererEndpoints(t *testing.T) { conf.Orderer.Addresses = []string{} cg, err := encoder.NewChannelGroup(conf) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, err = channelconfig.NewChannelConfig(cg, cryptoProvider) - assert.EqualError(t, err, "Must set some OrdererAddresses") + require.EqualError(t, err, "Must set some OrdererAddresses") }) t.Run("With_Capability", func(t *testing.T) { conf := genesisconfig.Load(genesisconfig.SampleDevModeSoloProfile, configtest.GetDevConfigDir()) conf.Capabilities = map[string]bool{"V2_0": true} - assert.NotEmpty(t, conf.Orderer.Organizations[0].OrdererEndpoints) + require.NotEmpty(t, conf.Orderer.Organizations[0].OrdererEndpoints) cg, err := encoder.NewChannelGroup(conf) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cc, err := channelconfig.NewChannelConfig(cg, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) err = cc.Validate(cc.Capabilities()) - assert.NoError(t, err) + require.NoError(t, err) - assert.NotEmpty(t, cc.OrdererConfig().Organizations()["SampleOrg"].Endpoints) + require.NotEmpty(t, cc.OrdererConfig().Organizations()["SampleOrg"].Endpoints) }) } diff --git a/common/channelconfig/standardvalues_test.go b/common/channelconfig/standardvalues_test.go index 1385d468de3..bcaaeb9e85a 100644 --- a/common/channelconfig/standardvalues_test.go +++ b/common/channelconfig/standardvalues_test.go @@ -11,7 +11,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type foo struct { @@ -39,63 +39,63 @@ type unexported struct { func TestSingle(t *testing.T) { fooVal := &foo{} sv, err := NewStandardValues(fooVal) - assert.NoError(t, err, "Valid non-nested structure provided") - assert.NotNil(t, fooVal.Msg1, "Should have initialized Msg1") - assert.NotNil(t, fooVal.Msg2, "Should have initialized Msg2") + require.NoError(t, err, "Valid non-nested structure provided") + require.NotNil(t, fooVal.Msg1, "Should have initialized Msg1") + require.NotNil(t, fooVal.Msg2, "Should have initialized Msg2") msg1, err := sv.Deserialize("Msg1", protoutil.MarshalOrPanic(&cb.Envelope{})) - assert.NoError(t, err, "Should have found map entry") - assert.Equal(t, msg1, fooVal.Msg1, "Should be same entry") + require.NoError(t, err, "Should have found map entry") + require.Equal(t, msg1, fooVal.Msg1, "Should be same entry") msg2, err := sv.Deserialize("Msg2", protoutil.MarshalOrPanic(&cb.Payload{})) - assert.NoError(t, err, "Should have found map entry") - assert.Equal(t, msg2, fooVal.Msg2, "Should be same entry") + require.NoError(t, err, "Should have found map entry") + require.Equal(t, msg2, fooVal.Msg2, "Should be same entry") } func TestPair(t *testing.T) { fooVal := &foo{} barVal := &bar{} sv, err := NewStandardValues(fooVal, barVal) - assert.NoError(t, err, "Valid non-nested structure provided") - assert.NotNil(t, fooVal.Msg1, "Should have initialized Msg1") - assert.NotNil(t, fooVal.Msg2, "Should have initialized Msg2") - assert.NotNil(t, barVal.Msg3, "Should have initialized Msg3") + require.NoError(t, err, "Valid non-nested structure provided") + require.NotNil(t, fooVal.Msg1, "Should have initialized Msg1") + require.NotNil(t, fooVal.Msg2, "Should have initialized Msg2") + require.NotNil(t, barVal.Msg3, "Should have initialized Msg3") msg1, err := sv.Deserialize("Msg1", protoutil.MarshalOrPanic(&cb.Envelope{})) - assert.NoError(t, err, "Should have found map entry") - assert.Equal(t, msg1, fooVal.Msg1, "Should be same entry") + require.NoError(t, err, "Should have found map entry") + require.Equal(t, msg1, fooVal.Msg1, "Should be same entry") msg2, err := sv.Deserialize("Msg2", protoutil.MarshalOrPanic(&cb.Payload{})) - assert.NoError(t, err, "Should have found map entry") - assert.Equal(t, msg2, fooVal.Msg2, "Should be same entry") + require.NoError(t, err, "Should have found map entry") + require.Equal(t, msg2, fooVal.Msg2, "Should be same entry") msg3, err := sv.Deserialize("Msg3", protoutil.MarshalOrPanic(&cb.Header{})) - assert.NoError(t, err, "Should have found map entry") - assert.Equal(t, msg3, barVal.Msg3, "Should be same entry") + require.NoError(t, err, "Should have found map entry") + require.Equal(t, msg3, barVal.Msg3, "Should be same entry") } func TestPairConflict(t *testing.T) { _, err := NewStandardValues(&foo{}, &conflict{}) - assert.Error(t, err, "Conflicting keys provided") + require.Error(t, err, "Conflicting keys provided") } func TestNonProtosStruct(t *testing.T) { _, err := NewStandardValues(&nonProtos{}) - assert.Error(t, err, "Structure with non-struct non-proto fields provided") + require.Error(t, err, "Structure with non-struct non-proto fields provided") } func TestUnexportedField(t *testing.T) { _, err := NewStandardValues(&unexported{msg: nil}) - assert.Error(t, err, "Structure with unexported fields") + require.Error(t, err, "Structure with unexported fields") } func TestNonPointerParam(t *testing.T) { _, err := NewStandardValues(foo{}) - assert.Error(t, err, "Parameter must be pointer") + require.Error(t, err, "Parameter must be pointer") } func TestPointerToNonStruct(t *testing.T) { nonStruct := "foo" _, err := NewStandardValues(&nonStruct) - assert.Error(t, err, "Pointer must be to a struct") + require.Error(t, err, "Pointer must be to a struct") } diff --git a/common/channelconfig/util_test.go b/common/channelconfig/util_test.go index 30731b10e90..5eeca2438e2 100644 --- a/common/channelconfig/util_test.go +++ b/common/channelconfig/util_test.go @@ -23,7 +23,6 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/common/capabilities" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -34,9 +33,9 @@ import ( // low code coverage count, so here they are. func basicTest(t *testing.T, sv *StandardConfigValue) { - assert.NotNil(t, sv) - assert.NotEmpty(t, sv.Key()) - assert.NotNil(t, sv.Value()) + require.NotNil(t, sv) + require.NotEmpty(t, sv.Key()) + require.NotNil(t, sv.Value()) } func TestUtilsBasic(t *testing.T) { @@ -286,32 +285,32 @@ func createCfgBlockWithUnsupportedCapabilities(t *testing.T) *cb.Block { func TestValidateCapabilities(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) // Test config block with valid capabilities requirement cfgBlock := createCfgBlockWithSupportedCapabilities(t) err = ValidateCapabilities(cfgBlock, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) // Test config block with invalid capabilities requirement cfgBlock = createCfgBlockWithUnsupportedCapabilities(t) err = ValidateCapabilities(cfgBlock, cryptoProvider) - assert.EqualError(t, err, "Channel capability INCOMPATIBLE_CAPABILITIES is required but not supported") + require.EqualError(t, err, "Channel capability INCOMPATIBLE_CAPABILITIES is required but not supported") } func TestExtractMSPIDsForApplicationOrgs(t *testing.T) { // load test_configblock.json that contains the application group // and other properties needed to build channel config and extract MSPIDs blockData, err := ioutil.ReadFile("testdata/test_configblock.json") - assert.NoError(t, err) + require.NoError(t, err) block := &common.Block{} protolator.DeepUnmarshalJSON(bytes.NewBuffer(blockData), block) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mspids, err := ExtractMSPIDsForApplicationOrgs(block, cryptoProvider) - assert.NoError(t, err) - assert.ElementsMatch(t, mspids, []string{"Org1MSP", "Org2MSP"}) + require.NoError(t, err) + require.ElementsMatch(t, mspids, []string{"Org1MSP", "Org2MSP"}) } func TestMarshalEtcdRaftMetadata(t *testing.T) { @@ -339,11 +338,11 @@ func TestMarshalEtcdRaftMetadata(t *testing.T) { } packed, err := MarshalEtcdRaftMetadata(md) require.Nil(t, err, "marshalling should succeed") - assert.NotNil(t, packed) + require.NotNil(t, packed) packed, err = MarshalEtcdRaftMetadata(md) require.Nil(t, err, "marshalling should succeed a second time because we did not mutate ourselves") - assert.NotNil(t, packed) + require.NotNil(t, packed) unpacked := &etcdraft.ConfigMetadata{} require.Nil(t, proto.Unmarshal(packed, unpacked), "unmarshalling should succeed") diff --git a/common/configtx/compare_test.go b/common/configtx/compare_test.go index 5522e295ec5..93286fdc0f5 100644 --- a/common/configtx/compare_test.go +++ b/common/configtx/compare_test.go @@ -10,12 +10,12 @@ import ( "testing" cb "github.com/hyperledger/fabric-protos-go/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCompareConfigValue(t *testing.T) { // Normal equality - assert.True(t, comparable{ + require.True(t, comparable{ ConfigValue: &cb.ConfigValue{ Version: 0, ModPolicy: "foo", @@ -28,7 +28,7 @@ func TestCompareConfigValue(t *testing.T) { }}), "Should have found identical config values to be identical") // Different Mod Policy - assert.False(t, comparable{ + require.False(t, comparable{ ConfigValue: &cb.ConfigValue{ Version: 0, ModPolicy: "foo", @@ -41,7 +41,7 @@ func TestCompareConfigValue(t *testing.T) { }}), "Should have detected different mod policy") // Different Value - assert.False(t, comparable{ + require.False(t, comparable{ ConfigValue: &cb.ConfigValue{ Version: 0, ModPolicy: "foo", @@ -54,7 +54,7 @@ func TestCompareConfigValue(t *testing.T) { }}), "Should have detected different value") // Different Version - assert.False(t, comparable{ + require.False(t, comparable{ ConfigValue: &cb.ConfigValue{ Version: 0, ModPolicy: "foo", @@ -67,7 +67,7 @@ func TestCompareConfigValue(t *testing.T) { }}), "Should have detected different version") // One nil value - assert.False(t, comparable{ + require.False(t, comparable{ ConfigValue: &cb.ConfigValue{ Version: 0, ModPolicy: "foo", @@ -78,7 +78,7 @@ func TestCompareConfigValue(t *testing.T) { func TestCompareConfigPolicy(t *testing.T) { // Normal equality - assert.True(t, comparable{ + require.True(t, comparable{ ConfigPolicy: &cb.ConfigPolicy{ Version: 0, ModPolicy: "foo", @@ -97,7 +97,7 @@ func TestCompareConfigPolicy(t *testing.T) { }}), "Should have found identical config policies to be identical") // Different mod policy - assert.False(t, comparable{ + require.False(t, comparable{ ConfigPolicy: &cb.ConfigPolicy{ Version: 0, ModPolicy: "foo", @@ -116,7 +116,7 @@ func TestCompareConfigPolicy(t *testing.T) { }}), "Should have detected different mod policy") // Different version - assert.False(t, comparable{ + require.False(t, comparable{ ConfigPolicy: &cb.ConfigPolicy{ Version: 0, ModPolicy: "foo", @@ -135,7 +135,7 @@ func TestCompareConfigPolicy(t *testing.T) { }}), "Should have detected different version") // Different policy type - assert.False(t, comparable{ + require.False(t, comparable{ ConfigPolicy: &cb.ConfigPolicy{ Version: 0, ModPolicy: "foo", @@ -154,7 +154,7 @@ func TestCompareConfigPolicy(t *testing.T) { }}), "Should have detected different policy type") // Different policy value - assert.False(t, comparable{ + require.False(t, comparable{ ConfigPolicy: &cb.ConfigPolicy{ Version: 0, ModPolicy: "foo", @@ -173,7 +173,7 @@ func TestCompareConfigPolicy(t *testing.T) { }}), "Should have detected different policy value") // One nil value - assert.False(t, comparable{ + require.False(t, comparable{ ConfigPolicy: &cb.ConfigPolicy{ Version: 0, ModPolicy: "foo", @@ -184,7 +184,7 @@ func TestCompareConfigPolicy(t *testing.T) { }}.equals(comparable{}), "Should have detected one nil value") // One nil policy - assert.False(t, comparable{ + require.False(t, comparable{ ConfigPolicy: &cb.ConfigPolicy{ Version: 0, ModPolicy: "foo", @@ -204,7 +204,7 @@ func TestCompareConfigPolicy(t *testing.T) { func TestCompareConfigGroup(t *testing.T) { // Normal equality - assert.True(t, comparable{ + require.True(t, comparable{ ConfigGroup: &cb.ConfigGroup{ Version: 0, ModPolicy: "foo", @@ -221,7 +221,7 @@ func TestCompareConfigGroup(t *testing.T) { }}), "Should have found identical config groups to be identical") // Different mod policy - assert.False(t, comparable{ + require.False(t, comparable{ ConfigGroup: &cb.ConfigGroup{ Version: 0, ModPolicy: "foo", @@ -232,7 +232,7 @@ func TestCompareConfigGroup(t *testing.T) { }}), "Should have detected different mod policy") // Different version - assert.False(t, comparable{ + require.False(t, comparable{ ConfigGroup: &cb.ConfigGroup{ Version: 0, ModPolicy: "foo", @@ -243,7 +243,7 @@ func TestCompareConfigGroup(t *testing.T) { }}), "Should have detected different version") // Different groups - assert.False(t, comparable{ + require.False(t, comparable{ ConfigGroup: &cb.ConfigGroup{ Version: 0, ModPolicy: "foo", @@ -260,7 +260,7 @@ func TestCompareConfigGroup(t *testing.T) { }}), "Should have detected different groups entries") // Different values - assert.False(t, comparable{ + require.False(t, comparable{ ConfigGroup: &cb.ConfigGroup{ Version: 0, ModPolicy: "foo", @@ -277,7 +277,7 @@ func TestCompareConfigGroup(t *testing.T) { }}), "Should have detected fifferent values entries") // Different policies - assert.False(t, comparable{ + require.False(t, comparable{ ConfigGroup: &cb.ConfigGroup{ Version: 0, ModPolicy: "foo", diff --git a/common/configtx/configmap_test.go b/common/configtx/configmap_test.go index 2a3c6b95aa2..1bc2b879cc2 100644 --- a/common/configtx/configmap_test.go +++ b/common/configtx/configmap_test.go @@ -11,11 +11,11 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestBadKey(t *testing.T) { - assert.Error(t, addToMap(comparable{key: "[Label]", path: []string{}}, make(map[string]comparable)), + require.Error(t, addToMap(comparable{key: "[Label]", path: []string{}}, make(map[string]comparable)), "Should have errored on key with illegal characters") } @@ -29,9 +29,9 @@ func TestConfigMapMultiGroup(t *testing.T) { config.Groups["0"].Groups["1"].Groups["2.2"].Values["Value"] = &cb.ConfigValue{} confMap, err := mapConfig(config, "Channel") - assert.NoError(t, err) - assert.Equal(t, []string{"Channel", "0", "1", "2.1"}, confMap["[Value] /Channel/0/1/2.1/Value"].path) - assert.Equal(t, []string{"Channel", "0", "1", "2.2"}, confMap["[Value] /Channel/0/1/2.2/Value"].path) + require.NoError(t, err) + require.Equal(t, []string{"Channel", "0", "1", "2.1"}, confMap["[Value] /Channel/0/1/2.1/Value"].path) + require.Equal(t, []string{"Channel", "0", "1", "2.2"}, confMap["[Value] /Channel/0/1/2.2/Value"].path) } func TestConfigMap(t *testing.T) { @@ -44,23 +44,23 @@ func TestConfigMap(t *testing.T) { config.Groups["0DeepGroup"].Groups["1DeepGroup"].Values["2DeepValue"] = &cb.ConfigValue{} confMap, err := mapConfig(config, "Channel") - assert.NoError(t, err, "Should not have errored building map") + require.NoError(t, err, "Should not have errored building map") - assert.Len(t, confMap, 7, "There should be 7 entries in the config map") + require.Len(t, confMap, 7, "There should be 7 entries in the config map") - assert.Equal(t, comparable{key: "Channel", path: []string{}, ConfigGroup: config}, + require.Equal(t, comparable{key: "Channel", path: []string{}, ConfigGroup: config}, confMap["[Group] /Channel"]) - assert.Equal(t, comparable{key: "0DeepGroup", path: []string{"Channel"}, ConfigGroup: config.Groups["0DeepGroup"]}, + require.Equal(t, comparable{key: "0DeepGroup", path: []string{"Channel"}, ConfigGroup: config.Groups["0DeepGroup"]}, confMap["[Group] /Channel/0DeepGroup"]) - assert.Equal(t, comparable{key: "0DeepValue1", path: []string{"Channel"}, ConfigValue: config.Values["0DeepValue1"]}, + require.Equal(t, comparable{key: "0DeepValue1", path: []string{"Channel"}, ConfigValue: config.Values["0DeepValue1"]}, confMap["[Value] /Channel/0DeepValue1"]) - assert.Equal(t, comparable{key: "0DeepValue2", path: []string{"Channel"}, ConfigValue: config.Values["0DeepValue2"]}, + require.Equal(t, comparable{key: "0DeepValue2", path: []string{"Channel"}, ConfigValue: config.Values["0DeepValue2"]}, confMap["[Value] /Channel/0DeepValue2"]) - assert.Equal(t, comparable{key: "1DeepPolicy", path: []string{"Channel", "0DeepGroup"}, ConfigPolicy: config.Groups["0DeepGroup"].Policies["1DeepPolicy"]}, + require.Equal(t, comparable{key: "1DeepPolicy", path: []string{"Channel", "0DeepGroup"}, ConfigPolicy: config.Groups["0DeepGroup"].Policies["1DeepPolicy"]}, confMap["[Policy] /Channel/0DeepGroup/1DeepPolicy"]) - assert.Equal(t, comparable{key: "1DeepGroup", path: []string{"Channel", "0DeepGroup"}, ConfigGroup: config.Groups["0DeepGroup"].Groups["1DeepGroup"]}, + require.Equal(t, comparable{key: "1DeepGroup", path: []string{"Channel", "0DeepGroup"}, ConfigGroup: config.Groups["0DeepGroup"].Groups["1DeepGroup"]}, confMap["[Group] /Channel/0DeepGroup/1DeepGroup"]) - assert.Equal(t, comparable{key: "2DeepValue", path: []string{"Channel", "0DeepGroup", "1DeepGroup"}, ConfigValue: config.Groups["0DeepGroup"].Groups["1DeepGroup"].Values["2DeepValue"]}, + require.Equal(t, comparable{key: "2DeepValue", path: []string{"Channel", "0DeepGroup", "1DeepGroup"}, ConfigValue: config.Groups["0DeepGroup"].Groups["1DeepGroup"].Values["2DeepValue"]}, confMap["[Value] /Channel/0DeepGroup/1DeepGroup/2DeepValue"]) } @@ -74,15 +74,15 @@ func TestMapConfigBack(t *testing.T) { config.Groups["0DeepGroup"].Groups["1DeepGroup"].Values["2DeepValue"] = &cb.ConfigValue{} confMap, err := mapConfig(config, "Channel") - assert.NoError(t, err, "Should not have errored building map") + require.NoError(t, err, "Should not have errored building map") newConfig, err := configMapToConfig(confMap, "Channel") - assert.NoError(t, err, "Should not have errored building config") + require.NoError(t, err, "Should not have errored building config") - assert.Equal(t, config, newConfig, "Should have transformed config map back from confMap") + require.Equal(t, config, newConfig, "Should have transformed config map back from confMap") newConfig.Values["Value"] = &cb.ConfigValue{} - assert.NotEqual(t, config, newConfig, "Mutating the new config should not mutate the existing config") + require.NotEqual(t, config, newConfig, "Mutating the new config should not mutate the existing config") } func TestHackInmapConfigBack(t *testing.T) { @@ -99,21 +99,21 @@ func TestHackInmapConfigBack(t *testing.T) { config.Groups["Application"].Policies["ApplicationValue"] = &cb.ConfigPolicy{} confMap, err := mapConfig(config, "Channel") - assert.NoError(t, err, "Should not have errored building map") + require.NoError(t, err, "Should not have errored building map") newConfig, err := configMapToConfig(confMap, "Channel") - assert.NoError(t, err, "Should not have errored building config") + require.NoError(t, err, "Should not have errored building config") var checkModPolicy func(cg *cb.ConfigGroup) checkModPolicy = func(cg *cb.ConfigGroup) { - assert.NotEmpty(t, cg.ModPolicy, "empty group mod_policy") + require.NotEmpty(t, cg.ModPolicy, "empty group mod_policy") for key, value := range cg.Values { - assert.NotEmpty(t, value.ModPolicy, "empty value mod_policy %s", key) + require.NotEmpty(t, value.ModPolicy, "empty value mod_policy %s", key) } for key, policy := range cg.Policies { - assert.NotEmpty(t, policy.ModPolicy, "empty policy mod_policy %s", key) + require.NotEmpty(t, policy.ModPolicy, "empty policy mod_policy %s", key) } for _, group := range cg.Groups { diff --git a/common/configtx/update_test.go b/common/configtx/update_test.go index f91a0663c93..a1f781eaed1 100644 --- a/common/configtx/update_test.go +++ b/common/configtx/update_test.go @@ -14,7 +14,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" mockpolicies "github.com/hyperledger/fabric/common/configtx/mock" "github.com/hyperledger/fabric/common/policies" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestReadSetNotPresent(t *testing.T) { @@ -29,7 +29,7 @@ func TestReadSetNotPresent(t *testing.T) { readSet["1"] = comparable{} readSet["3"] = comparable{} - assert.Error(t, vi.verifyReadSet(readSet), "ReadSet contained '3', not in config") + require.Error(t, vi.verifyReadSet(readSet), "ReadSet contained '3', not in config") } func TestReadSetBackVersioned(t *testing.T) { @@ -43,7 +43,7 @@ func TestReadSetBackVersioned(t *testing.T) { readSet := make(map[string]comparable) readSet["1"] = comparable{} - assert.Error(t, vi.verifyReadSet(readSet), "ReadSet contained '1', at old version") + require.Error(t, vi.verifyReadSet(readSet), "ReadSet contained '1', at old version") } func TestComputeDeltaSet(t *testing.T) { @@ -57,9 +57,9 @@ func TestComputeDeltaSet(t *testing.T) { writeSet["3"] = comparable{} result := computeDeltaSet(readSet, writeSet) - assert.Len(t, result, 2, "Should have two values in the delta set") - assert.NotNil(t, result["2"], "Element had version increased") - assert.NotNil(t, result["3"], "Element was new") + require.Len(t, result, 2, "Should have two values in the delta set") + require.NotNil(t, result["2"], "Element had version increased") + require.NotNil(t, result["3"], "Element was new") } func TestVerifyDeltaSet(t *testing.T) { @@ -77,7 +77,7 @@ func TestVerifyDeltaSet(t *testing.T) { deltaSet["foo"] = comparable{ConfigValue: &cb.ConfigValue{Version: 1, ModPolicy: "foo"}} - assert.NoError(t, vi.verifyDeltaSet(deltaSet, nil), "Good update") + require.NoError(t, vi.verifyDeltaSet(deltaSet, nil), "Good update") }) t.Run("Bad mod policy", func(t *testing.T) { @@ -85,7 +85,7 @@ func TestVerifyDeltaSet(t *testing.T) { deltaSet["foo"] = comparable{ConfigValue: &cb.ConfigValue{Version: 1}} - assert.Regexp(t, "invalid mod_policy for element", vi.verifyDeltaSet(deltaSet, nil)) + require.Regexp(t, "invalid mod_policy for element", vi.verifyDeltaSet(deltaSet, nil)) }) t.Run("Big Skip", func(t *testing.T) { @@ -93,7 +93,7 @@ func TestVerifyDeltaSet(t *testing.T) { deltaSet["foo"] = comparable{ConfigValue: &cb.ConfigValue{Version: 2, ModPolicy: "foo"}} - assert.Error(t, vi.verifyDeltaSet(deltaSet, nil), "Version skip from 0 to 2") + require.Error(t, vi.verifyDeltaSet(deltaSet, nil), "Version skip from 0 to 2") }) t.Run("New item high version", func(t *testing.T) { @@ -101,7 +101,7 @@ func TestVerifyDeltaSet(t *testing.T) { deltaSet["bar"] = comparable{ConfigValue: &cb.ConfigValue{Version: 1, ModPolicy: "foo"}} - assert.Error(t, vi.verifyDeltaSet(deltaSet, nil), "New key not at version 0") + require.Error(t, vi.verifyDeltaSet(deltaSet, nil), "New key not at version 0") }) t.Run("Policy evalaution to false", func(t *testing.T) { @@ -112,13 +112,13 @@ func TestVerifyDeltaSet(t *testing.T) { fakePolicy.EvaluateSignedDataReturns(fmt.Errorf("MockErr-fakePolicy.Evaluate-1557327297")) vi.pm.(*mockpolicies.PolicyManager).GetPolicyReturns(fakePolicy, true) - assert.Error(t, vi.verifyDeltaSet(deltaSet, nil), "Policy evaluation should have failed") + require.Error(t, vi.verifyDeltaSet(deltaSet, nil), "Policy evaluation should have failed") }) t.Run("Empty delta set", func(t *testing.T) { err := (&ValidatorImpl{}).verifyDeltaSet(map[string]comparable{}, nil) - assert.Error(t, err, "Empty delta set should be rejected") - assert.Contains(t, err.Error(), "delta set was empty -- update would have no effect") + require.Error(t, err, "Empty delta set should be rejected") + require.Contains(t, err.Error(), "delta set was empty -- update would have no effect") }) } @@ -165,8 +165,8 @@ func TestPolicyForItem(t *testing.T) { ModPolicy: "rootPolicy", }, }) - assert.True(t, ok) - assert.Equal(t, policy, fakeRootPolicy, "Should have found relative policy off the root manager") + require.True(t, ok) + require.Equal(t, policy, fakeRootPolicy, "Should have found relative policy off the root manager") }) t.Run("Nonexistent manager", func(t *testing.T) { @@ -176,7 +176,7 @@ func TestPolicyForItem(t *testing.T) { ModPolicy: "rootPolicy", }, }) - assert.False(t, ok, "Should not have found rootPolicy off a nonexistent manager") + require.False(t, ok, "Should not have found rootPolicy off a nonexistent manager") }) t.Run("Foo manager", func(t *testing.T) { @@ -186,8 +186,8 @@ func TestPolicyForItem(t *testing.T) { ModPolicy: "foo", }, }) - assert.True(t, ok) - assert.Equal(t, policy, fakeFooPolicy, "Should have found relative foo policy off the foo manager") + require.True(t, ok) + require.Equal(t, policy, fakeFooPolicy, "Should have found relative foo policy off the foo manager") }) t.Run("Foo group", func(t *testing.T) { @@ -198,8 +198,8 @@ func TestPolicyForItem(t *testing.T) { ModPolicy: "foo", }, }) - assert.True(t, ok) - assert.Equal(t, policy, fakeFooPolicy, "Should have found relative foo policy for foo group") + require.True(t, ok) + require.Equal(t, policy, fakeFooPolicy, "Should have found relative foo policy for foo group") }) t.Run("Root group manager", func(t *testing.T) { @@ -210,25 +210,25 @@ func TestPolicyForItem(t *testing.T) { ModPolicy: "rootPolicy", }, }) - assert.True(t, ok) - assert.Equal(t, policy, fakeRootPolicy, "Should have found relative policy off the root manager") + require.True(t, ok) + require.Equal(t, policy, fakeRootPolicy, "Should have found relative policy off the root manager") }) } func TestValidateModPolicy(t *testing.T) { t.Run("Valid", func(t *testing.T) { - assert.Nil(t, validateModPolicy("/foo/bar")) + require.Nil(t, validateModPolicy("/foo/bar")) }) t.Run("Empty", func(t *testing.T) { - assert.Regexp(t, "mod_policy not set", validateModPolicy("")) + require.Regexp(t, "mod_policy not set", validateModPolicy("")) }) t.Run("InvalidFirstChar", func(t *testing.T) { - assert.Regexp(t, "path element at 0 is invalid", validateModPolicy("^foo")) + require.Regexp(t, "path element at 0 is invalid", validateModPolicy("^foo")) }) t.Run("InvalidRootPath", func(t *testing.T) { - assert.Regexp(t, "path element at 0 is invalid", validateModPolicy("/")) + require.Regexp(t, "path element at 0 is invalid", validateModPolicy("/")) }) t.Run("InvalidSubPath", func(t *testing.T) { - assert.Regexp(t, "path element at 1 is invalid", validateModPolicy("foo//bar")) + require.Regexp(t, "path element at 1 is invalid", validateModPolicy("foo//bar")) }) } diff --git a/common/configtx/util_test.go b/common/configtx/util_test.go index 74cae717633..01c009defc0 100644 --- a/common/configtx/util_test.go +++ b/common/configtx/util_test.go @@ -12,7 +12,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // TestValidConfigID checks that the constraints on channel IDs are enforced properly @@ -121,20 +121,20 @@ func TestUnmarshalConfig(t *testing.T) { t.Run("GoodUnmarshalNormal", func(t *testing.T) { _, err := UnmarshalConfig(goodConfigBytes) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("GoodUnmarshalOrpanic", func(t *testing.T) { - assert.NotPanics(t, func() { UnmarshalConfigOrPanic(goodConfigBytes) }) + require.NotPanics(t, func() { UnmarshalConfigOrPanic(goodConfigBytes) }) }) t.Run("BadUnmarshalNormal", func(t *testing.T) { _, err := UnmarshalConfig(badConfigBytes) - assert.Error(t, err) + require.Error(t, err) }) t.Run("BadUnmarshalOrpanic", func(t *testing.T) { - assert.Panics(t, func() { UnmarshalConfigOrPanic(badConfigBytes) }) + require.Panics(t, func() { UnmarshalConfigOrPanic(badConfigBytes) }) }) } @@ -144,20 +144,20 @@ func TestUnmarshalConfigEnvelope(t *testing.T) { t.Run("GoodUnmarshalNormal", func(t *testing.T) { _, err := UnmarshalConfigEnvelope(goodConfigEnvelopeBytes) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("GoodUnmarshalOrpanic", func(t *testing.T) { - assert.NotPanics(t, func() { UnmarshalConfigEnvelopeOrPanic(goodConfigEnvelopeBytes) }) + require.NotPanics(t, func() { UnmarshalConfigEnvelopeOrPanic(goodConfigEnvelopeBytes) }) }) t.Run("BadUnmarshalNormal", func(t *testing.T) { _, err := UnmarshalConfigEnvelope(badConfigEnvelopeBytes) - assert.Error(t, err) + require.Error(t, err) }) t.Run("BadUnmarshalOrpanic", func(t *testing.T) { - assert.Panics(t, func() { UnmarshalConfigEnvelopeOrPanic(badConfigEnvelopeBytes) }) + require.Panics(t, func() { UnmarshalConfigEnvelopeOrPanic(badConfigEnvelopeBytes) }) }) } @@ -167,20 +167,20 @@ func TestUnmarshalConfigUpdate(t *testing.T) { t.Run("GoodUnmarshalNormal", func(t *testing.T) { _, err := UnmarshalConfigUpdate(goodConfigUpdateBytes) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("GoodUnmarshalOrpanic", func(t *testing.T) { - assert.NotPanics(t, func() { UnmarshalConfigUpdateOrPanic(goodConfigUpdateBytes) }) + require.NotPanics(t, func() { UnmarshalConfigUpdateOrPanic(goodConfigUpdateBytes) }) }) t.Run("BadUnmarshalNormal", func(t *testing.T) { _, err := UnmarshalConfigUpdate(badConfigUpdateBytes) - assert.Error(t, err) + require.Error(t, err) }) t.Run("BadUnmarshalOrpanic", func(t *testing.T) { - assert.Panics(t, func() { UnmarshalConfigUpdateOrPanic(badConfigUpdateBytes) }) + require.Panics(t, func() { UnmarshalConfigUpdateOrPanic(badConfigUpdateBytes) }) }) } @@ -190,19 +190,19 @@ func TestUnmarshalConfigUpdateEnvelope(t *testing.T) { t.Run("GoodUnmarshalNormal", func(t *testing.T) { _, err := UnmarshalConfigUpdateEnvelope(goodConfigUpdateEnvelopeBytes) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("GoodUnmarshalOrpanic", func(t *testing.T) { - assert.NotPanics(t, func() { UnmarshalConfigUpdateEnvelopeOrPanic(goodConfigUpdateEnvelopeBytes) }) + require.NotPanics(t, func() { UnmarshalConfigUpdateEnvelopeOrPanic(goodConfigUpdateEnvelopeBytes) }) }) t.Run("BadUnmarshalNormal", func(t *testing.T) { _, err := UnmarshalConfigUpdateEnvelope(badConfigUpdateEnvelopeBytes) - assert.Error(t, err) + require.Error(t, err) }) t.Run("BadUnmarshalOrpanic", func(t *testing.T) { - assert.Panics(t, func() { UnmarshalConfigUpdateEnvelopeOrPanic(badConfigUpdateEnvelopeBytes) }) + require.Panics(t, func() { UnmarshalConfigUpdateEnvelopeOrPanic(badConfigUpdateEnvelopeBytes) }) }) } diff --git a/common/configtx/validator_test.go b/common/configtx/validator_test.go index 554fb226198..7c736d7bbd0 100644 --- a/common/configtx/validator_test.go +++ b/common/configtx/validator_test.go @@ -15,7 +15,7 @@ import ( mockpolicies "github.com/hyperledger/fabric/common/configtx/mock" "github.com/hyperledger/fabric/common/policies" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mock/policy_manager.go --fake-name PolicyManager . policyManager @@ -95,7 +95,7 @@ func makeConfigUpdateEnvelope(channelID string, readSet, writeSet *cb.ConfigGrou func TestEmptyChannel(t *testing.T) { _, err := NewValidatorImpl("foo", &cb.Config{}, "foonamespace", defaultPolicyManager()) - assert.Error(t, err) + require.Error(t, err) } // TestDifferentChannelID tests that a config update for a different channel ID fails @@ -134,7 +134,7 @@ func TestOldConfigReplay(t *testing.T) { _, err = vi.ProposeConfigUpdate(newConfig) - assert.EqualError(t, err, "error authorizing update: error validating DeltaSet: attempt to set key [Value] /foonamespace/foo to version 0, but key is at version 0") + require.EqualError(t, err, "error authorizing update: error validating DeltaSet: attempt to set key [Value] /foonamespace/foo to version 0, but key is at version 0") } // TestValidConfigChange tests the happy path of updating a config value with no defaultModificationPolicy @@ -182,7 +182,7 @@ func TestConfigChangeRegressedSequence(t *testing.T) { ) _, err = vi.ProposeConfigUpdate(newConfig) - assert.EqualError(t, err, "error authorizing update: error validating ReadSet: proposed update requires that key [Value] /foonamespace/foo be at version 0, but it is currently at version 1") + require.EqualError(t, err, "error authorizing update: error validating ReadSet: proposed update requires that key [Value] /foonamespace/foo be at version 0, but it is currently at version 1") } // TestConfigChangeOldSequence tests to make sure that a new config cannot roll back one of the @@ -209,7 +209,7 @@ func TestConfigChangeOldSequence(t *testing.T) { _, err = vi.ProposeConfigUpdate(newConfig) - assert.EqualError(t, err, "error authorizing update: error validating DeltaSet: attempted to set key [Value] /foonamespace/bar to version 1, but key does not exist") + require.EqualError(t, err, "error authorizing update: error validating DeltaSet: attempted to set key [Value] /foonamespace/bar to version 1, but key does not exist") } // TestConfigPartialUpdate tests to make sure that a new config can set only part @@ -235,7 +235,7 @@ func TestConfigPartialUpdate(t *testing.T) { ) _, err = vi.ProposeConfigUpdate(newConfig) - assert.NoError(t, err, "Should have allowed partial update") + require.NoError(t, err, "Should have allowed partial update") } // TestEmptyConfigUpdate tests to make sure that an empty config is rejected as an update @@ -253,7 +253,7 @@ func TestEmptyConfigUpdate(t *testing.T) { newConfig := &cb.Envelope{} _, err = vi.ProposeConfigUpdate(newConfig) - assert.EqualError(t, err, "error converting envelope to config update: envelope must have a Header") + require.EqualError(t, err, "error converting envelope to config update: envelope must have a Header") } // TestSilentConfigModification tests to make sure that even if a validly signed new config for an existing sequence number @@ -283,7 +283,7 @@ func TestSilentConfigModification(t *testing.T) { ) _, err = vi.ProposeConfigUpdate(newConfig) - assert.EqualError(t, err, "error authorizing update: error validating DeltaSet: attempt to set key [Value] /foonamespace/foo to version 0, but key is at version 0") + require.EqualError(t, err, "error authorizing update: error validating DeltaSet: attempt to set key [Value] /foonamespace/foo to version 0, but key is at version 0") } // TestConfigChangeViolatesPolicy checks to make sure that if policy rejects the validation of a config item that @@ -307,7 +307,7 @@ func TestConfigChangeViolatesPolicy(t *testing.T) { newConfig := makeConfigUpdateEnvelope(defaultChannel, makeConfigSet(), makeConfigSet(makeConfigPair("foo", "foo", 1, []byte("foo")))) _, err = vi.ProposeConfigUpdate(newConfig) - assert.EqualError(t, err, "error authorizing update: error validating DeltaSet: policy for [Value] /foonamespace/foo not satisfied: err") + require.EqualError(t, err, "error authorizing update: error validating DeltaSet: policy for [Value] /foonamespace/foo not satisfied: err") } // TestUnchangedConfigViolatesPolicy checks to make sure that existing config items are not revalidated against their modification policies @@ -362,20 +362,20 @@ func TestInvalidProposal(t *testing.T) { newConfig := makeConfigUpdateEnvelope(defaultChannel, makeConfigSet(), makeConfigSet(makeConfigPair("foo", "foo", 1, []byte("foo")))) _, err = vi.ProposeConfigUpdate(newConfig) - assert.EqualError(t, err, "error authorizing update: error validating DeltaSet: policy for [Value] /foonamespace/foo not satisfied: err") + require.EqualError(t, err, "error authorizing update: error validating DeltaSet: policy for [Value] /foonamespace/foo not satisfied: err") } func TestValidateErrors(t *testing.T) { t.Run("TestNilConfigEnv", func(t *testing.T) { err := (&ValidatorImpl{}).Validate(nil) - assert.Error(t, err) - assert.Regexp(t, "config envelope is nil", err.Error()) + require.Error(t, err) + require.Regexp(t, "config envelope is nil", err.Error()) }) t.Run("TestNilConfig", func(t *testing.T) { err := (&ValidatorImpl{}).Validate(&cb.ConfigEnvelope{}) - assert.Error(t, err) - assert.Regexp(t, "config envelope has nil config", err.Error()) + require.Error(t, err) + require.Regexp(t, "config envelope has nil config", err.Error()) }) t.Run("TestSequenceSkip", func(t *testing.T) { @@ -384,47 +384,47 @@ func TestValidateErrors(t *testing.T) { Sequence: 2, }, }) - assert.Error(t, err) - assert.Regexp(t, "config currently at sequence 0", err.Error()) + require.Error(t, err) + require.Regexp(t, "config currently at sequence 0", err.Error()) }) } func TestConstructionErrors(t *testing.T) { t.Run("NilConfig", func(t *testing.T) { v, err := NewValidatorImpl("test", nil, "foonamespace", &mockpolicies.PolicyManager{}) - assert.Nil(t, v) - assert.Error(t, err) - assert.Regexp(t, "nil config parameter", err.Error()) + require.Nil(t, v) + require.Error(t, err) + require.Regexp(t, "nil config parameter", err.Error()) }) t.Run("NilChannelGroup", func(t *testing.T) { v, err := NewValidatorImpl("test", &cb.Config{}, "foonamespace", &mockpolicies.PolicyManager{}) - assert.Nil(t, v) - assert.Error(t, err) - assert.Regexp(t, "nil channel group", err.Error()) + require.Nil(t, v) + require.Error(t, err) + require.Regexp(t, "nil channel group", err.Error()) }) t.Run("BadChannelID", func(t *testing.T) { v, err := NewValidatorImpl("*&$#@*&@$#*&", &cb.Config{ChannelGroup: &cb.ConfigGroup{}}, "foonamespace", &mockpolicies.PolicyManager{}) - assert.Nil(t, v) - assert.Error(t, err) - assert.Regexp(t, "bad channel ID", err.Error()) - assert.EqualError(t, err, "bad channel ID: '*&$#@*&@$#*&' contains illegal characters") + require.Nil(t, v) + require.Error(t, err) + require.Regexp(t, "bad channel ID", err.Error()) + require.EqualError(t, err, "bad channel ID: '*&$#@*&@$#*&' contains illegal characters") }) t.Run("EmptyChannelID", func(t *testing.T) { v, err := NewValidatorImpl("", &cb.Config{ChannelGroup: &cb.ConfigGroup{}}, "foonamespace", &mockpolicies.PolicyManager{}) - assert.Nil(t, v) - assert.Error(t, err) - assert.Regexp(t, "bad channel ID", err.Error()) - assert.EqualError(t, err, "bad channel ID: channel ID illegal, cannot be empty") + require.Nil(t, v) + require.Error(t, err) + require.Regexp(t, "bad channel ID", err.Error()) + require.EqualError(t, err, "bad channel ID: channel ID illegal, cannot be empty") }) t.Run("MaxLengthChannelID", func(t *testing.T) { maxChannelID := strings.Repeat("a", 250) v, err := NewValidatorImpl(maxChannelID, &cb.Config{ChannelGroup: &cb.ConfigGroup{}}, "foonamespace", &mockpolicies.PolicyManager{}) - assert.Nil(t, v) - assert.Error(t, err) - assert.EqualError(t, err, "bad channel ID: channel ID illegal, cannot be longer than 249") + require.Nil(t, v) + require.Error(t, err) + require.EqualError(t, err, "bad channel ID: channel ID illegal, cannot be longer than 249") }) } diff --git a/common/crypto/expiration_test.go b/common/crypto/expiration_test.go index bd2199001b0..b54009ebefd 100644 --- a/common/crypto/expiration_test.go +++ b/common/crypto/expiration_test.go @@ -17,31 +17,31 @@ import ( "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric/common/crypto/tlsgen" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestX509CertExpiresAt(t *testing.T) { certBytes, err := ioutil.ReadFile(filepath.Join("testdata", "cert.pem")) - assert.NoError(t, err) + require.NoError(t, err) sId := &msp.SerializedIdentity{ IdBytes: certBytes, } serializedIdentity, err := proto.Marshal(sId) - assert.NoError(t, err) + require.NoError(t, err) expirationTime := ExpiresAt(serializedIdentity) - assert.Equal(t, time.Date(2027, 8, 17, 12, 19, 48, 0, time.UTC), expirationTime) + require.Equal(t, time.Date(2027, 8, 17, 12, 19, 48, 0, time.UTC), expirationTime) } func TestX509InvalidCertExpiresAt(t *testing.T) { certBytes, err := ioutil.ReadFile(filepath.Join("testdata", "badCert.pem")) - assert.NoError(t, err) + require.NoError(t, err) sId := &msp.SerializedIdentity{ IdBytes: certBytes, } serializedIdentity, err := proto.Marshal(sId) - assert.NoError(t, err) + require.NoError(t, err) expirationTime := ExpiresAt(serializedIdentity) - assert.True(t, expirationTime.IsZero()) + require.True(t, expirationTime.IsZero()) } func TestIdemixIdentityExpiresAt(t *testing.T) { @@ -51,24 +51,24 @@ func TestIdemixIdentityExpiresAt(t *testing.T) { Ou: []byte("OU1"), } idemixBytes, err := proto.Marshal(idemixId) - assert.NoError(t, err) + require.NoError(t, err) sId := &msp.SerializedIdentity{ IdBytes: idemixBytes, } serializedIdentity, err := proto.Marshal(sId) - assert.NoError(t, err) + require.NoError(t, err) expirationTime := ExpiresAt(serializedIdentity) - assert.True(t, expirationTime.IsZero()) + require.True(t, expirationTime.IsZero()) } func TestInvalidIdentityExpiresAt(t *testing.T) { expirationTime := ExpiresAt([]byte{1, 2, 3}) - assert.True(t, expirationTime.IsZero()) + require.True(t, expirationTime.IsZero()) } func TestTrackExpiration(t *testing.T) { ca, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) now := time.Now() expirationTime := certExpirationTime(ca.CertBytes()) @@ -81,7 +81,7 @@ func TestTrackExpiration(t *testing.T) { twoDaysBeforeExpiration := now.Add(timeUntil2DaysBeforeExpiration) tlsCert, err := ca.NewServerCertKeyPair("127.0.0.1") - assert.NoError(t, err) + require.NoError(t, err) signingIdentity := protoutil.MarshalOrPanic(&msp.SerializedIdentity{ IdBytes: tlsCert.Cert, @@ -157,9 +157,9 @@ func TestTrackExpiration(t *testing.T) { }() fakeTimeAfter := func(duration time.Duration, f func()) *time.Timer { - assert.NotEmpty(t, testCase.expectedWarn) + require.NotEmpty(t, testCase.expectedWarn) threeWeeks := 3 * 7 * 24 * time.Hour - assert.Equal(t, threeWeeks, duration) + require.Equal(t, threeWeeks, duration) f() return nil } @@ -173,9 +173,9 @@ func TestTrackExpiration(t *testing.T) { fakeTimeAfter) if testCase.expectedWarn != "" { - assert.Equal(t, testCase.expectedWarn, formattedWarning) + require.Equal(t, testCase.expectedWarn, formattedWarning) } else { - assert.Empty(t, formattedWarning) + require.Empty(t, formattedWarning) } }) } diff --git a/common/crypto/random_test.go b/common/crypto/random_test.go index 280af12a8c7..d63ac020ac6 100644 --- a/common/crypto/random_test.go +++ b/common/crypto/random_test.go @@ -9,17 +9,17 @@ package crypto import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetRandomBytes(t *testing.T) { _, err := GetRandomBytes(10) - assert.NoError(t, err, "GetRandomBytes fails") + require.NoError(t, err, "GetRandomBytes fails") } func TestGetRandomNonce(t *testing.T) { _, err := GetRandomNonce() - assert.NoError(t, err, "GetRandomNonce fails") + require.NoError(t, err, "GetRandomNonce fails") } diff --git a/common/crypto/tlsgen/ca_test.go b/common/crypto/tlsgen/ca_test.go index e19fcf7b5c4..400bd069fe8 100644 --- a/common/crypto/tlsgen/ca_test.go +++ b/common/crypto/tlsgen/ca_test.go @@ -14,16 +14,16 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) func createTLSService(t *testing.T, ca CA, host string) *grpc.Server { keyPair, err := ca.NewServerCertKeyPair(host) - assert.NoError(t, err) + require.NoError(t, err) cert, err := tls.X509KeyPair(keyPair.Cert, keyPair.Key) - assert.NoError(t, err) + require.NoError(t, err) tlsConf := &tls.Config{ Certificates: []tls.Certificate{cert}, ClientAuth: tls.RequireAndVerifyClientCert, @@ -38,19 +38,19 @@ func TestTLSCA(t *testing.T) { // and corresponding keys that are signed by itself ca, err := NewCA() - assert.NoError(t, err) - assert.NotNil(t, ca) + require.NoError(t, err) + require.NotNil(t, ca) srv := createTLSService(t, ca, "127.0.0.1") listener, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err) + require.NoError(t, err) go srv.Serve(listener) defer srv.Stop() defer listener.Close() probeTLS := func(kp *CertKeyPair) error { cert, err := tls.X509KeyPair(kp.Cert, kp.Key) - assert.NoError(t, err) + require.NoError(t, err) tlsCfg := &tls.Config{ RootCAs: x509.NewCertPool(), Certificates: []tls.Certificate{cert}, @@ -70,15 +70,15 @@ func TestTLSCA(t *testing.T) { // Good path - use a cert key pair generated from the CA // that the TLS server started with kp, err := ca.NewClientCertKeyPair() - assert.NoError(t, err) + require.NoError(t, err) err = probeTLS(kp) - assert.NoError(t, err) + require.NoError(t, err) // Bad path - use a cert key pair generated from a foreign CA foreignCA, _ := NewCA() kp, err = foreignCA.NewClientCertKeyPair() - assert.NoError(t, err) + require.NoError(t, err) err = probeTLS(kp) - assert.Error(t, err) - assert.Contains(t, err.Error(), "context deadline exceeded") + require.Error(t, err) + require.Contains(t, err.Error(), "context deadline exceeded") } diff --git a/common/crypto/tlsgen/key_test.go b/common/crypto/tlsgen/key_test.go index 64bda627c48..ccbe5e7a928 100644 --- a/common/crypto/tlsgen/key_test.go +++ b/common/crypto/tlsgen/key_test.go @@ -12,18 +12,18 @@ import ( "encoding/pem" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestLoadCert(t *testing.T) { pair, err := newCertKeyPair(false, false, "", nil, nil) - assert.NoError(t, err) - assert.NotNil(t, pair) + require.NoError(t, err) + require.NotNil(t, pair) tlsCertPair, err := tls.X509KeyPair(pair.Cert, pair.Key) - assert.NoError(t, err) - assert.NotNil(t, tlsCertPair) + require.NoError(t, err) + require.NotNil(t, tlsCertPair) block, _ := pem.Decode(pair.Cert) cert, err := x509.ParseCertificate(block.Bytes) - assert.NoError(t, err) - assert.NotNil(t, cert) + require.NoError(t, err) + require.NotNil(t, cert) } diff --git a/common/flogging/core_test.go b/common/flogging/core_test.go index 3ec4e61f759..bac868d1b05 100644 --- a/common/flogging/core_test.go +++ b/common/flogging/core_test.go @@ -13,7 +13,7 @@ import ( "github.com/hyperledger/fabric/common/flogging" "github.com/hyperledger/fabric/common/flogging/mock" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/buffer" "go.uber.org/zap/zapcore" @@ -25,7 +25,7 @@ func TestCoreWith(t *testing.T) { Observer: &mock.Observer{}, } clone := core.With([]zapcore.Field{zap.String("key", "value")}) - assert.Equal(t, core, clone) + require.Equal(t, core, clone) jsonEncoder := zapcore.NewJSONEncoder(zapcore.EncoderConfig{}) consoleEncoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{}) @@ -38,19 +38,19 @@ func TestCoreWith(t *testing.T) { decorated := core.With([]zapcore.Field{zap.String("key", "value")}) // verify the objects differ - assert.NotEqual(t, core, decorated) + require.NotEqual(t, core, decorated) // verify the objects only differ by the encoded fields jsonEncoder.AddString("key", "value") consoleEncoder.AddString("key", "value") - assert.Equal(t, core, decorated) + require.Equal(t, core, decorated) } func TestCoreCheck(t *testing.T) { var enabledArgs []zapcore.Level levels := &flogging.LoggerLevels{} err := levels.ActivateSpec("warning") - assert.NoError(t, err) + require.NoError(t, err) core := &flogging.Core{ LevelEnabler: zap.LevelEnablerFunc(func(l zapcore.Level) bool { enabledArgs = append(enabledArgs, l) @@ -61,15 +61,15 @@ func TestCoreCheck(t *testing.T) { // not enabled ce := core.Check(zapcore.Entry{Level: zapcore.DebugLevel}, nil) - assert.Nil(t, ce) + require.Nil(t, ce) ce = core.Check(zapcore.Entry{Level: zapcore.InfoLevel}, nil) - assert.Nil(t, ce) + require.Nil(t, ce) // enabled ce = core.Check(zapcore.Entry{Level: zapcore.WarnLevel}, nil) - assert.NotNil(t, ce) + require.NotNil(t, ce) - assert.Equal(t, enabledArgs, []zapcore.Level{zapcore.DebugLevel, zapcore.InfoLevel, zapcore.WarnLevel}) + require.Equal(t, enabledArgs, []zapcore.Level{zapcore.DebugLevel, zapcore.InfoLevel, zapcore.WarnLevel}) } type sw struct { @@ -113,12 +113,12 @@ func TestCoreWrite(t *testing.T) { Message: "this is a message", } err := core.Write(entry, nil) - assert.NoError(t, err) - assert.Equal(t, "INFO\tthis is a message\n", output.String()) + require.NoError(t, err) + require.Equal(t, "INFO\tthis is a message\n", output.String()) output.writeErr = errors.New("super-loose") err = core.Write(entry, nil) - assert.EqualError(t, err, "super-loose") + require.EqualError(t, err, "super-loose") } func TestCoreWriteSync(t *testing.T) { @@ -139,16 +139,16 @@ func TestCoreWriteSync(t *testing.T) { Message: "no bugs for me", } err := core.Write(entry, nil) - assert.NoError(t, err) - assert.False(t, output.syncCalled) + require.NoError(t, err) + require.False(t, output.syncCalled) entry = zapcore.Entry{ Level: zapcore.PanicLevel, Message: "gah!", } err = core.Write(entry, nil) - assert.NoError(t, err) - assert.True(t, output.syncCalled) + require.NoError(t, err) + require.True(t, output.syncCalled) } type brokenEncoder struct{ zapcore.Encoder } @@ -172,7 +172,7 @@ func TestCoreWriteEncodeFail(t *testing.T) { Message: "no bugs for me", } err := core.Write(entry, nil) - assert.EqualError(t, err, "broken encoder") + require.EqualError(t, err, "broken encoder") } func TestCoreSync(t *testing.T) { @@ -182,12 +182,12 @@ func TestCoreSync(t *testing.T) { } err := core.Sync() - assert.NoError(t, err) - assert.True(t, syncWriter.syncCalled) + require.NoError(t, err) + require.True(t, syncWriter.syncCalled) syncWriter.syncErr = errors.New("bummer") err = core.Sync() - assert.EqualError(t, err, "bummer") + require.EqualError(t, err, "bummer") } func TestObserverCheck(t *testing.T) { @@ -200,7 +200,7 @@ func TestObserverCheck(t *testing.T) { levels := &flogging.LoggerLevels{} err := levels.ActivateSpec("debug") - assert.NoError(t, err) + require.NoError(t, err) core := &flogging.Core{ LevelEnabler: zap.LevelEnablerFunc(func(l zapcore.Level) bool { return true }), Levels: levels, @@ -208,12 +208,12 @@ func TestObserverCheck(t *testing.T) { } ce := core.Check(entry, checkedEntry) - assert.Exactly(t, ce, checkedEntry) + require.Exactly(t, ce, checkedEntry) - assert.Equal(t, 1, observer.CheckCallCount()) + require.Equal(t, 1, observer.CheckCallCount()) observedEntry, observedCE := observer.CheckArgsForCall(0) - assert.Equal(t, entry, observedEntry) - assert.Equal(t, ce, observedCE) + require.Equal(t, entry, observedEntry) + require.Equal(t, ce, observedCE) } func TestObserverWriteEntry(t *testing.T) { @@ -229,7 +229,7 @@ func TestObserverWriteEntry(t *testing.T) { levels := &flogging.LoggerLevels{} err := levels.ActivateSpec("debug") - assert.NoError(t, err) + require.NoError(t, err) selector := &sw{} output := &sw{} core := &flogging.Core{ @@ -244,10 +244,10 @@ func TestObserverWriteEntry(t *testing.T) { } err = core.Write(entry, fields) - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, 1, observer.WriteEntryCallCount()) + require.Equal(t, 1, observer.WriteEntryCallCount()) observedEntry, observedFields := observer.WriteEntryArgsForCall(0) - assert.Equal(t, entry, observedEntry) - assert.Equal(t, fields, observedFields) + require.Equal(t, entry, observedEntry) + require.Equal(t, fields, observedFields) } diff --git a/common/flogging/fabenc/color_test.go b/common/flogging/fabenc/color_test.go index 24d4255a361..db3bb17d642 100644 --- a/common/flogging/fabenc/color_test.go +++ b/common/flogging/fabenc/color_test.go @@ -10,31 +10,31 @@ import ( "testing" "github.com/hyperledger/fabric/common/flogging/fabenc" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestReset(t *testing.T) { - assert.Equal(t, fabenc.ResetColor(), "\x1b[0m") + require.Equal(t, fabenc.ResetColor(), "\x1b[0m") } func TestNormalColors(t *testing.T) { - assert.Equal(t, fabenc.ColorBlack.Normal(), "\x1b[30m") - assert.Equal(t, fabenc.ColorRed.Normal(), "\x1b[31m") - assert.Equal(t, fabenc.ColorGreen.Normal(), "\x1b[32m") - assert.Equal(t, fabenc.ColorYellow.Normal(), "\x1b[33m") - assert.Equal(t, fabenc.ColorBlue.Normal(), "\x1b[34m") - assert.Equal(t, fabenc.ColorMagenta.Normal(), "\x1b[35m") - assert.Equal(t, fabenc.ColorCyan.Normal(), "\x1b[36m") - assert.Equal(t, fabenc.ColorWhite.Normal(), "\x1b[37m") + require.Equal(t, fabenc.ColorBlack.Normal(), "\x1b[30m") + require.Equal(t, fabenc.ColorRed.Normal(), "\x1b[31m") + require.Equal(t, fabenc.ColorGreen.Normal(), "\x1b[32m") + require.Equal(t, fabenc.ColorYellow.Normal(), "\x1b[33m") + require.Equal(t, fabenc.ColorBlue.Normal(), "\x1b[34m") + require.Equal(t, fabenc.ColorMagenta.Normal(), "\x1b[35m") + require.Equal(t, fabenc.ColorCyan.Normal(), "\x1b[36m") + require.Equal(t, fabenc.ColorWhite.Normal(), "\x1b[37m") } func TestBoldColors(t *testing.T) { - assert.Equal(t, fabenc.ColorBlack.Bold(), "\x1b[30;1m") - assert.Equal(t, fabenc.ColorRed.Bold(), "\x1b[31;1m") - assert.Equal(t, fabenc.ColorGreen.Bold(), "\x1b[32;1m") - assert.Equal(t, fabenc.ColorYellow.Bold(), "\x1b[33;1m") - assert.Equal(t, fabenc.ColorBlue.Bold(), "\x1b[34;1m") - assert.Equal(t, fabenc.ColorMagenta.Bold(), "\x1b[35;1m") - assert.Equal(t, fabenc.ColorCyan.Bold(), "\x1b[36;1m") - assert.Equal(t, fabenc.ColorWhite.Bold(), "\x1b[37;1m") + require.Equal(t, fabenc.ColorBlack.Bold(), "\x1b[30;1m") + require.Equal(t, fabenc.ColorRed.Bold(), "\x1b[31;1m") + require.Equal(t, fabenc.ColorGreen.Bold(), "\x1b[32;1m") + require.Equal(t, fabenc.ColorYellow.Bold(), "\x1b[33;1m") + require.Equal(t, fabenc.ColorBlue.Bold(), "\x1b[34;1m") + require.Equal(t, fabenc.ColorMagenta.Bold(), "\x1b[35;1m") + require.Equal(t, fabenc.ColorCyan.Bold(), "\x1b[36;1m") + require.Equal(t, fabenc.ColorWhite.Bold(), "\x1b[37;1m") } diff --git a/common/flogging/fabenc/encoder_test.go b/common/flogging/fabenc/encoder_test.go index 199f94c9e36..0fc98f7d690 100644 --- a/common/flogging/fabenc/encoder_test.go +++ b/common/flogging/fabenc/encoder_test.go @@ -14,7 +14,7 @@ import ( "time" "github.com/hyperledger/fabric/common/flogging/fabenc" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/buffer" "go.uber.org/zap/zapcore" @@ -40,7 +40,7 @@ func TestEncodeEntry(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { formatters, err := fabenc.ParseFormat(tc.spec) - assert.NoError(t, err) + require.NoError(t, err) enc := fabenc.NewFormatEncoder(formatters...) @@ -57,8 +57,8 @@ func TestEncodeEntry(t *testing.T) { }, tc.fields, ) - assert.NoError(t, err) - assert.Equal(t, tc.expected, line.String()) + require.NoError(t, err) + require.Equal(t, tc.expected, line.String()) }) } } @@ -74,11 +74,11 @@ func TestEncodeFieldsFailed(t *testing.T) { enc.Encoder = &brokenEncoder{} _, err := enc.EncodeEntry(zapcore.Entry{}, nil) - assert.EqualError(t, err, "broken encoder") + require.EqualError(t, err, "broken encoder") } func TestFormatEncoderClone(t *testing.T) { enc := fabenc.NewFormatEncoder() cloned := enc.Clone() - assert.Equal(t, enc, cloned) + require.Equal(t, enc, cloned) } diff --git a/common/flogging/fabenc/formatter_test.go b/common/flogging/fabenc/formatter_test.go index 91b78dc6a35..f44196fe0ae 100644 --- a/common/flogging/fabenc/formatter_test.go +++ b/common/flogging/fabenc/formatter_test.go @@ -16,7 +16,7 @@ import ( "time" "github.com/hyperledger/fabric/common/flogging/fabenc" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -76,15 +76,15 @@ func TestParseFormat(t *testing.T) { for _, tc := range tests { t.Run(fmt.Sprintf(tc.desc), func(t *testing.T) { formatters, err := fabenc.ParseFormat(tc.spec) - assert.NoError(t, err) - assert.Equal(t, tc.formatters, formatters) + require.NoError(t, err) + require.Equal(t, tc.formatters, formatters) }) } } func TestParseFormatError(t *testing.T) { _, err := fabenc.ParseFormat("%{color:bad}") - assert.EqualError(t, err, "invalid color option: bad") + require.EqualError(t, err, "invalid color option: bad") } func TestNewFormatter(t *testing.T) { @@ -117,10 +117,10 @@ func TestNewFormatter(t *testing.T) { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { f, err := fabenc.NewFormatter(tc.verb, tc.format) if tc.errorMsg == "" { - assert.NoError(t, err) - assert.Equal(t, tc.formatter, f) + require.NoError(t, err) + require.Equal(t, tc.formatter, f) } else { - assert.EqualError(t, err, tc.errorMsg) + require.EqualError(t, err, tc.errorMsg) } }) } @@ -156,7 +156,7 @@ func TestColorFormatter(t *testing.T) { buf := &bytes.Buffer{} entry := zapcore.Entry{Level: tc.level} tc.f.Format(buf, entry, nil) - assert.Equal(t, tc.formatted, buf.String()) + require.Equal(t, tc.formatted, buf.String()) }) } } @@ -181,7 +181,7 @@ func TestLevelFormatter(t *testing.T) { buf := &bytes.Buffer{} entry := zapcore.Entry{Level: tc.level} fabenc.LevelFormatter{FormatVerb: "%s"}.Format(buf, entry, nil) - assert.Equal(t, tc.formatted, buf.String()) + require.Equal(t, tc.formatted, buf.String()) }) } } @@ -191,7 +191,7 @@ func TestMessageFormatter(t *testing.T) { entry := zapcore.Entry{Message: "some message text \n\n"} f := fabenc.MessageFormatter{FormatVerb: "%s"} f.Format(buf, entry, nil) - assert.Equal(t, "some message text ", buf.String()) + require.Equal(t, "some message text ", buf.String()) } func TestModuleFormatter(t *testing.T) { @@ -199,7 +199,7 @@ func TestModuleFormatter(t *testing.T) { entry := zapcore.Entry{LoggerName: "logger/name"} f := fabenc.ModuleFormatter{FormatVerb: "%s"} f.Format(buf, entry, nil) - assert.Equal(t, "logger/name", buf.String()) + require.Equal(t, "logger/name", buf.String()) } func TestSequenceFormatter(t *testing.T) { @@ -233,22 +233,22 @@ func TestSequenceFormatter(t *testing.T) { finished.Wait() for i := 1; i <= 100; i++ { - assert.Contains(t, results, strconv.Itoa(i)) + require.Contains(t, results, strconv.Itoa(i)) } } func TestShortFuncFormatter(t *testing.T) { callerpc, _, _, ok := runtime.Caller(0) - assert.True(t, ok) + require.True(t, ok) buf := &bytes.Buffer{} entry := zapcore.Entry{Caller: zapcore.EntryCaller{PC: callerpc}} fabenc.ShortFuncFormatter{FormatVerb: "%s"}.Format(buf, entry, nil) - assert.Equal(t, "TestShortFuncFormatter", buf.String()) + require.Equal(t, "TestShortFuncFormatter", buf.String()) buf = &bytes.Buffer{} entry = zapcore.Entry{Caller: zapcore.EntryCaller{PC: 0}} fabenc.ShortFuncFormatter{FormatVerb: "%s"}.Format(buf, entry, nil) - assert.Equal(t, "(unknown)", buf.String()) + require.Equal(t, "(unknown)", buf.String()) } func TestTimeFormatter(t *testing.T) { @@ -256,7 +256,7 @@ func TestTimeFormatter(t *testing.T) { entry := zapcore.Entry{Time: time.Date(1975, time.August, 15, 12, 0, 0, 333, time.UTC)} f := fabenc.TimeFormatter{Layout: time.RFC3339Nano} f.Format(buf, entry, nil) - assert.Equal(t, "1975-08-15T12:00:00.000000333Z", buf.String()) + require.Equal(t, "1975-08-15T12:00:00.000000333Z", buf.String()) } func TestMultiFormatter(t *testing.T) { @@ -312,6 +312,6 @@ func TestMultiFormatter(t *testing.T) { buf := &bytes.Buffer{} mf.Format(buf, entry, fields) - assert.Equal(t, tc.expected, buf.String()) + require.Equal(t, tc.expected, buf.String()) } } diff --git a/common/flogging/global_test.go b/common/flogging/global_test.go index 8d4e9fa04e0..8b808992f33 100644 --- a/common/flogging/global_test.go +++ b/common/flogging/global_test.go @@ -12,24 +12,24 @@ import ( "github.com/hyperledger/fabric/common/flogging" "github.com/hyperledger/fabric/common/flogging/mock" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGlobalReset(t *testing.T) { flogging.Reset() err := flogging.Global.SetFormat("json") - assert.NoError(t, err) + require.NoError(t, err) err = flogging.Global.ActivateSpec("logger=debug") - assert.NoError(t, err) + require.NoError(t, err) system, err := flogging.New(flogging.Config{}) - assert.NoError(t, err) - assert.NotEqual(t, flogging.Global.LoggerLevels, system.LoggerLevels) - assert.NotEqual(t, flogging.Global.Encoding(), system.Encoding()) + require.NoError(t, err) + require.NotEqual(t, flogging.Global.LoggerLevels, system.LoggerLevels) + require.NotEqual(t, flogging.Global.Encoding(), system.Encoding()) flogging.Reset() - assert.Equal(t, flogging.Global.LoggerLevels, system.LoggerLevels) - assert.Equal(t, flogging.Global.Encoding(), system.Encoding()) + require.Equal(t, flogging.Global.LoggerLevels, system.LoggerLevels) + require.Equal(t, flogging.Global.Encoding(), system.Encoding()) } func TestGlobalInitConsole(t *testing.T) { @@ -46,7 +46,7 @@ func TestGlobalInitConsole(t *testing.T) { logger := flogging.MustGetLogger("testlogger") logger.Debug("this is a message") - assert.Equal(t, "this is a message\n", buf.String()) + require.Equal(t, "this is a message\n", buf.String()) } func TestGlobalInitJSON(t *testing.T) { @@ -63,7 +63,7 @@ func TestGlobalInitJSON(t *testing.T) { logger := flogging.MustGetLogger("testlogger") logger.Debug("this is a message") - assert.Regexp(t, `{"level":"debug","ts":\d+.\d+,"name":"testlogger","caller":"flogging/global_test.go:\d+","msg":"this is a message"}\s+`, buf.String()) + require.Regexp(t, `{"level":"debug","ts":\d+.\d+,"name":"testlogger","caller":"flogging/global_test.go:\d+","msg":"this is a message"}\s+`, buf.String()) } func TestGlobalInitLogfmt(t *testing.T) { @@ -80,14 +80,14 @@ func TestGlobalInitLogfmt(t *testing.T) { logger := flogging.MustGetLogger("testlogger") logger.Debug("this is a message") - assert.Regexp(t, `^ts=\d+.\d+ level=debug name=testlogger caller=flogging/global_test.go:\d+ msg="this is a message"`, buf.String()) + require.Regexp(t, `^ts=\d+.\d+ level=debug name=testlogger caller=flogging/global_test.go:\d+ msg="this is a message"`, buf.String()) } func TestGlobalInitPanic(t *testing.T) { flogging.Reset() defer flogging.Reset() - assert.Panics(t, func() { + require.Panics(t, func() { flogging.Init(flogging.Config{ Format: "%{color:evil}", }) @@ -97,25 +97,25 @@ func TestGlobalInitPanic(t *testing.T) { func TestGlobalDefaultLevel(t *testing.T) { flogging.Reset() - assert.Equal(t, "info", flogging.DefaultLevel()) + require.Equal(t, "info", flogging.DefaultLevel()) } func TestGlobalLoggerLevel(t *testing.T) { flogging.Reset() - assert.Equal(t, "info", flogging.LoggerLevel("some.logger")) + require.Equal(t, "info", flogging.LoggerLevel("some.logger")) } func TestGlobalMustGetLogger(t *testing.T) { flogging.Reset() l := flogging.MustGetLogger("logger-name") - assert.NotNil(t, l) + require.NotNil(t, l) } func TestFlogginInitPanic(t *testing.T) { defer flogging.Reset() - assert.Panics(t, func() { + require.Panics(t, func() { flogging.Init(flogging.Config{ Format: "%{color:broken}", }) @@ -126,13 +126,13 @@ func TestActivateSpec(t *testing.T) { defer flogging.Reset() flogging.ActivateSpec("fatal") - assert.Equal(t, "fatal", flogging.Global.Spec()) + require.Equal(t, "fatal", flogging.Global.Spec()) } func TestActivateSpecPanic(t *testing.T) { defer flogging.Reset() - assert.Panics(t, func() { + require.Panics(t, func() { flogging.ActivateSpec("busted") }) } @@ -145,7 +145,7 @@ func TestGlobalSetObserver(t *testing.T) { flogging.Global.SetObserver(observer) o := flogging.Global.SetObserver(nil) - assert.Exactly(t, observer, o) + require.Exactly(t, observer, o) } func TestGlobalSetWriter(t *testing.T) { @@ -158,5 +158,5 @@ func TestGlobalSetWriter(t *testing.T) { flogging.Global.SetWriter(old) original := flogging.Global.SetWriter(nil) - assert.Exactly(t, old, original) + require.Exactly(t, old, original) } diff --git a/common/flogging/levels_test.go b/common/flogging/levels_test.go index c1930647ce4..d6e9c4c7b5d 100644 --- a/common/flogging/levels_test.go +++ b/common/flogging/levels_test.go @@ -10,7 +10,7 @@ import ( "testing" "github.com/hyperledger/fabric/common/flogging" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" ) @@ -35,7 +35,7 @@ func TestNameToLevel(t *testing.T) { for _, tc := range tests { for _, name := range tc.names { t.Run(name, func(t *testing.T) { - assert.Equal(t, tc.level, flogging.NameToLevel(name)) + require.Equal(t, tc.level, flogging.NameToLevel(name)) }) } } @@ -57,7 +57,7 @@ func TestIsValidLevel(t *testing.T) { } for _, name := range validNames { t.Run(name, func(t *testing.T) { - assert.True(t, flogging.IsValidLevel(name)) + require.True(t, flogging.IsValidLevel(name)) }) } @@ -68,7 +68,7 @@ func TestIsValidLevel(t *testing.T) { } for _, name := range invalidNames { t.Run(name, func(t *testing.T) { - assert.False(t, flogging.IsValidLevel(name)) + require.False(t, flogging.IsValidLevel(name)) }) } } diff --git a/common/flogging/loggerlevels_test.go b/common/flogging/loggerlevels_test.go index 8699a5a3410..b0051eba036 100644 --- a/common/flogging/loggerlevels_test.go +++ b/common/flogging/loggerlevels_test.go @@ -12,7 +12,7 @@ import ( "testing" "github.com/hyperledger/fabric/common/flogging" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" ) @@ -98,10 +98,10 @@ func TestLoggerLevelsActivateSpec(t *testing.T) { ll := &flogging.LoggerLevels{} err := ll.ActivateSpec(tc.spec) - assert.NoError(t, err) - assert.Equal(t, tc.expectedDefaultLevel, ll.DefaultLevel()) + require.NoError(t, err) + require.Equal(t, tc.expectedDefaultLevel, ll.DefaultLevel()) for name, lvl := range tc.expectedLevels { - assert.Equal(t, lvl, ll.Level(name)) + require.Equal(t, lvl, ll.Level(name)) } }) } @@ -123,13 +123,13 @@ func TestLoggerLevelsActivateSpecErrors(t *testing.T) { t.Run(tc.spec, func(t *testing.T) { ll := &flogging.LoggerLevels{} err := ll.ActivateSpec("fatal:a=warn") - assert.Nil(t, err) + require.Nil(t, err) err = ll.ActivateSpec(tc.spec) - assert.EqualError(t, err, tc.err.Error()) + require.EqualError(t, err, tc.err.Error()) - assert.Equal(t, zapcore.FatalLevel, ll.DefaultLevel(), "default should not change") - assert.Equal(t, zapcore.WarnLevel, ll.Level("a.b"), "log levels should not change") + require.Equal(t, zapcore.FatalLevel, ll.DefaultLevel(), "default should not change") + require.Equal(t, zapcore.WarnLevel, ll.Level("a.b"), "log levels should not change") }) } } @@ -152,9 +152,9 @@ func TestSpec(t *testing.T) { for _, tc := range tests { ll := &flogging.LoggerLevels{} err := ll.ActivateSpec(tc.input) - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, tc.output, ll.Spec()) + require.Equal(t, tc.output, ll.Spec()) } } @@ -179,13 +179,13 @@ func TestEnabled(t *testing.T) { t.Run(strconv.Itoa(i), func(t *testing.T) { ll := &flogging.LoggerLevels{} err := ll.ActivateSpec(tc.spec) - assert.NoError(t, err) + require.NoError(t, err) for i := flogging.PayloadLevel; i <= zapcore.FatalLevel; i++ { if tc.enabledAt <= i { - assert.Truef(t, ll.Enabled(i), "expected level %s and spec %s to be enabled", zapcore.Level(i), tc.spec) + require.Truef(t, ll.Enabled(i), "expected level %s and spec %s to be enabled", zapcore.Level(i), tc.spec) } else { - assert.False(t, ll.Enabled(i), "expected level %s and spec %s to be disabled", zapcore.Level(i), tc.spec) + require.False(t, ll.Enabled(i), "expected level %s and spec %s to be disabled", zapcore.Level(i), tc.spec) } } }) diff --git a/common/flogging/logging_test.go b/common/flogging/logging_test.go index be44a26d759..8a5eb8620db 100644 --- a/common/flogging/logging_test.go +++ b/common/flogging/logging_test.go @@ -15,19 +15,19 @@ import ( "github.com/hyperledger/fabric/common/flogging" "github.com/hyperledger/fabric/common/flogging/mock" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" ) func TestNew(t *testing.T) { logging, err := flogging.New(flogging.Config{}) - assert.NoError(t, err) - assert.Equal(t, zapcore.InfoLevel, logging.DefaultLevel()) + require.NoError(t, err) + require.Equal(t, zapcore.InfoLevel, logging.DefaultLevel()) _, err = flogging.New(flogging.Config{ LogSpec: "::=borken=::", }) - assert.EqualError(t, err, "invalid logging specification '::=borken=::': bad segment '=borken='") + require.EqualError(t, err, "invalid logging specification '::=borken=::': bad segment '=borken='") } func TestNewWithEnvironment(t *testing.T) { @@ -38,13 +38,13 @@ func TestNewWithEnvironment(t *testing.T) { os.Setenv("FABRIC_LOGGING_SPEC", "fatal") logging, err := flogging.New(flogging.Config{}) - assert.NoError(t, err) - assert.Equal(t, zapcore.FatalLevel, logging.DefaultLevel()) + require.NoError(t, err) + require.Equal(t, zapcore.FatalLevel, logging.DefaultLevel()) os.Unsetenv("FABRIC_LOGGING_SPEC") logging, err = flogging.New(flogging.Config{}) - assert.NoError(t, err) - assert.Equal(t, zapcore.InfoLevel, logging.DefaultLevel()) + require.NoError(t, err) + require.Equal(t, zapcore.InfoLevel, logging.DefaultLevel()) } //go:generate counterfeiter -o mock/write_syncer.go -fake-name WriteSyncer . writeSyncer @@ -59,24 +59,24 @@ func TestLoggingSetWriter(t *testing.T) { logging, err := flogging.New(flogging.Config{ Writer: w, }) - assert.NoError(t, err) + require.NoError(t, err) old := logging.SetWriter(ws) logging.SetWriter(w) original := logging.SetWriter(ws) - assert.Exactly(t, old, original) + require.Exactly(t, old, original) _, err = logging.Write([]byte("hello")) - assert.NoError(t, err) - assert.Equal(t, 1, ws.WriteCallCount()) - assert.Equal(t, []byte("hello"), ws.WriteArgsForCall(0)) + require.NoError(t, err) + require.Equal(t, 1, ws.WriteCallCount()) + require.Equal(t, []byte("hello"), ws.WriteArgsForCall(0)) err = logging.Sync() - assert.NoError(t, err) + require.NoError(t, err) ws.SyncReturns(errors.New("welp")) err = logging.Sync() - assert.EqualError(t, err, "welp") + require.EqualError(t, err, "welp") } func TestNamedLogger(t *testing.T) { @@ -92,8 +92,8 @@ func TestNamedLogger(t *testing.T) { logger.Info("from eugene") logger2.Info("from george") - assert.Contains(t, buf.String(), "from eugene") - assert.NotContains(t, buf.String(), "from george") + require.Contains(t, buf.String(), "from eugene") + require.NotContains(t, buf.String(), "from george") }) t.Run("named logger where parent logger isn't enabled", func(t *testing.T) { @@ -102,8 +102,8 @@ func TestNamedLogger(t *testing.T) { flogging.ActivateSpec("foo=fatal:foo.bar=error") logger.Error("from foo") logger2.Error("from bar") - assert.NotContains(t, buf.String(), "from foo") - assert.Contains(t, buf.String(), "from bar") + require.NotContains(t, buf.String(), "from foo") + require.Contains(t, buf.String(), "from bar") }) } @@ -112,7 +112,7 @@ func TestInvalidLoggerName(t *testing.T) { for _, name := range names { t.Run(name, func(t *testing.T) { msg := fmt.Sprintf("invalid logger name: %s", name) - assert.PanicsWithValue(t, msg, func() { flogging.MustGetLogger(name) }) + require.PanicsWithValue(t, msg, func() { flogging.MustGetLogger(name) }) }) } } @@ -125,34 +125,34 @@ func TestCheck(t *testing.T) { // set observer l.SetObserver(observer) l.Check(e, nil) - assert.Equal(t, 1, observer.CheckCallCount()) + require.Equal(t, 1, observer.CheckCallCount()) e, ce := observer.CheckArgsForCall(0) - assert.Equal(t, e, zapcore.Entry{}) - assert.Nil(t, ce) + require.Equal(t, e, zapcore.Entry{}) + require.Nil(t, ce) l.WriteEntry(e, nil) - assert.Equal(t, 1, observer.WriteEntryCallCount()) + require.Equal(t, 1, observer.WriteEntryCallCount()) e, f := observer.WriteEntryArgsForCall(0) - assert.Equal(t, e, zapcore.Entry{}) - assert.Nil(t, f) + require.Equal(t, e, zapcore.Entry{}) + require.Nil(t, f) // remove observer l.SetObserver(nil) l.Check(zapcore.Entry{}, nil) - assert.Equal(t, 1, observer.CheckCallCount()) + require.Equal(t, 1, observer.CheckCallCount()) } func TestLoggerCoreCheck(t *testing.T) { logging, err := flogging.New(flogging.Config{}) - assert.NoError(t, err) + require.NoError(t, err) logger := logging.ZapLogger("foo") err = logging.ActivateSpec("info") - assert.NoError(t, err) - assert.False(t, logger.Core().Enabled(zapcore.DebugLevel), "debug should not be enabled at info level") + require.NoError(t, err) + require.False(t, logger.Core().Enabled(zapcore.DebugLevel), "debug should not be enabled at info level") err = logging.ActivateSpec("debug") - assert.NoError(t, err) - assert.True(t, logger.Core().Enabled(zapcore.DebugLevel), "debug should now be enabled at debug level") + require.NoError(t, err) + require.True(t, logger.Core().Enabled(zapcore.DebugLevel), "debug should now be enabled at debug level") } diff --git a/common/flogging/metrics/observer_test.go b/common/flogging/metrics/observer_test.go index 33bb0a571b9..8e9a4e44584 100644 --- a/common/flogging/metrics/observer_test.go +++ b/common/flogging/metrics/observer_test.go @@ -12,7 +12,7 @@ import ( "github.com/hyperledger/fabric/common/flogging/metrics" commonmetrics "github.com/hyperledger/fabric/common/metrics" "github.com/hyperledger/fabric/common/metrics/metricsfakes" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" ) @@ -23,10 +23,10 @@ func TestNewObserver(t *testing.T) { provider.NewCounterStub = func(c commonmetrics.CounterOpts) commonmetrics.Counter { switch c.Name { case "entries_checked": - assert.Equal(t, metrics.CheckedCountOpts, c) + require.Equal(t, metrics.CheckedCountOpts, c) return checkedCounter case "entries_written": - assert.Equal(t, metrics.WriteCountOpts, c) + require.Equal(t, metrics.WriteCountOpts, c) return writtenCounter default: return nil @@ -38,8 +38,8 @@ func TestNewObserver(t *testing.T) { WrittenCounter: writtenCounter, } m := metrics.NewObserver(provider) - assert.Equal(t, expectedObserver, m) - assert.Equal(t, 2, provider.NewCounterCallCount()) + require.Equal(t, expectedObserver, m) + require.Equal(t, 2, provider.NewCounterCallCount()) } func TestCheck(t *testing.T) { @@ -51,11 +51,11 @@ func TestCheck(t *testing.T) { checkedEntry := &zapcore.CheckedEntry{} m.Check(entry, checkedEntry) - assert.Equal(t, 1, counter.WithCallCount()) - assert.Equal(t, []string{"level", "debug"}, counter.WithArgsForCall(0)) + require.Equal(t, 1, counter.WithCallCount()) + require.Equal(t, []string{"level", "debug"}, counter.WithArgsForCall(0)) - assert.Equal(t, 1, counter.AddCallCount()) - assert.Equal(t, float64(1), counter.AddArgsForCall(0)) + require.Equal(t, 1, counter.AddCallCount()) + require.Equal(t, float64(1), counter.AddArgsForCall(0)) } func TestWrite(t *testing.T) { @@ -66,9 +66,9 @@ func TestWrite(t *testing.T) { entry := zapcore.Entry{Level: zapcore.DebugLevel} m.WriteEntry(entry, nil) - assert.Equal(t, 1, counter.WithCallCount()) - assert.Equal(t, []string{"level", "debug"}, counter.WithArgsForCall(0)) + require.Equal(t, 1, counter.WithCallCount()) + require.Equal(t, []string{"level", "debug"}, counter.WithArgsForCall(0)) - assert.Equal(t, 1, counter.AddCallCount()) - assert.Equal(t, float64(1), counter.AddArgsForCall(0)) + require.Equal(t, 1, counter.AddCallCount()) + require.Equal(t, float64(1), counter.AddArgsForCall(0)) } diff --git a/common/flogging/zap_test.go b/common/flogging/zap_test.go index 194c4ef8c8c..abb197d0f8f 100644 --- a/common/flogging/zap_test.go +++ b/common/flogging/zap_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/common/flogging" "github.com/hyperledger/fabric/common/flogging/fabenc" "github.com/hyperledger/fabric/common/flogging/mock" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" "go.uber.org/zap/zaptest/observer" @@ -24,7 +24,7 @@ import ( func TestFabricLoggerEncoding(t *testing.T) { formatters, err := fabenc.ParseFormat("%{color}[%{module}] %{shortfunc} -> %{level:.4s}%{color:reset} %{message}") - assert.NoError(t, err) + require.NoError(t, err) enc := fabenc.NewFormatEncoder(formatters...) buf := &bytes.Buffer{} @@ -34,15 +34,15 @@ func TestFabricLoggerEncoding(t *testing.T) { buf.Reset() fl.Info("string value", 0, 1.23, struct{}{}) - assert.Equal(t, "\x1b[34m[test] TestFabricLoggerEncoding -> INFO\x1b[0m string value 0 1.23 {} extra=field\n", buf.String()) + require.Equal(t, "\x1b[34m[test] TestFabricLoggerEncoding -> INFO\x1b[0m string value 0 1.23 {} extra=field\n", buf.String()) buf.Reset() fl.Infof("string %s, %d, %.3f, %v", "strval", 0, 1.23, struct{}{}) - assert.Equal(t, "\x1b[34m[test] TestFabricLoggerEncoding -> INFO\x1b[0m string strval, 0, 1.230, {} extra=field\n", buf.String()) + require.Equal(t, "\x1b[34m[test] TestFabricLoggerEncoding -> INFO\x1b[0m string strval, 0, 1.230, {} extra=field\n", buf.String()) buf.Reset() fl.Infow("this is a message", "int", 0, "float", 1.23, "struct", struct{}{}) - assert.Equal(t, "\x1b[34m[test] TestFabricLoggerEncoding -> INFO\x1b[0m this is a message extra=field int=0 float=1.23 struct={}\n", buf.String()) + require.Equal(t, "\x1b[34m[test] TestFabricLoggerEncoding -> INFO\x1b[0m this is a message extra=field int=0 float=1.23 struct={}\n", buf.String()) } func TestFabricLogger(t *testing.T) { @@ -251,29 +251,29 @@ func TestFabricLogger(t *testing.T) { fl := flogging.NewFabricLogger(zap.New(core)).Named("lname") if tc.panics { - assert.Panics(t, func() { tc.f(fl) }) + require.Panics(t, func() { tc.f(fl) }) } else { tc.f(fl) } err := fl.Sync() - assert.NoError(t, err) + require.NoError(t, err) entries := logs.All() - assert.Len(t, entries, 1) + require.Len(t, entries, 1) entry := entries[0] - assert.Equal(t, tc.level, entry.Level) - assert.Equal(t, tc.message, entry.Message) - assert.Equal(t, tc.fields, entry.Context) - assert.Equal(t, "lname", entry.LoggerName) + require.Equal(t, tc.level, entry.Level) + require.Equal(t, tc.message, entry.Message) + require.Equal(t, tc.fields, entry.Context) + require.Equal(t, "lname", entry.LoggerName) }) } } func TestIsEnabledFor(t *testing.T) { formatters, err := fabenc.ParseFormat("%{color}[%{module}] %{shortfunc} -> %{level:.4s}%{color:reset} %{message}") - assert.NoError(t, err) + require.NoError(t, err) enc := fabenc.NewFormatEncoder(formatters...) enablerCallCount := 0 @@ -286,9 +286,9 @@ func TestIsEnabledFor(t *testing.T) { zl := zap.New(core).Named("test") fl := flogging.NewFabricLogger(zl) - assert.True(t, fl.IsEnabledFor(zapcore.ErrorLevel)) - assert.False(t, fl.IsEnabledFor(zapcore.PanicLevel)) - assert.Equal(t, 2, enablerCallCount) + require.True(t, fl.IsEnabledFor(zapcore.ErrorLevel)) + require.False(t, fl.IsEnabledFor(zapcore.PanicLevel)) + require.Equal(t, 2, enablerCallCount) } func logCaller(l grpclog.Logger, msg string) { l.Println(msg) } @@ -297,7 +297,7 @@ func callWrapper(l grpclog.Logger, msg string) { logCaller(l, msg) } func TestGRPCLogger(t *testing.T) { // ensure it includes the name as module, logs at debug level, and the caller with appropriate skip level formatters, err := fabenc.ParseFormat("%{module} %{level} %{shortfunc} %{message}") - assert.NoError(t, err) + require.NoError(t, err) enc := fabenc.NewFormatEncoder(formatters...) buf := &bytes.Buffer{} @@ -307,7 +307,7 @@ func TestGRPCLogger(t *testing.T) { gl := flogging.NewGRPCLogger(zl) callWrapper(gl, "message") - assert.Equal(t, "grpc DEBUG TestGRPCLogger message\n", buf.String()) + require.Equal(t, "grpc DEBUG TestGRPCLogger message\n", buf.String()) } // FAB-15432 @@ -322,7 +322,7 @@ func TestEnabledLevelCheck(t *testing.T) { LogSpec: "info", Writer: buf, }) - assert.NoError(t, err) + require.NoError(t, err) fakeObserver := &mock.Observer{} logging.SetObserver(fakeObserver) @@ -331,8 +331,8 @@ func TestEnabledLevelCheck(t *testing.T) { fabricLogger := flogging.NewFabricLogger(logger) fabricLogger.Debug("debug message") - assert.Equal(t, 0, fakeObserver.CheckCallCount(), "Check should not have been called") + require.Equal(t, 0, fakeObserver.CheckCallCount(), "Check should not have been called") fabricLogger.Info("info message") - assert.Equal(t, 1, fakeObserver.CheckCallCount(), "Check should have been called") + require.Equal(t, 1, fakeObserver.CheckCallCount(), "Check should have been called") } diff --git a/common/genesis/genesis_test.go b/common/genesis/genesis_test.go index fb6729f0537..179eae57a59 100644 --- a/common/genesis/genesis_test.go +++ b/common/genesis/genesis_test.go @@ -12,7 +12,7 @@ import ( "github.com/golang/protobuf/proto" cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestFactory(t *testing.T) { @@ -23,25 +23,25 @@ func TestFactory(t *testing.T) { configEnv, _ := protoutil.ExtractEnvelope(block, 0) configEnvPayload, _ := protoutil.UnmarshalPayload(configEnv.Payload) configEnvPayloadChannelHeader, _ := protoutil.UnmarshalChannelHeader(configEnvPayload.GetHeader().ChannelHeader) - assert.NotEmpty(t, configEnvPayloadChannelHeader.TxId, "tx_id of configuration transaction should not be empty") + require.NotEmpty(t, configEnvPayloadChannelHeader.TxId, "tx_id of configuration transaction should not be empty") }) t.Run("test for last config in SIGNATURES field", func(t *testing.T) { metadata := &cb.Metadata{} err := proto.Unmarshal(block.Metadata.Metadata[cb.BlockMetadataIndex_SIGNATURES], metadata) - assert.NoError(t, err) + require.NoError(t, err) ordererBlockMetadata := &cb.OrdererBlockMetadata{} err = proto.Unmarshal(metadata.Value, ordererBlockMetadata) - assert.NoError(t, err) - assert.NotNil(t, ordererBlockMetadata.LastConfig) - assert.Equal(t, uint64(0), ordererBlockMetadata.LastConfig.Index) + require.NoError(t, err) + require.NotNil(t, ordererBlockMetadata.LastConfig) + require.Equal(t, uint64(0), ordererBlockMetadata.LastConfig.Index) }) t.Run("test for last config in LAST_CONFIG field", func(t *testing.T) { metadata := &cb.Metadata{} err := proto.Unmarshal(block.Metadata.Metadata[cb.BlockMetadataIndex_LAST_CONFIG], metadata) - assert.NoError(t, err) + require.NoError(t, err) lastConfig := &cb.LastConfig{} err = proto.Unmarshal(metadata.Value, lastConfig) - assert.NoError(t, err) - assert.Equal(t, uint64(0), lastConfig.Index) + require.NoError(t, err) + require.Equal(t, uint64(0), lastConfig.Index) }) } diff --git a/common/graph/choose_test.go b/common/graph/choose_test.go index 442b4f0f178..33326f455bf 100644 --- a/common/graph/choose_test.go +++ b/common/graph/choose_test.go @@ -9,18 +9,18 @@ package graph import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCombinationsExceed(t *testing.T) { // 20 choose 5 is 15504. - assert.False(t, CombinationsExceed(20, 5, 15504)) - assert.False(t, CombinationsExceed(20, 5, 15505)) - assert.True(t, CombinationsExceed(20, 5, 15503)) + require.False(t, CombinationsExceed(20, 5, 15504)) + require.False(t, CombinationsExceed(20, 5, 15505)) + require.True(t, CombinationsExceed(20, 5, 15503)) // A huge number of combinations doesn't overflow. - assert.True(t, CombinationsExceed(10000, 500, 9000)) + require.True(t, CombinationsExceed(10000, 500, 9000)) // N < K returns false - assert.False(t, CombinationsExceed(20, 30, 0)) + require.False(t, CombinationsExceed(20, 30, 0)) } diff --git a/common/graph/graph_test.go b/common/graph/graph_test.go index 2f4efc67e16..a90a97a5082 100644 --- a/common/graph/graph_test.go +++ b/common/graph/graph_test.go @@ -9,17 +9,17 @@ package graph import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestVertex(t *testing.T) { v := NewVertex("1", "1") - assert.Equal(t, "1", v.Data) - assert.Equal(t, "1", v.Id) + require.Equal(t, "1", v.Data) + require.Equal(t, "1", v.Id) u := NewVertex("2", "2") v.AddNeighbor(u) - assert.Contains(t, u.Neighbors(), v) - assert.Contains(t, v.Neighbors(), u) - assert.Equal(t, u, v.NeighborById("2")) - assert.Nil(t, v.NeighborById("3")) + require.Contains(t, u.Neighbors(), v) + require.Contains(t, v.Neighbors(), u) + require.Equal(t, u, v.NeighborById("2")) + require.Nil(t, v.NeighborById("3")) } diff --git a/common/graph/perm_test.go b/common/graph/perm_test.go index 1a0d7d61d73..e724096784b 100644 --- a/common/graph/perm_test.go +++ b/common/graph/perm_test.go @@ -10,7 +10,7 @@ import ( "fmt" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestPermute(t *testing.T) { @@ -40,7 +40,7 @@ func TestPermute(t *testing.T) { // For a sub-tree with r-(D,F) we have 9 combinations from the same logic // For a sub-tree with r-(E,F) we have 9 combinations too // Total 27 combinations - assert.Equal(t, 27, len(permutations)) + require.Equal(t, 27, len(permutations)) listCombination := func(i Iterator) []string { var traversal []string @@ -56,11 +56,11 @@ func TestPermute(t *testing.T) { // First combination is a left most traversal on the combination graph expectedScan := []string{"r", "D", "E", "A", "B", "a", "b"} - assert.Equal(t, expectedScan, listCombination(permutations[0].BFS())) + require.Equal(t, expectedScan, listCombination(permutations[0].BFS())) // Last combination is a right most traversal on the combination graph expectedScan = []string{"r", "E", "F", "b", "c", "2", "3"} - assert.Equal(t, expectedScan, listCombination(permutations[26].BFS())) + require.Equal(t, expectedScan, listCombination(permutations[26].BFS())) } func TestPermuteTooManyCombinations(t *testing.T) { @@ -70,5 +70,5 @@ func TestPermuteTooManyCombinations(t *testing.T) { root.AddDescendant(NewTreeVertex(fmt.Sprintf("%d", i), nil)) } permutations := root.ToTree().Permute(501) - assert.Len(t, permutations, 501) + require.Len(t, permutations, 501) } diff --git a/common/graph/tree_test.go b/common/graph/tree_test.go index ec60de2e2f1..3f74aa8d247 100644 --- a/common/graph/tree_test.go +++ b/common/graph/tree_test.go @@ -10,27 +10,27 @@ import ( "fmt" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestFindAndExists(t *testing.T) { v := NewTreeVertex("1", nil) u := v.AddDescendant(NewTreeVertex("2", nil)).AddDescendant(NewTreeVertex("4", nil)) v.AddDescendant(NewTreeVertex("3", nil)).AddDescendant(NewTreeVertex("5", nil)) - assert.Equal(t, u, v.Find("4")) - assert.True(t, v.Exists("4")) - assert.Nil(t, v.Find("10")) - assert.False(t, v.Exists("10")) - assert.Nil(t, u.Find("1")) - assert.False(t, u.Exists("1")) - assert.Equal(t, v, v.Find("1")) - assert.True(t, v.Exists("1")) + require.Equal(t, u, v.Find("4")) + require.True(t, v.Exists("4")) + require.Nil(t, v.Find("10")) + require.False(t, v.Exists("10")) + require.Nil(t, u.Find("1")) + require.False(t, u.Exists("1")) + require.Equal(t, v, v.Find("1")) + require.True(t, v.Exists("1")) } func TestIsLeaf(t *testing.T) { v := NewTreeVertex("1", nil) - assert.True(t, v.AddDescendant(NewTreeVertex("2", nil)).IsLeaf()) - assert.False(t, v.IsLeaf()) + require.True(t, v.AddDescendant(NewTreeVertex("2", nil)).IsLeaf()) + require.False(t, v.IsLeaf()) } func TestBFS(t *testing.T) { @@ -38,16 +38,16 @@ func TestBFS(t *testing.T) { v.AddDescendant(NewTreeVertex("2", nil)).AddDescendant(NewTreeVertex("4", nil)) v.AddDescendant(NewTreeVertex("3", nil)).AddDescendant(NewTreeVertex("5", nil)) tree := v.ToTree() - assert.Equal(t, v, tree.Root) + require.Equal(t, v, tree.Root) i := tree.BFS() j := 1 for { v := i.Next() if v == nil { - assert.True(t, j == 6) + require.True(t, j == 6) break } - assert.Equal(t, fmt.Sprintf("%d", j), v.Id) + require.Equal(t, fmt.Sprintf("%d", j), v.Id) j++ } } @@ -59,12 +59,12 @@ func TestClone(t *testing.T) { copy := v.Clone() // They are different references - assert.False(t, copy == v) + require.False(t, copy == v) // They are equal - assert.Equal(t, v, copy) + require.Equal(t, v, copy) v.AddDescendant(NewTreeVertex("6", 6)) - assert.NotEqual(t, v, copy) + require.NotEqual(t, v, copy) } func TestReplace(t *testing.T) { @@ -86,11 +86,11 @@ func TestReplace(t *testing.T) { }, }) - assert.Equal(t, "r", v.Id) - assert.Equal(t, &TreeVertex{Id: "F", Descendants: []*TreeVertex{}}, v.Descendants[2]) - assert.Equal(t, &TreeVertex{Id: "E", Descendants: []*TreeVertex{}}, v.Descendants[1]) - assert.Equal(t, "D", v.Descendants[0].Id) - assert.Equal(t, []*TreeVertex{ + require.Equal(t, "r", v.Id) + require.Equal(t, &TreeVertex{Id: "F", Descendants: []*TreeVertex{}}, v.Descendants[2]) + require.Equal(t, &TreeVertex{Id: "E", Descendants: []*TreeVertex{}}, v.Descendants[1]) + require.Equal(t, "D", v.Descendants[0].Id) + require.Equal(t, []*TreeVertex{ {Id: "a", Descendants: []*TreeVertex{}}, {Id: "b", Descendants: []*TreeVertex{}}, {Id: "c", Descendants: []*TreeVertex{}}, diff --git a/common/ledger/blkstorage/pkg_test.go b/common/ledger/blkstorage/pkg_test.go index ac7cd30b663..83904bf4392 100644 --- a/common/ledger/blkstorage/pkg_test.go +++ b/common/ledger/blkstorage/pkg_test.go @@ -19,7 +19,6 @@ import ( "github.com/hyperledger/fabric/common/metrics" "github.com/hyperledger/fabric/common/metrics/disabled" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -59,7 +58,7 @@ func newTestEnvWithMetricsProvider(t testing.TB, conf *Conf, metricsProvider met func newTestEnvSelectiveIndexing(t testing.TB, conf *Conf, attrsToIndex []IndexableAttr, metricsProvider metrics.Provider) *testEnv { indexConfig := &IndexConfig{AttrsToIndex: attrsToIndex} p, err := NewProvider(conf, indexConfig, metricsProvider) - assert.NoError(t, err) + require.NoError(t, err) return &testEnv{t, p} } @@ -80,14 +79,14 @@ type testBlockfileMgrWrapper struct { func newTestBlockfileWrapper(env *testEnv, ledgerid string) *testBlockfileMgrWrapper { blkStore, err := env.provider.Open(ledgerid) - assert.NoError(env.t, err) + require.NoError(env.t, err) return &testBlockfileMgrWrapper{env.t, blkStore.fileMgr} } func (w *testBlockfileMgrWrapper) addBlocks(blocks []*common.Block) { for _, blk := range blocks { err := w.blockfileMgr.addBlock(blk) - assert.NoError(w.t, err, "Error while adding block to blockfileMgr") + require.NoError(w.t, err, "Error while adding block to blockfileMgr") } } @@ -96,11 +95,11 @@ func (w *testBlockfileMgrWrapper) testGetBlockByHash(blocks []*common.Block, exp hash := protoutil.BlockHeaderHash(block.Header) b, err := w.blockfileMgr.retrieveBlockByHash(hash) if expectedErr != nil { - assert.Error(w.t, err, expectedErr.Error()) + require.Error(w.t, err, expectedErr.Error()) continue } - assert.NoError(w.t, err, "Error while retrieving [%d]th block from blockfileMgr", i) - assert.Equal(w.t, block, b) + require.NoError(w.t, err, "Error while retrieving [%d]th block from blockfileMgr", i) + require.Equal(w.t, block, b) } } @@ -108,31 +107,31 @@ func (w *testBlockfileMgrWrapper) testGetBlockByNumber(blocks []*common.Block, s for i := 0; i < len(blocks); i++ { b, err := w.blockfileMgr.retrieveBlockByNumber(startingNum + uint64(i)) if expectedErr != nil { - assert.Equal(w.t, err.Error(), expectedErr.Error()) + require.Equal(w.t, err.Error(), expectedErr.Error()) continue } - assert.NoError(w.t, err, "Error while retrieving [%d]th block from blockfileMgr", i) - assert.Equal(w.t, blocks[i], b) + require.NoError(w.t, err, "Error while retrieving [%d]th block from blockfileMgr", i) + require.Equal(w.t, blocks[i], b) } // test getting the last block b, err := w.blockfileMgr.retrieveBlockByNumber(math.MaxUint64) iLastBlock := len(blocks) - 1 - assert.NoError(w.t, err, "Error while retrieving last block from blockfileMgr") - assert.Equal(w.t, blocks[iLastBlock], b) + require.NoError(w.t, err, "Error while retrieving last block from blockfileMgr") + require.Equal(w.t, blocks[iLastBlock], b) } func (w *testBlockfileMgrWrapper) testGetBlockByTxID(blocks []*common.Block, expectedErr error) { for i, block := range blocks { for _, txEnv := range block.Data.Data { txID, err := protoutil.GetOrComputeTxIDFromEnvelope(txEnv) - assert.NoError(w.t, err) + require.NoError(w.t, err) b, err := w.blockfileMgr.retrieveBlockByTxID(txID) if expectedErr != nil { - assert.Equal(w.t, err.Error(), expectedErr.Error()) + require.Equal(w.t, err.Error(), expectedErr.Error()) continue } - assert.NoError(w.t, err, "Error while retrieving [%d]th block from blockfileMgr", i) - assert.Equal(w.t, block, b) + require.NoError(w.t, err, "Error while retrieving [%d]th block from blockfileMgr", i) + require.Equal(w.t, block, b) } } } @@ -140,12 +139,12 @@ func (w *testBlockfileMgrWrapper) testGetBlockByTxID(blocks []*common.Block, exp func (w *testBlockfileMgrWrapper) testGetTransactionByTxID(txID string, expectedEnvelope []byte, expectedErr error) { envelope, err := w.blockfileMgr.retrieveTransactionByID(txID) if expectedErr != nil { - assert.Equal(w.t, err.Error(), expectedErr.Error()) + require.Equal(w.t, err.Error(), expectedErr.Error()) return } actualEnvelope, err := proto.Marshal(envelope) - assert.NoError(w.t, err) - assert.Equal(w.t, expectedEnvelope, actualEnvelope) + require.NoError(w.t, err) + require.Equal(w.t, expectedEnvelope, actualEnvelope) } func (w *testBlockfileMgrWrapper) testGetMultipleDataByTxID( diff --git a/common/ledger/blockledger/fileledger/factory_test.go b/common/ledger/blockledger/fileledger/factory_test.go index 537a3d0e2b7..895f407f4f5 100644 --- a/common/ledger/blockledger/fileledger/factory_test.go +++ b/common/ledger/blockledger/fileledger/factory_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/common/ledger/blkstorage" "github.com/hyperledger/fabric/common/ledger/blockledger" "github.com/hyperledger/fabric/common/metrics/disabled" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type mockBlockStoreProvider struct { @@ -40,41 +40,41 @@ func TestBlockstoreProviderError(t *testing.T) { blkstorageProvider: &mockBlockStoreProvider{error: fmt.Errorf("blockstorage provider error")}, ledgers: make(map[string]blockledger.ReadWriter), } - assert.Panics( + require.Panics( t, func() { flf.ChannelIDs() }, "Expected ChannelIDs to panic if storage provider cannot list channel IDs") _, err := flf.GetOrCreate("foo") - assert.Error(t, err, "Expected GetOrCreate to return error if blockstorage provider cannot open") - assert.Empty(t, flf.ledgers, "Expected no new ledger is created") + require.Error(t, err, "Expected GetOrCreate to return error if blockstorage provider cannot open") + require.Empty(t, flf.ledgers, "Expected no new ledger is created") } func TestMultiReinitialization(t *testing.T) { metricsProvider := &disabled.Provider{} dir, err := ioutil.TempDir("", "hyperledger_fabric") - assert.NoError(t, err, "Error creating temp dir: %s", err) + require.NoError(t, err, "Error creating temp dir: %s", err) defer os.RemoveAll(dir) flf, err := New(dir, metricsProvider) - assert.NoError(t, err) + require.NoError(t, err) _, err = flf.GetOrCreate("testchannelid") - assert.NoError(t, err, "Error GetOrCreate channel") - assert.Equal(t, 1, len(flf.ChannelIDs()), "Expected 1 channel") + require.NoError(t, err, "Error GetOrCreate channel") + require.Equal(t, 1, len(flf.ChannelIDs()), "Expected 1 channel") flf.Close() flf, err = New(dir, metricsProvider) - assert.NoError(t, err) + require.NoError(t, err) _, err = flf.GetOrCreate("foo") - assert.NoError(t, err, "Error creating channel") - assert.Equal(t, 2, len(flf.ChannelIDs()), "Expected channel to be recovered") + require.NoError(t, err, "Error creating channel") + require.Equal(t, 2, len(flf.ChannelIDs()), "Expected channel to be recovered") flf.Close() flf, err = New(dir, metricsProvider) - assert.NoError(t, err) + require.NoError(t, err) _, err = flf.GetOrCreate("bar") - assert.NoError(t, err, "Error creating channel") - assert.Equal(t, 3, len(flf.ChannelIDs()), "Expected channel to be recovered") + require.NoError(t, err, "Error creating channel") + require.Equal(t, 3, len(flf.ChannelIDs()), "Expected channel to be recovered") flf.Close() } diff --git a/common/ledger/blockledger/fileledger/impl_test.go b/common/ledger/blockledger/fileledger/impl_test.go index a80436cedca..249d525e482 100644 --- a/common/ledger/blockledger/fileledger/impl_test.go +++ b/common/ledger/blockledger/fileledger/impl_test.go @@ -21,8 +21,8 @@ import ( "github.com/hyperledger/fabric/common/ledger/blockledger" "github.com/hyperledger/fabric/common/metrics/disabled" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) var genesisBlock = protoutil.NewBlock(0, nil) @@ -39,13 +39,13 @@ type testEnv struct { func initialize(t *testing.T) (*testEnv, *FileLedger) { name, err := ioutil.TempDir("", "hyperledger_fabric") - assert.NoError(t, err, "Error creating temp dir: %s", err) + require.NoError(t, err, "Error creating temp dir: %s", err) p, err := New(name, &disabled.Provider{}) - assert.NoError(t, err) + require.NoError(t, err) flf := p.(*fileLedgerFactory) fl, err := flf.GetOrCreate("testchannelid") - assert.NoError(t, err, "Error GetOrCreate channel") + require.NoError(t, err, "Error GetOrCreate channel") fl.Append(genesisBlock) return &testEnv{location: name, t: t, flf: flf}, fl.(*FileLedger) } @@ -129,11 +129,11 @@ func TestInitialization(t *testing.T) { tev, fl := initialize(t) defer tev.tearDown() - assert.Equal(t, uint64(1), fl.Height(), "Block height should be 1") + require.Equal(t, uint64(1), fl.Height(), "Block height should be 1") block := blockledger.GetBlock(fl, 0) - assert.NotNil(t, block, "Error retrieving genesis block") - assert.Equal(t, protoutil.BlockHeaderHash(genesisBlock.Header), protoutil.BlockHeaderHash(block.Header), "Block hashes did no match") + require.NotNil(t, block, "Error retrieving genesis block") + require.Equal(t, protoutil.BlockHeaderHash(genesisBlock.Header), protoutil.BlockHeaderHash(block.Header), "Block hashes did no match") } func TestReinitialization(t *testing.T) { @@ -149,32 +149,32 @@ func TestReinitialization(t *testing.T) { fl, err := tev.flf.GetOrCreate("testchannelid") ledger1, ok := fl.(*FileLedger) - assert.NoError(t, err, "Expected to successfully get test channel") - assert.Equal(t, 1, len(tev.flf.ChannelIDs()), "Exptected not new channel to be created") - assert.True(t, ok, "Exptected type assertion to succeed") - assert.Equal(t, uint64(2), ledger1.Height(), "Block height should be 2. Got %v", ledger1.Height()) + require.NoError(t, err, "Expected to successfully get test channel") + require.Equal(t, 1, len(tev.flf.ChannelIDs()), "Exptected not new channel to be created") + require.True(t, ok, "Exptected type assertion to succeed") + require.Equal(t, uint64(2), ledger1.Height(), "Block height should be 2. Got %v", ledger1.Height()) // shut down the ledger provider tev.shutDown() // re-initialize the ledger provider (not the test ledger itself!) provider2, err := New(tev.location, &disabled.Provider{}) - assert.NoError(t, err) + require.NoError(t, err) // assert expected ledgers exist channels := provider2.ChannelIDs() - assert.Equal(t, 1, len(channels), "Should have recovered the channel") + require.Equal(t, 1, len(channels), "Should have recovered the channel") // get the existing test channel ledger ledger2, err := provider2.GetOrCreate(channels[0]) - assert.NoError(t, err, "Unexpected error: %s", err) + require.NoError(t, err, "Unexpected error: %s", err) fl = ledger2.(*FileLedger) - assert.Equal(t, uint64(2), fl.Height(), "Block height should be 2. Got %v", fl.Height()) + require.Equal(t, uint64(2), fl.Height(), "Block height should be 2. Got %v", fl.Height()) block := blockledger.GetBlock(fl, 1) - assert.NotNil(t, block, "Error retrieving block 1") - assert.Equal(t, protoutil.BlockHeaderHash(b1.Header), protoutil.BlockHeaderHash(block.Header), "Block hashes did no match") + require.NotNil(t, block, "Error retrieving block 1") + require.Equal(t, protoutil.BlockHeaderHash(b1.Header), protoutil.BlockHeaderHash(block.Header), "Block hashes did no match") } func TestAddition(t *testing.T) { @@ -185,11 +185,11 @@ func TestAddition(t *testing.T) { envelope := getSampleEnvelopeWithSignatureHeader() b1 := blockledger.CreateNextBlock(fl, []*cb.Envelope{envelope}) fl.Append(b1) - assert.Equal(t, uint64(2), fl.Height(), "Block height should be 2") + require.Equal(t, uint64(2), fl.Height(), "Block height should be 2") block := blockledger.GetBlock(fl, 1) - assert.NotNil(t, block, "Error retrieving genesis block") - assert.Equal(t, prevHash, block.Header.PreviousHash, "Block hashes did no match") + require.NotNil(t, block, "Error retrieving genesis block") + require.Equal(t, prevHash, block.Header.PreviousHash, "Block hashes did no match") } func TestRetrieval(t *testing.T) { @@ -200,15 +200,15 @@ func TestRetrieval(t *testing.T) { fl.Append(b1) it, num := fl.Iterator(&ab.SeekPosition{Type: &ab.SeekPosition_Oldest{}}) defer it.Close() - assert.Zero(t, num, "Expected genesis block iterator, but got %d", num) + require.Zero(t, num, "Expected genesis block iterator, but got %d", num) block, status := it.Next() - assert.Equal(t, cb.Status_SUCCESS, status, "Expected to successfully read the genesis block") - assert.Zero(t, block.Header.Number, "Expected to successfully retrieve the genesis block") + require.Equal(t, cb.Status_SUCCESS, status, "Expected to successfully read the genesis block") + require.Zero(t, block.Header.Number, "Expected to successfully retrieve the genesis block") block, status = it.Next() - assert.Equal(t, cb.Status_SUCCESS, status, "Expected to successfully read the second block") - assert.Equal( + require.Equal(t, cb.Status_SUCCESS, status, "Expected to successfully read the second block") + require.Equal( t, uint64(1), block.Header.Number, @@ -223,15 +223,15 @@ func TestBlockedRetrieval(t *testing.T) { if num != 1 { t.Fatalf("Expected block iterator at 1, but got %d", num) } - assert.Equal(t, uint64(1), num, "Expected block iterator at 1, but got %d", num) + require.Equal(t, uint64(1), num, "Expected block iterator at 1, but got %d", num) envelope := getSampleEnvelopeWithSignatureHeader() b1 := blockledger.CreateNextBlock(fl, []*cb.Envelope{envelope}) fl.Append(b1) block, status := it.Next() - assert.Equal(t, cb.Status_SUCCESS, status, "Expected to successfully read the second block") - assert.Equal( + require.Equal(t, cb.Status_SUCCESS, status, "Expected to successfully read the second block") + require.Equal( t, uint64(1), block.Header.Number, @@ -241,8 +241,8 @@ func TestBlockedRetrieval(t *testing.T) { fl.Append(b2) block, status = it.Next() - assert.Equal(t, cb.Status_SUCCESS, status, "Expected to successfully read the third block") - assert.Equal(t, uint64(2), block.Header.Number, "Expected to successfully retrieve the third block") + require.Equal(t, cb.Status_SUCCESS, status, "Expected to successfully read the third block") + require.Equal(t, uint64(2), block.Header.Number, "Expected to successfully retrieve the third block") } func TestBlockstoreError(t *testing.T) { @@ -257,14 +257,14 @@ func TestBlockstoreError(t *testing.T) { }, signal: make(chan struct{}), } - assert.Panics( + require.Panics( t, func() { fl.Iterator(&ab.SeekPosition{Type: &ab.SeekPosition_Newest{}}) }, "Expected Iterator() to panic if blockstore operation fails") - assert.Panics( + require.Panics( t, func() { fl.Height() }, "Expected Height() to panic if blockstore operation fails ") @@ -281,7 +281,7 @@ func TestBlockstoreError(t *testing.T) { } it, _ := fl.Iterator(&ab.SeekPosition{Type: &ab.SeekPosition_Specified{Specified: &ab.SeekSpecified{Number: 42}}}) defer it.Close() - assert.IsType( + require.IsType( t, &blockledger.NotFoundErrorIterator{}, it, @@ -304,7 +304,7 @@ func TestBlockstoreError(t *testing.T) { it, _ := fl.Iterator(&ab.SeekPosition{Type: &ab.SeekPosition_Oldest{}}) defer it.Close() _, status := it.Next() - assert.Equal(t, cb.Status_SERVICE_UNAVAILABLE, status, "Expected service unavailable error") + require.Equal(t, cb.Status_SERVICE_UNAVAILABLE, status, "Expected service unavailable error") } } diff --git a/common/ledger/blockledger/util_test.go b/common/ledger/blockledger/util_test.go index d555837eb2e..107fae35f1d 100644 --- a/common/ledger/blockledger/util_test.go +++ b/common/ledger/blockledger/util_test.go @@ -12,7 +12,7 @@ import ( "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/common/deliver/mock" "github.com/hyperledger/fabric/common/ledger/blockledger" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestClose(t *testing.T) { @@ -48,7 +48,7 @@ func TestClose(t *testing.T) { blockledger.GetBlock(reader, 1) if !testCase.isIteratorNil { - assert.Equal(t, testCase.expectedCloseCount, iterator.CloseCallCount()) + require.Equal(t, testCase.expectedCloseCount, iterator.CloseCallCount()) } }) } diff --git a/common/ledger/testutil/test_helper.go b/common/ledger/testutil/test_helper.go index ea6308ce8d0..0865681a80c 100644 --- a/common/ledger/testutil/test_helper.go +++ b/common/ledger/testutil/test_helper.go @@ -23,7 +23,7 @@ import ( mspmgmt "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var signer msp.SigningIdentity @@ -74,7 +74,7 @@ type signingIdentity interface { // NewBlockGenerator instantiates new BlockGenerator for testing func NewBlockGenerator(t *testing.T, ledgerID string, signTxs bool) (*BlockGenerator, *common.Block) { gb, err := test.MakeGenesisBlock(ledgerID) - assert.NoError(t, err) + require.NoError(t, err) gb.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER] = txflags.NewWithValues(len(gb.Data.Data), pb.TxValidationCode_VALID) return &BlockGenerator{1, protoutil.BlockHeaderHash(gb.GetHeader()), signTxs, t}, gb } diff --git a/common/ledger/util/leveldbhelper/leveldb_helper_test.go b/common/ledger/util/leveldbhelper/leveldb_helper_test.go index c93bbbef614..115afc4065a 100644 --- a/common/ledger/util/leveldbhelper/leveldb_helper_test.go +++ b/common/ledger/util/leveldbhelper/leveldb_helper_test.go @@ -12,7 +12,6 @@ import ( "path/filepath" "testing" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/syndtr/goleveldb/leveldb" ) @@ -50,25 +49,25 @@ func TestLevelDBHelper(t *testing.T) { // second time open should not have any side effect db.Open() IsEmpty, err := db.IsEmpty() - assert.NoError(t, err) - assert.True(t, IsEmpty) + require.NoError(t, err) + require.True(t, IsEmpty) db.Put([]byte("key1"), []byte("value1"), false) db.Put([]byte("key2"), []byte("value2"), true) db.Put([]byte("key3"), []byte("value3"), true) val, _ := db.Get([]byte("key2")) - assert.Equal(t, "value2", string(val)) + require.Equal(t, "value2", string(val)) db.Delete([]byte("key1"), false) db.Delete([]byte("key2"), true) val1, err1 := db.Get([]byte("key1")) - assert.NoError(t, err1, "") - assert.Equal(t, "", string(val1)) + require.NoError(t, err1, "") + require.Equal(t, "", string(val1)) val2, err2 := db.Get([]byte("key2")) - assert.NoError(t, err2, "") - assert.Equal(t, "", string(val2)) + require.NoError(t, err2, "") + require.Equal(t, "", string(val2)) db.Close() // second time Close should not have any side effect @@ -78,13 +77,13 @@ func TestLevelDBHelper(t *testing.T) { require.Error(t, err) val3, err3 := db.Get([]byte("key3")) - assert.Error(t, err3) - assert.Equal(t, "", string(val3)) + require.Error(t, err3) + require.Equal(t, "", string(val3)) db.Open() IsEmpty, err = db.IsEmpty() - assert.NoError(t, err) - assert.False(t, IsEmpty) + require.NoError(t, err) + require.False(t, IsEmpty) batch := &leveldb.Batch{} batch.Put([]byte("key1"), []byte("value1")) @@ -93,74 +92,74 @@ func TestLevelDBHelper(t *testing.T) { db.WriteBatch(batch, true) val1, err1 = db.Get([]byte("key1")) - assert.NoError(t, err1, "") - assert.Equal(t, "value1", string(val1)) + require.NoError(t, err1, "") + require.Equal(t, "value1", string(val1)) val2, err2 = db.Get([]byte("key2")) - assert.NoError(t, err2, "") - assert.Equal(t, "value2", string(val2)) + require.NoError(t, err2, "") + require.Equal(t, "value2", string(val2)) val3, err3 = db.Get([]byte("key3")) - assert.NoError(t, err3, "") - assert.Equal(t, "", string(val3)) + require.NoError(t, err3, "") + require.Equal(t, "", string(val3)) keys := []string{} itr := db.GetIterator(nil, nil) for itr.Next() { keys = append(keys, string(itr.Key())) } - assert.Equal(t, []string{"key1", "key2"}, keys) + require.Equal(t, []string{"key1", "key2"}, keys) } func TestFileLock(t *testing.T) { // create 1st fileLock manager fileLockPath := testDBPath + "/fileLock" fileLock1 := NewFileLock(fileLockPath) - assert.Nil(t, fileLock1.db) - assert.Equal(t, fileLock1.filePath, fileLockPath) + require.Nil(t, fileLock1.db) + require.Equal(t, fileLock1.filePath, fileLockPath) // acquire the file lock using the fileLock manager 1 err := fileLock1.Lock() - assert.NoError(t, err) - assert.NotNil(t, fileLock1.db) + require.NoError(t, err) + require.NotNil(t, fileLock1.db) // create 2nd fileLock manager fileLock2 := NewFileLock(fileLockPath) - assert.Nil(t, fileLock2.db) - assert.Equal(t, fileLock2.filePath, fileLockPath) + require.Nil(t, fileLock2.db) + require.Equal(t, fileLock2.filePath, fileLockPath) // try to acquire the file lock again using the fileLock2 // would result in an error err = fileLock2.Lock() expectedErr := fmt.Sprintf("lock is already acquired on file %s", fileLockPath) - assert.EqualError(t, err, expectedErr) - assert.Nil(t, fileLock2.db) + require.EqualError(t, err, expectedErr) + require.Nil(t, fileLock2.db) // release the file lock acquired using fileLock1 fileLock1.Unlock() - assert.Nil(t, fileLock1.db) + require.Nil(t, fileLock1.db) // As the fileLock1 has released the lock, // the fileLock2 can acquire the lock. err = fileLock2.Lock() - assert.NoError(t, err) - assert.NotNil(t, fileLock2.db) + require.NoError(t, err) + require.NotNil(t, fileLock2.db) // release the file lock acquired using fileLock 2 fileLock2.Unlock() - assert.Nil(t, fileLock1.db) + require.Nil(t, fileLock1.db) // unlock can be called multiple times and it is safe fileLock2.Unlock() - assert.Nil(t, fileLock1.db) + require.Nil(t, fileLock1.db) // cleanup - assert.NoError(t, os.RemoveAll(fileLockPath)) + require.NoError(t, os.RemoveAll(fileLockPath)) } func TestCreateDBInEmptyDir(t *testing.T) { - assert.NoError(t, os.RemoveAll(testDBPath), "") - assert.NoError(t, os.MkdirAll(testDBPath, 0775), "") + require.NoError(t, os.RemoveAll(testDBPath), "") + require.NoError(t, os.MkdirAll(testDBPath, 0775), "") db := CreateDB(&Conf{DBPath: testDBPath}) defer db.Close() defer func() { @@ -172,10 +171,10 @@ func TestCreateDBInEmptyDir(t *testing.T) { } func TestCreateDBInNonEmptyDir(t *testing.T) { - assert.NoError(t, os.RemoveAll(testDBPath), "") - assert.NoError(t, os.MkdirAll(testDBPath, 0775), "") + require.NoError(t, os.RemoveAll(testDBPath), "") + require.NoError(t, os.MkdirAll(testDBPath, 0775), "") file, err := os.Create(filepath.Join(testDBPath, "dummyfile.txt")) - assert.NoError(t, err, "") + require.NoError(t, err, "") file.Close() db := CreateDB(&Conf{DBPath: testDBPath}) defer db.Close() diff --git a/common/ledger/util/leveldbhelper/leveldb_provider_test.go b/common/ledger/util/leveldbhelper/leveldb_provider_test.go index 91497abd3ab..d73381427eb 100644 --- a/common/ledger/util/leveldbhelper/leveldb_provider_test.go +++ b/common/ledger/util/leveldbhelper/leveldb_provider_test.go @@ -14,7 +14,6 @@ import ( "github.com/hyperledger/fabric/common/ledger/dataformat" "github.com/hyperledger/fabric/common/flogging" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -188,14 +187,14 @@ func TestBatchedUpdates(t *testing.T) { for _, db := range dbs { val1, _ := db.Get([]byte("key1")) - assert.Equal(t, "value1", string(val1)) + require.Equal(t, "value1", string(val1)) val2, err2 := db.Get([]byte("key2")) - assert.NoError(t, err2, "") - assert.Nil(t, val2) + require.NoError(t, err2, "") + require.Nil(t, val2) val3, _ := db.Get([]byte("key3")) - assert.Equal(t, "value3", string(val3)) + require.Equal(t, "value3", string(val3)) } } @@ -446,19 +445,19 @@ func TestIsEmpty(t *testing.T) { } func testFormatCheck(t *testing.T, dataFormat, expectedFormat string, dataExists bool, expectedErr *dataformat.ErrFormatMismatch) { - assert.NoError(t, os.RemoveAll(testDBPath)) + require.NoError(t, os.RemoveAll(testDBPath)) defer func() { - assert.NoError(t, os.RemoveAll(testDBPath)) + require.NoError(t, os.RemoveAll(testDBPath)) }() // setup test pre-conditions (create a db with dbformat) p, err := NewProvider(&Conf{DBPath: testDBPath, ExpectedFormat: dataFormat}) - assert.NoError(t, err) + require.NoError(t, err) f, err := p.GetDataFormat() - assert.NoError(t, err) - assert.Equal(t, dataFormat, f) + require.NoError(t, err) + require.Equal(t, dataFormat, f) if dataExists { - assert.NoError(t, p.GetDBHandle("testdb").Put([]byte("key"), []byte("value"), true)) + require.NoError(t, p.GetDBHandle("testdb").Put([]byte("key"), []byte("value"), true)) } // close and reopen with new conf @@ -466,13 +465,13 @@ func testFormatCheck(t *testing.T, dataFormat, expectedFormat string, dataExists p, err = NewProvider(&Conf{DBPath: testDBPath, ExpectedFormat: expectedFormat}) if expectedErr != nil { expectedErr.DBInfo = fmt.Sprintf("leveldb at [%s]", testDBPath) - assert.Equal(t, err, expectedErr) + require.Equal(t, err, expectedErr) return } - assert.NoError(t, err) + require.NoError(t, err) f, err = p.GetDataFormat() - assert.NoError(t, err) - assert.Equal(t, expectedFormat, f) + require.NoError(t, err) + require.Equal(t, expectedFormat, f) } func testDBBasicWriteAndReads(t *testing.T, dbNames ...string) { @@ -490,34 +489,34 @@ func testDBBasicWriteAndReads(t *testing.T, dbNames ...string) { for _, dbName := range dbNames { db := p.GetDBHandle(dbName) val, err := db.Get([]byte("key1")) - assert.NoError(t, err, "") - assert.Equal(t, []byte("value1_"+dbName), val) + require.NoError(t, err, "") + require.Equal(t, []byte("value1_"+dbName), val) val, err = db.Get([]byte("key2")) - assert.NoError(t, err, "") - assert.Equal(t, []byte("value2_"+dbName), val) + require.NoError(t, err, "") + require.Equal(t, []byte("value2_"+dbName), val) val, err = db.Get([]byte("key3")) - assert.NoError(t, err, "") - assert.Equal(t, []byte("value3_"+dbName), val) + require.NoError(t, err, "") + require.Equal(t, []byte("value3_"+dbName), val) } for _, dbName := range dbNames { db := p.GetDBHandle(dbName) - assert.NoError(t, db.Delete([]byte("key1"), false), "") + require.NoError(t, db.Delete([]byte("key1"), false), "") val, err := db.Get([]byte("key1")) - assert.NoError(t, err, "") - assert.Nil(t, val) + require.NoError(t, err, "") + require.Nil(t, val) - assert.NoError(t, db.Delete([]byte("key2"), false), "") + require.NoError(t, db.Delete([]byte("key2"), false), "") val, err = db.Get([]byte("key2")) - assert.NoError(t, err, "") - assert.Nil(t, val) + require.NoError(t, err, "") + require.Nil(t, val) - assert.NoError(t, db.Delete([]byte("key3"), false), "") + require.NoError(t, db.Delete([]byte("key3"), false), "") val, err = db.Get([]byte("key3")) - assert.NoError(t, err, "") - assert.Nil(t, val) + require.NoError(t, err, "") + require.Nil(t, val) } } @@ -528,9 +527,9 @@ func checkItrResults(t *testing.T, itr *Iterator, expectedKeys []string, expecte actualKeys = append(actualKeys, string(itr.Key())) actualValues = append(actualValues, string(itr.Value())) } - assert.Equal(t, expectedKeys, actualKeys) - assert.Equal(t, expectedValues, actualValues) - assert.Equal(t, false, itr.Next()) + require.Equal(t, expectedKeys, actualKeys) + require.Equal(t, expectedValues, actualValues) + require.Equal(t, false, itr.Next()) } func createTestKey(i int) string { diff --git a/common/ledger/util/leveldbhelper/pkg_test.go b/common/ledger/util/leveldbhelper/pkg_test.go index 6c1624d7271..f92af3a304f 100644 --- a/common/ledger/util/leveldbhelper/pkg_test.go +++ b/common/ledger/util/leveldbhelper/pkg_test.go @@ -10,7 +10,7 @@ import ( "os" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const testDBPath = "/tmp/fabric/ledgertests/util/leveldbhelper" @@ -49,12 +49,12 @@ func (dbEnv *testDBEnv) cleanup() { if dbEnv.db != nil { dbEnv.db.Close() } - assert.NoError(dbEnv.t, os.RemoveAll(dbEnv.path)) + require.NoError(dbEnv.t, os.RemoveAll(dbEnv.path)) } func (providerEnv *testDBProviderEnv) cleanup() { if providerEnv.provider != nil { providerEnv.provider.Close() } - assert.NoError(providerEnv.t, os.RemoveAll(providerEnv.path)) + require.NoError(providerEnv.t, os.RemoveAll(providerEnv.path)) } diff --git a/common/ledger/util/util_test.go b/common/ledger/util/util_test.go index dd91b3e1e1f..8047321d1ce 100644 --- a/common/ledger/util/util_test.go +++ b/common/ledger/util/util_test.go @@ -22,7 +22,7 @@ import ( "testing" "github.com/golang/protobuf/proto" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestBasicEncodingDecoding(t *testing.T) { @@ -34,7 +34,7 @@ func TestBasicEncodingDecoding(t *testing.T) { i, i+1, value, nextValue) } decodedValue, _, err := DecodeOrderPreservingVarUint64(value) - assert.NoError(t, err, "Error via calling DecodeOrderPreservingVarUint64") + require.NoError(t, err, "Error via calling DecodeOrderPreservingVarUint64") if decodedValue != uint64(i) { t.Fatalf("Value not same after decoding. Original value = [%d], decode value = [%d]", i, decodedValue) } @@ -53,7 +53,7 @@ func TestDecodingAppendedValues(t *testing.T) { for i := 0; i < 1000; i++ { appendedValues = appendedValues[len:] value, len, err = DecodeOrderPreservingVarUint64(appendedValues) - assert.NoError(t, err, "Error via calling DecodeOrderPreservingVarUint64") + require.NoError(t, err, "Error via calling DecodeOrderPreservingVarUint64") if value != uint64(i) { t.Fatalf("expected value = [%d], decode value = [%d]", i, value) } @@ -64,20 +64,20 @@ func TestDecodingBadInputBytes(t *testing.T) { // error case when num consumed bytes > 1 sizeBytes := proto.EncodeVarint(uint64(1000)) _, _, err := DecodeOrderPreservingVarUint64(sizeBytes) - assert.Equal(t, fmt.Sprintf("number of consumed bytes from DecodeVarint is invalid, expected 1, but got %d", len(sizeBytes)), err.Error()) + require.Equal(t, fmt.Sprintf("number of consumed bytes from DecodeVarint is invalid, expected 1, but got %d", len(sizeBytes)), err.Error()) // error case when decoding invalid bytes - trim off last byte invalidSizeBytes := sizeBytes[0 : len(sizeBytes)-1] _, _, err = DecodeOrderPreservingVarUint64(invalidSizeBytes) - assert.Equal(t, "number of consumed bytes from DecodeVarint is invalid, expected 1, but got 0", err.Error()) + require.Equal(t, "number of consumed bytes from DecodeVarint is invalid, expected 1, but got 0", err.Error()) // error case when size is more than available bytes inputBytes := proto.EncodeVarint(uint64(8)) _, _, err = DecodeOrderPreservingVarUint64(inputBytes) - assert.Equal(t, "decoded size (8) from DecodeVarint is more than available bytes (0)", err.Error()) + require.Equal(t, "decoded size (8) from DecodeVarint is more than available bytes (0)", err.Error()) // error case when size is greater than 8 bigSizeBytes := proto.EncodeVarint(uint64(12)) _, _, err = DecodeOrderPreservingVarUint64(bigSizeBytes) - assert.Equal(t, "decoded size from DecodeVarint is invalid, expected <=8, but got 12", err.Error()) + require.Equal(t, "decoded size from DecodeVarint is invalid, expected <=8, but got 12", err.Error()) } diff --git a/common/policies/convert_test.go b/common/policies/convert_test.go index 0f2e23f74c9..3c607d1b1a7 100644 --- a/common/policies/convert_test.go +++ b/common/policies/convert_test.go @@ -17,7 +17,7 @@ import ( "github.com/hyperledger/fabric/msp" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestImplicitMetaPolicy_Convert(t *testing.T) { @@ -42,8 +42,8 @@ func TestImplicitMetaPolicy_Convert(t *testing.T) { }, }, }) - assert.NotNil(t, p1) - assert.NoError(t, err) + require.NotNil(t, p1) + require.NoError(t, err) p2, err := pfs.NewPolicy(&cb.SignaturePolicyEnvelope{ Version: 0, @@ -60,8 +60,8 @@ func TestImplicitMetaPolicy_Convert(t *testing.T) { }, }, }) - assert.NotNil(t, p2) - assert.NoError(t, err) + require.NotNil(t, p2) + require.NoError(t, err) p := &policies.PolicyLogger{ Policy: &policies.ImplicitMetaPolicy{ @@ -72,9 +72,9 @@ func TestImplicitMetaPolicy_Convert(t *testing.T) { } spe, err := p.Convert() - assert.NoError(t, err) - assert.NotNil(t, spe) - assert.Equal(t, &cb.SignaturePolicyEnvelope{ + require.NoError(t, err) + require.NotNil(t, spe) + require.Equal(t, &cb.SignaturePolicyEnvelope{ Version: 0, Rule: policydsl.And( policydsl.SignedBy(0), @@ -113,12 +113,12 @@ func TestImplicitMetaPolicy_Convert1(t *testing.T) { pfs := &cauthdsl.EnvelopeBasedPolicyProvider{} p1, err := pfs.NewPolicy(policydsl.SignedByAnyMember([]string{"A", "B"})) - assert.NotNil(t, p1) - assert.NoError(t, err) + require.NotNil(t, p1) + require.NoError(t, err) p2, err := pfs.NewPolicy(policydsl.SignedByAnyMember([]string{"B"})) - assert.NotNil(t, p2) - assert.NoError(t, err) + require.NotNil(t, p2) + require.NoError(t, err) p := &policies.ImplicitMetaPolicy{ Threshold: 2, @@ -127,9 +127,9 @@ func TestImplicitMetaPolicy_Convert1(t *testing.T) { } spe, err := p.Convert() - assert.NoError(t, err) - assert.NotNil(t, spe) - assert.Equal(t, &cb.SignaturePolicyEnvelope{ + require.NoError(t, err) + require.NotNil(t, spe) + require.Equal(t, &cb.SignaturePolicyEnvelope{ Version: 0, Rule: policydsl.And( policydsl.Or( @@ -219,8 +219,8 @@ func TestImplicitMetaPolicy_Convert2(t *testing.T) { }, }, }) - assert.NotNil(t, p1) - assert.NoError(t, err) + require.NotNil(t, p1) + require.NoError(t, err) p2, err := pfs.NewPolicy(&cb.SignaturePolicyEnvelope{ Version: 0, @@ -251,8 +251,8 @@ func TestImplicitMetaPolicy_Convert2(t *testing.T) { }, }, }) - assert.NotNil(t, p2) - assert.NoError(t, err) + require.NotNil(t, p2) + require.NoError(t, err) p := &policies.ImplicitMetaPolicy{ Threshold: 2, @@ -261,9 +261,9 @@ func TestImplicitMetaPolicy_Convert2(t *testing.T) { } spe, err := p.Convert() - assert.NoError(t, err) - assert.NotNil(t, spe) - assert.Equal(t, &cb.SignaturePolicyEnvelope{ + require.NoError(t, err) + require.NotNil(t, spe) + require.Equal(t, &cb.SignaturePolicyEnvelope{ Version: 0, Rule: policydsl.And( policydsl.NOutOf(1, @@ -353,8 +353,8 @@ func TestImplicitMetaPolicy_Convert3(t *testing.T) { }, }, }) - assert.NotNil(t, p1) - assert.NoError(t, err) + require.NotNil(t, p1) + require.NoError(t, err) p2, err := pfs.NewPolicy(&cb.SignaturePolicyEnvelope{ Version: 0, @@ -371,8 +371,8 @@ func TestImplicitMetaPolicy_Convert3(t *testing.T) { }, }, }) - assert.NotNil(t, p2) - assert.NoError(t, err) + require.NotNil(t, p2) + require.NoError(t, err) p3, err := pfs.NewPolicy(&cb.SignaturePolicyEnvelope{ Version: 0, @@ -389,8 +389,8 @@ func TestImplicitMetaPolicy_Convert3(t *testing.T) { }, }, }) - assert.NotNil(t, p3) - assert.NoError(t, err) + require.NotNil(t, p3) + require.NoError(t, err) mp1 := &policies.ImplicitMetaPolicy{ Threshold: 2, @@ -405,9 +405,9 @@ func TestImplicitMetaPolicy_Convert3(t *testing.T) { } spe, err := mp2.Convert() - assert.NoError(t, err) - assert.NotNil(t, spe) - assert.Equal(t, &cb.SignaturePolicyEnvelope{ + require.NoError(t, err) + require.NotNil(t, spe) + require.Equal(t, &cb.SignaturePolicyEnvelope{ Version: 0, Rule: policydsl.And( policydsl.And( @@ -472,8 +472,8 @@ func TestImplicitMetaPolicy_Convert4(t *testing.T) { }, }, }) - assert.NotNil(t, p1) - assert.NoError(t, err) + require.NotNil(t, p1) + require.NoError(t, err) p2, err := pfs.NewPolicy(&cb.SignaturePolicyEnvelope{ Version: 0, @@ -490,8 +490,8 @@ func TestImplicitMetaPolicy_Convert4(t *testing.T) { }, }, }) - assert.NotNil(t, p2) - assert.NoError(t, err) + require.NotNil(t, p2) + require.NoError(t, err) p3, err := pfs.NewPolicy(&cb.SignaturePolicyEnvelope{ Version: 0, @@ -508,8 +508,8 @@ func TestImplicitMetaPolicy_Convert4(t *testing.T) { }, }, }) - assert.NotNil(t, p3) - assert.NoError(t, err) + require.NotNil(t, p3) + require.NoError(t, err) mp1 := &policies.ImplicitMetaPolicy{ Threshold: 2, @@ -524,9 +524,9 @@ func TestImplicitMetaPolicy_Convert4(t *testing.T) { } spe, err := mp2.Convert() - assert.NoError(t, err) - assert.NotNil(t, spe) - assert.Equal(t, &cb.SignaturePolicyEnvelope{ + require.NoError(t, err) + require.NotNil(t, spe) + require.Equal(t, &cb.SignaturePolicyEnvelope{ Version: 0, Rule: policydsl.And( policydsl.And( @@ -606,8 +606,8 @@ func TestImplicitMetaPolicy_Convert5(t *testing.T) { }, }, }) - assert.NotNil(t, p1) - assert.NoError(t, err) + require.NotNil(t, p1) + require.NoError(t, err) p2, err := pfs.NewPolicy(&cb.SignaturePolicyEnvelope{ Version: 0, @@ -638,8 +638,8 @@ func TestImplicitMetaPolicy_Convert5(t *testing.T) { }, }, }) - assert.NotNil(t, p2) - assert.NoError(t, err) + require.NotNil(t, p2) + require.NoError(t, err) p := &policies.ImplicitMetaPolicy{ Threshold: 2, @@ -648,9 +648,9 @@ func TestImplicitMetaPolicy_Convert5(t *testing.T) { } spe, err := p.Convert() - assert.NoError(t, err) - assert.NotNil(t, spe) - assert.Equal(t, &cb.SignaturePolicyEnvelope{ + require.NoError(t, err) + require.NotNil(t, spe) + require.Equal(t, &cb.SignaturePolicyEnvelope{ Version: 0, Rule: policydsl.And( policydsl.NOutOf(1, @@ -764,8 +764,8 @@ func TestImplicitMetaPolicy_Convert6(t *testing.T) { }, }, }) - assert.NotNil(t, p1) - assert.NoError(t, err) + require.NotNil(t, p1) + require.NoError(t, err) p2, err := pfs.NewPolicy(&cb.SignaturePolicyEnvelope{ Version: 0, @@ -796,8 +796,8 @@ func TestImplicitMetaPolicy_Convert6(t *testing.T) { }, }, }) - assert.NotNil(t, p2) - assert.NoError(t, err) + require.NotNil(t, p2) + require.NoError(t, err) p := &policies.ImplicitMetaPolicy{ Threshold: 2, @@ -806,9 +806,9 @@ func TestImplicitMetaPolicy_Convert6(t *testing.T) { } spe, err := p.Convert() - assert.NoError(t, err) - assert.NotNil(t, spe) - assert.Equal(t, &cb.SignaturePolicyEnvelope{ + require.NoError(t, err) + require.NotNil(t, spe) + require.Equal(t, &cb.SignaturePolicyEnvelope{ Version: 0, Rule: policydsl.And( policydsl.NOutOf(1, @@ -878,8 +878,8 @@ func TestImplicitMetaPolicy_Convert7(t *testing.T) { } spe, err := p.Convert() - assert.EqualError(t, err, "subpolicy number 0 type *policies_test.inconvertiblePolicy of policy mypolicy is not convertible") - assert.Nil(t, spe) + require.EqualError(t, err, "subpolicy number 0 type *policies_test.inconvertiblePolicy of policy mypolicy is not convertible") + require.Nil(t, spe) } type convertFailurePolicy struct{} @@ -910,6 +910,6 @@ func TestImplicitMetaPolicy_Convert8(t *testing.T) { } spe, err := p.Convert() - assert.EqualError(t, err, "failed to convert subpolicy number 0 of policy mypolicy: nope") - assert.Nil(t, spe) + require.EqualError(t, err, "failed to convert subpolicy number 0 of policy mypolicy: nope") + require.Nil(t, spe) } diff --git a/common/policies/implicitmeta_test.go b/common/policies/implicitmeta_test.go index 8e5cbe19a73..c38f45e9ea3 100644 --- a/common/policies/implicitmeta_test.go +++ b/common/policies/implicitmeta_test.go @@ -14,7 +14,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const TestPolicyName = "TestPolicyName" @@ -31,7 +31,7 @@ func (ap acceptPolicy) EvaluateIdentities(identity []msp.Identity) error { func TestImplicitMarshalError(t *testing.T) { _, err := NewImplicitMetaPolicy([]byte("GARBAGE"), nil) - assert.Error(t, err, "Should have errored unmarshaling garbage") + require.Error(t, err, "Should have errored unmarshaling garbage") } func makeManagers(count, passing int) map[string]*ManagerImpl { @@ -73,45 +73,45 @@ func runPolicyTest(t *testing.T, rule cb.ImplicitMetaPolicy_Rule, managerCount i errI := imp.EvaluateIdentities(nil) - assert.False(t, ((errI == nil && errSD != nil) || (errSD == nil && errI != nil))) + require.False(t, ((errI == nil && errSD != nil) || (errSD == nil && errI != nil))) if errI != nil && errSD != nil { - assert.Equal(t, errI.Error(), errSD.Error()) + require.Equal(t, errI.Error(), errSD.Error()) } return errI } func TestImplicitMetaAny(t *testing.T) { - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ANY, 1, 1)) - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ANY, 10, 1)) - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ANY, 10, 8)) - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ANY, 0, 0)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ANY, 1, 1)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ANY, 10, 1)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ANY, 10, 8)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ANY, 0, 0)) err := runPolicyTest(t, cb.ImplicitMetaPolicy_ANY, 10, 0) - assert.EqualError(t, err, "implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'TestPolicyName' sub-policies to be satisfied") + require.EqualError(t, err, "implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'TestPolicyName' sub-policies to be satisfied") } func TestImplicitMetaAll(t *testing.T) { - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ALL, 1, 1)) - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ALL, 10, 10)) - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ALL, 0, 0)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ALL, 1, 1)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ALL, 10, 10)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_ALL, 0, 0)) err := runPolicyTest(t, cb.ImplicitMetaPolicy_ALL, 10, 1) - assert.EqualError(t, err, "implicit policy evaluation failed - 1 sub-policies were satisfied, but this policy requires 10 of the 'TestPolicyName' sub-policies to be satisfied") + require.EqualError(t, err, "implicit policy evaluation failed - 1 sub-policies were satisfied, but this policy requires 10 of the 'TestPolicyName' sub-policies to be satisfied") err = runPolicyTest(t, cb.ImplicitMetaPolicy_ALL, 10, 0) - assert.EqualError(t, err, "implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 10 of the 'TestPolicyName' sub-policies to be satisfied") + require.EqualError(t, err, "implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 10 of the 'TestPolicyName' sub-policies to be satisfied") } func TestImplicitMetaMajority(t *testing.T) { - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_MAJORITY, 1, 1)) - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_MAJORITY, 10, 6)) - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_MAJORITY, 3, 2)) - assert.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_MAJORITY, 0, 0)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_MAJORITY, 1, 1)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_MAJORITY, 10, 6)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_MAJORITY, 3, 2)) + require.NoError(t, runPolicyTest(t, cb.ImplicitMetaPolicy_MAJORITY, 0, 0)) err := runPolicyTest(t, cb.ImplicitMetaPolicy_MAJORITY, 10, 5) - assert.EqualError(t, err, "implicit policy evaluation failed - 5 sub-policies were satisfied, but this policy requires 6 of the 'TestPolicyName' sub-policies to be satisfied") + require.EqualError(t, err, "implicit policy evaluation failed - 5 sub-policies were satisfied, but this policy requires 6 of the 'TestPolicyName' sub-policies to be satisfied") err = runPolicyTest(t, cb.ImplicitMetaPolicy_MAJORITY, 10, 0) - assert.EqualError(t, err, "implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 6 of the 'TestPolicyName' sub-policies to be satisfied") + require.EqualError(t, err, "implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 6 of the 'TestPolicyName' sub-policies to be satisfied") } diff --git a/common/policies/implicitmetaparser_test.go b/common/policies/implicitmetaparser_test.go index 80f532564a0..52cd7aa664a 100644 --- a/common/policies/implicitmetaparser_test.go +++ b/common/policies/implicitmetaparser_test.go @@ -12,7 +12,6 @@ import ( "github.com/golang/protobuf/proto" cb "github.com/hyperledger/fabric-protos-go/common" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -21,31 +20,31 @@ func TestImplicitMetaParserWrongTokenCount(t *testing.T) { t.Run("NoArgs", func(t *testing.T) { res, err := ImplicitMetaFromString("") - assert.Nil(t, res) + require.Nil(t, res) require.Error(t, err) - assert.Regexp(t, errorMatch, err.Error()) + require.Regexp(t, errorMatch, err.Error()) }) t.Run("OneArg", func(t *testing.T) { res, err := ImplicitMetaFromString("ANY") - assert.Nil(t, res) + require.Nil(t, res) require.Error(t, err) - assert.Regexp(t, errorMatch, err.Error()) + require.Regexp(t, errorMatch, err.Error()) }) t.Run("ThreeArgs", func(t *testing.T) { res, err := ImplicitMetaFromString("ANY of these") - assert.Nil(t, res) + require.Nil(t, res) require.Error(t, err) - assert.Regexp(t, errorMatch, err.Error()) + require.Regexp(t, errorMatch, err.Error()) }) } func TestImplicitMetaParserBadRule(t *testing.T) { res, err := ImplicitMetaFromString("BAD Rule") - assert.Nil(t, res) + require.Nil(t, res) require.Error(t, err) - assert.Regexp(t, "unknown rule type 'BAD'", err.Error()) + require.Regexp(t, "unknown rule type 'BAD'", err.Error()) } func TestImplicitMetaParserGreenPath(t *testing.T) { @@ -54,7 +53,7 @@ func TestImplicitMetaParserGreenPath(t *testing.T) { subPolicy := "foo" res, err := ImplicitMetaFromString(fmt.Sprintf("%v %s", rule, subPolicy)) require.NoError(t, err) - assert.True(t, proto.Equal(res, &cb.ImplicitMetaPolicy{ + require.True(t, proto.Equal(res, &cb.ImplicitMetaPolicy{ SubPolicy: subPolicy, Rule: rule, })) diff --git a/common/policies/inquire/compare_test.go b/common/policies/inquire/compare_test.go index 1eab36a0812..c77a1cbf738 100644 --- a/common/policies/inquire/compare_test.go +++ b/common/policies/inquire/compare_test.go @@ -12,7 +12,7 @@ import ( "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric/common/policies" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestToPrincipalSet(t *testing.T) { @@ -20,7 +20,7 @@ func TestToPrincipalSet(t *testing.T) { cps = append(cps, NewComparablePrincipal(member("Org1MSP"))) cps = append(cps, NewComparablePrincipal(member("Org2MSP"))) expected := policies.PrincipalSet{member("Org1MSP"), member("Org2MSP")} - assert.Equal(t, expected, cps.ToPrincipalSet()) + require.Equal(t, expected, cps.ToPrincipalSet()) } func TestToPrincipalSets(t *testing.T) { @@ -37,28 +37,28 @@ func TestToPrincipalSets(t *testing.T) { {member("Org3MSP"), member("Org4MSP")}, } - assert.Equal(t, expected, ComparablePrincipalSets{cps, cps2}.ToPrincipalSets()) + require.Equal(t, expected, ComparablePrincipalSets{cps, cps2}.ToPrincipalSets()) } func TestNewComparablePrincipal(t *testing.T) { mspID := "Org1MSP" t.Run("Nil input", func(t *testing.T) { - assert.Nil(t, NewComparablePrincipal(nil)) + require.Nil(t, NewComparablePrincipal(nil)) }) t.Run("Invalid principal type", func(t *testing.T) { - assert.Nil(t, NewComparablePrincipal(identity(mspID))) + require.Nil(t, NewComparablePrincipal(identity(mspID))) }) t.Run("Invalid principal input", func(t *testing.T) { member := member(mspID) member.Principal = append(member.Principal, 0) - assert.Nil(t, NewComparablePrincipal(member)) + require.Nil(t, NewComparablePrincipal(member)) ou := ou(mspID) ou.Principal = append(ou.Principal, 0) - assert.Nil(t, NewComparablePrincipal(ou)) + require.Nil(t, NewComparablePrincipal(ou)) }) t.Run("Role", func(t *testing.T) { @@ -70,7 +70,7 @@ func TestNewComparablePrincipal(t *testing.T) { Principal: protoutil.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: mspID}), }, } - assert.Equal(t, expectedPrincipal, NewComparablePrincipal(member(mspID))) + require.Equal(t, expectedPrincipal, NewComparablePrincipal(member(mspID))) }) t.Run("OU", func(t *testing.T) { @@ -83,7 +83,7 @@ func TestNewComparablePrincipal(t *testing.T) { Principal: protoutil.MarshalOrPanic(&msp.OrganizationUnit{OrganizationalUnitIdentifier: "ou", MspIdentifier: mspID}), }, } - assert.Equal(t, expectedPrincipal, NewComparablePrincipal(ou(mspID))) + require.Equal(t, expectedPrincipal, NewComparablePrincipal(ou(mspID))) }) } @@ -98,52 +98,52 @@ func TestIsA(t *testing.T) { ou2 := NewComparablePrincipal(ou("Org2MSP")) t.Run("Nil input", func(t *testing.T) { - assert.False(t, member1.IsA(nil)) + require.False(t, member1.IsA(nil)) }) t.Run("Incorrect state", func(t *testing.T) { - assert.False(t, (&ComparablePrincipal{}).IsA(member1)) + require.False(t, (&ComparablePrincipal{}).IsA(member1)) }) t.Run("Same MSP ID", func(t *testing.T) { - assert.True(t, member1.IsA(NewComparablePrincipal(member("Org1MSP")))) + require.True(t, member1.IsA(NewComparablePrincipal(member("Org1MSP")))) }) t.Run("A peer is also a member", func(t *testing.T) { - assert.True(t, peer1.IsA(member1)) + require.True(t, peer1.IsA(member1)) }) t.Run("A member isn't a peer", func(t *testing.T) { - assert.False(t, member1.IsA(peer1)) + require.False(t, member1.IsA(peer1)) }) t.Run("Different MSP IDs", func(t *testing.T) { - assert.False(t, member1.IsA(member2)) - assert.False(t, peer2.IsA(peer1)) + require.False(t, member1.IsA(member2)) + require.False(t, peer2.IsA(peer1)) }) t.Run("An OU member is also a member", func(t *testing.T) { - assert.True(t, peer1.IsA(member1)) + require.True(t, peer1.IsA(member1)) }) t.Run("A member isn't an OU member", func(t *testing.T) { - assert.False(t, member1.IsA(peer1)) + require.False(t, member1.IsA(peer1)) }) t.Run("Same OU", func(t *testing.T) { - assert.True(t, ou1.IsA(NewComparablePrincipal(ou("Org1MSP")))) + require.True(t, ou1.IsA(NewComparablePrincipal(ou("Org1MSP")))) }) t.Run("Different OU", func(t *testing.T) { - assert.False(t, ou1.IsA(ou2)) + require.False(t, ou1.IsA(ou2)) }) t.Run("Same OU, different issuer", func(t *testing.T) { - assert.False(t, ou1.IsA(ou1ButDifferentIssuer)) + require.False(t, ou1.IsA(ou1ButDifferentIssuer)) }) t.Run("OUs and Peers aren't the same", func(t *testing.T) { - assert.False(t, ou1.IsA(peer1)) + require.False(t, ou1.IsA(peer1)) }) } @@ -152,16 +152,16 @@ func TestIsFound(t *testing.T) { member2 := NewComparablePrincipal(member("Org2MSP")) peer1 := NewComparablePrincipal(peer("Org1MSP")) - assert.True(t, member1.IsFound(member1, member2)) - assert.False(t, member1.IsFound()) - assert.False(t, member1.IsFound(member2, peer1)) - assert.True(t, peer1.IsFound(member1, member2)) + require.True(t, member1.IsFound(member1, member2)) + require.False(t, member1.IsFound()) + require.False(t, member1.IsFound(member2, peer1)) + require.True(t, peer1.IsFound(member1, member2)) } func TestNewComparablePrincipalSet(t *testing.T) { t.Run("Invalid principal", func(t *testing.T) { principals := []*msp.MSPPrincipal{member("Org1MSP"), identity("Org1MSP")} - assert.Nil(t, NewComparablePrincipalSet(policies.PrincipalSet(principals))) + require.Nil(t, NewComparablePrincipalSet(policies.PrincipalSet(principals))) }) t.Run("Valid Principals", func(t *testing.T) { @@ -170,7 +170,7 @@ func TestNewComparablePrincipalSet(t *testing.T) { principals := []*msp.MSPPrincipal{member("Org1MSP"), peer("Org2MSP")} cps := NewComparablePrincipalSet(policies.PrincipalSet(principals)) expected := ComparablePrincipalSet([]*ComparablePrincipal{member1, peer2}) - assert.Equal(t, expected, cps) + require.Equal(t, expected, cps) }) } diff --git a/common/policies/inquire/inquire_test.go b/common/policies/inquire/inquire_test.go index 27474540c58..2485a4c7bb7 100644 --- a/common/policies/inquire/inquire_test.go +++ b/common/policies/inquire/inquire_test.go @@ -14,7 +14,7 @@ import ( "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric/common/policydsl" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type testCase struct { @@ -87,7 +87,7 @@ func TestSatisfiedBy(t *testing.T) { for _, test := range cases { t.Run(test.name, func(t *testing.T) { p, err := policydsl.FromString(test.policy) - assert.NoError(t, err) + require.NoError(t, err) ip := NewInquireableSignaturePolicy(p) satisfiedBy := ip.SatisfiedBy() @@ -101,7 +101,7 @@ func TestSatisfiedBy(t *testing.T) { actual[fmt.Sprintf("%v", principals)] = struct{}{} } - assert.Equal(t, test.expected, actual) + require.Equal(t, test.expected, actual) }) } } @@ -115,7 +115,7 @@ func TestSatisfiedByTooManyCombinations(t *testing.T) { " 'G.member', 'H.member', 'I.member', 'J.member', 'K.member', 'L.member', 'M.member', 'N.member', 'O.member', " + "'P.member', 'Q.member', 'R.member', 'S.member', 'T.member', 'U.member', 'V.member', 'W.member', 'X.member', " + "'Y.member', 'Z.member')") - assert.NoError(t, err) + require.NoError(t, err) ip := NewInquireableSignaturePolicy(p) satisfiedBy := ip.SatisfiedBy() @@ -123,7 +123,7 @@ func TestSatisfiedByTooManyCombinations(t *testing.T) { actual := make(map[string]struct{}) for _, ps := range satisfiedBy { // Every subset is of size 15, as needed by the endorsement policy. - assert.Len(t, ps, 15) + require.Len(t, ps, 15) var principals []string for _, principal := range ps { principals = append(principals, mspId(principal)) @@ -131,5 +131,5 @@ func TestSatisfiedByTooManyCombinations(t *testing.T) { actual[fmt.Sprintf("%v", principals)] = struct{}{} } // Total combinations are capped by the combinationsUpperBound. - assert.True(t, len(actual) < combinationsUpperBound) + require.True(t, len(actual) < combinationsUpperBound) } diff --git a/common/policies/inquire/merge_test.go b/common/policies/inquire/merge_test.go index d0340ec6a88..c03d90ba79b 100644 --- a/common/policies/inquire/merge_test.go +++ b/common/policies/inquire/merge_test.go @@ -9,7 +9,7 @@ package inquire import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var ( @@ -27,16 +27,16 @@ var ( func TestString(t *testing.T) { cps := ComparablePrincipalSet{member1, member2, NewComparablePrincipal(ou("Org3MSP"))} - assert.Equal(t, "[Org1MSP.MEMBER, Org2MSP.MEMBER, Org3MSP.ou]", cps.String()) + require.Equal(t, "[Org1MSP.MEMBER, Org2MSP.MEMBER, Org3MSP.ou]", cps.String()) } func TestClone(t *testing.T) { cps := ComparablePrincipalSet{member1, member2} clone := cps.Clone() - assert.Equal(t, cps, clone) + require.Equal(t, cps, clone) // Nil out the first entry and ensure that it isn't reflected in the clone cps[0] = nil - assert.False(t, cps[0] == clone[0]) + require.False(t, cps[0] == clone[0]) } func TestMergeInclusiveWithPlurality(t *testing.T) { @@ -58,18 +58,18 @@ func TestMergeInclusiveWithPlurality(t *testing.T) { merged := Merge(s1, s2) expected := ComparablePrincipalSets{peers12member2, peers34} - assert.Equal(t, expected, merged) + require.Equal(t, expected, merged) // Shuffle the order of principal sets and ensure the result is the same s1 = ComparablePrincipalSets{peers34, members12} s2 = ComparablePrincipalSets{members34, peers12} merged = Merge(s1, s2) - assert.Equal(t, expected, merged) + require.Equal(t, expected, merged) // Shuffle the order to the call merged = Merge(s2, s1) expected = ComparablePrincipalSets{peers34, peers12member2} - assert.Equal(t, expected, merged) + require.Equal(t, expected, merged) } func TestMergeExclusiveWithPlurality(t *testing.T) { @@ -93,7 +93,7 @@ func TestMergeExclusiveWithPlurality(t *testing.T) { s2 := ComparablePrincipalSets{members23, peers45} merged := Merge(s1, s2) expected := ComparablePrincipalSets{members1223, peers345, members122peers45, peers34members23} - assert.True(t, expected.IsEqual(merged)) + require.True(t, expected.IsEqual(merged)) } func TestMergePartialExclusiveWithPlurality(t *testing.T) { @@ -118,7 +118,7 @@ func TestMergePartialExclusiveWithPlurality(t *testing.T) { s2 := ComparablePrincipalSets{members23, peer3members44, peer4member5} merged := Merge(s1, s2) expected := ComparablePrincipalSets{members123, peers34member5} - assert.True(t, expected.IsEqual(merged)) + require.True(t, expected.IsEqual(merged)) } func TestMergeWithPlurality(t *testing.T) { @@ -128,7 +128,7 @@ func TestMergeWithPlurality(t *testing.T) { } merged := pair.MergeWithPlurality() expected := ComparablePrincipalSet{peer3, peer4, member5, member4} - assert.Equal(t, expected, merged) + require.Equal(t, expected, merged) } func TestMergeSubsetPrincipalSets(t *testing.T) { @@ -136,24 +136,24 @@ func TestMergeSubsetPrincipalSets(t *testing.T) { member1Or2 := ComparablePrincipalSets{ComparablePrincipalSet{member1}, ComparablePrincipalSet{member2}} merged := Merge(member1And2, member1Or2) expected := member1And2 - assert.True(t, expected.IsEqual(merged)) + require.True(t, expected.IsEqual(merged)) } func TestEqual(t *testing.T) { member1 := NewComparablePrincipal(member("Org1MSP")) member2 := NewComparablePrincipal(member("Org2MSP")) anotherMember1 := NewComparablePrincipal(member("Org1MSP")) - assert.False(t, member1.Equal(member2)) - assert.True(t, member1.Equal(anotherMember1)) + require.False(t, member1.Equal(member2)) + require.True(t, member1.Equal(anotherMember1)) } func TestIsSubset(t *testing.T) { members12 := ComparablePrincipalSet{member1, member2, member2} members321 := ComparablePrincipalSet{member3, member2, member1} members13 := ComparablePrincipalSet{member1, member3} - assert.True(t, members12.IsSubset(members12)) - assert.True(t, members12.IsSubset(members321)) - assert.False(t, members12.IsSubset(members13)) + require.True(t, members12.IsSubset(members12)) + require.True(t, members12.IsSubset(members321)) + require.False(t, members12.IsSubset(members13)) } func TestReduce(t *testing.T) { @@ -164,7 +164,7 @@ func TestReduce(t *testing.T) { peers34 := ComparablePrincipalSet{peer3, peer4} s := ComparablePrincipalSets{members12, peers34, members123, members123, members12peers45, peers45} expected := ComparablePrincipalSets{members12, peers34, peers45} - assert.Equal(t, expected, s.Reduce()) + require.Equal(t, expected, s.Reduce()) } // IsEqual returns whether this ComparablePrincipalSets contains the elements of the given ComparablePrincipalSets diff --git a/common/policies/policy_test.go b/common/policies/policy_test.go index 0f7aea637d9..21e9bdf031a 100644 --- a/common/policies/policy_test.go +++ b/common/policies/policy_test.go @@ -21,7 +21,7 @@ import ( mspi "github.com/hyperledger/fabric/msp" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" ) @@ -59,21 +59,21 @@ func TestUnnestedManager(t *testing.T) { } m, err := NewManagerImpl("test", defaultProviders(), config) - assert.NoError(t, err) - assert.NotNil(t, m) + require.NoError(t, err) + require.NotNil(t, m) _, ok := m.Manager([]string{"subGroup"}) - assert.False(t, ok, "Should not have found a subgroup manager") + require.False(t, ok, "Should not have found a subgroup manager") r, ok := m.Manager([]string{}) - assert.True(t, ok, "Should have found the root manager") - assert.Equal(t, m, r) + require.True(t, ok, "Should have found the root manager") + require.Equal(t, m, r) - assert.Len(t, m.Policies, len(config.Policies)) + require.Len(t, m.Policies, len(config.Policies)) for policyName := range config.Policies { _, ok := m.GetPolicy(policyName) - assert.True(t, ok, "Should have found policy %s", policyName) + require.True(t, ok, "Should have found policy %s", policyName) } } @@ -112,87 +112,87 @@ func TestNestedManager(t *testing.T) { } m, err := NewManagerImpl("nest0", defaultProviders(), config) - assert.NoError(t, err) - assert.NotNil(t, m) + require.NoError(t, err) + require.NotNil(t, m) r, ok := m.Manager([]string{}) - assert.True(t, ok, "Should have found the root manager") - assert.Equal(t, m, r) + require.True(t, ok, "Should have found the root manager") + require.Equal(t, m, r) n1, ok := m.Manager([]string{"nest1"}) - assert.True(t, ok) + require.True(t, ok) n2a, ok := m.Manager([]string{"nest1", "nest2a"}) - assert.True(t, ok) + require.True(t, ok) n2b, ok := m.Manager([]string{"nest1", "nest2b"}) - assert.True(t, ok) + require.True(t, ok) n2as, ok := n1.Manager([]string{"nest2a"}) - assert.True(t, ok) - assert.Equal(t, n2a, n2as) + require.True(t, ok) + require.Equal(t, n2a, n2as) n2bs, ok := n1.Manager([]string{"nest2b"}) - assert.True(t, ok) - assert.Equal(t, n2b, n2bs) + require.True(t, ok) + require.Equal(t, n2b, n2bs) absPrefix := PathSeparator + "nest0" + PathSeparator for policyName := range config.Policies { _, ok := m.GetPolicy(policyName) - assert.True(t, ok, "Should have found policy %s", policyName) + require.True(t, ok, "Should have found policy %s", policyName) absName := absPrefix + policyName _, ok = m.GetPolicy(absName) - assert.True(t, ok, "Should have found absolute policy %s", absName) + require.True(t, ok, "Should have found absolute policy %s", absName) } for policyName := range config.Groups["nest1"].Policies { _, ok := n1.GetPolicy(policyName) - assert.True(t, ok, "Should have found policy %s", policyName) + require.True(t, ok, "Should have found policy %s", policyName) relPathFromBase := "nest1" + PathSeparator + policyName _, ok = m.GetPolicy(relPathFromBase) - assert.True(t, ok, "Should have found policy %s", policyName) + require.True(t, ok, "Should have found policy %s", policyName) for i, abs := range []Manager{n1, m} { absName := absPrefix + relPathFromBase _, ok = abs.GetPolicy(absName) - assert.True(t, ok, "Should have found absolutely policy for manager %d", i) + require.True(t, ok, "Should have found absolutely policy for manager %d", i) } } for policyName := range config.Groups["nest1"].Groups["nest2a"].Policies { _, ok := n2a.GetPolicy(policyName) - assert.True(t, ok, "Should have found policy %s", policyName) + require.True(t, ok, "Should have found policy %s", policyName) relPathFromN1 := "nest2a" + PathSeparator + policyName _, ok = n1.GetPolicy(relPathFromN1) - assert.True(t, ok, "Should have found policy %s", policyName) + require.True(t, ok, "Should have found policy %s", policyName) relPathFromBase := "nest1" + PathSeparator + relPathFromN1 _, ok = m.GetPolicy(relPathFromBase) - assert.True(t, ok, "Should have found policy %s", policyName) + require.True(t, ok, "Should have found policy %s", policyName) for i, abs := range []Manager{n2a, n1, m} { absName := absPrefix + relPathFromBase _, ok = abs.GetPolicy(absName) - assert.True(t, ok, "Should have found absolutely policy for manager %d", i) + require.True(t, ok, "Should have found absolutely policy for manager %d", i) } } for policyName := range config.Groups["nest1"].Groups["nest2b"].Policies { _, ok := n2b.GetPolicy(policyName) - assert.True(t, ok, "Should have found policy %s", policyName) + require.True(t, ok, "Should have found policy %s", policyName) relPathFromN1 := "nest2b" + PathSeparator + policyName _, ok = n1.GetPolicy(relPathFromN1) - assert.True(t, ok, "Should have found policy %s", policyName) + require.True(t, ok, "Should have found policy %s", policyName) relPathFromBase := "nest1" + PathSeparator + relPathFromN1 _, ok = m.GetPolicy(relPathFromBase) - assert.True(t, ok, "Should have found policy %s", policyName) + require.True(t, ok, "Should have found policy %s", policyName) for i, abs := range []Manager{n2b, n1, m} { absName := absPrefix + relPathFromBase _, ok = abs.GetPolicy(absName) - assert.True(t, ok, "Should have found absolutely policy for manager %d", i) + require.True(t, ok, "Should have found absolutely policy for manager %d", i) } } } @@ -214,8 +214,8 @@ func TestPrincipalUniqueSet(t *testing.T) { addPrincipal(3) for principal, plurality := range principalSet.UniqueSet() { - assert.Equal(t, int(principal.PrincipalClassification), plurality) - assert.Equal(t, fmt.Sprintf("%d", plurality), string(principal.Principal)) + require.Equal(t, int(principal.PrincipalClassification), plurality) + require.Equal(t, fmt.Sprintf("%d", plurality), string(principal.Principal)) } v := reflect.Indirect(reflect.ValueOf(msp.MSPPrincipal{})) @@ -224,7 +224,7 @@ func TestPrincipalUniqueSet(t *testing.T) { // XXX This is a rather brittle check and brittle way to fix the test // There seems to be an assumption that the number of fields in the proto // struct matches the number of fields in the proto message - assert.Equal(t, 5, v.NumField()) + require.Equal(t, 5, v.NumField()) } func TestPrincipalSetContainingOnly(t *testing.T) { @@ -248,8 +248,8 @@ func TestPrincipalSetContainingOnly(t *testing.T) { principalSets = principalSets.ContainingOnly(between20And30) - assert.Len(t, principalSets, 1) - assert.True(t, principalSets[0].ContainingOnly(between20And30)) + require.Len(t, principalSets, 1) + require.True(t, principalSets[0].ContainingOnly(between20And30)) } func TestSignatureSetToValidIdentities(t *testing.T) { @@ -276,15 +276,15 @@ func TestSignatureSetToValidIdentities(t *testing.T) { fIDDs.DeserializeIdentityReturns(fID, nil) ids := SignatureSetToValidIdentities(sd, fIDDs) - assert.Len(t, ids, 1) - assert.NotNil(t, ids[0].GetIdentifier()) - assert.Equal(t, "id", ids[0].GetIdentifier().Id) - assert.Equal(t, "mspid", ids[0].GetIdentifier().Mspid) + require.Len(t, ids, 1) + require.NotNil(t, ids[0].GetIdentifier()) + require.Equal(t, "id", ids[0].GetIdentifier().Id) + require.Equal(t, "mspid", ids[0].GetIdentifier().Mspid) data, sig := fID.VerifyArgsForCall(0) - assert.Equal(t, []byte("data1"), data) - assert.Equal(t, []byte("signature1"), sig) + require.Equal(t, []byte("data1"), data) + require.Equal(t, []byte("signature1"), sig) sidBytes := fIDDs.DeserializeIdentityArgsForCall(0) - assert.Equal(t, []byte("identity1"), sidBytes) + require.Equal(t, []byte("identity1"), sidBytes) } func TestSignatureSetToValidIdentitiesDeserializeErr(t *testing.T) { @@ -298,14 +298,14 @@ func TestSignatureSetToValidIdentitiesDeserializeErr(t *testing.T) { // generate actual x509 certificate ca, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) client1, err := ca.NewClientCertKeyPair() - assert.NoError(t, err) + require.NoError(t, err) id := &msp.SerializedIdentity{ IdBytes: client1.Cert, } idBytes, err := proto.Marshal(id) - assert.NoError(t, err) + require.NoError(t, err) tests := []struct { spec string @@ -335,7 +335,7 @@ func TestSignatureSetToValidIdentitiesDeserializeErr(t *testing.T) { for _, tc := range tests { t.Run(tc.spec, func(t *testing.T) { ids := SignatureSetToValidIdentities(tc.signedData, fakeIdentityDeserializer) - assert.Len(t, ids, 0) + require.Len(t, ids, 0) assertLogContains(t, recorder, tc.expectedLogEntryContains...) }) } @@ -360,17 +360,17 @@ func TestSignatureSetToValidIdentitiesVerifyErr(t *testing.T) { fIDDs.DeserializeIdentityReturns(fID, nil) ids := SignatureSetToValidIdentities(sd, fIDDs) - assert.Len(t, ids, 0) + require.Len(t, ids, 0) data, sig := fID.VerifyArgsForCall(0) - assert.Equal(t, []byte("data1"), data) - assert.Equal(t, []byte("signature1"), sig) + require.Equal(t, []byte("data1"), data) + require.Equal(t, []byte("signature1"), sig) sidBytes := fIDDs.DeserializeIdentityArgsForCall(0) - assert.Equal(t, []byte("identity1"), sidBytes) + require.Equal(t, []byte("identity1"), sidBytes) } func assertLogContains(t *testing.T, r *floggingtest.Recorder, ss ...string) { defer r.Reset() for _, s := range ss { - assert.NotEmpty(t, r.EntriesContaining(s)) + require.NotEmpty(t, r.EntriesContaining(s)) } } diff --git a/common/policies/util_test.go b/common/policies/util_test.go index 1ab9b549fc7..6871fd9840a 100644 --- a/common/policies/util_test.go +++ b/common/policies/util_test.go @@ -10,13 +10,13 @@ import ( "testing" cb "github.com/hyperledger/fabric-protos-go/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func basicTest(t *testing.T, sv *StandardConfigPolicy) { - assert.NotNil(t, sv) - assert.NotEmpty(t, sv.Key()) - assert.NotNil(t, sv.Value()) + require.NotNil(t, sv) + require.NotEmpty(t, sv.Key()) + require.NotNil(t, sv.Value()) } func TestUtilsBasic(t *testing.T) { diff --git a/common/policydsl/policyparser_test.go b/common/policydsl/policyparser_test.go index 0a24f76eb0e..c429dfcd152 100644 --- a/common/policydsl/policyparser_test.go +++ b/common/policydsl/policyparser_test.go @@ -13,12 +13,12 @@ import ( "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestOutOf1(t *testing.T) { p1, err := FromString("OutOf(1, 'A.member', 'B.member')") - assert.NoError(t, err) + require.NoError(t, err) principals := make([]*msp.MSPPrincipal, 0) @@ -36,12 +36,12 @@ func TestOutOf1(t *testing.T) { Identities: principals, } - assert.Equal(t, p1, p2) + require.Equal(t, p1, p2) } func TestOutOf2(t *testing.T) { p1, err := FromString("OutOf(2, 'A.member', 'B.member')") - assert.NoError(t, err) + require.NoError(t, err) principals := make([]*msp.MSPPrincipal, 0) @@ -59,12 +59,12 @@ func TestOutOf2(t *testing.T) { Identities: principals, } - assert.Equal(t, p1, p2) + require.Equal(t, p1, p2) } func TestAnd(t *testing.T) { p1, err := FromString("AND('A.member', 'B.member')") - assert.NoError(t, err) + require.NoError(t, err) principals := make([]*msp.MSPPrincipal, 0) @@ -82,12 +82,12 @@ func TestAnd(t *testing.T) { Identities: principals, } - assert.Equal(t, p1, p2) + require.Equal(t, p1, p2) } func TestAndClientPeerOrderer(t *testing.T) { p1, err := FromString("AND('A.client', 'B.peer')") - assert.NoError(t, err) + require.NoError(t, err) principals := make([]*msp.MSPPrincipal, 0) @@ -105,13 +105,13 @@ func TestAndClientPeerOrderer(t *testing.T) { Identities: principals, } - assert.True(t, reflect.DeepEqual(p1, p2)) + require.True(t, reflect.DeepEqual(p1, p2)) } func TestOr(t *testing.T) { p1, err := FromString("OR('A.member', 'B.member')") - assert.NoError(t, err) + require.NoError(t, err) principals := make([]*msp.MSPPrincipal, 0) @@ -129,12 +129,12 @@ func TestOr(t *testing.T) { Identities: principals, } - assert.Equal(t, p1, p2) + require.Equal(t, p1, p2) } func TestComplex1(t *testing.T) { p1, err := FromString("OR('A.member', AND('B.member', 'C.member'))") - assert.NoError(t, err) + require.NoError(t, err) principals := make([]*msp.MSPPrincipal, 0) @@ -156,12 +156,12 @@ func TestComplex1(t *testing.T) { Identities: principals, } - assert.Equal(t, p1, p2) + require.Equal(t, p1, p2) } func TestComplex2(t *testing.T) { p1, err := FromString("OR(AND('A.member', 'B.member'), OR('C.admin', 'D.member'))") - assert.NoError(t, err) + require.NoError(t, err) principals := make([]*msp.MSPPrincipal, 0) @@ -187,12 +187,12 @@ func TestComplex2(t *testing.T) { Identities: principals, } - assert.Equal(t, p1, p2) + require.Equal(t, p1, p2) } func TestMSPIDWIthSpecialChars(t *testing.T) { p1, err := FromString("OR('MSP.member', 'MSP.WITH.DOTS.member', 'MSP-WITH-DASHES.member')") - assert.NoError(t, err) + require.NoError(t, err) principals := make([]*msp.MSPPrincipal, 0) @@ -214,23 +214,23 @@ func TestMSPIDWIthSpecialChars(t *testing.T) { Identities: principals, } - assert.Equal(t, p1, p2) + require.Equal(t, p1, p2) } func TestBadStringsNoPanic(t *testing.T) { _, err := FromString("OR('A.member', Bmember)") // error after 1st Evaluate() - assert.EqualError(t, err, "unrecognized token 'Bmember' in policy string") + require.EqualError(t, err, "unrecognized token 'Bmember' in policy string") _, err = FromString("OR('A.member', 'Bmember')") // error after 2nd Evalute() - assert.EqualError(t, err, "unrecognized token 'Bmember' in policy string") + require.EqualError(t, err, "unrecognized token 'Bmember' in policy string") _, err = FromString(`OR('A.member', '\'Bmember\'')`) // error after 3rd Evalute() - assert.EqualError(t, err, "unrecognized token 'Bmember' in policy string") + require.EqualError(t, err, "unrecognized token 'Bmember' in policy string") } func TestNodeOUs(t *testing.T) { p1, err := FromString("OR('A.peer', 'B.admin', 'C.orderer', 'D.client')") - assert.NoError(t, err) + require.NoError(t, err) principals := make([]*msp.MSPPrincipal, 0) @@ -256,12 +256,12 @@ func TestNodeOUs(t *testing.T) { Identities: principals, } - assert.Equal(t, p1, p2) + require.Equal(t, p1, p2) } func TestOutOfNumIsString(t *testing.T) { p1, err := FromString("OutOf('1', 'A.member', 'B.member')") - assert.NoError(t, err) + require.NoError(t, err) principals := make([]*msp.MSPPrincipal, 0) @@ -279,75 +279,75 @@ func TestOutOfNumIsString(t *testing.T) { Identities: principals, } - assert.Equal(t, p1, p2) + require.Equal(t, p1, p2) } func TestOutOfErrorCase(t *testing.T) { p1, err1 := FromString("") // 1st NewEvaluableExpressionWithFunctions() returns an error - assert.Nil(t, p1) - assert.EqualError(t, err1, "Unexpected end of expression") + require.Nil(t, p1) + require.EqualError(t, err1, "Unexpected end of expression") p2, err2 := FromString("OutOf(1)") // outof() if len(args)<2 - assert.Nil(t, p2) - assert.EqualError(t, err2, "expected at least two arguments to NOutOf. Given 1") + require.Nil(t, p2) + require.EqualError(t, err2, "expected at least two arguments to NOutOf. Given 1") p3, err3 := FromString("OutOf(true, 'A.member')") // outof() }else{. 1st arg is non of float, int, string - assert.Nil(t, p3) - assert.EqualError(t, err3, "unexpected type bool") + require.Nil(t, p3) + require.EqualError(t, err3, "unexpected type bool") p4, err4 := FromString("OutOf(1, 2)") // oufof() switch default. 2nd arg is not string. - assert.Nil(t, p4) - assert.EqualError(t, err4, "unexpected type float64") + require.Nil(t, p4) + require.EqualError(t, err4, "unexpected type float64") p5, err5 := FromString("OutOf(1, 'true')") // firstPass() switch default - assert.Nil(t, p5) - assert.EqualError(t, err5, "unexpected type bool") + require.Nil(t, p5) + require.EqualError(t, err5, "unexpected type bool") p6, err6 := FromString(`OutOf('\'\\\'A\\\'\'', 'B.member')`) // secondPass() switch args[1].(type) default - assert.Nil(t, p6) - assert.EqualError(t, err6, "unrecognized type, expected a number, got string") + require.Nil(t, p6) + require.EqualError(t, err6, "unrecognized type, expected a number, got string") p7, err7 := FromString(`OutOf(1, '\'1\'')`) // secondPass() switch args[1].(type) default - assert.Nil(t, p7) - assert.EqualError(t, err7, "unrecognized type, expected a principal or a policy, got float64") + require.Nil(t, p7) + require.EqualError(t, err7, "unrecognized type, expected a principal or a policy, got float64") p8, err8 := FromString(`''`) // 2nd NewEvaluateExpressionWithFunction() returns an error - assert.Nil(t, p8) - assert.EqualError(t, err8, "Unexpected end of expression") + require.Nil(t, p8) + require.EqualError(t, err8, "Unexpected end of expression") p9, err9 := FromString(`'\'\''`) // 3rd NewEvaluateExpressionWithFunction() returns an error - assert.Nil(t, p9) - assert.EqualError(t, err9, "Unexpected end of expression") + require.Nil(t, p9) + require.EqualError(t, err9, "Unexpected end of expression") } func TestBadStringBeforeFAB11404_ThisCanDeleteAfterFAB11404HasMerged(t *testing.T) { s1 := "1" // ineger in string p1, err1 := FromString(s1) - assert.Nil(t, p1) - assert.EqualError(t, err1, `invalid policy string '1'`) + require.Nil(t, p1) + require.EqualError(t, err1, `invalid policy string '1'`) s2 := "'1'" // quoted ineger in string p2, err2 := FromString(s2) - assert.Nil(t, p2) - assert.EqualError(t, err2, `invalid policy string ''1''`) + require.Nil(t, p2) + require.EqualError(t, err2, `invalid policy string ''1''`) s3 := `'\'1\''` // nested quoted ineger in string p3, err3 := FromString(s3) - assert.Nil(t, p3) - assert.EqualError(t, err3, `invalid policy string ''\'1\'''`) + require.Nil(t, p3) + require.EqualError(t, err3, `invalid policy string ''\'1\'''`) } func TestSecondPassBoundaryCheck(t *testing.T) { // Check lower boundary // Prohibit t<0 p0, err0 := FromString("OutOf(-1, 'A.member', 'B.member')") - assert.Nil(t, p0) - assert.EqualError(t, err0, "invalid t-out-of-n predicate, t -1, n 2") + require.Nil(t, p0) + require.EqualError(t, err0, "invalid t-out-of-n predicate, t -1, n 2") // Permit t==0 : always satisfied policy // There is no clear usecase of t=0, but somebody may already use it, so we don't treat as an error. p1, err1 := FromString("OutOf(0, 'A.member', 'B.member')") - assert.NoError(t, err1) + require.NoError(t, err1) principals := make([]*msp.MSPPrincipal, 0) principals = append(principals, &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, @@ -360,22 +360,22 @@ func TestSecondPassBoundaryCheck(t *testing.T) { Rule: NOutOf(0, []*common.SignaturePolicy{SignedBy(0), SignedBy(1)}), Identities: principals, } - assert.Equal(t, expected1, p1) + require.Equal(t, expected1, p1) // Check upper boundary // Permit t==n+1 : never satisfied policy // Usecase: To create immutable ledger key p2, err2 := FromString("OutOf(3, 'A.member', 'B.member')") - assert.NoError(t, err2) + require.NoError(t, err2) expected2 := &common.SignaturePolicyEnvelope{ Version: 0, Rule: NOutOf(3, []*common.SignaturePolicy{SignedBy(0), SignedBy(1)}), Identities: principals, } - assert.Equal(t, expected2, p2) + require.Equal(t, expected2, p2) // Prohibit t>n + 1 p3, err3 := FromString("OutOf(4, 'A.member', 'B.member')") - assert.Nil(t, p3) - assert.EqualError(t, err3, "invalid t-out-of-n predicate, t 4, n 2") + require.Nil(t, p3) + require.EqualError(t, err3, "invalid t-out-of-n predicate, t 4, n 2") } diff --git a/common/semaphore/semaphore_test.go b/common/semaphore/semaphore_test.go index f33aff6474e..9aa9133658d 100644 --- a/common/semaphore/semaphore_test.go +++ b/common/semaphore/semaphore_test.go @@ -12,11 +12,11 @@ import ( "github.com/hyperledger/fabric/common/semaphore" . "github.com/onsi/gomega" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewSemaphorePanic(t *testing.T) { - assert.PanicsWithValue(t, "permits must be greater than 0", func() { semaphore.New(0) }) + require.PanicsWithValue(t, "permits must be greater than 0", func() { semaphore.New(0) }) } func TestSemaphoreAcquireBlocking(t *testing.T) { @@ -70,5 +70,5 @@ func TestSemaphoreTryAcquireBufferFull(t *testing.T) { func TestSemaphoreReleaseTooMany(t *testing.T) { sema := semaphore.New(1) - assert.PanicsWithValue(t, "semaphore buffer is empty", func() { sema.Release() }) + require.PanicsWithValue(t, "semaphore buffer is empty", func() { sema.Release() }) } diff --git a/common/tools/idemixgen/idemixca/idemixca_test.go b/common/tools/idemixgen/idemixca/idemixca_test.go index 953a545984c..268930efcb3 100644 --- a/common/tools/idemixgen/idemixca/idemixca_test.go +++ b/common/tools/idemixgen/idemixca/idemixca_test.go @@ -19,7 +19,7 @@ import ( "github.com/hyperledger/fabric/idemix" m "github.com/hyperledger/fabric/msp" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var testDir = filepath.Join(os.TempDir(), "idemixca-test") @@ -28,17 +28,17 @@ func TestIdemixCa(t *testing.T) { cleanup() isk, ipkBytes, err := GenerateIssuerKey() - assert.NoError(t, err) + require.NoError(t, err) revocationkey, err := idemix.GenerateLongTermRevocationKey() - assert.NoError(t, err) + require.NoError(t, err) ipk := &idemix.IssuerPublicKey{} err = proto.Unmarshal(ipkBytes, ipk) - assert.NoError(t, err) + require.NoError(t, err) encodedRevocationPK, err := x509.MarshalPKIXPublicKey(revocationkey.Public()) - assert.NoError(t, err) + require.NoError(t, err) pemEncodedRevocationPK := pem.EncodeToMemory(&pem.Block{Type: "PUBLIC KEY", Bytes: encodedRevocationPK}) writeVerifierToFile(ipkBytes, pemEncodedRevocationPK) @@ -46,26 +46,26 @@ func TestIdemixCa(t *testing.T) { key := &idemix.IssuerKey{Isk: isk, Ipk: ipk} conf, err := GenerateSignerConfig(m.GetRoleMaskFromIdemixRole(m.MEMBER), "OU1", "enrollmentid1", 1, key, revocationkey) - assert.NoError(t, err) + require.NoError(t, err) cleanupSigner() - assert.NoError(t, writeSignerToFile(conf)) - assert.NoError(t, setupMSP()) + require.NoError(t, writeSignerToFile(conf)) + require.NoError(t, setupMSP()) conf, err = GenerateSignerConfig(m.GetRoleMaskFromIdemixRole(m.ADMIN), "OU1", "enrollmentid2", 1234, key, revocationkey) - assert.NoError(t, err) + require.NoError(t, err) cleanupSigner() - assert.NoError(t, writeSignerToFile(conf)) - assert.NoError(t, setupMSP()) + require.NoError(t, writeSignerToFile(conf)) + require.NoError(t, setupMSP()) // Without the verifier dir present, setup should give an error cleanupVerifier() - assert.Error(t, setupMSP()) + require.Error(t, setupMSP()) _, err = GenerateSignerConfig(m.GetRoleMaskFromIdemixRole(m.ADMIN), "", "enrollmentid", 1, key, revocationkey) - assert.EqualError(t, err, "the OU attribute value is empty") + require.EqualError(t, err, "the OU attribute value is empty") _, err = GenerateSignerConfig(m.GetRoleMaskFromIdemixRole(m.ADMIN), "OU1", "", 1, key, revocationkey) - assert.EqualError(t, err, "the enrollment id value is empty") + require.EqualError(t, err, "the enrollment id value is empty") } func cleanup() error { diff --git a/common/tools/idemixgen/metadata/metadata_test.go b/common/tools/idemixgen/metadata/metadata_test.go index e54c7bd8907..d98c134fba2 100644 --- a/common/tools/idemixgen/metadata/metadata_test.go +++ b/common/tools/idemixgen/metadata/metadata_test.go @@ -12,7 +12,7 @@ import ( "testing" "github.com/hyperledger/fabric/common/tools/idemixgen/metadata" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetVersionInfo(t *testing.T) { @@ -22,5 +22,5 @@ func TestGetVersionInfo(t *testing.T) { expected := fmt.Sprintf("%s:\n Version: %s\n Commit SHA: %s\n Go version: %s\n OS/Arch: %s", metadata.ProgramName, metadata.Version, testSHA, runtime.Version(), fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH)) - assert.Equal(t, expected, metadata.GetVersionInfo()) + require.Equal(t, expected, metadata.GetVersionInfo()) } diff --git a/common/util/net_test.go b/common/util/net_test.go index f1bb8c8d58e..850e03ea077 100644 --- a/common/util/net_test.go +++ b/common/util/net_test.go @@ -10,7 +10,7 @@ import ( "context" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc/peer" ) @@ -27,10 +27,10 @@ func (*addr) String() string { func TestExtractAddress(t *testing.T) { ctx := context.Background() - assert.Zero(t, ExtractRemoteAddress(ctx)) + require.Zero(t, ExtractRemoteAddress(ctx)) ctx = peer.NewContext(ctx, &peer.Peer{ Addr: &addr{}, }) - assert.Equal(t, "1.2.3.4:5000", ExtractRemoteAddress(ctx)) + require.Equal(t, "1.2.3.4:5000", ExtractRemoteAddress(ctx)) } diff --git a/core/aclmgmt/resourceprovider_test.go b/core/aclmgmt/resourceprovider_test.go index c75b2ccf693..620f645de07 100644 --- a/core/aclmgmt/resourceprovider_test.go +++ b/core/aclmgmt/resourceprovider_test.go @@ -18,7 +18,7 @@ import ( "github.com/hyperledger/fabric/internal/pkg/identity" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func newPolicyProvider(pEvaluator policyEvaluator) aclmgmtPolicyProvider { @@ -60,13 +60,13 @@ func TestPolicyBase(t *testing.T) { pprov := newPolicyProvider(peval) sProp, _ := protoutil.MockSignedEndorserProposalOrPanic("A", &peer.ChaincodeSpec{}, []byte("Alice"), []byte("msg1")) err := pprov.CheckACL("pol", sProp) - assert.NoError(t, err) + require.NoError(t, err) signer := &mocks.SignerSerializer{} env, err := protoutil.CreateSignedEnvelope(common.HeaderType_CONFIG, "myc", signer, &common.ConfigEnvelope{}, 0, 0) - assert.NoError(t, err) + require.NoError(t, err) err = pprov.CheckACL("pol", env) - assert.NoError(t, err) + require.NoError(t, err) } func TestPolicyBad(t *testing.T) { @@ -75,16 +75,16 @@ func TestPolicyBad(t *testing.T) { //bad policy err := pprov.CheckACL("pol", []byte("not a signed proposal")) - assert.Error(t, err, InvalidIdInfo("pol").Error()) + require.Error(t, err, InvalidIdInfo("pol").Error()) sProp, _ := protoutil.MockSignedEndorserProposalOrPanic("A", &peer.ChaincodeSpec{}, []byte("Alice"), []byte("msg1")) err = pprov.CheckACL("badpolicy", sProp) - assert.Error(t, err) + require.Error(t, err) sProp, _ = protoutil.MockSignedEndorserProposalOrPanic("A", &peer.ChaincodeSpec{}, []byte("Alice"), []byte("msg1")) sProp.ProposalBytes = []byte("bad proposal bytes") err = pprov.CheckACL("res", sProp) - assert.Error(t, err) + require.Error(t, err) sProp, _ = protoutil.MockSignedEndorserProposalOrPanic("A", &peer.ChaincodeSpec{}, []byte("Alice"), []byte("msg1")) prop := &peer.Proposal{} @@ -94,7 +94,7 @@ func TestPolicyBad(t *testing.T) { prop.Header = []byte("bad hdr") sProp.ProposalBytes = protoutil.MarshalOrPanic(prop) err = pprov.CheckACL("res", sProp) - assert.Error(t, err) + require.Error(t, err) } // test to ensure ptypes are processed by default provider @@ -104,7 +104,7 @@ func TestForceDefaultsForPType(t *testing.T) { defAclProvider.IsPtypePolicyReturns(true) rp := &resourceProvider{defaultProvider: defAclProvider} err := rp.CheckACL("aptype", "somechannel", struct{}{}) - assert.NoError(t, err) + require.NoError(t, err) } func init() { diff --git a/core/cclifecycle/lifecycle_test.go b/core/cclifecycle/lifecycle_test.go index aeee27ba042..29328dabe3f 100644 --- a/core/cclifecycle/lifecycle_test.go +++ b/core/cclifecycle/lifecycle_test.go @@ -27,8 +27,8 @@ import ( . "github.com/onsi/gomega" "github.com/onsi/gomega/gbytes" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestNewQuery(t *testing.T) { @@ -45,8 +45,8 @@ func TestNewQuery(t *testing.T) { func TestHandleMetadataUpdate(t *testing.T) { f := func(channel string, chaincodes chaincode.MetadataSet) { - assert.Len(t, chaincodes, 2) - assert.Equal(t, "mychannel", channel) + require.Len(t, chaincodes, 2) + require.Equal(t, "mychannel", channel) } cclifecycle.HandleMetadataUpdateFunc(f).HandleMetadataUpdate("mychannel", chaincode.MetadataSet{{}, {}}) } @@ -56,16 +56,16 @@ func TestEnumerate(t *testing.T) { return []chaincode.InstalledChaincode{{}, {}}, nil } ccs, err := cclifecycle.EnumerateFunc(f).Enumerate() - assert.NoError(t, err) - assert.Len(t, ccs, 2) + require.NoError(t, err) + require.Len(t, ccs, 2) } func TestLifecycleInitFailure(t *testing.T) { listCCs := &mocks.Enumerator{} listCCs.On("Enumerate").Return(nil, errors.New("failed accessing DB")) m, err := cclifecycle.NewMetadataManager(listCCs) - assert.Nil(t, m) - assert.Contains(t, err.Error(), "failed accessing DB") + require.Nil(t, m) + require.Contains(t, err.Error(), "failed accessing DB") } func TestHandleChaincodeDeployGreenPath(t *testing.T) { @@ -121,15 +121,15 @@ func TestHandleChaincodeDeployGreenPath(t *testing.T) { }, nil) m, err := cclifecycle.NewMetadataManager(enum) - assert.NoError(t, err) + require.NoError(t, err) lsnr := &mocks.MetadataChangeListener{} lsnr.On("HandleMetadataUpdate", mock.Anything, mock.Anything) m.AddListener(lsnr) sub, err := m.NewChannelSubscription("mychannel", queryCreator) - assert.NoError(t, err) - assert.NotNil(t, sub) + require.NoError(t, err) + require.NotNil(t, sub) // Ensure that the listener was updated assertLogged(t, recorder, "Listeners for channel mychannel invoked") @@ -151,9 +151,9 @@ func TestHandleChaincodeDeployGreenPath(t *testing.T) { sub.ChaincodeDeployDone(true) // Ensure that the listener is called with the new chaincode and the old chaincode metadata assertLogged(t, recorder, "Listeners for channel mychannel invoked") - assert.Len(t, lsnr.Calls, 2) + require.Len(t, lsnr.Calls, 2) sortedMetadata := sortedMetadataSet(lsnr.Calls[1].Arguments.Get(1).(chaincode.MetadataSet)).sort() - assert.Equal(t, sortedMetadata, chaincode.MetadataSet{{ + require.Equal(t, sortedMetadata, chaincode.MetadataSet{{ Name: "cc1", Version: "1.0", Id: []byte{42}, @@ -176,9 +176,9 @@ func TestHandleChaincodeDeployGreenPath(t *testing.T) { sub.ChaincodeDeployDone(true) // Ensure that the listener is called with the new chaincode and the old chaincode metadata assertLogged(t, recorder, "Listeners for channel mychannel invoked") - assert.Len(t, lsnr.Calls, 3) + require.Len(t, lsnr.Calls, 3) sortedMetadata = sortedMetadataSet(lsnr.Calls[2].Arguments.Get(1).(chaincode.MetadataSet)).sort() - assert.Equal(t, sortedMetadata, chaincode.MetadataSet{{ + require.Equal(t, sortedMetadata, chaincode.MetadataSet{{ Name: "cc1", Version: "1.0", Id: []byte{42}, @@ -214,7 +214,7 @@ func TestHandleChaincodeDeployFailures(t *testing.T) { }, nil) m, err := cclifecycle.NewMetadataManager(enum) - assert.NoError(t, err) + require.NoError(t, err) lsnr := &mocks.MetadataChangeListener{} lsnr.On("HandleMetadataUpdate", mock.Anything, mock.Anything) @@ -223,8 +223,8 @@ func TestHandleChaincodeDeployFailures(t *testing.T) { // Scenario I: A channel subscription is made but obtaining a new query is not possible. queryCreator.On("NewQuery").Return(nil, errors.New("failed accessing DB")).Once() sub, err := m.NewChannelSubscription("mychannel", queryCreator) - assert.Nil(t, sub) - assert.Contains(t, err.Error(), "failed accessing DB") + require.Nil(t, sub) + require.Contains(t, err.Error(), "failed accessing DB") lsnr.AssertNumberOfCalls(t, "HandleMetadataUpdate", 0) // Scenario II: A channel subscription is made and obtaining a new query succeeds, however - obtaining it once @@ -233,8 +233,8 @@ func TestHandleChaincodeDeployFailures(t *testing.T) { queryCreator.On("NewQuery").Return(nil, errors.New("failed accessing DB")).Once() query.On("GetState", "lscc", "cc1").Return(cc1Bytes, nil).Once() sub, err = m.NewChannelSubscription("mychannel", queryCreator) - assert.NoError(t, err) - assert.NotNil(t, sub) + require.NoError(t, err) + require.NotNil(t, sub) lsnr.AssertNumberOfCalls(t, "HandleMetadataUpdate", 1) sub.HandleChaincodeDeploy(&cceventmgmt.ChaincodeDefinition{Name: "cc1", Version: "1.0", Hash: []byte{42}}, nil) sub.ChaincodeDeployDone(true) @@ -247,8 +247,8 @@ func TestHandleChaincodeDeployFailures(t *testing.T) { queryCreator.On("NewQuery").Return(query, nil).Once() query.On("GetState", "lscc", "cc1").Return(nil, errors.New("failed accessing DB")).Once() sub, err = m.NewChannelSubscription("mychannel", queryCreator) - assert.NoError(t, err) - assert.NotNil(t, sub) + require.NoError(t, err) + require.NotNil(t, sub) lsnr.AssertNumberOfCalls(t, "HandleMetadataUpdate", 2) sub.HandleChaincodeDeploy(&cceventmgmt.ChaincodeDefinition{Name: "cc1", Version: "1.0", Hash: []byte{42}}, nil) sub.ChaincodeDeployDone(true) @@ -260,8 +260,8 @@ func TestHandleChaincodeDeployFailures(t *testing.T) { // Thus, the lifecycle change listener should not be called. sub, err = m.NewChannelSubscription("mychannel", queryCreator) lsnr.AssertNumberOfCalls(t, "HandleMetadataUpdate", 3) - assert.NoError(t, err) - assert.NotNil(t, sub) + require.NoError(t, err) + require.NotNil(t, sub) sub.HandleChaincodeDeploy(&cceventmgmt.ChaincodeDefinition{Name: "cc1", Version: "1.1", Hash: []byte{42}}, nil) sub.ChaincodeDeployDone(false) lsnr.AssertNumberOfCalls(t, "HandleMetadataUpdate", 3) @@ -307,7 +307,7 @@ func TestMultipleUpdates(t *testing.T) { }, nil) m, err := cclifecycle.NewMetadataManager(enum) - assert.NoError(t, err) + require.NoError(t, err) var lsnrCalled sync.WaitGroup lsnrCalled.Add(3) @@ -318,7 +318,7 @@ func TestMultipleUpdates(t *testing.T) { m.AddListener(lsnr) sub, err := m.NewChannelSubscription("mychannel", queryCreator) - assert.NoError(t, err) + require.NoError(t, err) sub.HandleChaincodeDeploy(&cceventmgmt.ChaincodeDefinition{Name: "cc1", Version: "1.1", Hash: []byte{42}}, nil) sub.HandleChaincodeDeploy(&cceventmgmt.ChaincodeDefinition{Name: "cc2", Version: "1.0", Hash: []byte{50}}, nil) @@ -342,7 +342,7 @@ func TestMultipleUpdates(t *testing.T) { // We need to sort the metadata passed to the call because map iteration is involved in building the // metadata set. expectedMetadata := sortedMetadataSet(lsnr.Calls[2].Arguments.Get(1).(chaincode.MetadataSet)).sort() - assert.Equal(t, metadataSetWithBothChaincodes, expectedMetadata) + require.Equal(t, metadataSetWithBothChaincodes, expectedMetadata) // Wait for all listeners to fire g := NewGomegaWithT(t) @@ -383,11 +383,11 @@ func TestMetadata(t *testing.T) { }, nil) m, err := cclifecycle.NewMetadataManager(enum) - assert.NoError(t, err) + require.NoError(t, err) // Scenario I: No subscription was invoked on the lifecycle md := m.Metadata("mychannel", "cc1") - assert.Nil(t, md) + require.Nil(t, md) assertLogged(t, recorder, "Requested Metadata for non-existent channel mychannel") // Scenario II: A subscription was made on the lifecycle, and the metadata for the chaincode exists @@ -396,10 +396,10 @@ func TestMetadata(t *testing.T) { queryCreator.On("NewQuery").Return(query, nil).Once() sub, err := m.NewChannelSubscription("mychannel", queryCreator) defer sub.ChaincodeDeployDone(true) - assert.NoError(t, err) - assert.NotNil(t, sub) + require.NoError(t, err) + require.NotNil(t, sub) md = m.Metadata("mychannel", "cc1") - assert.Equal(t, &chaincode.Metadata{ + require.Equal(t, &chaincode.Metadata{ Name: "cc1", Version: "1.0", Id: []byte{42}, @@ -411,7 +411,7 @@ func TestMetadata(t *testing.T) { // and when the query is attempted to be made - it fails. queryCreator.On("NewQuery").Return(nil, errors.New("failed obtaining query executor")).Once() md = m.Metadata("mychannel", "cc2") - assert.Nil(t, md) + require.Nil(t, md) assertLogged(t, recorder, "Failed obtaining new query for channel mychannel : failed obtaining query executor") // Scenario IV: A metadata retrieval is made and the chaincode is not in memory yet, @@ -419,7 +419,7 @@ func TestMetadata(t *testing.T) { queryCreator.On("NewQuery").Return(query, nil).Once() query.On("GetState", "lscc", "cc2").Return(nil, errors.New("GetState failed")).Once() md = m.Metadata("mychannel", "cc2") - assert.Nil(t, md) + require.Nil(t, md) assertLogged(t, recorder, "Failed querying LSCC for channel mychannel : GetState failed") // Scenario V: A metadata retrieval is made and the chaincode is not in memory yet, @@ -427,7 +427,7 @@ func TestMetadata(t *testing.T) { queryCreator.On("NewQuery").Return(query, nil).Once() query.On("GetState", "lscc", "cc2").Return(nil, nil).Once() md = m.Metadata("mychannel", "cc2") - assert.Nil(t, md) + require.Nil(t, md) assertLogged(t, recorder, "Chaincode cc2 isn't defined in channel mychannel") // Scenario VI: A metadata retrieval is made and the chaincode is not in memory yet, @@ -435,7 +435,7 @@ func TestMetadata(t *testing.T) { queryCreator.On("NewQuery").Return(query, nil).Once() query.On("GetState", "lscc", "cc2").Return(cc2Bytes, nil).Once() md = m.Metadata("mychannel", "cc2") - assert.Equal(t, &chaincode.Metadata{ + require.Equal(t, &chaincode.Metadata{ Name: "cc2", Version: "1.0", Id: []byte{42}, @@ -448,7 +448,7 @@ func TestMetadata(t *testing.T) { query.On("GetState", "lscc", "cc1").Return(cc1Bytes, nil).Once() query.On("GetState", "lscc", privdata.BuildCollectionKVSKey("cc1")).Return(protoutil.MarshalOrPanic(&peer.CollectionConfigPackage{}), nil).Once() md = m.Metadata("mychannel", "cc1", "col1") - assert.Equal(t, &chaincode.Metadata{ + require.Equal(t, &chaincode.Metadata{ Name: "cc1", Version: "1.0", Id: []byte{42}, @@ -464,7 +464,7 @@ func TestMetadata(t *testing.T) { query.On("GetState", "lscc", "cc1").Return(cc1Bytes, nil).Once() query.On("GetState", "lscc", privdata.BuildCollectionKVSKey("cc1")).Return(nil, errors.New("foo")).Once() md = m.Metadata("mychannel", "cc1", "col1") - assert.Nil(t, md) + require.Nil(t, md) assertLogged(t, recorder, "Failed querying lscc namespace for cc1~collection: foo") } diff --git a/core/cclifecycle/util_test.go b/core/cclifecycle/util_test.go index 1c70fb149fe..fa10f19f288 100644 --- a/core/cclifecycle/util_test.go +++ b/core/cclifecycle/util_test.go @@ -17,8 +17,8 @@ import ( "github.com/hyperledger/fabric/core/cclifecycle/mocks" "github.com/hyperledger/fabric/core/common/ccprovider" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestChaincodeInspection(t *testing.T) { @@ -127,11 +127,11 @@ func TestChaincodeInspection(t *testing.T) { query.On("GetState", mock.Anything, mock.Anything).Return(cc2Bytes, nil).Once() ccInfo, err := cc.DeployedChaincodes(query, test.filter, false, test.queriedChaincodes...) if test.queryErr != nil { - assert.Error(t, err) + require.Error(t, err) } else { - assert.NoError(t, err) + require.NoError(t, err) } - assert.Equal(t, test.expected, ccInfo) + require.Equal(t, test.expected, ccInfo) }) } } diff --git a/core/chaincode/accesscontrol/access_test.go b/core/chaincode/accesscontrol/access_test.go index 206da064b29..4f72759cc47 100644 --- a/core/chaincode/accesscontrol/access_test.go +++ b/core/chaincode/accesscontrol/access_test.go @@ -19,7 +19,7 @@ import ( pb "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/common/crypto/tlsgen" "github.com/hyperledger/fabric/common/flogging/floggingtest" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" "google.golang.org/grpc" "google.golang.org/grpc/credentials" @@ -39,14 +39,14 @@ func (cs *ccSrv) Register(stream pb.ChaincodeSupport_RegisterServer) error { } // First message is a register message - assert.Equal(cs.t, pb.ChaincodeMessage_REGISTER.String(), msg.Type.String()) + require.Equal(cs.t, pb.ChaincodeMessage_REGISTER.String(), msg.Type.String()) // And its chaincode name is the expected one chaincodeID := &pb.ChaincodeID{} err = proto.Unmarshal(msg.Payload, chaincodeID) if err != nil { return err } - assert.Equal(cs.t, cs.expectedCCname, chaincodeID.Name) + require.Equal(cs.t, cs.expectedCCname, chaincodeID.Name) // Subsequent messages are just echoed back for { msg, _ = stream.Recv() @@ -67,9 +67,9 @@ func (cs *ccSrv) stop() { func createTLSService(t *testing.T, ca tlsgen.CA, host string) *grpc.Server { keyPair, err := ca.NewServerCertKeyPair(host) - assert.NoError(t, err) + require.NoError(t, err) cert, err := tls.X509KeyPair(keyPair.Cert, keyPair.Key) - assert.NoError(t, err) + require.NoError(t, err) tlsConf := &tls.Config{ Certificates: []tls.Certificate{cert}, ClientAuth: tls.RequireAndVerifyClientCert, @@ -88,7 +88,7 @@ func newCCServer(t *testing.T, port int, expectedCCname string, withTLS bool, ca } l, err := net.Listen("tcp", fmt.Sprintf("%s:%d", "", port)) - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) return &ccSrv{ t: t, expectedCCname: expectedCCname, @@ -120,7 +120,7 @@ func newClient(t *testing.T, port int, cert *tls.Certificate, peerCACert []byte) } chaincodeSupportClient := pb.NewChaincodeSupportClient(conn) stream, err := chaincodeSupportClient.Register(context.Background()) - assert.NoError(t, err) + require.NoError(t, err) return &ccClient{ conn: conn, stream: stream, @@ -165,7 +165,7 @@ func TestAccessControl(t *testing.T) { chaincodeID := &pb.ChaincodeID{Name: "example02"} payload, err := proto.Marshal(chaincodeID) - assert.NoError(t, err) + require.NoError(t, err) registerMsg := &pb.ChaincodeMessage{ Type: pb.ChaincodeMessage_REGISTER, Payload: payload, @@ -183,82 +183,82 @@ func TestAccessControl(t *testing.T) { // Create an attacker without a TLS certificate _, err = newClient(t, 7052, nil, ca.CertBytes()) - assert.Error(t, err) - assert.Contains(t, err.Error(), "context deadline exceeded") + require.Error(t, err) + require.Contains(t, err.Error(), "context deadline exceeded") // Create an attacker with its own TLS certificate maliciousCA, _ := tlsgen.NewCA() keyPair, err := maliciousCA.NewClientCertKeyPair() - assert.NoError(t, err) + require.NoError(t, err) cert, err := tls.X509KeyPair(keyPair.Cert, keyPair.Key) - assert.NoError(t, err) + require.NoError(t, err) _, err = newClient(t, 7052, &cert, ca.CertBytes()) - assert.Error(t, err) - assert.Contains(t, err.Error(), "context deadline exceeded") + require.Error(t, err) + require.Contains(t, err.Error(), "context deadline exceeded") // Create a chaincode for example01 that tries to impersonate example02 kp, err := auth.Generate("example01") - assert.NoError(t, err) + require.NoError(t, err) cert, err = tls.X509KeyPair(kp.Cert, kp.Key) - assert.NoError(t, err) + require.NoError(t, err) mismatchedShim, err := newClient(t, 7052, &cert, ca.CertBytes()) - assert.NoError(t, err) + require.NoError(t, err) defer mismatchedShim.close() mismatchedShim.sendMsg(registerMsg) mismatchedShim.sendMsg(putStateMsg) // Mismatched chaincode didn't get back anything - assert.Nil(t, mismatchedShim.recv()) + require.Nil(t, mismatchedShim.recv()) assertLogContains(t, recorder, "with given certificate hash", "belongs to a different chaincode") // Create the real chaincode that its cert is generated by us that should pass the security checks kp, err = auth.Generate("example02") - assert.NoError(t, err) + require.NoError(t, err) cert, err = tls.X509KeyPair(kp.Cert, kp.Key) - assert.NoError(t, err) + require.NoError(t, err) realCC, err := newClient(t, 7052, &cert, ca.CertBytes()) - assert.NoError(t, err) + require.NoError(t, err) defer realCC.close() realCC.sendMsg(registerMsg) realCC.sendMsg(putStateMsg) echoMsg := realCC.recv() // The real chaincode should be echoed back its message - assert.NotNil(t, echoMsg) - assert.Equal(t, pb.ChaincodeMessage_PUT_STATE, echoMsg.Type) + require.NotNil(t, echoMsg) + require.Equal(t, pb.ChaincodeMessage_PUT_STATE, echoMsg.Type) // Log should not complain about anything - assert.Empty(t, recorder.Messages()) + require.Empty(t, recorder.Messages()) // Create the real chaincode that its cert is generated by us // but one that the first message sent by it isn't a register message. // The second message that is sent is a register message but it's "too late" // and the stream is already denied. kp, err = auth.Generate("example02") - assert.NoError(t, err) + require.NoError(t, err) cert, err = tls.X509KeyPair(kp.Cert, kp.Key) - assert.NoError(t, err) + require.NoError(t, err) confusedCC, err := newClient(t, 7052, &cert, ca.CertBytes()) - assert.NoError(t, err) + require.NoError(t, err) defer confusedCC.close() confusedCC.sendMsg(putStateMsg) confusedCC.sendMsg(registerMsg) confusedCC.sendMsg(putStateMsg) - assert.Nil(t, confusedCC.recv()) + require.Nil(t, confusedCC.recv()) assertLogContains(t, recorder, "expected a ChaincodeMessage_REGISTER message") // Create a real chaincode, that its cert was generated by us // but it sends a malformed first message kp, err = auth.Generate("example02") - assert.NoError(t, err) + require.NoError(t, err) cert, err = tls.X509KeyPair(kp.Cert, kp.Key) - assert.NoError(t, err) + require.NoError(t, err) malformedMessageCC, err := newClient(t, 7052, &cert, ca.CertBytes()) - assert.NoError(t, err) + require.NoError(t, err) defer malformedMessageCC.close() // Save old payload originalPayload := registerMsg.Payload registerMsg.Payload = append(registerMsg.Payload, 0) malformedMessageCC.sendMsg(registerMsg) malformedMessageCC.sendMsg(putStateMsg) - assert.Nil(t, malformedMessageCC.recv()) + require.Nil(t, malformedMessageCC.recv()) assertLogContains(t, recorder, "Failed unmarshaling message") // Recover old payload registerMsg.Payload = originalPayload @@ -269,23 +269,23 @@ func TestAccessControl(t *testing.T) { // and the CC has been compromised. We don't want it to be able // to reconnect to us. kp, err = auth.Generate("example02") - assert.NoError(t, err) + require.NoError(t, err) cert, err = tls.X509KeyPair(kp.Cert, kp.Key) - assert.NoError(t, err) + require.NoError(t, err) lateCC, err := newClient(t, 7052, &cert, ca.CertBytes()) - assert.NoError(t, err) + require.NoError(t, err) defer lateCC.close() time.Sleep(ttl + time.Second*2) lateCC.sendMsg(registerMsg) lateCC.sendMsg(putStateMsg) echoMsg = lateCC.recv() - assert.Nil(t, echoMsg) + require.Nil(t, echoMsg) assertLogContains(t, recorder, "with given certificate hash", "not found in registry") } func assertLogContains(t *testing.T, r *floggingtest.Recorder, ss ...string) { defer r.Reset() for _, s := range ss { - assert.NotEmpty(t, r.MessagesContaining(s)) + require.NotEmpty(t, r.MessagesContaining(s)) } } diff --git a/core/chaincode/accesscontrol/mapper_test.go b/core/chaincode/accesscontrol/mapper_test.go index 0fdc29583c1..70e65a72bcd 100644 --- a/core/chaincode/accesscontrol/mapper_test.go +++ b/core/chaincode/accesscontrol/mapper_test.go @@ -13,7 +13,7 @@ import ( "github.com/hyperledger/fabric/bccsp" "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/common/crypto/tlsgen" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestPurge(t *testing.T) { @@ -25,14 +25,14 @@ func TestPurge(t *testing.T) { ttl = time.Second m := newCertMapper(ca.NewClientCertKeyPair) k, err := m.genCert("A") - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) hash, err := cryptoProvider.Hash(k.TLSCert.Raw, &bccsp.SHA256Opts{}) - assert.NoError(t, err) - assert.Equal(t, "A", m.lookup(certHash(hash))) + require.NoError(t, err) + require.Equal(t, "A", m.lookup(certHash(hash))) time.Sleep(time.Second * 3) - assert.Empty(t, m.lookup(certHash(hash))) + require.Empty(t, m.lookup(certHash(hash))) } diff --git a/core/chaincode/chaincode_support_test.go b/core/chaincode/chaincode_support_test.go index 386ff1d71e7..a5ffc2444e3 100644 --- a/core/chaincode/chaincode_support_test.go +++ b/core/chaincode/chaincode_support_test.go @@ -62,7 +62,7 @@ import ( msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // CCContext is a legacy structure that was utilized heavily in the tests @@ -455,10 +455,10 @@ func deployCC(t *testing.T, txParams *ccprovider.TransactionParams, ccContext *C cds := &pb.ChaincodeDeploymentSpec{ChaincodeSpec: spec, CodePackage: code} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) ccinfoFSImpl := &ccprovider.CCInfoFSImpl{GetHasher: cryptoProvider} _, err = ccinfoFSImpl.PutChaincode(cds) - assert.NoError(t, err) + require.NoError(t, err) b := protoutil.MarshalOrPanic(cds) @@ -983,13 +983,13 @@ func TestStartAndWaitLaunchError(t *testing.T) { if err == nil { t.Fatalf("expected error but succeeded") } - assert.EqualError(t, err, "error starting container: Bad lunch; upset stomach") + require.EqualError(t, err, "error starting container: Bad lunch; upset stomach") } func TestGetTxContextFromHandler(t *testing.T) { chnl := "test" peerInstance, _, cleanup, err := initMockPeer(chnl) - assert.NoError(t, err, "failed to initialize mock peer") + require.NoError(t, err, "failed to initialize mock peer") defer cleanup() h := Handler{ @@ -1000,7 +1000,7 @@ func TestGetTxContextFromHandler(t *testing.T) { txid := "1" // test getTxContext for TEST channel, tx=1, msgType=IVNOKE_CHAINCODE and empty payload - empty payload => expect to return empty txContext txContext, _ := h.getTxContextForInvoke(chnl, "1", []byte(""), "[%s]No ledger context for %s. Sending %s", 12345, "TestCC", pb.ChaincodeMessage_ERROR) - assert.Nil(t, txContext, "expected empty txContext for empty payload") + require.Nil(t, txContext, "expected empty txContext for empty payload") pldgr := peerInstance.GetLedger(chnl) @@ -1216,7 +1216,7 @@ func TestCCFramework(t *testing.T) { func TestExecuteTimeout(t *testing.T) { _, cs, cleanup, err := initMockPeer("testchannel") - assert.NoError(t, err) + require.NoError(t, err) defer cleanup() tests := []struct { @@ -1283,7 +1283,7 @@ func TestExecuteTimeout(t *testing.T) { input := &pb.ChaincodeInput{Args: util.ToChaincodeArgs(tt.command)} result := cs.executeTimeout(tt.namespace, input) - assert.Equalf(t, tt.expectedTimeout, result, "want %s, got %s", tt.expectedTimeout, result) + require.Equalf(t, tt.expectedTimeout, result, "want %s, got %s", tt.expectedTimeout, result) }) } } @@ -1308,7 +1308,7 @@ func TestMaxDuration(t *testing.T) { } for _, tt := range tests { result := maxDuration(tt.durations...) - assert.Equalf(t, tt.expected, result, "want %s got %s", tt.expected, result) + require.Equalf(t, tt.expected, result, "want %s got %s", tt.expected, result) } } diff --git a/core/chaincode/container_runtime_test.go b/core/chaincode/container_runtime_test.go index c9eb7c6cb2a..32bf843c336 100644 --- a/core/chaincode/container_runtime_test.go +++ b/core/chaincode/container_runtime_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/core/container" "github.com/hyperledger/fabric/core/container/ccintf" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestContainerRuntimeBuild(t *testing.T) { @@ -28,12 +28,12 @@ func TestContainerRuntimeBuild(t *testing.T) { } ccinfo, err := cr.Build("chaincode-name:chaincode-version") - assert.NoError(t, err) - assert.Equal(t, &ccintf.ChaincodeServerInfo{Address: "ccaddress:12345"}, ccinfo) + require.NoError(t, err) + require.Equal(t, &ccintf.ChaincodeServerInfo{Address: "ccaddress:12345"}, ccinfo) - assert.Equal(t, 1, fakeRouter.BuildCallCount()) + require.Equal(t, 1, fakeRouter.BuildCallCount()) packageID := fakeRouter.BuildArgsForCall(0) - assert.Equal(t, "chaincode-name:chaincode-version", packageID) + require.Equal(t, "chaincode-name:chaincode-version", packageID) } func TestContainerRuntimeStart(t *testing.T) { @@ -45,19 +45,19 @@ func TestContainerRuntimeStart(t *testing.T) { } err := cr.Start("chaincode-name:chaincode-version", &ccintf.PeerConnection{Address: "peer-address"}) - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, 1, fakeRouter.StartCallCount()) + require.Equal(t, 1, fakeRouter.StartCallCount()) ccid, peerConnection := fakeRouter.StartArgsForCall(0) - assert.Equal(t, "chaincode-name:chaincode-version", ccid) - assert.Equal(t, "peer-address", peerConnection.Address) - assert.Nil(t, peerConnection.TLSConfig) + require.Equal(t, "chaincode-name:chaincode-version", ccid) + require.Equal(t, "peer-address", peerConnection.Address) + require.Nil(t, peerConnection.TLSConfig) // Try starting a second time, to ensure build is not invoked again // as the BuildRegistry already holds it err = cr.Start("chaincode-name:chaincode-version", &ccintf.PeerConnection{Address: "fake-address"}) - assert.NoError(t, err) - assert.Equal(t, 2, fakeRouter.StartCallCount()) + require.NoError(t, err) + require.Equal(t, 2, fakeRouter.StartCallCount()) } func TestContainerRuntimeStartErrors(t *testing.T) { @@ -79,7 +79,7 @@ func TestContainerRuntimeStartErrors(t *testing.T) { } err := cr.Start("ccid", &ccintf.PeerConnection{Address: "fake-address"}) - assert.EqualError(t, err, tc.errValue) + require.EqualError(t, err, tc.errValue) } } @@ -91,11 +91,11 @@ func TestContainerRuntimeStop(t *testing.T) { } err := cr.Stop("chaincode-id-name:chaincode-version") - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, 1, fakeRouter.StopCallCount()) + require.Equal(t, 1, fakeRouter.StopCallCount()) ccid := fakeRouter.StopArgsForCall(0) - assert.Equal(t, "chaincode-id-name:chaincode-version", ccid) + require.Equal(t, "chaincode-id-name:chaincode-version", ccid) } func TestContainerRuntimeStopErrors(t *testing.T) { @@ -114,7 +114,7 @@ func TestContainerRuntimeStopErrors(t *testing.T) { ContainerRouter: fakeRouter, } - assert.EqualError(t, cr.Stop("ccid"), tc.errValue) + require.EqualError(t, cr.Stop("ccid"), tc.errValue) } } @@ -126,13 +126,13 @@ func TestContainerRuntimeWait(t *testing.T) { } exitCode, err := cr.Wait("chaincode-id-name:chaincode-version") - assert.NoError(t, err) - assert.Equal(t, 0, exitCode) - assert.Equal(t, 1, fakeRouter.WaitCallCount()) - assert.Equal(t, "chaincode-id-name:chaincode-version", fakeRouter.WaitArgsForCall(0)) + require.NoError(t, err) + require.Equal(t, 0, exitCode) + require.Equal(t, 1, fakeRouter.WaitCallCount()) + require.Equal(t, "chaincode-id-name:chaincode-version", fakeRouter.WaitArgsForCall(0)) fakeRouter.WaitReturns(3, errors.New("moles-and-trolls")) code, err := cr.Wait("chaincode-id-name:chaincode-version") - assert.EqualError(t, err, "moles-and-trolls") - assert.Equal(t, code, 3) + require.EqualError(t, err, "moles-and-trolls") + require.Equal(t, code, 3) } diff --git a/core/chaincode/persistence/label_test.go b/core/chaincode/persistence/label_test.go index ade1ad00367..00c5ed359f1 100644 --- a/core/chaincode/persistence/label_test.go +++ b/core/chaincode/persistence/label_test.go @@ -9,7 +9,6 @@ package persistence import ( "testing" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -49,10 +48,10 @@ func TestLabels(t *testing.T) { t.Run(tt.label, func(t *testing.T) { err := ValidateLabel(tt.label) if tt.success { - assert.NoError(t, err) + require.NoError(t, err) } else { require.Error(t, err) - assert.Contains(t, err.Error(), tt.label) + require.Contains(t, err.Error(), tt.label) } }) } diff --git a/core/chaincode/platforms/golang/list_test.go b/core/chaincode/platforms/golang/list_test.go index a05b19cf8dc..5ea0cfbbbca 100644 --- a/core/chaincode/platforms/golang/list_test.go +++ b/core/chaincode/platforms/golang/list_test.go @@ -13,14 +13,13 @@ import ( "runtime" "testing" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func Test_gopathDependencyPackageInfo(t *testing.T) { t.Run("TestPeer", func(t *testing.T) { deps, err := gopathDependencyPackageInfo(runtime.GOOS, runtime.GOARCH, "github.com/hyperledger/fabric/cmd/peer") - assert.NoError(t, err, "failed to get dependencyPackageInfo") + require.NoError(t, err, "failed to get dependencyPackageInfo") var found bool for _, pi := range deps { @@ -29,23 +28,23 @@ func Test_gopathDependencyPackageInfo(t *testing.T) { break } } - assert.True(t, found, "expected to find the peer package") + require.True(t, found, "expected to find the peer package") }) t.Run("TestIncomplete", func(t *testing.T) { _, err := gopathDependencyPackageInfo(runtime.GOOS, runtime.GOARCH, "github.com/hyperledger/fabric/core/chaincode/platforms/golang/testdata/src/chaincodes/BadImport") - assert.EqualError(t, err, "failed to calculate dependencies: incomplete package: bogus/package") + require.EqualError(t, err, "failed to calculate dependencies: incomplete package: bogus/package") }) t.Run("TestFromGoroot", func(t *testing.T) { deps, err := gopathDependencyPackageInfo(runtime.GOOS, runtime.GOARCH, "os") - assert.NoError(t, err) - assert.Empty(t, deps) + require.NoError(t, err) + require.Empty(t, deps) }) t.Run("TestFailure", func(t *testing.T) { _, err := gopathDependencyPackageInfo(runtime.GOOS, runtime.GOARCH, "./doesnotexist") - assert.EqualError(t, err, "listing deps for package ./doesnotexist failed: exit status 1") + require.EqualError(t, err, "listing deps for package ./doesnotexist failed: exit status 1") }) } @@ -66,7 +65,7 @@ func TestPackageInfoFiles(t *testing.T) { "file1.s", "file2.s", "file1_ignored.go", "file2_ignored.go", } - assert.Equal(t, expected, packageInfo.Files()) + require.Equal(t, expected, packageInfo.Files()) } func Test_listModuleInfo(t *testing.T) { @@ -84,7 +83,7 @@ func Test_listModuleInfo(t *testing.T) { require.NoError(t, err, "failed to get module working directory") mi, err := listModuleInfo("GOPROXY=https://proxy.golang.org") - assert.NoError(t, err, "failed to get module info") + require.NoError(t, err, "failed to get module info") expected := &ModuleInfo{ ModulePath: "ccmodule", @@ -92,13 +91,13 @@ func Test_listModuleInfo(t *testing.T) { Dir: moduleDir, GoMod: filepath.Join(moduleDir, "go.mod"), } - assert.Equal(t, expected, mi) + require.Equal(t, expected, mi) err = os.Chdir("nested") require.NoError(t, err, "failed to change to module directory") mi, err = listModuleInfo("GOPROXY=https://proxy.golang.org") - assert.NoError(t, err, "failed to get module info") + require.NoError(t, err, "failed to get module info") expected = &ModuleInfo{ ModulePath: "ccmodule", @@ -106,7 +105,7 @@ func Test_listModuleInfo(t *testing.T) { Dir: moduleDir, GoMod: filepath.Join(moduleDir, "go.mod"), } - assert.Equal(t, expected, mi) + require.Equal(t, expected, mi) } func Test_listModuleInfoFailure(t *testing.T) { @@ -123,5 +122,5 @@ func Test_listModuleInfoFailure(t *testing.T) { require.NoError(t, err, "failed to change to temporary directory") _, err = listModuleInfo() - assert.EqualError(t, err, "'go list' failed with: go: cannot find main module; see 'go help modules': exit status 1") + require.EqualError(t, err, "'go list' failed with: go: cannot find main module; see 'go help modules': exit status 1") } diff --git a/core/chaincode/platforms/golang/platform_test.go b/core/chaincode/platforms/golang/platform_test.go index 4c208f6e056..fb9d245e165 100644 --- a/core/chaincode/platforms/golang/platform_test.go +++ b/core/chaincode/platforms/golang/platform_test.go @@ -24,7 +24,6 @@ import ( "github.com/hyperledger/fabric/core/config/configtest" "github.com/pkg/errors" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -68,7 +67,7 @@ func generateFakeCDS(ccname, path, file string, mode int64) (*pb.ChaincodeDeploy func TestName(t *testing.T) { platform := &Platform{} - assert.Equal(t, "GOLANG", platform.Name()) + require.Equal(t, "GOLANG", platform.Name()) } func TestValidatePath(t *testing.T) { @@ -89,9 +88,9 @@ func TestValidatePath(t *testing.T) { platform := &Platform{} err := platform.ValidatePath(tt.path) if tt.succ { - assert.NoError(t, err, "expected %s to be a valid path", tt.path) + require.NoError(t, err, "expected %s to be a valid path", tt.path) } else { - assert.Errorf(t, err, "expected %s to be an invalid path", tt.path) + require.Errorf(t, err, "expected %s to be an invalid path", tt.path) } } } @@ -114,8 +113,8 @@ func TestNormalizePath(t *testing.T) { t.Run(strconv.Itoa(i), func(t *testing.T) { platform := &Platform{} result, err := platform.NormalizePath(tt.path) - assert.NoError(t, err, "normalize path failed") - assert.Equalf(t, tt.result, result, "want result %s got %s", tt.result, result) + require.NoError(t, err, "normalize path failed") + require.Equalf(t, tt.result, result, "want result %s got %s", tt.result, result) }) } } @@ -149,14 +148,14 @@ func TestValidateCodePackage(t *testing.T) { for _, tt := range tests { cds, err := generateFakeCDS(tt.name, tt.path, tt.file, tt.mode) - assert.NoError(t, err, "failed to generate fake cds") + require.NoError(t, err, "failed to generate fake cds") platform := &Platform{} err = platform.ValidateCodePackage(cds.CodePackage) if tt.successExpected { - assert.NoError(t, err, "expected success for path: %s, file: %s", tt.path, tt.file) + require.NoError(t, err, "expected success for path: %s, file: %s", tt.path, tt.file) } else { - assert.Errorf(t, err, "expected error for path: %s, file: %s", tt.path, tt.file) + require.Errorf(t, err, "expected error for path: %s, file: %s", tt.path, tt.file) } } } @@ -170,11 +169,11 @@ func Test_findSource(t *testing.T) { Path: "chaincodes/noop", }) require.NoError(t, err, "failed to find source") - assert.Contains(t, source, "src/chaincodes/noop/chaincode.go") - assert.Contains(t, source, "META-INF/statedb/couchdb/indexes/indexOwner.json") - assert.NotContains(t, source, "src/chaincodes/noop/go.mod") - assert.NotContains(t, source, "src/chaincodes/noop/go.sum") - assert.Len(t, source, 2) + require.Contains(t, source, "src/chaincodes/noop/chaincode.go") + require.Contains(t, source, "META-INF/statedb/couchdb/indexes/indexOwner.json") + require.NotContains(t, source, "src/chaincodes/noop/go.mod") + require.NotContains(t, source, "src/chaincodes/noop/go.sum") + require.Len(t, source, 2) }) t.Run("Module", func(t *testing.T) { @@ -185,20 +184,20 @@ func Test_findSource(t *testing.T) { Path: "ccmodule", }) require.NoError(t, err, "failed to find source") - assert.Len(t, source, 7) - assert.Contains(t, source, "META-INF/statedb/couchdb/indexes/indexOwner.json") - assert.Contains(t, source, "src/go.mod") - assert.Contains(t, source, "src/go.sum") - assert.Contains(t, source, "src/chaincode.go") - assert.Contains(t, source, "src/customlogger/customlogger.go") - assert.Contains(t, source, "src/nested/chaincode.go") - assert.Contains(t, source, "src/nested/META-INF/statedb/couchdb/indexes/nestedIndexOwner.json") + require.Len(t, source, 7) + require.Contains(t, source, "META-INF/statedb/couchdb/indexes/indexOwner.json") + require.Contains(t, source, "src/go.mod") + require.Contains(t, source, "src/go.sum") + require.Contains(t, source, "src/chaincode.go") + require.Contains(t, source, "src/customlogger/customlogger.go") + require.Contains(t, source, "src/nested/chaincode.go") + require.Contains(t, source, "src/nested/META-INF/statedb/couchdb/indexes/nestedIndexOwner.json") }) t.Run("NonExistent", func(t *testing.T) { _, err := findSource(&CodeDescriptor{Path: "acme.com/this/should/not/exist"}) - assert.Error(t, err) - assert.True(t, os.IsNotExist(errors.Cause(err))) + require.Error(t, err) + require.True(t, os.IsNotExist(errors.Cause(err))) }) } @@ -215,7 +214,7 @@ func tarContents(t *testing.T, payload []byte) []string { if err == io.EOF { break } - assert.NoError(t, err) + require.NoError(t, err) if header.Typeflag == tar.TypeReg { files = append(files, header.Name) @@ -233,10 +232,10 @@ func TestGopathDeploymentPayload(t *testing.T) { t.Run("IncludesMetadata", func(t *testing.T) { payload, err := platform.GetDeploymentPayload("chaincodes/noop") - assert.NoError(t, err) + require.NoError(t, err) contents := tarContents(t, payload) - assert.Contains(t, contents, "META-INF/statedb/couchdb/indexes/indexOwner.json") + require.Contains(t, contents, "META-INF/statedb/couchdb/indexes/indexOwner.json") }) var tests = []struct { @@ -257,9 +256,9 @@ func TestGopathDeploymentPayload(t *testing.T) { t.Run(tt.path, func(t *testing.T) { _, err := platform.GetDeploymentPayload(tt.path) if tt.succ { - assert.NoError(t, err, "expected success for path: %s", tt.path) + require.NoError(t, err, "expected success for path: %s", tt.path) } else { - assert.Errorf(t, err, "expected error for path: %s", tt.path) + require.Errorf(t, err, "expected error for path: %s", tt.path) } }) } @@ -270,9 +269,9 @@ func TestModuleDeploymentPayload(t *testing.T) { t.Run("TopLevel", func(t *testing.T) { dp, err := platform.GetDeploymentPayload("testdata/ccmodule") - assert.NoError(t, err) + require.NoError(t, err) contents := tarContents(t, dp) - assert.ElementsMatch(t, contents, []string{ + require.ElementsMatch(t, contents, []string{ "META-INF/statedb/couchdb/indexes/indexOwner.json", // top level metadata "src/chaincode.go", "src/customlogger/customlogger.go", @@ -285,9 +284,9 @@ func TestModuleDeploymentPayload(t *testing.T) { t.Run("NestedPackage", func(t *testing.T) { dp, err := platform.GetDeploymentPayload("testdata/ccmodule/nested") - assert.NoError(t, err) + require.NoError(t, err) contents := tarContents(t, dp) - assert.ElementsMatch(t, contents, []string{ + require.ElementsMatch(t, contents, []string{ "META-INF/statedb/couchdb/indexes/nestedIndexOwner.json", // nested metadata "src/META-INF/statedb/couchdb/indexes/indexOwner.json", "src/chaincode.go", @@ -335,14 +334,14 @@ func TestGenerateDockerFile(t *testing.T) { viper.Set("chaincode.golang.runtime", "buildimage") expected := "FROM buildimage\nADD binpackage.tar /usr/local/bin" dockerfile, err := platform.GenerateDockerfile() - assert.NoError(t, err) - assert.Equal(t, expected, dockerfile) + require.NoError(t, err) + require.Equal(t, expected, dockerfile) viper.Set("chaincode.golang.runtime", "another-buildimage") expected = "FROM another-buildimage\nADD binpackage.tar /usr/local/bin" dockerfile, err = platform.GenerateDockerfile() - assert.NoError(t, err) - assert.Equal(t, expected, dockerfile) + require.NoError(t, err) + require.Equal(t, expected, dockerfile) } func TestGetLDFlagsOpts(t *testing.T) { @@ -361,7 +360,7 @@ func TestDockerBuildOptions(t *testing.T) { t.Run("GOPROXY and GOSUMDB not set", func(t *testing.T) { opts, err := platform.DockerBuildOptions("the-path") - assert.NoError(t, err, "unexpected error from DockerBuildOptions") + require.NoError(t, err, "unexpected error from DockerBuildOptions") expectedOpts := util.DockerBuildOptions{ Cmd: ` @@ -385,7 +384,7 @@ echo Done! `, Env: []string{"GOPROXY=https://proxy.golang.org"}, } - assert.Equal(t, expectedOpts, opts) + require.Equal(t, expectedOpts, opts) }) t.Run("GOPROXY and GOSUMDB set", func(t *testing.T) { @@ -402,7 +401,7 @@ echo Done! os.Setenv("GOSUMDB", "the-gosumdb") opts, err := platform.DockerBuildOptions("the-path") - assert.NoError(t, err, "unexpected error from DockerBuildOptions") + require.NoError(t, err, "unexpected error from DockerBuildOptions") expectedOpts := util.DockerBuildOptions{ Cmd: ` @@ -426,54 +425,54 @@ echo Done! `, Env: []string{"GOPROXY=the-goproxy", "GOSUMDB=the-gosumdb"}, } - assert.Equal(t, expectedOpts, opts) + require.Equal(t, expectedOpts, opts) }) } func TestDescribeCode(t *testing.T) { abs, err := filepath.Abs(filepath.FromSlash("testdata/ccmodule")) - assert.NoError(t, err) + require.NoError(t, err) t.Run("TopLevelModulePackage", func(t *testing.T) { cd, err := DescribeCode("testdata/ccmodule") - assert.NoError(t, err) + require.NoError(t, err) expected := &CodeDescriptor{ Source: abs, MetadataRoot: filepath.Join(abs, "META-INF"), Path: "ccmodule", Module: true, } - assert.Equal(t, expected, cd) + require.Equal(t, expected, cd) }) t.Run("NestedModulePackage", func(t *testing.T) { cd, err := DescribeCode("testdata/ccmodule/nested") - assert.NoError(t, err) + require.NoError(t, err) expected := &CodeDescriptor{ Source: abs, MetadataRoot: filepath.Join(abs, "nested", "META-INF"), Path: "ccmodule/nested", Module: true, } - assert.Equal(t, expected, cd) + require.Equal(t, expected, cd) }) } func TestRegularFileExists(t *testing.T) { t.Run("RegularFile", func(t *testing.T) { ok, err := regularFileExists("testdata/ccmodule/go.mod") - assert.NoError(t, err) - assert.True(t, ok) + require.NoError(t, err) + require.True(t, ok) }) t.Run("MissingFile", func(t *testing.T) { ok, err := regularFileExists("testdata/missing.file") - assert.NoError(t, err) - assert.False(t, ok) + require.NoError(t, err) + require.False(t, ok) }) t.Run("Directory", func(t *testing.T) { ok, err := regularFileExists("testdata") - assert.NoError(t, err) - assert.False(t, ok) + require.NoError(t, err) + require.False(t, ok) }) } diff --git a/core/chaincode/platforms/java/platform_test.go b/core/chaincode/platforms/java/platform_test.go index 0c945da46db..5a9e9b22ef8 100644 --- a/core/chaincode/platforms/java/platform_test.go +++ b/core/chaincode/platforms/java/platform_test.go @@ -22,7 +22,6 @@ import ( "github.com/hyperledger/fabric/core/chaincode/platforms/util" "github.com/hyperledger/fabric/core/config/configtest" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -58,50 +57,50 @@ func TestValidatePath(t *testing.T) { platform := java.Platform{} err := platform.ValidatePath(spec.ChaincodeId.Path) - assert.NoError(t, err) + require.NoError(t, err) } func TestValidateCodePackage(t *testing.T) { platform := java.Platform{} b, _ := generateMockPackegeBytes("src/pom.xml", 0100400) - assert.NoError(t, platform.ValidateCodePackage(b)) + require.NoError(t, platform.ValidateCodePackage(b)) b, _ = generateMockPackegeBytes("src/pom.xml", 0100555) - assert.Error(t, platform.ValidateCodePackage(b)) + require.Error(t, platform.ValidateCodePackage(b)) b, _ = generateMockPackegeBytes("src/build.gradle", 0100400) - assert.NoError(t, platform.ValidateCodePackage(b)) + require.NoError(t, platform.ValidateCodePackage(b)) b, _ = generateMockPackegeBytes("src/build.xml", 0100400) - assert.Error(t, platform.ValidateCodePackage(b)) + require.Error(t, platform.ValidateCodePackage(b)) b, _ = generateMockPackegeBytes("src/src/Main.java", 0100400) - assert.NoError(t, platform.ValidateCodePackage(b)) + require.NoError(t, platform.ValidateCodePackage(b)) b, _ = generateMockPackegeBytes("src/build/Main.java", 0100400) - assert.Error(t, platform.ValidateCodePackage(b)) + require.Error(t, platform.ValidateCodePackage(b)) b, _ = generateMockPackegeBytes("src/src/xyz/main.java", 0100400) - assert.NoError(t, platform.ValidateCodePackage(b)) + require.NoError(t, platform.ValidateCodePackage(b)) b, _ = generateMockPackegeBytes("src/src/xyz/main.class", 0100400) - assert.Error(t, platform.ValidateCodePackage(b)) + require.Error(t, platform.ValidateCodePackage(b)) b, _ = platform.GetDeploymentPayload(chaincodePathFolderGradle) - assert.NoError(t, platform.ValidateCodePackage(b)) + require.NoError(t, platform.ValidateCodePackage(b)) } func TestGetDeploymentPayload(t *testing.T) { platform := java.Platform{} _, err := platform.GetDeploymentPayload("") - assert.Contains(t, err.Error(), "ChaincodeSpec's path cannot be empty") + require.Contains(t, err.Error(), "ChaincodeSpec's path cannot be empty") spec.ChaincodeId.Path = chaincodePathFolderGradle payload, err := platform.GetDeploymentPayload(chaincodePathFolderGradle) - assert.NoError(t, err) - assert.NotZero(t, len(payload)) + require.NoError(t, err) + require.NotZero(t, len(payload)) is := bytes.NewReader(payload) gr, err := gzip.NewReader(is) @@ -116,25 +115,25 @@ func TestGetDeploymentPayload(t *testing.T) { if err == io.EOF { break } - assert.NoError(t, err) + require.NoError(t, err) if strings.Contains(header.Name, ".class") { - assert.Fail(t, "Result package can't contain class file") + require.Fail(t, "Result package can't contain class file") } if strings.Contains(header.Name, "target/") { - assert.Fail(t, "Result package can't contain target folder") + require.Fail(t, "Result package can't contain target folder") } if strings.Contains(header.Name, "build/") { - assert.Fail(t, "Result package can't contain build folder") + require.Fail(t, "Result package can't contain build folder") } contents[header.Name] = true } // generated from observed behavior - assert.Contains(t, contents, "src/build.gradle") - assert.Contains(t, contents, "src/pom.xml") - assert.Contains(t, contents, "src/settings.gradle") - assert.Contains(t, contents, "src/src/main/java/example/ExampleCC.java") + require.Contains(t, contents, "src/build.gradle") + require.Contains(t, contents, "src/pom.xml") + require.Contains(t, contents, "src/settings.gradle") + require.Contains(t, contents, "src/src/main/java/example/ExampleCC.java") } func TestGenerateDockerfile(t *testing.T) { @@ -147,7 +146,7 @@ func TestGenerateDockerfile(t *testing.T) { } dockerfile, err := platform.GenerateDockerfile() - assert.NoError(t, err) + require.NoError(t, err) var buf []string @@ -156,20 +155,20 @@ func TestGenerateDockerfile(t *testing.T) { dockerFileContents := strings.Join(buf, "\n") - assert.Equal(t, dockerFileContents, dockerfile) + require.Equal(t, dockerFileContents, dockerfile) } func TestDockerBuildOptions(t *testing.T) { platform := java.Platform{} opts, err := platform.DockerBuildOptions("path") - assert.NoError(t, err, "unexpected error from DockerBuildOptions") + require.NoError(t, err, "unexpected error from DockerBuildOptions") expectedOpts := util.DockerBuildOptions{ Image: "hyperledger/fabric-javaenv:latest", Cmd: "./build.sh", } - assert.Equal(t, expectedOpts, opts) + require.Equal(t, expectedOpts, opts) } func generateMockPackegeBytes(fileName string, mode int64) ([]byte, error) { diff --git a/core/chaincode/platforms/node/platform_test.go b/core/chaincode/platforms/node/platform_test.go index efcff04990f..54f0418f650 100644 --- a/core/chaincode/platforms/node/platform_test.go +++ b/core/chaincode/platforms/node/platform_test.go @@ -18,7 +18,7 @@ import ( "github.com/hyperledger/fabric/core/chaincode/platforms/util" "github.com/hyperledger/fabric/core/config/configtest" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var platform = &Platform{} @@ -142,13 +142,13 @@ fi func TestGenerateBuildOptions(t *testing.T) { opts, err := platform.DockerBuildOptions("pathname") - assert.NoError(t, err) + require.NoError(t, err) expectedOpts := util.DockerBuildOptions{ Image: "hyperledger/fabric-nodeenv:latest", Cmd: expectedBuildScript, } - assert.Equal(t, expectedOpts, opts) + require.Equal(t, expectedOpts, opts) } func makeCodePackage(pfiles []*packageFile) ([]byte, error) { diff --git a/core/chaincode/platforms/util/utils_test.go b/core/chaincode/platforms/util/utils_test.go index fcc5bd919a6..7c7d414eb99 100644 --- a/core/chaincode/platforms/util/utils_test.go +++ b/core/chaincode/platforms/util/utils_test.go @@ -20,7 +20,7 @@ import ( "github.com/hyperledger/fabric/common/metadata" "github.com/hyperledger/fabric/core/config/configtest" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestDockerPull(t *testing.T) { @@ -72,12 +72,12 @@ func TestUtil_GetDockerImageFromConfig(t *testing.T) { expected := "FROM " + metadata.DockerNamespace + ":" + runtime.GOARCH + "-" + metadata.Version viper.Set(path, "FROM $(DOCKER_NS):$(ARCH)-$(PROJECT_VERSION)") actual := GetDockerImageFromConfig(path) - assert.Equal(t, expected, actual, `Error parsing Dockerfile Template. Expected "%s", got "%s"`, expected, actual) + require.Equal(t, expected, actual, `Error parsing Dockerfile Template. Expected "%s", got "%s"`, expected, actual) expected = "FROM " + metadata.DockerNamespace + ":" + runtime.GOARCH + "-" + twoDigitVersion(metadata.Version) viper.Set(path, "FROM $(DOCKER_NS):$(ARCH)-$(TWO_DIGIT_VERSION)") actual = GetDockerImageFromConfig(path) - assert.Equal(t, expected, actual, `Error parsing Dockerfile Template. Expected "%s", got "%s"`, expected, actual) + require.Equal(t, expected, actual, `Error parsing Dockerfile Template. Expected "%s", got "%s"`, expected, actual) } @@ -98,10 +98,10 @@ func TestTwoDigitVersion(t *testing.T) { version := "2.0.0" expected := "2.0" actual := twoDigitVersion(version) - assert.Equal(t, expected, actual, `Error parsing two digit version. Expected "%s", got "%s"`, expected, actual) + require.Equal(t, expected, actual, `Error parsing two digit version. Expected "%s", got "%s"`, expected, actual) version = "latest" expected = "latest" actual = twoDigitVersion(version) - assert.Equal(t, expected, actual, `Error parsing two digit version. Expected "%s", got "%s"`, expected, actual) + require.Equal(t, expected, actual, `Error parsing two digit version. Expected "%s", got "%s"`, expected, actual) } diff --git a/core/chaincode/platforms/util/writer_test.go b/core/chaincode/platforms/util/writer_test.go index e1c60fb7557..a226040b0ad 100644 --- a/core/chaincode/platforms/util/writer_test.go +++ b/core/chaincode/platforms/util/writer_test.go @@ -20,7 +20,6 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -41,7 +40,7 @@ func TestWriteFileToPackage(t *testing.T) { require.NoError(t, err, "Error creating file %s", filePath) err = WriteFileToPackage(filePath, filename, tw) - assert.NoError(t, err, "Error returned by WriteFileToPackage while writing existing file") + require.NoError(t, err, "Error returned by WriteFileToPackage while writing existing file") tw.Close() gw.Close() @@ -54,41 +53,41 @@ func TestWriteFileToPackage(t *testing.T) { tr := tar.NewReader(gr) header, err := tr.Next() require.NoError(t, err, "Error getting the file from the tar") - assert.Equal(t, filename, header.Name, "filename read from archive does not match what was added") - assert.Equal(t, time.Time{}, header.AccessTime, "expected zero access time") - assert.Equal(t, time.Unix(0, 0), header.ModTime, "expected zero modification time") - assert.Equal(t, time.Time{}, header.ChangeTime, "expected zero change time") - assert.Equal(t, int64(0100644), header.Mode, "expected regular file mode") - assert.Equal(t, 500, header.Uid, "expected 500 uid") - assert.Equal(t, 500, header.Gid, "expected 500 gid") - assert.Equal(t, "", header.Uname, "expected empty user name") - assert.Equal(t, "", header.Gname, "expected empty group name") + require.Equal(t, filename, header.Name, "filename read from archive does not match what was added") + require.Equal(t, time.Time{}, header.AccessTime, "expected zero access time") + require.Equal(t, time.Unix(0, 0), header.ModTime, "expected zero modification time") + require.Equal(t, time.Time{}, header.ChangeTime, "expected zero change time") + require.Equal(t, int64(0100644), header.Mode, "expected regular file mode") + require.Equal(t, 500, header.Uid, "expected 500 uid") + require.Equal(t, 500, header.Gid, "expected 500 gid") + require.Equal(t, "", header.Uname, "expected empty user name") + require.Equal(t, "", header.Gname, "expected empty group name") b := make([]byte, 5) n, err := tr.Read(b) - assert.Equal(t, 5, n) - assert.True(t, err == nil || err == io.EOF, "Error reading file from the archive") // go1.10 returns io.EOF - assert.Equal(t, filecontent, string(b), "file content from archive does not equal original content") + require.Equal(t, 5, n) + require.True(t, err == nil || err == io.EOF, "Error reading file from the archive") // go1.10 returns io.EOF + require.Equal(t, filecontent, string(b), "file content from archive does not equal original content") t.Run("non existent file", func(t *testing.T) { tw := tar.NewWriter(&bytes.Buffer{}) err := WriteFileToPackage("missing-file", "", tw) - assert.Error(t, err, "expected error writing a non existent file") - assert.Contains(t, err.Error(), "missing-file") + require.Error(t, err, "expected error writing a non existent file") + require.Contains(t, err.Error(), "missing-file") }) t.Run("closed tar writer", func(t *testing.T) { tw := tar.NewWriter(&bytes.Buffer{}) tw.Close() err := WriteFileToPackage(filePath, "test.txt", tw) - assert.EqualError(t, err, fmt.Sprintf("failed to write header for %s: archive/tar: write after close", filePath)) + require.EqualError(t, err, fmt.Sprintf("failed to write header for %s: archive/tar: write after close", filePath)) }) t.Run("stream write failure", func(t *testing.T) { failWriter := &failingWriter{failAt: 514} tw := tar.NewWriter(failWriter) err := WriteFileToPackage(filePath, "test.txt", tw) - assert.EqualError(t, err, fmt.Sprintf("failed to write %s as test.txt: failed-the-write", filePath)) + require.EqualError(t, err, fmt.Sprintf("failed to write %s as test.txt: failed-the-write", filePath)) }) } @@ -118,7 +117,7 @@ func TestWriteFolderToTarPackage1(t *testing.T) { // Read the file from the archive and check the name entries := tarContents(t, tarBytes) - assert.ElementsMatch(t, []string{filePath}, entries, "archive should only contain one file") + require.ElementsMatch(t, []string{filePath}, entries, "archive should only contain one file") } // Success case 2: with exclude dir and no include file types @@ -127,7 +126,7 @@ func TestWriteFolderToTarPackage2(t *testing.T) { tarBytes := createTestTar(t, srcPath, []string{"src"}, nil, nil) entries := tarContents(t, tarBytes) - assert.ElementsMatch(t, []string{"src/artifact.xml", "META-INF/statedb/couchdb/indexes/indexOwner.json"}, entries) + require.ElementsMatch(t, []string{"src/artifact.xml", "META-INF/statedb/couchdb/indexes/indexOwner.json"}, entries) } // Success case 3: with chaincode metadata in META-INF directory @@ -139,7 +138,7 @@ func TestWriteFolderToTarPackage3(t *testing.T) { // Read the files from the archive and check for the metadata index file entries := tarContents(t, tarBytes) - assert.Contains(t, entries, filePath, "should have found statedb index artifact in META-INF directory") + require.Contains(t, entries, filePath, "should have found statedb index artifact in META-INF directory") } // Success case 4: with chaincode metadata in META-INF directory, pass trailing slash in srcPath @@ -151,7 +150,7 @@ func TestWriteFolderToTarPackage4(t *testing.T) { // Read the files from the archive and check for the metadata index file entries := tarContents(t, tarBytes) - assert.Contains(t, entries, filePath, "should have found statedb index artifact in META-INF directory") + require.Contains(t, entries, filePath, "should have found statedb index artifact in META-INF directory") } // Success case 5: with hidden files in META-INF directory (hidden files get ignored) @@ -159,13 +158,13 @@ func TestWriteFolderToTarPackage5(t *testing.T) { srcPath := filepath.Join("testdata", "sourcefiles") filePath := "META-INF/.hiddenfile" - assert.FileExists(t, filepath.Join(srcPath, "META-INF", ".hiddenfile")) + require.FileExists(t, filepath.Join(srcPath, "META-INF", ".hiddenfile")) tarBytes := createTestTar(t, srcPath, []string{}, nil, nil) // Read the files from the archive and check for the metadata index file entries := tarContents(t, tarBytes) - assert.NotContains(t, entries, filePath, "should not contain .hiddenfile in META-INF directory") + require.NotContains(t, entries, filePath, "should not contain .hiddenfile in META-INF directory") } // Failure case 1: no files in directory @@ -178,7 +177,7 @@ func TestWriteFolderToTarPackageFailure1(t *testing.T) { defer tw.Close() err = WriteFolderToTarPackage(tw, srcPath, []string{}, nil, nil) - assert.Contains(t, err.Error(), "no source files found") + require.Contains(t, err.Error(), "no source files found") } // Failure case 2: with invalid chaincode metadata in META-INF directory @@ -189,8 +188,8 @@ func TestWriteFolderToTarPackageFailure2(t *testing.T) { tw := tar.NewWriter(gw) err := WriteFolderToTarPackage(tw, srcPath, []string{}, nil, nil) - assert.Error(t, err, "Should have received error writing folder to package") - assert.Contains(t, err.Error(), "Index metadata file [META-INF/statedb/couchdb/indexes/bad.json] is not a valid JSON") + require.Error(t, err, "Should have received error writing folder to package") + require.Contains(t, err.Error(), "Index metadata file [META-INF/statedb/couchdb/indexes/bad.json] is not a valid JSON") tw.Close() gw.Close() @@ -204,8 +203,8 @@ func TestWriteFolderToTarPackageFailure3(t *testing.T) { tw := tar.NewWriter(gw) err := WriteFolderToTarPackage(tw, srcPath, []string{}, nil, nil) - assert.Error(t, err, "Should have received error writing folder to package") - assert.Contains(t, err.Error(), "metadata file path must begin with META-INF/statedb") + require.Error(t, err, "Should have received error writing folder to package") + require.Contains(t, err.Error(), "metadata file path must begin with META-INF/statedb") tw.Close() gw.Close() @@ -231,8 +230,8 @@ func Test_WriteFolderToTarPackageFailure4(t *testing.T) { defer tw.Close() err = WriteFolderToTarPackage(tw, tempDir, []string{}, nil, nil) - assert.Error(t, err, "Should have received error writing folder to package") - assert.Contains(t, err.Error(), "permission denied") + require.Error(t, err, "Should have received error writing folder to package") + require.Contains(t, err.Error(), "permission denied") err = os.Chmod(tempDir, 0700) require.NoError(t, err) @@ -244,7 +243,7 @@ func createTestTar(t *testing.T, srcPath string, excludeDir []string, includeFil tw := tar.NewWriter(gw) err := WriteFolderToTarPackage(tw, srcPath, excludeDir, includeFileTypeMap, excludeFileTypeMap) - assert.NoError(t, err, "Error writing folder to package") + require.NoError(t, err, "Error writing folder to package") tw.Close() gw.Close() diff --git a/core/chaincode/query_response_generator_test.go b/core/chaincode/query_response_generator_test.go index 9970d6c7608..73886b23636 100644 --- a/core/chaincode/query_response_generator_test.go +++ b/core/chaincode/query_response_generator_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric-protos-go/ledger/queryresult" "github.com/hyperledger/fabric/core/chaincode" "github.com/hyperledger/fabric/core/chaincode/mock" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const totalQueryLimit = 103 @@ -89,30 +89,30 @@ func TestBuildQueryResponse(t *testing.T) { totalResultCount := 0 for hasMoreCount := 0; hasMoreCount <= tc.expectedHasMoreCount; hasMoreCount++ { queryResponse, err := responseGenerator.BuildQueryResponse(transactionContext, resultsIterator, "query-id", tc.isPaginated, int32(tc.totalQueryLimit)) - assert.NoError(t, err) + require.NoError(t, err) switch { case hasMoreCount < tc.expectedHasMoreCount: // max limit sized batch retrieved, more expected - assert.True(t, queryResponse.GetHasMore()) - assert.Len(t, queryResponse.GetResults(), tc.maxResultLimit) + require.True(t, queryResponse.GetHasMore()) + require.Len(t, queryResponse.GetResults(), tc.maxResultLimit) default: // remainder retrieved, no more expected - assert.Len(t, queryResponse.GetResults(), tc.expectedResultCount-totalResultCount) - assert.False(t, queryResponse.GetHasMore()) + require.Len(t, queryResponse.GetResults(), tc.expectedResultCount-totalResultCount) + require.False(t, queryResponse.GetHasMore()) } totalResultCount += len(queryResponse.GetResults()) } // assert the total number of records is correct - assert.Equal(t, tc.expectedResultCount, totalResultCount) + require.Equal(t, tc.expectedResultCount, totalResultCount) if tc.isPaginated { // this case checks if the expected method was called to close the recordset - assert.Equal(t, 1, resultsIterator.GetBookmarkAndCloseCallCount()) + require.Equal(t, 1, resultsIterator.GetBookmarkAndCloseCallCount()) } else { - assert.Equal(t, 1, resultsIterator.CloseCallCount()) + require.Equal(t, 1, resultsIterator.CloseCallCount()) } }) } @@ -152,12 +152,12 @@ func TestBuildQueryResponseErrors(t *testing.T) { resp, err := responseGenerator.BuildQueryResponse(transactionContext, resultsIterator, "query-id", false, totalQueryLimit) if tc.expectedErrValue == "" { - assert.NoError(t, err) + require.NoError(t, err) } else { - assert.EqualError(t, err, tc.expectedErrValue) + require.EqualError(t, err, tc.expectedErrValue) } - assert.Nil(t, resp) - assert.Equal(t, 1, resultsIterator.CloseCallCount()) + require.Nil(t, resp) + require.Equal(t, 1, resultsIterator.CloseCallCount()) }) } } diff --git a/core/committer/committer_test.go b/core/committer/committer_test.go index cfad2dafc5b..3d26354a646 100644 --- a/core/committer/committer_test.go +++ b/core/committer/committer_test.go @@ -15,8 +15,8 @@ import ( "github.com/hyperledger/fabric/common/ledger" "github.com/hyperledger/fabric/common/ledger/testutil" ledger2 "github.com/hyperledger/fabric/core/ledger" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) type mockLedger struct { @@ -137,26 +137,26 @@ func TestKVLedgerBlockStorage(t *testing.T) { ledger.On("CommitLegacy", mock.Anything).Run(func(args mock.Arguments) { b := args.Get(0).(*ledger2.BlockAndPvtData) - assert.Equal(t, uint64(1), b.Block.Header.GetNumber()) - assert.Equal(t, gb.Header.DataHash, b.Block.Header.PreviousHash) - assert.Equal(t, block1.Header.DataHash, b.Block.Header.DataHash) + require.Equal(t, uint64(1), b.Block.Header.GetNumber()) + require.Equal(t, gb.Header.DataHash, b.Block.Header.PreviousHash) + require.Equal(t, block1.Header.DataHash, b.Block.Header.DataHash) }).Return(nil) ledger.On("GetBlockByNumber", uint64(0)).Return(gb, nil) committer := NewLedgerCommitter(ledger) height, err := committer.LedgerHeight() - assert.Equal(t, uint64(1), height) - assert.NoError(t, err) + require.Equal(t, uint64(1), height) + require.NoError(t, err) err = committer.CommitLegacy(&ledger2.BlockAndPvtData{Block: block1}, &ledger2.CommitOptions{}) - assert.NoError(t, err) + require.NoError(t, err) height, err = committer.LedgerHeight() - assert.Equal(t, uint64(2), height) - assert.NoError(t, err) + require.Equal(t, uint64(2), height) + require.NoError(t, err) blocks := committer.GetBlocks([]uint64{0}) - assert.Equal(t, 1, len(blocks)) - assert.NoError(t, err) + require.Equal(t, 1, len(blocks)) + require.NoError(t, err) } diff --git a/core/committer/txvalidator/router_test.go b/core/committer/txvalidator/router_test.go index f9d4d0f6f12..edaf74f4231 100644 --- a/core/committer/txvalidator/router_test.go +++ b/core/committer/txvalidator/router_test.go @@ -12,8 +12,8 @@ import ( "github.com/hyperledger/fabric/core/committer/txvalidator" "github.com/hyperledger/fabric/core/committer/txvalidator/mocks" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestRouter(t *testing.T) { @@ -37,7 +37,7 @@ func TestRouter(t *testing.T) { mv14.On("Validate", mock.Anything).Return(errors.New("uh uh")).Once() err := r.Validate(nil) - assert.EqualError(t, err, "uh uh") + require.EqualError(t, err, "uh uh") }) t.Run("v20 validator returns an error", func(t *testing.T) { @@ -45,7 +45,7 @@ func TestRouter(t *testing.T) { mv20.On("Validate", mock.Anything).Return(errors.New("uh uh")).Once() err := r.Validate(nil) - assert.EqualError(t, err, "uh uh") + require.EqualError(t, err, "uh uh") }) t.Run("v14 validator returns an error", func(t *testing.T) { @@ -53,7 +53,7 @@ func TestRouter(t *testing.T) { mv14.On("Validate", mock.Anything).Return(nil).Once() err := r.Validate(nil) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("v20 validator returns an error", func(t *testing.T) { @@ -61,6 +61,6 @@ func TestRouter(t *testing.T) { mv20.On("Validate", mock.Anything).Return(nil).Once() err := r.Validate(nil) - assert.NoError(t, err) + require.NoError(t, err) }) } diff --git a/core/committer/txvalidator/v14/plugin_validator_test.go b/core/committer/txvalidator/v14/plugin_validator_test.go index 677cd944053..aaf8fdbab12 100644 --- a/core/committer/txvalidator/v14/plugin_validator_test.go +++ b/core/committer/txvalidator/v14/plugin_validator_test.go @@ -21,8 +21,8 @@ import ( "github.com/hyperledger/fabric/msp" . "github.com/hyperledger/fabric/msp/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestValidateWithPlugin(t *testing.T) { @@ -38,7 +38,7 @@ func TestValidateWithPlugin(t *testing.T) { // Scenario I: The plugin isn't found because the map wasn't populated with anything yet err := v.ValidateWithPlugin(ctx) - assert.Contains(t, err.Error(), "plugin with name vscc wasn't found") + require.Contains(t, err.Error(), "plugin with name vscc wasn't found") // Scenario II: The plugin initialization fails factory := &mocks.PluginFactory{} @@ -47,7 +47,7 @@ func TestValidateWithPlugin(t *testing.T) { factory.On("New").Return(plugin) pm["vscc"] = factory err = v.ValidateWithPlugin(ctx) - assert.Contains(t, err.(*validation.ExecutionFailureError).Error(), "failed initializing plugin: foo") + require.Contains(t, err.(*validation.ExecutionFailureError).Error(), "failed initializing plugin: foo") // Scenario III: The plugin initialization succeeds but an execution error occurs. // The plugin should pass the error as is. @@ -57,13 +57,13 @@ func TestValidateWithPlugin(t *testing.T) { } plugin.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(validationErr).Once() err = v.ValidateWithPlugin(ctx) - assert.Equal(t, validationErr, err) + require.Equal(t, validationErr, err) // Scenario IV: The plugin initialization succeeds and the validation passes plugin.On("Init", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil).Once() plugin.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil).Once() err = v.ValidateWithPlugin(ctx) - assert.NoError(t, err) + require.NoError(t, err) } func TestSamplePlugin(t *testing.T) { @@ -113,5 +113,5 @@ func TestSamplePlugin(t *testing.T) { }, Channel: "mychannel", } - assert.NoError(t, v.ValidateWithPlugin(ctx)) + require.NoError(t, v.ValidateWithPlugin(ctx)) } diff --git a/core/committer/txvalidator/v14/testdata/test_plugin.go b/core/committer/txvalidator/v14/testdata/test_plugin.go index 3929f6a34bb..2e819626c50 100644 --- a/core/committer/txvalidator/v14/testdata/test_plugin.go +++ b/core/committer/txvalidator/v14/testdata/test_plugin.go @@ -18,7 +18,7 @@ import ( . "github.com/hyperledger/fabric/core/handlers/validation/api/state" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // SampleValidationPlugin is an example for a validation plugin, @@ -59,7 +59,7 @@ func (p *SampleValidationPlugin) Validate(block *common.Block, namespace string, txData := block.Data.Data[0] txn := &MarshaledSignedData{} err := proto.Unmarshal(txData, txn) - assert.NoError(p.t, err) + require.NoError(p.t, err) // Check if the chaincode is instantiated state, err := p.sf.FetchState() @@ -86,8 +86,8 @@ func (p *SampleValidationPlugin) Validate(block *common.Block, namespace string, } identifier := identity.GetIdentityIdentifier() - assert.Equal(p.t, "SampleOrg", identifier.Mspid) - assert.Equal(p.t, "foo", identifier.Id) + require.Equal(p.t, "SampleOrg", identifier.Mspid) + require.Equal(p.t, "foo", identifier.Id) sd := &protoutil.SignedData{ Signature: txn.Signature, diff --git a/core/committer/txvalidator/v14/txvalidator_test.go b/core/committer/txvalidator/v14/txvalidator_test.go index ffbf2e390b0..22895cd614d 100644 --- a/core/committer/txvalidator/v14/txvalidator_test.go +++ b/core/committer/txvalidator/v14/txvalidator_test.go @@ -31,7 +31,7 @@ import ( mspmgmt "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func testValidationWithNTXes(t *testing.T, ledger ledger2.PeerLedger, gbHash []byte, nBlocks int) { @@ -50,7 +50,7 @@ func testValidationWithNTXes(t *testing.T, ledger ledger2.PeerLedger, gbHash []b } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockVsccValidator := &validator.MockVsccValidator{} mockCapabilities := &mocks.ApplicationCapabilities{} mockCapabilities.On("ForbidDuplicateTXIdInBlock").Return(false) @@ -63,7 +63,7 @@ func testValidationWithNTXes(t *testing.T, ledger ledger2.PeerLedger, gbHash []b } bcInfo, _ := ledger.GetBlockchainInfo() - assert.Equal(t, &common.BlockchainInfo{ + require.Equal(t, &common.BlockchainInfo{ Height: 1, CurrentBlockHash: gbHash, PreviousBlockHash: nil, }, bcInfo) @@ -78,7 +78,7 @@ func testValidationWithNTXes(t *testing.T, ledger ledger2.PeerLedger, gbHash []b txsfltr := txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) for i := 0; i < nBlocks; i++ { - assert.True(t, txsfltr.IsSetTo(i, peer.TxValidationCode_VALID)) + require.True(t, txsfltr.IsSetTo(i, peer.TxValidationCode_VALID)) } } @@ -86,24 +86,24 @@ func TestDetectTXIdDuplicates(t *testing.T) { txids := []string{"", "1", "2", "3", "", "2", ""} txsfltr := txflags.New(len(txids)) markTXIdDuplicates(txids, txsfltr) - assert.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(2, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(3, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(4, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(5, peer.TxValidationCode_DUPLICATE_TXID)) - assert.True(t, txsfltr.IsSetTo(6, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(2, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(3, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(4, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(5, peer.TxValidationCode_DUPLICATE_TXID)) + require.True(t, txsfltr.IsSetTo(6, peer.TxValidationCode_NOT_VALIDATED)) txids = []string{"", "1", "2", "3", "", "21", ""} txsfltr = txflags.New(len(txids)) markTXIdDuplicates(txids, txsfltr) - assert.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(2, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(3, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(4, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(5, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(6, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(2, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(3, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(4, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(5, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(6, peer.TxValidationCode_NOT_VALIDATED)) } func TestBlockValidationDuplicateTXId(t *testing.T) { @@ -130,7 +130,7 @@ func TestBlockValidationDuplicateTXId(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockVsccValidator := &validator.MockVsccValidator{} acv := &mocks.ApplicationCapabilities{} tValidator := &TxValidator{ @@ -142,13 +142,13 @@ func TestBlockValidationDuplicateTXId(t *testing.T) { } bcInfo, _ := ledger.GetBlockchainInfo() - assert.Equal(t, &common.BlockchainInfo{ + require.Equal(t, &common.BlockchainInfo{ Height: 1, CurrentBlockHash: gbHash, PreviousBlockHash: nil, }, bcInfo) envs := []*common.Envelope{} env, _, err := testutil.ConstructTransaction(t, pubSimulationResBytes, "", true) - assert.NoError(t, err) + require.NoError(t, err) envs = append(envs, env) envs = append(envs, env) block := testutil.NewBlock(envs, 1, gbHash) @@ -158,16 +158,16 @@ func TestBlockValidationDuplicateTXId(t *testing.T) { txsfltr := txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) - assert.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_VALID)) - assert.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_VALID)) + require.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_VALID)) + require.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_VALID)) acv.On("ForbidDuplicateTXIdInBlock").Return(true) tValidator.Validate(block) txsfltr = txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) - assert.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_VALID)) - assert.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_DUPLICATE_TXID)) + require.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_VALID)) + require.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_DUPLICATE_TXID)) } func TestBlockValidation(t *testing.T) { @@ -223,7 +223,7 @@ func TestTxValidationFailure_InvalidTxid(t *testing.T) { mockCapabilities := &mocks.ApplicationCapabilities{} mockCapabilities.On("ForbidDuplicateTXIdInBlock").Return(false) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) tValidator := &TxValidator{ ChannelID: "", Semaphore: semaphore.New(10), @@ -233,9 +233,9 @@ func TestTxValidationFailure_InvalidTxid(t *testing.T) { } mockSigner, err := mspmgmt.GetLocalMSP(cryptoProvider).GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) mockSignerSerialized, err := mockSigner.Serialize() - assert.NoError(t, err) + require.NoError(t, err) // Create simple endorsement transaction payload := &common.Payload{ @@ -256,10 +256,10 @@ func TestTxValidationFailure_InvalidTxid(t *testing.T) { payloadBytes, err := proto.Marshal(payload) // Check marshaling didn't fail - assert.NoError(t, err) + require.NoError(t, err) sig, err := mockSigner.Sign(payloadBytes) - assert.NoError(t, err) + require.NoError(t, err) // Envelope the payload envelope := &common.Envelope{ @@ -270,7 +270,7 @@ func TestTxValidationFailure_InvalidTxid(t *testing.T) { envelopeBytes, err := proto.Marshal(envelope) // Check marshaling didn't fail - assert.NoError(t, err) + require.NoError(t, err) block := &common.Block{ Data: &common.BlockData{ @@ -297,10 +297,10 @@ func TestTxValidationFailure_InvalidTxid(t *testing.T) { tValidator.Validate(block) txsfltr := txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) - assert.True(t, txsfltr.IsInvalid(0)) + require.True(t, txsfltr.IsInvalid(0)) // We expect the tx to be invalid because of a bad txid - assert.True(t, txsfltr.Flag(0) == peer.TxValidationCode_BAD_PROPOSAL_TXID) + require.True(t, txsfltr.Flag(0) == peer.TxValidationCode_BAD_PROPOSAL_TXID) } func createCCUpgradeEnvelope(channelID, chaincodeName, chaincodeVersion string, signer msp.SigningIdentity) (*common.Envelope, error) { @@ -337,22 +337,22 @@ func createCCUpgradeEnvelope(channelID, chaincodeName, chaincodeVersion string, func TestGetTxCCInstance(t *testing.T) { // setup the MSP manager so that we can sign/verify err := msptesttools.LoadMSPSetupForTesting() - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) signer, err := mspmgmt.GetLocalMSP(cryptoProvider).GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) channelID := "testchannelid" upgradeCCName := "mycc" upgradeCCVersion := "v1" env, err := createCCUpgradeEnvelope(channelID, upgradeCCName, upgradeCCVersion, signer) - assert.NoError(t, err) + require.NoError(t, err) // get the payload from the envelope payload, err := protoutil.UnmarshalPayload(env.Payload) - assert.NoError(t, err) + require.NoError(t, err) expectInvokeCCIns := &sysccprovider.ChaincodeInstance{ ChannelID: channelID, @@ -372,8 +372,8 @@ func TestGetTxCCInstance(t *testing.T) { if err != nil { t.Fatalf("Get chaincode from tx error: %s", err) } - assert.EqualValues(t, expectInvokeCCIns, invokeCCIns) - assert.EqualValues(t, expectUpgradeCCIns, upgradeCCIns) + require.EqualValues(t, expectInvokeCCIns, invokeCCIns) + require.EqualValues(t, expectUpgradeCCIns, upgradeCCIns) } func TestInvalidTXsForUpgradeCC(t *testing.T) { @@ -414,13 +414,13 @@ func TestInvalidTXsForUpgradeCC(t *testing.T) { expectTxsFltr.SetFlag(7, peer.TxValidationCode_VALID) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) tValidator := &TxValidator{ CryptoProvider: cryptoProvider, } tValidator.invalidTXsForUpgradeCC(txsChaincodeNames, upgradedChaincodes, txsfltr) - assert.EqualValues(t, expectTxsFltr, txsfltr) + require.EqualValues(t, expectTxsFltr, txsfltr) } func constructLedgerMgrWithTestDefaults(t *testing.T, testDir string) (*ledgermgmt.LedgerMgr, func()) { diff --git a/core/committer/txvalidator/v14/validator_test.go b/core/committer/txvalidator/v14/validator_test.go index f11ec07a2ad..af4de72f52c 100644 --- a/core/committer/txvalidator/v14/validator_test.go +++ b/core/committer/txvalidator/v14/validator_test.go @@ -49,8 +49,8 @@ import ( "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func signedByAnyMember(ids []string) []byte { @@ -120,16 +120,16 @@ func setupLedgerAndValidatorWithCapabilities(t *testing.T, c *tmocks.Application func setupLedgerAndValidatorExplicitWithMSP(t *testing.T, cpb *tmocks.ApplicationCapabilities, plugin validation.Plugin, mspMgr msp.MSPManager) (ledger.PeerLedger, txvalidator.Validator, func()) { ledgerMgr, cleanup := constructLedgerMgrWithTestDefaults(t, "txvalidator") gb, err := ctxt.MakeGenesisBlock("TestLedger") - assert.NoError(t, err) + require.NoError(t, err) theLedger, err := ledgerMgr.CreateLedger("TestLedger", gb) - assert.NoError(t, err) + require.NoError(t, err) pm := &mocks.Mapper{} factory := &mocks.PluginFactory{} pm.On("FactoryByName", vp.Name("vscc")).Return(factory) factory.On("New").Return(plugin) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) theValidator := txvalidatorv14.NewTxValidator( "", semaphore.New(10), @@ -152,9 +152,9 @@ func createRWset(t *testing.T, ccnames ...string) []byte { rwsetBuilder.AddToWriteSet(ccname, "key", []byte("value")) } rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) return rwsetBytes } @@ -174,17 +174,17 @@ const ccVersion = "1.0" func getEnvWithType(ccID string, event []byte, res []byte, pType common.HeaderType, t *testing.T) *common.Envelope { // get a toy proposal prop, err := getProposalWithType(ccID, pType) - assert.NoError(t, err) + require.NoError(t, err) response := &peer.Response{Status: 200} // endorse it to get a proposal response presp, err := protoutil.CreateProposalResponse(prop.Header, prop.Payload, response, res, event, &peer.ChaincodeID{Name: ccID, Version: ccVersion}, signer) - assert.NoError(t, err) + require.NoError(t, err) // assemble a transaction from that proposal and endorsement tx, err := protoutil.CreateSignedTx(prop, signer, presp) - assert.NoError(t, err) + require.NoError(t, err) return tx } @@ -205,19 +205,19 @@ func getEnvWithSigner(ccID string, event []byte, res []byte, sig msp.SigningIden } sID, err := sig.Serialize() - assert.NoError(t, err) + require.NoError(t, err) prop, _, err := protoutil.CreateProposalFromCIS(pType, "foochain", cis, sID) - assert.NoError(t, err) + require.NoError(t, err) response := &peer.Response{Status: 200} // endorse it to get a proposal response presp, err := protoutil.CreateProposalResponse(prop.Header, prop.Payload, response, res, event, &peer.ChaincodeID{Name: ccID, Version: ccVersion}, sig) - assert.NoError(t, err) + require.NoError(t, err) // assemble a transaction from that proposal and endorsement tx, err := protoutil.CreateSignedTx(prop, sig, presp) - assert.NoError(t, err) + require.NoError(t, err) return tx } @@ -234,39 +234,39 @@ func putCCInfoWithVSCCAndVer(theLedger ledger.PeerLedger, ccname, vscc, ver stri txid := util.GenerateUUID() simulator, err := theLedger.NewTxSimulator(txid) - assert.NoError(t, err) + require.NoError(t, err) simulator.SetState("lscc", ccname, cdbytes) simulator.Done() simRes, err := simulator.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) pubSimulationBytes, err := simRes.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) bcInfo, err := theLedger.GetBlockchainInfo() - assert.NoError(t, err) + require.NoError(t, err) block0 := testutil.ConstructBlock(t, 1, bcInfo.CurrentBlockHash, [][]byte{pubSimulationBytes}, true) err = theLedger.CommitLegacy(&ledger.BlockAndPvtData{Block: block0}, &ledger.CommitOptions{}) - assert.NoError(t, err) + require.NoError(t, err) } func putSBEP(theLedger ledger.PeerLedger, cc, key string, policy []byte, t *testing.T) { vpMetadataKey := peer.MetaDataKeys_VALIDATION_PARAMETER.String() txid := util.GenerateUUID() simulator, err := theLedger.NewTxSimulator(txid) - assert.NoError(t, err) + require.NoError(t, err) simulator.SetStateMetadata(cc, key, map[string][]byte{vpMetadataKey: policy}) simulator.SetState(cc, key, []byte("I am a man who walks alone")) simulator.Done() simRes, err := simulator.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) pubSimulationBytes, err := simRes.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) bcInfo, err := theLedger.GetBlockchainInfo() - assert.NoError(t, err) + require.NoError(t, err) block0 := testutil.ConstructBlock(t, 2, bcInfo.CurrentBlockHash, [][]byte{pubSimulationBytes}, true) err = theLedger.CommitLegacy(&ledger.BlockAndPvtData{Block: block0}, &ledger.CommitOptions{}) - assert.NoError(t, err) + require.NoError(t, err) } func putCCInfo(theLedger ledger.PeerLedger, ccname string, policy []byte, t *testing.T) { @@ -275,13 +275,13 @@ func putCCInfo(theLedger ledger.PeerLedger, ccname string, policy []byte, t *tes func assertInvalid(block *common.Block, t *testing.T, code peer.TxValidationCode) { txsFilter := txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) - assert.True(t, txsFilter.IsInvalid(0)) - assert.True(t, txsFilter.IsSetTo(0, code)) + require.True(t, txsFilter.IsInvalid(0)) + require.True(t, txsFilter.IsSetTo(0, code)) } func assertValid(block *common.Block, t *testing.T) { txsFilter := txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) - assert.False(t, txsFilter.IsInvalid(0)) + require.False(t, txsFilter.IsInvalid(0)) } func TestInvokeBadRWSet(t *testing.T) { @@ -307,7 +307,7 @@ func testInvokeBadRWSet(t *testing.T, l ledger.PeerLedger, v txvalidator.Validat b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 1}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_BAD_RWSET) } @@ -336,7 +336,7 @@ func testInvokeNoPolicy(t *testing.T, l ledger.PeerLedger, v txvalidator.Validat b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_OTHER_REASON) } @@ -365,7 +365,7 @@ func testInvokeOK(t *testing.T, l ledger.PeerLedger, v txvalidator.Validator) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) } @@ -423,7 +423,7 @@ func testInvokeNOKDuplicateNs(t *testing.T, l ledger.PeerLedger, v txvalidator.V b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ILLEGAL_WRITESET) } @@ -446,7 +446,7 @@ func TestInvokeNoRWSet(t *testing.T) { } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) }) @@ -484,7 +484,7 @@ func testInvokeNoRWSet(t *testing.T, l ledger.PeerLedger, v txvalidator.Validato b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -716,9 +716,9 @@ func TestParallelValidation(t *testing.T) { sig = sigID0 } rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx := getEnvWithSigner(ccID, nil, rwsetBytes, sig, t) blockData = append(blockData, protoutil.MarshalOrPanic(tx)) } @@ -728,7 +728,7 @@ func TestParallelValidation(t *testing.T) { // validate the block err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) // Block metadata array position to store serialized bit array filter of invalid transactions txsFilter := txflags.ValidationFlags(b.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) @@ -742,9 +742,9 @@ func TestParallelValidation(t *testing.T) { case 6: fallthrough case 9: - assert.True(t, txsFilter.IsInvalid(txNum)) + require.True(t, txsFilter.IsInvalid(txNum)) default: - assert.False(t, txsFilter.IsInvalid(txNum)) + require.False(t, txsFilter.IsInvalid(txNum)) } } } @@ -763,7 +763,7 @@ func TestChaincodeEvent(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) }) @@ -779,7 +779,7 @@ func TestChaincodeEvent(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) }) @@ -795,7 +795,7 @@ func TestChaincodeEvent(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) }) }) @@ -856,7 +856,7 @@ func testCCEventMismatchedName(t *testing.T, l ledger.PeerLedger, v txvalidator. b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) // TODO, convert test so it can check the error text for INVALID_OTHER_REASON + require.NoError(t, err) // TODO, convert test so it can check the error text for INVALID_OTHER_REASON assertInvalid(b, t, peer.TxValidationCode_INVALID_OTHER_REASON) } @@ -869,7 +869,7 @@ func testCCEventBadBytes(t *testing.T, l ledger.PeerLedger, v txvalidator.Valida b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) // TODO, convert test so it can check the error text for INVALID_OTHER_REASON + require.NoError(t, err) // TODO, convert test so it can check the error text for INVALID_OTHER_REASON assertInvalid(b, t, peer.TxValidationCode_INVALID_OTHER_REASON) } @@ -882,7 +882,7 @@ func testCCEventGoodPath(t *testing.T, l ledger.PeerLedger, v txvalidator.Valida b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) } @@ -916,15 +916,15 @@ func testInvokeOKPvtDataOnly(t *testing.T, l ledger.PeerLedger, v txvalidator.Va rwsetBuilder := rwsetutil.NewRWSetBuilder() rwsetBuilder.AddToPvtAndHashedWriteSet(ccID, "mycollection", "somekey", nil) rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx := getEnv(ccID, nil, rwsetBytes, t) b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err = v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -958,15 +958,15 @@ func testInvokeOKMetaUpdateOnly(t *testing.T, l ledger.PeerLedger, v txvalidator rwsetBuilder := rwsetutil.NewRWSetBuilder() rwsetBuilder.AddToMetadataWriteSet(ccID, "somekey", map[string][]byte{}) rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx := getEnv(ccID, nil, rwsetBytes, t) b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err = v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -1000,15 +1000,15 @@ func testInvokeOKPvtMetaUpdateOnly(t *testing.T, l ledger.PeerLedger, v txvalida rwsetBuilder := rwsetutil.NewRWSetBuilder() rwsetBuilder.AddToHashedMetadataWriteSet(ccID, "mycollection", "somekey", map[string][]byte{}) rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx := getEnv(ccID, nil, rwsetBytes, t) b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err = v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -1043,21 +1043,21 @@ func testInvokeOKSCC(t *testing.T, l ledger.PeerLedger, v txvalidator.Validator) Type: peer.ChaincodeSpec_GOLANG}} prop, _, err := protoutil.CreateProposalFromCIS(common.HeaderType_ENDORSER_TRANSACTION, "testchannelid", cis, signerSerialized) - assert.NoError(t, err) + require.NoError(t, err) rwsetBuilder := rwsetutil.NewRWSetBuilder() rwsetBuilder.AddToWriteSet("lscc", "cc", protoutil.MarshalOrPanic(&ccp.ChaincodeData{Name: "cc", Version: "ver", InstantiationPolicy: policydsl.MarshaledAcceptAllPolicy})) rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) presp, err := protoutil.CreateProposalResponse(prop.Header, prop.Payload, &peer.Response{Status: 200}, rwsetBytes, nil, &peer.ChaincodeID{Name: "lscc", Version: ccVersion}, signer) - assert.NoError(t, err) + require.NoError(t, err) tx, err := protoutil.CreateSignedTx(prop, signer, presp) - assert.NoError(t, err) + require.NoError(t, err) b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 1}} err = v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) } @@ -1086,7 +1086,7 @@ func testInvokeNOKWritesToLSCC(t *testing.T, l ledger.PeerLedger, v txvalidator. b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ILLEGAL_WRITESET) } @@ -1118,7 +1118,7 @@ func testInvokeNOKWritesToESCC(t *testing.T, l ledger.PeerLedger, v txvalidator. } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ILLEGAL_WRITESET) } @@ -1150,7 +1150,7 @@ func testInvokeNOKWritesToNotExt(t *testing.T, l ledger.PeerLedger, v txvalidato } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ILLEGAL_WRITESET) } @@ -1182,7 +1182,7 @@ func testInvokeNOKInvokesNotExt(t *testing.T, l ledger.PeerLedger, v txvalidator } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ILLEGAL_WRITESET) } @@ -1214,7 +1214,7 @@ func testInvokeNOKInvokesEmptyCCName(t *testing.T, l ledger.PeerLedger, v txvali } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_OTHER_REASON) } @@ -1246,7 +1246,7 @@ func testInvokeNOKExpiredCC(t *testing.T, l ledger.PeerLedger, v txvalidator.Val } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_EXPIRED_CHAINCODE) } @@ -1278,7 +1278,7 @@ func testInvokeNOKBogusActions(t *testing.T, l ledger.PeerLedger, v txvalidator. } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_BAD_RWSET) } @@ -1308,7 +1308,7 @@ func testInvokeNOKCCDoesntExist(t *testing.T, l ledger.PeerLedger, v txvalidator } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_OTHER_REASON) } @@ -1340,7 +1340,7 @@ func testInvokeNOKVSCCUnspecified(t *testing.T, l ledger.PeerLedger, v txvalidat } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_OTHER_REASON) } @@ -1365,7 +1365,7 @@ func testInvokeNoBlock(t *testing.T, l ledger.PeerLedger, v txvalidator.Validato Data: &common.BlockData{Data: [][]byte{}}, Header: &common.BlockHeader{}, }) - assert.NoError(t, err) + require.NoError(t, err) } func TestValidateTxWithStateBasedEndorsement(t *testing.T) { @@ -1389,7 +1389,7 @@ func TestValidateTxWithStateBasedEndorsement(t *testing.T) { err, b := validateTxWithStateBasedEndorsement(t, l, v) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) }) @@ -1399,7 +1399,7 @@ func TestValidateTxWithStateBasedEndorsement(t *testing.T) { err, b := validateTxWithStateBasedEndorsement(t, l, v) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) }) } @@ -1613,9 +1613,9 @@ func (exec *mockQueryExecutor) GetPrivateDataMetadata(namespace, collection, key func createCustomSupportAndLedger(t *testing.T) (*mocktxvalidator.Support, ledger.PeerLedger, func()) { ledgerMgr, cleanup := constructLedgerMgrWithTestDefaults(t, "txvalidator") gb, err := ctxt.MakeGenesisBlock("TestLedger") - assert.NoError(t, err) + require.NoError(t, err) l, err := ledgerMgr.CreateLedger("TestLedger", gb) - assert.NoError(t, err) + require.NoError(t, err) identity := &mocks2.Identity{} identity.GetIdentifierReturns(&msp.IdentityIdentifier{ @@ -1638,7 +1638,7 @@ func TestDynamicCapabilitiesAndMSP(t *testing.T) { defer cleanup() cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) v := txvalidatorv14.NewTxValidator("", semaphore.New(10), support, pm, cryptoProvider) ccID := "mycc" @@ -1653,7 +1653,7 @@ func TestDynamicCapabilitiesAndMSP(t *testing.T) { // Perform a validation of a block err = v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) // Record the number of times the capabilities and the MSP Manager were invoked capabilityInvokeCount := support.CapabilitiesInvokeCount() @@ -1661,15 +1661,15 @@ func TestDynamicCapabilitiesAndMSP(t *testing.T) { // Perform another validation pass, and ensure it is valid err = v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) // Ensure that the capabilities were retrieved from the support twice, // which proves that the capabilities are dynamically retrieved from the support each time - assert.Equal(t, 2*capabilityInvokeCount, support.CapabilitiesInvokeCount()) + require.Equal(t, 2*capabilityInvokeCount, support.CapabilitiesInvokeCount()) // Ensure that the MSP Manager was retrieved from the support twice, // which proves that the MSP Manager is dynamically retrieved from the support each time - assert.Equal(t, 2*mspManagerInvokeCount, support.MSPManagerInvokeCount()) + require.Equal(t, 2*mspManagerInvokeCount, support.MSPManagerInvokeCount()) } // TestLedgerIsNoAvailable simulates and provides a test for following scenario, @@ -1683,7 +1683,7 @@ func TestLedgerIsNoAvailable(t *testing.T) { theLedger := new(mockLedger) pm := &mocks.Mapper{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) validator := txvalidatorv14.NewTxValidator( "", semaphore.New(10), @@ -1708,7 +1708,7 @@ func TestLedgerIsNoAvailable(t *testing.T) { err = validator.Validate(b) - assertion := assert.New(t) + assertion := require.New(t) // We suppose to get the error which indicates we cannot commit the block assertion.Error(err) // The error exptected to be of type VSCCInfoLookupFailureError @@ -1719,7 +1719,7 @@ func TestLedgerIsNotAvailableForCheckingTxidDuplicate(t *testing.T) { theLedger := new(mockLedger) pm := &mocks.Mapper{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) validator := txvalidatorv14.NewTxValidator( "", semaphore.New(10), @@ -1740,7 +1740,7 @@ func TestLedgerIsNotAvailableForCheckingTxidDuplicate(t *testing.T) { err = validator.Validate(b) - assertion := assert.New(t) + assertion := require.New(t) // We expect a validation error because the ledger wasn't ready to tell us whether there was a tx with that ID or not assertion.Error(err) } @@ -1749,7 +1749,7 @@ func TestDuplicateTxId(t *testing.T) { theLedger := new(mockLedger) pm := &mocks.Mapper{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) validator := txvalidatorv14.NewTxValidator( "", semaphore.New(10), @@ -1770,7 +1770,7 @@ func TestDuplicateTxId(t *testing.T) { err = validator.Validate(b) - assertion := assert.New(t) + assertion := require.New(t) // We expect no validation error because we simply mark the tx as invalid assertion.NoError(err) @@ -1790,7 +1790,7 @@ func TestValidationInvalidEndorsing(t *testing.T) { plugin.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(errors.New("invalid tx")) pm.On("FactoryByName", vp.Name("vscc")).Return(factory) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) validator := txvalidatorv14.NewTxValidator( "", semaphore.New(10), @@ -1825,7 +1825,7 @@ func TestValidationInvalidEndorsing(t *testing.T) { // Keep default callback err = validator.Validate(b) // Restore default callback - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -1868,7 +1868,7 @@ func TestValidationPluginExecutionError(t *testing.T) { err := v.Validate(b) executionErr := err.(*commonerrors.VSCCExecutionFailureError) - assert.Contains(t, executionErr.Error(), "I/O error") + require.Contains(t, executionErr.Error(), "I/O error") } func TestValidationPluginNotFound(t *testing.T) { @@ -1884,7 +1884,7 @@ func TestValidationPluginNotFound(t *testing.T) { pm := &mocks.Mapper{} pm.On("FactoryByName", vp.Name("vscc")).Return(nil) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) validator := txvalidatorv14.NewTxValidator( "", semaphore.New(10), @@ -1894,7 +1894,7 @@ func TestValidationPluginNotFound(t *testing.T) { ) err = validator.Validate(b) executionErr := err.(*commonerrors.VSCCExecutionFailureError) - assert.Contains(t, executionErr.Error(), "plugin with name vscc wasn't found") + require.Contains(t, executionErr.Error(), "plugin with name vscc wasn't found") } var signer msp.SigningIdentity diff --git a/core/committer/txvalidator/v20/plugindispatcher/plugin_validator_test.go b/core/committer/txvalidator/v20/plugindispatcher/plugin_validator_test.go index ee3d3990e29..add9ac2baee 100644 --- a/core/committer/txvalidator/v20/plugindispatcher/plugin_validator_test.go +++ b/core/committer/txvalidator/v20/plugindispatcher/plugin_validator_test.go @@ -22,8 +22,8 @@ import ( "github.com/hyperledger/fabric/msp" . "github.com/hyperledger/fabric/msp/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestValidateWithPlugin(t *testing.T) { @@ -43,7 +43,7 @@ func TestValidateWithPlugin(t *testing.T) { // Scenario I: The plugin isn't found because the map wasn't populated with anything yet err := v.ValidateWithPlugin(ctx) - assert.Contains(t, err.Error(), "plugin with name vscc wasn't found") + require.Contains(t, err.Error(), "plugin with name vscc wasn't found") // Scenario II: The plugin initialization fails factory := &mocks.PluginFactory{} @@ -52,7 +52,7 @@ func TestValidateWithPlugin(t *testing.T) { factory.On("New").Return(plugin) pm["vscc"] = factory err = v.ValidateWithPlugin(ctx) - assert.Contains(t, err.(*validation.ExecutionFailureError).Error(), "failed initializing plugin: foo") + require.Contains(t, err.(*validation.ExecutionFailureError).Error(), "failed initializing plugin: foo") // Scenario III: The plugin initialization succeeds but an execution error occurs. // The plugin should pass the error as is. @@ -62,13 +62,13 @@ func TestValidateWithPlugin(t *testing.T) { } plugin.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(validationErr).Once() err = v.ValidateWithPlugin(ctx) - assert.Equal(t, validationErr, err) + require.Equal(t, validationErr, err) // Scenario IV: The plugin initialization succeeds and the validation passes plugin.On("Init", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil).Once() plugin.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil).Once() err = v.ValidateWithPlugin(ctx) - assert.NoError(t, err) + require.NoError(t, err) } func TestSamplePlugin(t *testing.T) { @@ -121,5 +121,5 @@ func TestSamplePlugin(t *testing.T) { }, Channel: "mychannel", } - assert.NoError(t, v.ValidateWithPlugin(ctx)) + require.NoError(t, v.ValidateWithPlugin(ctx)) } diff --git a/core/committer/txvalidator/v20/testdata/test_plugin.go b/core/committer/txvalidator/v20/testdata/test_plugin.go index 3929f6a34bb..2e819626c50 100644 --- a/core/committer/txvalidator/v20/testdata/test_plugin.go +++ b/core/committer/txvalidator/v20/testdata/test_plugin.go @@ -18,7 +18,7 @@ import ( . "github.com/hyperledger/fabric/core/handlers/validation/api/state" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // SampleValidationPlugin is an example for a validation plugin, @@ -59,7 +59,7 @@ func (p *SampleValidationPlugin) Validate(block *common.Block, namespace string, txData := block.Data.Data[0] txn := &MarshaledSignedData{} err := proto.Unmarshal(txData, txn) - assert.NoError(p.t, err) + require.NoError(p.t, err) // Check if the chaincode is instantiated state, err := p.sf.FetchState() @@ -86,8 +86,8 @@ func (p *SampleValidationPlugin) Validate(block *common.Block, namespace string, } identifier := identity.GetIdentityIdentifier() - assert.Equal(p.t, "SampleOrg", identifier.Mspid) - assert.Equal(p.t, "foo", identifier.Id) + require.Equal(p.t, "SampleOrg", identifier.Mspid) + require.Equal(p.t, "foo", identifier.Id) sd := &protoutil.SignedData{ Signature: txn.Signature, diff --git a/core/committer/txvalidator/v20/txvalidator_test.go b/core/committer/txvalidator/v20/txvalidator_test.go index 10fd2c6189a..2d31dfaa4af 100644 --- a/core/committer/txvalidator/v20/txvalidator_test.go +++ b/core/committer/txvalidator/v20/txvalidator_test.go @@ -23,8 +23,8 @@ import ( "github.com/hyperledger/fabric/internal/pkg/txflags" mspmgmt "github.com/hyperledger/fabric/msp/mgmt" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) // mockDispatcher is still useful for the parallel test. Auto-generated mocks @@ -53,7 +53,7 @@ func testValidationWithNTXes(t *testing.T, nBlocks int) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockDispatcher := &mockDispatcher{} mockLedger := &mocks.LedgerResources{} @@ -79,7 +79,7 @@ func testValidationWithNTXes(t *testing.T, nBlocks int) { txsfltr := txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) for i := 0; i < nBlocks; i++ { - assert.True(t, txsfltr.IsSetTo(i, peer.TxValidationCode_VALID)) + require.True(t, txsfltr.IsSetTo(i, peer.TxValidationCode_VALID)) } } @@ -87,24 +87,24 @@ func TestDetectTXIdDuplicates(t *testing.T) { txids := []string{"", "1", "2", "3", "", "2", ""} txsfltr := txflags.New(len(txids)) markTXIdDuplicates(txids, txsfltr) - assert.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(2, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(3, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(4, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(5, peer.TxValidationCode_DUPLICATE_TXID)) - assert.True(t, txsfltr.IsSetTo(6, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(2, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(3, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(4, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(5, peer.TxValidationCode_DUPLICATE_TXID)) + require.True(t, txsfltr.IsSetTo(6, peer.TxValidationCode_NOT_VALIDATED)) txids = []string{"", "1", "2", "3", "", "21", ""} txsfltr = txflags.New(len(txids)) markTXIdDuplicates(txids, txsfltr) - assert.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(2, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(3, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(4, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(5, peer.TxValidationCode_NOT_VALIDATED)) - assert.True(t, txsfltr.IsSetTo(6, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(2, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(3, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(4, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(5, peer.TxValidationCode_NOT_VALIDATED)) + require.True(t, txsfltr.IsSetTo(6, peer.TxValidationCode_NOT_VALIDATED)) } func TestBlockValidationDuplicateTXId(t *testing.T) { @@ -121,7 +121,7 @@ func TestBlockValidationDuplicateTXId(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockDispatcher := &mockDispatcher{} mockCapabilities := &tmocks.ApplicationCapabilities{} @@ -139,7 +139,7 @@ func TestBlockValidationDuplicateTXId(t *testing.T) { envs := []*common.Envelope{} env, _, err := testutil.ConstructTransaction(t, pubSimulationResBytes, "", true) - assert.NoError(t, err) + require.NoError(t, err) envs = append(envs, env) envs = append(envs, env) block := testutil.NewBlock(envs, 1, []byte("Water, water everywhere and all the boards did shrink")) @@ -148,8 +148,8 @@ func TestBlockValidationDuplicateTXId(t *testing.T) { txsfltr := txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) - assert.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_VALID)) - assert.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_DUPLICATE_TXID)) + require.True(t, txsfltr.IsSetTo(0, peer.TxValidationCode_VALID)) + require.True(t, txsfltr.IsSetTo(1, peer.TxValidationCode_DUPLICATE_TXID)) } func TestBlockValidation(t *testing.T) { @@ -171,7 +171,7 @@ func TestVeryLargeParallelBlockValidation(t *testing.T) { func TestTxValidationFailure_InvalidTxid(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockLedger := &mocks.LedgerResources{} mockLedger.On("GetTransactionByID", mock.Anything).Return(nil, ledger2.NotFoundInIndexErr("Water, water, everywhere, nor any drop to drink")) @@ -186,9 +186,9 @@ func TestTxValidationFailure_InvalidTxid(t *testing.T) { } mockSigner, err := mspmgmt.GetLocalMSP(cryptoProvider).GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) mockSignerSerialized, err := mockSigner.Serialize() - assert.NoError(t, err) + require.NoError(t, err) // Create simple endorsement transaction payload := &common.Payload{ @@ -209,10 +209,10 @@ func TestTxValidationFailure_InvalidTxid(t *testing.T) { payloadBytes, err := proto.Marshal(payload) // Check marshaling didn't fail - assert.NoError(t, err) + require.NoError(t, err) sig, err := mockSigner.Sign(payloadBytes) - assert.NoError(t, err) + require.NoError(t, err) // Envelope the payload envelope := &common.Envelope{ @@ -223,7 +223,7 @@ func TestTxValidationFailure_InvalidTxid(t *testing.T) { envelopeBytes, err := proto.Marshal(envelope) // Check marshaling didn't fail - assert.NoError(t, err) + require.NoError(t, err) block := &common.Block{ Data: &common.BlockData{ @@ -247,8 +247,8 @@ func TestTxValidationFailure_InvalidTxid(t *testing.T) { tValidator.Validate(block) txsfltr := txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) - assert.True(t, txsfltr.IsInvalid(0)) + require.True(t, txsfltr.IsInvalid(0)) // We expect the tx to be invalid because of a bad txid - assert.True(t, txsfltr.Flag(0) == peer.TxValidationCode_BAD_PROPOSAL_TXID) + require.True(t, txsfltr.Flag(0) == peer.TxValidationCode_BAD_PROPOSAL_TXID) } diff --git a/core/committer/txvalidator/v20/validator_test.go b/core/committer/txvalidator/v20/validator_test.go index 9c54cf83da5..e0997bb836a 100644 --- a/core/committer/txvalidator/v20/validator_test.go +++ b/core/committer/txvalidator/v20/validator_test.go @@ -43,8 +43,8 @@ import ( "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func signedByAnyMember(ids []string) []byte { @@ -68,9 +68,9 @@ func createRWset(t *testing.T, ccnames ...string) []byte { rwsetBuilder.AddToWriteSet(ccname, "key", []byte("value")) } rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) return rwsetBytes } @@ -90,17 +90,17 @@ const ccVersion = "1.0" func getEnvWithType(ccID string, event []byte, res []byte, pType common.HeaderType, t *testing.T) *common.Envelope { // get a toy proposal prop, err := getProposalWithType(ccID, pType) - assert.NoError(t, err) + require.NoError(t, err) response := &peer.Response{Status: 200} // endorse it to get a proposal response presp, err := protoutil.CreateProposalResponse(prop.Header, prop.Payload, response, res, event, &peer.ChaincodeID{Name: ccID, Version: ccVersion}, signer) - assert.NoError(t, err) + require.NoError(t, err) // assemble a transaction from that proposal and endorsement tx, err := protoutil.CreateSignedTx(prop, signer, presp) - assert.NoError(t, err) + require.NoError(t, err) return tx } @@ -121,32 +121,32 @@ func getEnvWithSigner(ccID string, event []byte, res []byte, sig msp.SigningIden } sID, err := sig.Serialize() - assert.NoError(t, err) + require.NoError(t, err) prop, _, err := protoutil.CreateProposalFromCIS(pType, "foochain", cis, sID) - assert.NoError(t, err) + require.NoError(t, err) response := &peer.Response{Status: 200} // endorse it to get a proposal response presp, err := protoutil.CreateProposalResponse(prop.Header, prop.Payload, response, res, event, &peer.ChaincodeID{Name: ccID, Version: ccVersion}, sig) - assert.NoError(t, err) + require.NoError(t, err) // assemble a transaction from that proposal and endorsement tx, err := protoutil.CreateSignedTx(prop, sig, presp) - assert.NoError(t, err) + require.NoError(t, err) return tx } func assertInvalid(block *common.Block, t *testing.T, code peer.TxValidationCode) { txsFilter := txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) - assert.True(t, txsFilter.IsInvalid(0)) - assert.True(t, txsFilter.IsSetTo(0, code)) + require.True(t, txsFilter.IsInvalid(0)) + require.True(t, txsFilter.IsSetTo(0, code)) } func assertValid(block *common.Block, t *testing.T) { txsFilter := txflags.ValidationFlags(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) - assert.False(t, txsFilter.IsInvalid(0)) + require.False(t, txsFilter.IsInvalid(0)) } func setupValidator() (*txvalidatorv20.TxValidator, *txvalidatormocks.QueryExecutor, *supportmocks.Identity, *txvalidatormocks.CollectionResources) { @@ -204,7 +204,7 @@ func TestInvokeBadRWSet(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 1}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_BAD_RWSET) } @@ -224,7 +224,7 @@ func TestInvokeNoPolicy(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_CHAINCODE) } @@ -245,7 +245,7 @@ func TestInvokeOK(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) } @@ -295,7 +295,7 @@ func TestInvokeNOKDuplicateNs(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ILLEGAL_WRITESET) } @@ -317,7 +317,7 @@ func TestInvokeNoRWSet(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -552,9 +552,9 @@ func TestParallelValidation(t *testing.T) { sig = sigID0 } rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx := getEnvWithSigner(ccID, nil, rwsetBytes, sig, t) blockData = append(blockData, protoutil.MarshalOrPanic(tx)) } @@ -564,7 +564,7 @@ func TestParallelValidation(t *testing.T) { // validate the block err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) // Block metadata array position to store serialized bit array filter of invalid transactions txsFilter := txflags.ValidationFlags(b.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) @@ -578,9 +578,9 @@ func TestParallelValidation(t *testing.T) { case 6: fallthrough case 9: - assert.True(t, txsFilter.IsInvalid(txNum)) + require.True(t, txsFilter.IsInvalid(txNum)) default: - assert.False(t, txsFilter.IsInvalid(txNum)) + require.False(t, txsFilter.IsInvalid(txNum)) } } } @@ -636,7 +636,7 @@ func testCCEventMismatchedName(t *testing.T, v txvalidator.Validator, ccID strin b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) // TODO, convert test so it can check the error text for INVALID_OTHER_REASON + require.NoError(t, err) // TODO, convert test so it can check the error text for INVALID_OTHER_REASON assertInvalid(b, t, peer.TxValidationCode_INVALID_OTHER_REASON) } @@ -645,7 +645,7 @@ func testCCEventBadBytes(t *testing.T, v txvalidator.Validator, ccID string) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) // TODO, convert test so it can check the error text for INVALID_OTHER_REASON + require.NoError(t, err) // TODO, convert test so it can check the error text for INVALID_OTHER_REASON assertInvalid(b, t, peer.TxValidationCode_INVALID_OTHER_REASON) } @@ -654,7 +654,7 @@ func testCCEventGoodPath(t *testing.T, v txvalidator.Validator, ccID string) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) } @@ -677,15 +677,15 @@ func TestInvokeOKPvtDataOnly(t *testing.T) { rwsetBuilder := rwsetutil.NewRWSetBuilder() rwsetBuilder.AddToPvtAndHashedWriteSet(ccID, "mycollection", "somekey", nil) rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx := getEnv(ccID, nil, rwsetBytes, t) b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err = v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -706,15 +706,15 @@ func TestInvokeOKMetaUpdateOnly(t *testing.T) { rwsetBuilder := rwsetutil.NewRWSetBuilder() rwsetBuilder.AddToMetadataWriteSet(ccID, "somekey", map[string][]byte{}) rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx := getEnv(ccID, nil, rwsetBytes, t) b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err = v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -737,15 +737,15 @@ func TestInvokeOKPvtMetaUpdateOnly(t *testing.T) { rwsetBuilder := rwsetutil.NewRWSetBuilder() rwsetBuilder.AddToHashedMetadataWriteSet(ccID, "mycollection", "somekey", map[string][]byte{}) rwset, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) rwsetBytes, err := rwset.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx := getEnv(ccID, nil, rwsetBytes, t) b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err = v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -766,7 +766,7 @@ func TestInvokeNOKWritesToLSCC(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 2}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_CHAINCODE) } @@ -790,7 +790,7 @@ func TestInvokeNOKWritesToESCC(t *testing.T) { } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_CHAINCODE) } @@ -815,7 +815,7 @@ func TestInvokeNOKWritesToNotExt(t *testing.T) { } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_CHAINCODE) } @@ -833,7 +833,7 @@ func TestInvokeNOKInvokesNotExt(t *testing.T) { } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_CHAINCODE) } @@ -849,7 +849,7 @@ func TestInvokeNOKInvokesEmptyCCName(t *testing.T) { } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_CHAINCODE) } @@ -865,7 +865,7 @@ func TestInvokeNOKBogusActions(t *testing.T) { } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_BAD_RWSET) } @@ -882,7 +882,7 @@ func TestInvokeNOKCCDoesntExist(t *testing.T) { } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_CHAINCODE) } @@ -905,7 +905,7 @@ func TestInvokeNOKVSCCUnspecified(t *testing.T) { } err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_INVALID_CHAINCODE) } @@ -915,7 +915,7 @@ func TestInvokeNoBlock(t *testing.T) { Data: &common.BlockData{Data: [][]byte{}}, Header: &common.BlockHeader{}, }) - assert.NoError(t, err) + require.NoError(t, err) } func TestValidateTxWithStateBasedEndorsement(t *testing.T) { @@ -935,7 +935,7 @@ func TestValidateTxWithStateBasedEndorsement(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(tx)}}, Header: &common.BlockHeader{Number: 3}} err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -960,7 +960,7 @@ func TestDynamicCapabilitiesAndMSP(t *testing.T) { // Perform a validation of a block err := v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) // Record the number of times the capabilities and the MSP Manager were invoked capabilityInvokeCount := v.ChannelResources.(*mocktxvalidator.Support).CapabilitiesInvokeCount() @@ -968,15 +968,15 @@ func TestDynamicCapabilitiesAndMSP(t *testing.T) { // Perform another validation pass, and ensure it is valid err = v.Validate(b) - assert.NoError(t, err) + require.NoError(t, err) assertValid(b, t) // Ensure that the capabilities were retrieved from the support twice, // which proves that the capabilities are dynamically retrieved from the support each time - assert.Equal(t, 2*capabilityInvokeCount, v.ChannelResources.(*mocktxvalidator.Support).CapabilitiesInvokeCount()) + require.Equal(t, 2*capabilityInvokeCount, v.ChannelResources.(*mocktxvalidator.Support).CapabilitiesInvokeCount()) // Ensure that the MSP Manager was retrieved from the support twice, // which proves that the MSP Manager is dynamically retrieved from the support each time - assert.Equal(t, 2*mspManagerInvokeCount, v.ChannelResources.(*mocktxvalidator.Support).MSPManagerInvokeCount()) + require.Equal(t, 2*mspManagerInvokeCount, v.ChannelResources.(*mocktxvalidator.Support).MSPManagerInvokeCount()) } // TestLedgerIsNoAvailable simulates and provides a test for following scenario, @@ -1001,7 +1001,7 @@ func TestLedgerIsNotAvailable(t *testing.T) { err := v.Validate(b) - assertion := assert.New(t) + assertion := require.New(t) // We suppose to get the error which indicates we cannot commit the block assertion.Error(err) // The error exptected to be of type VSCCInfoLookupFailureError @@ -1026,7 +1026,7 @@ func TestLedgerIsNotAvailableForCheckingTxidDuplicate(t *testing.T) { err := v.Validate(b) - assertion := assert.New(t) + assertion := require.New(t) // We expect a validation error because the ledger wasn't ready to tell us whether there was a tx with that ID or not assertion.Error(err) } @@ -1049,7 +1049,7 @@ func TestDuplicateTxId(t *testing.T) { err := v.Validate(b) - assertion := assert.New(t) + assertion := require.New(t) // We expect no validation error because we simply mark the tx as invalid assertion.NoError(err) @@ -1087,7 +1087,7 @@ func TestValidationInvalidEndorsing(t *testing.T) { mockCpmg.On("Manager", mock.Anything).Return(&txvalidatormocks.PolicyManager{}) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) v := txvalidatorv20.NewTxValidator( "", @@ -1122,7 +1122,7 @@ func TestValidationInvalidEndorsing(t *testing.T) { // Keep default callback err = v.Validate(b) // Restore default callback - assert.NoError(t, err) + require.NoError(t, err) assertInvalid(b, t, peer.TxValidationCode_ENDORSEMENT_POLICY_FAILURE) } @@ -1162,7 +1162,7 @@ func TestValidationPluginExecutionError(t *testing.T) { mockCpmg.On("Manager", mock.Anything).Return(&txvalidatormocks.PolicyManager{}) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) v := txvalidatorv20.NewTxValidator( "", semaphore.New(10), @@ -1183,7 +1183,7 @@ func TestValidationPluginExecutionError(t *testing.T) { err = v.Validate(b) executionErr := err.(*commonerrors.VSCCExecutionFailureError) - assert.Contains(t, executionErr.Error(), "I/O error") + require.Contains(t, executionErr.Error(), "I/O error") } func TestValidationPluginNotFound(t *testing.T) { @@ -1215,7 +1215,7 @@ func TestValidationPluginNotFound(t *testing.T) { mockCpmg.On("Manager", mock.Anything).Return(&txvalidatormocks.PolicyManager{}) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) v := txvalidatorv20.NewTxValidator( "", semaphore.New(10), @@ -1236,7 +1236,7 @@ func TestValidationPluginNotFound(t *testing.T) { err = v.Validate(b) executionErr := err.(*commonerrors.VSCCExecutionFailureError) - assert.Contains(t, executionErr.Error(), "plugin with name vscc wasn't found") + require.Contains(t, executionErr.Error(), "plugin with name vscc wasn't found") } var signer msp.SigningIdentity diff --git a/core/committer/txvalidator/v20/valinforetriever/shim_test.go b/core/committer/txvalidator/v20/valinforetriever/shim_test.go index 0ef07c16703..1c60e130192 100644 --- a/core/committer/txvalidator/v20/valinforetriever/shim_test.go +++ b/core/committer/txvalidator/v20/valinforetriever/shim_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/core/committer/txvalidator/v20/valinforetriever" "github.com/hyperledger/fabric/core/committer/txvalidator/v20/valinforetriever/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestValidationInfoRetrieverFromNew(t *testing.T) { @@ -36,31 +36,31 @@ func TestValidationInfoRetrieverFromNew(t *testing.T) { // successfully retrieve data from new source newResources.On("ValidationInfo", "channel", cc, nil).Return(newPlugin, newArgs, nil, nil).Once() plugin, args, unexpectedErr, validationErr := shim.ValidationInfo("channel", "cc", nil) - assert.NoError(t, unexpectedErr) - assert.NoError(t, validationErr) - assert.Equal(t, "new", plugin) - assert.Equal(t, []byte("new"), args) + require.NoError(t, unexpectedErr) + require.NoError(t, validationErr) + require.Equal(t, "new", plugin) + require.Equal(t, []byte("new"), args) legacyResources.AssertNotCalled(t, "ValidationInfo") // get validation error from new source newResources.On("ValidationInfo", "channel", cc, nil).Return("", nil, nil, verr).Once() plugin, args, unexpectedErr, validationErr = shim.ValidationInfo("channel", "cc", nil) - assert.NoError(t, unexpectedErr) - assert.Error(t, validationErr) - assert.Contains(t, validationErr.Error(), "validation error") - assert.Equal(t, "", plugin) - assert.Equal(t, []byte(nil), args) + require.NoError(t, unexpectedErr) + require.Error(t, validationErr) + require.Contains(t, validationErr.Error(), "validation error") + require.Equal(t, "", plugin) + require.Equal(t, []byte(nil), args) legacyResources.AssertNotCalled(t, "ValidationInfo") // get unexpected error from new source newResources.On("ValidationInfo", "channel", cc, nil).Return("", nil, uerr, verr).Once() plugin, args, unexpectedErr, validationErr = shim.ValidationInfo("channel", "cc", nil) - assert.Error(t, unexpectedErr) - assert.Error(t, validationErr) - assert.Contains(t, unexpectedErr.Error(), "unexpected error") - assert.Contains(t, validationErr.Error(), "validation error") - assert.Equal(t, "", plugin) - assert.Equal(t, []byte(nil), args) + require.Error(t, unexpectedErr) + require.Error(t, validationErr) + require.Contains(t, unexpectedErr.Error(), "unexpected error") + require.Contains(t, validationErr.Error(), "validation error") + require.Equal(t, "", plugin) + require.Equal(t, []byte(nil), args) legacyResources.AssertNotCalled(t, "ValidationInfo") } @@ -84,28 +84,28 @@ func TestValidationInfoRetrieverFromLegacy(t *testing.T) { // successfully retrieve data from legacy source legacyResources.On("ValidationInfo", "channel", cc, nil).Return(legacyPlugin, legacyArgs, nil, nil).Once() plugin, args, unexpectedErr, validationErr := shim.ValidationInfo("channel", "cc", nil) - assert.NoError(t, unexpectedErr) - assert.NoError(t, validationErr) - assert.Equal(t, "legacy", plugin) - assert.Equal(t, []byte("legacy"), args) + require.NoError(t, unexpectedErr) + require.NoError(t, validationErr) + require.Equal(t, "legacy", plugin) + require.Equal(t, []byte("legacy"), args) // get validation error from legacy source legacyResources.On("ValidationInfo", "channel", cc, nil).Return("", nil, nil, verr).Once() plugin, args, unexpectedErr, validationErr = shim.ValidationInfo("channel", "cc", nil) - assert.NoError(t, unexpectedErr) - assert.Error(t, validationErr) - assert.Contains(t, validationErr.Error(), "validation error") - assert.Equal(t, "", plugin) - assert.Equal(t, []byte(nil), args) + require.NoError(t, unexpectedErr) + require.Error(t, validationErr) + require.Contains(t, validationErr.Error(), "validation error") + require.Equal(t, "", plugin) + require.Equal(t, []byte(nil), args) // get unexpected error from legacy source legacyResources.On("ValidationInfo", "channel", cc, nil).Return("", nil, uerr, nil).Once() plugin, args, unexpectedErr, validationErr = shim.ValidationInfo("channel", "cc", nil) - assert.Error(t, unexpectedErr) - assert.NoError(t, validationErr) - assert.Contains(t, unexpectedErr.Error(), "unexpected error") - assert.Equal(t, "", plugin) - assert.Equal(t, []byte(nil), args) + require.Error(t, unexpectedErr) + require.NoError(t, validationErr) + require.Contains(t, unexpectedErr.Error(), "unexpected error") + require.Equal(t, "", plugin) + require.Equal(t, []byte(nil), args) } func TestValidationInfoRetrieverFromLegacyWithConversion(t *testing.T) { @@ -125,26 +125,26 @@ func TestValidationInfoRetrieverFromLegacyWithConversion(t *testing.T) { // no conversion if the plugin is not vscc legacyResources.On("ValidationInfo", "channel", cc, nil).Return("not vscc", goodSPE, nil, nil).Once() plugin, args, unexpectedErr, validationErr := shim.ValidationInfo("channel", "cc", nil) - assert.NoError(t, unexpectedErr) - assert.NoError(t, validationErr) - assert.Equal(t, "not vscc", plugin) - assert.Equal(t, protoutil.MarshalOrPanic(&common.SignaturePolicyEnvelope{Version: 1}), args) + require.NoError(t, unexpectedErr) + require.NoError(t, validationErr) + require.Equal(t, "not vscc", plugin) + require.Equal(t, protoutil.MarshalOrPanic(&common.SignaturePolicyEnvelope{Version: 1}), args) // no conversion if the policy is not a signature policy envelope legacyResources.On("ValidationInfo", "channel", cc, nil).Return("vscc", []byte("not a signature policy envelope"), nil, nil).Once() plugin, args, unexpectedErr, validationErr = shim.ValidationInfo("channel", "cc", nil) - assert.NoError(t, unexpectedErr) - assert.NoError(t, validationErr) - assert.Equal(t, "vscc", plugin) - assert.Equal(t, []byte("not a signature policy envelope"), args) + require.NoError(t, unexpectedErr) + require.NoError(t, validationErr) + require.Equal(t, "vscc", plugin) + require.Equal(t, []byte("not a signature policy envelope"), args) // conversion if the policy is a signature policy envelope legacyResources.On("ValidationInfo", "channel", cc, nil).Return("vscc", goodSPE, nil, nil).Once() plugin, args, unexpectedErr, validationErr = shim.ValidationInfo("channel", "cc", nil) - assert.NoError(t, unexpectedErr) - assert.NoError(t, validationErr) - assert.Equal(t, "vscc", plugin) - assert.Equal(t, protoutil.MarshalOrPanic(&peer.ApplicationPolicy{ + require.NoError(t, unexpectedErr) + require.NoError(t, validationErr) + require.Equal(t, "vscc", plugin) + require.Equal(t, protoutil.MarshalOrPanic(&peer.ApplicationPolicy{ Type: &peer.ApplicationPolicy_SignaturePolicy{ SignaturePolicy: &common.SignaturePolicyEnvelope{Version: 1}, }, diff --git a/core/common/ccprovider/ccinfocache_test.go b/core/common/ccprovider/ccinfocache_test.go index 939fccffcaf..909b01c8361 100644 --- a/core/common/ccprovider/ccinfocache_test.go +++ b/core/common/ccprovider/ccinfocache_test.go @@ -28,7 +28,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/bccsp/sw" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func getDepSpec(name string, path string, version string, initArgs [][]byte) (*peer.ChaincodeDeploymentSpec, error) { @@ -99,45 +99,45 @@ func TestCCInfoCache(t *testing.T) { // the cc data is not yet in the cache _, err := cccache.GetChaincodeData("foo:1.0") - assert.Error(t, err) + require.Error(t, err) // put it in the file system pack, err := buildPackage("foo", "mychaincode", "1.0", [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}) - assert.NoError(t, err) + require.NoError(t, err) ccinfoFs.CCMap["foo:1.0"] = pack // expect it to be in the cache now cd1, err := cccache.GetChaincodeData("foo:1.0") - assert.NoError(t, err) + require.NoError(t, err) // it should still be in the cache cd2, err := cccache.GetChaincodeData("foo:1.0") - assert.NoError(t, err) + require.NoError(t, err) // they are not null - assert.NotNil(t, cd1) - assert.NotNil(t, cd2) + require.NotNil(t, cd1) + require.NotNil(t, cd2) // put it in the file system pack, err = buildPackage("foo", "mychaincode", "2.0", [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}) - assert.NoError(t, err) + require.NoError(t, err) ccinfoFs.CCMap["foo:2.0"] = pack // create a dep spec to put _, err = getDepSpec("foo", "mychaincode", "2.0", [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}) - assert.NoError(t, err) + require.NoError(t, err) // expect it to be cached cd1, err = cccache.GetChaincodeData("foo:2.0") - assert.NoError(t, err) + require.NoError(t, err) // it should still be in the cache cd2, err = cccache.GetChaincodeData("foo:2.0") - assert.NoError(t, err) + require.NoError(t, err) // they are not null - assert.NotNil(t, cd1) - assert.NotNil(t, cd2) + require.NotNil(t, cd1) + require.NotNil(t, cd2) } func TestPutChaincode(t *testing.T) { @@ -151,13 +151,13 @@ func TestPutChaincode(t *testing.T) { // Error case 1: ccname is empty // create a dep spec to put _, err := getDepSpec(ccname, ccpath, ccver, [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}) - assert.NoError(t, err) + require.NoError(t, err) // Error case 2: ccver is empty ccname = "foo" ccver = "" _, err = getDepSpec(ccname, ccpath, ccver, [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}) - assert.NoError(t, err) + require.NoError(t, err) // Error case 3: ccfs.PutChainCode returns an error ccinfoFs = &mockCCInfoFSStorageMgrImpl{CCMap: map[string]CCPackage{}} @@ -166,7 +166,7 @@ func TestPutChaincode(t *testing.T) { ccname = "foo" ccver = "1.0" _, err = getDepSpec(ccname, ccpath, ccver, [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}) - assert.NoError(t, err) + require.NoError(t, err) } // here we test the peer's built-in cache after enabling it @@ -177,28 +177,28 @@ func TestCCInfoFSPeerInstance(t *testing.T) { // the cc data is not yet in the cache _, err := GetChaincodeFromFS("bar:1.0") - assert.Error(t, err) + require.Error(t, err) // create a dep spec to put ds, err := getDepSpec(ccname, ccpath, ccver, [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}) - assert.NoError(t, err) + require.NoError(t, err) // put it cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) ccinfoFSImpl := &CCInfoFSImpl{GetHasher: cryptoProvider} _, err = ccinfoFSImpl.PutChaincode(ds) - assert.NoError(t, err) + require.NoError(t, err) // Get all installed chaincodes, it should not return 0 chaincodes resp, err := GetInstalledChaincodes() - assert.NoError(t, err) - assert.NotNil(t, resp) - assert.NotZero(t, len(resp.Chaincodes), "GetInstalledChaincodes should not have returned 0 chaincodes") + require.NoError(t, err) + require.NotNil(t, resp) + require.NotZero(t, len(resp.Chaincodes), "GetInstalledChaincodes should not have returned 0 chaincodes") //get chaincode data _, err = GetChaincodeData("bar:1.0") - assert.NoError(t, err) + require.NoError(t, err) } func TestGetInstalledChaincodesErrorPaths(t *testing.T) { @@ -209,28 +209,28 @@ func TestGetInstalledChaincodesErrorPaths(t *testing.T) { // Create a temp dir and remove it at the end dir, err := ioutil.TempDir(os.TempDir(), "chaincodes") - assert.NoError(t, err) + require.NoError(t, err) defer os.RemoveAll(dir) // Set the above created directory as the chaincode install path SetChaincodesPath(dir) err = ioutil.WriteFile(filepath.Join(dir, "idontexist.1.0"), []byte("test"), 0777) - assert.NoError(t, err) + require.NoError(t, err) resp, err := GetInstalledChaincodes() - assert.NoError(t, err) - assert.Equal(t, 0, len(resp.Chaincodes), + require.NoError(t, err) + require.Equal(t, 0, len(resp.Chaincodes), "Expected 0 chaincodes but GetInstalledChaincodes returned %s chaincodes", len(resp.Chaincodes)) } func TestChaincodePackageExists(t *testing.T) { _, err := ChaincodePackageExists("foo1", "1.0") - assert.Error(t, err) + require.Error(t, err) } func TestSetChaincodesPath(t *testing.T) { dir, err := ioutil.TempDir(os.TempDir(), "setchaincodes") if err != nil { - assert.Fail(t, err.Error(), "Unable to create temp dir") + require.Fail(t, err.Error(), "Unable to create temp dir") } defer os.RemoveAll(dir) t.Logf("created temp dir %s", dir) @@ -241,8 +241,8 @@ func TestSetChaincodesPath(t *testing.T) { defer SetChaincodesPath(cip) f, err := ioutil.TempFile(dir, "chaincodes") - assert.NoError(t, err) - assert.Panics(t, func() { + require.NoError(t, err) + require.Panics(t, func() { SetChaincodesPath(f.Name()) }, "SetChaincodesPath should have paniced if a file is passed to it") diff --git a/core/common/ccprovider/ccprovider_test.go b/core/common/ccprovider/ccprovider_test.go index a62f24f4fcd..dd9dd0fb160 100644 --- a/core/common/ccprovider/ccprovider_test.go +++ b/core/common/ccprovider/ccprovider_test.go @@ -21,13 +21,13 @@ import ( "github.com/hyperledger/fabric/common/chaincode" "github.com/hyperledger/fabric/core/common/ccprovider" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInstalledCCs(t *testing.T) { tmpDir, hashes := setupDirectoryStructure(t) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) defer func() { os.RemoveAll(tmpDir) @@ -101,11 +101,11 @@ func TestInstalledCCs(t *testing.T) { t.Run(test.name, func(t *testing.T) { c := &ccprovider.CCInfoFSImpl{GetHasher: cryptoProvider} res, err := c.ListInstalledChaincodes(path.Join(tmpDir, test.directory), test.ls, test.extractCCFromPath) - assert.Equal(t, test.expected, res) + require.Equal(t, test.expected, res) if test.errorContains == "" { - assert.NoError(t, err) + require.NoError(t, err) } else { - assert.Contains(t, err.Error(), test.errorContains) + require.Contains(t, err.Error(), test.errorContains) } }) } @@ -113,20 +113,20 @@ func TestInstalledCCs(t *testing.T) { func TestSetGetChaincodeInstallPath(t *testing.T) { tempDir, err := ioutil.TempDir("", "ccprovider") - assert.NoError(t, err) + require.NoError(t, err) defer os.RemoveAll(tempDir) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) c := &ccprovider.CCInfoFSImpl{GetHasher: cryptoProvider} installPath := c.GetChaincodeInstallPath() defer ccprovider.SetChaincodesPath(installPath) path := filepath.Join(tempDir, "blahblah") ccprovider.SetChaincodesPath(path) - assert.DirExistsf(t, path, "expect %s to be created") + require.DirExistsf(t, path, "expect %s to be created") - assert.Equal(t, path, c.GetChaincodeInstallPath()) + require.Equal(t, path, c.GetChaincodeInstallPath()) } func setupDirectoryStructure(t *testing.T) (string, map[string][]byte) { @@ -137,20 +137,20 @@ func setupDirectoryStructure(t *testing.T) (string, map[string][]byte) { } hashes := map[string][]byte{} tmp, err := ioutil.TempDir("", "test-installed-cc") - assert.NoError(t, err) + require.NoError(t, err) dir := path.Join(tmp, "empty") - assert.NoError(t, os.Mkdir(dir, 0755)) + require.NoError(t, os.Mkdir(dir, 0755)) dir = path.Join(tmp, "nonempty") - assert.NoError(t, os.Mkdir(dir, 0755)) + require.NoError(t, os.Mkdir(dir, 0755)) dir = path.Join(tmp, "nopermission") - assert.NoError(t, os.Mkdir(dir, 0755)) + require.NoError(t, os.Mkdir(dir, 0755)) dir = path.Join(tmp, "nopermissionforfiles") - assert.NoError(t, os.Mkdir(dir, 0755)) + require.NoError(t, os.Mkdir(dir, 0755)) noPermissionFile := path.Join(tmp, "nopermissionforfiles", "nopermission.1") _, err = os.Create(noPermissionFile) - assert.NoError(t, err) + require.NoError(t, err) dir = path.Join(tmp, "nonempty") - assert.NoError(t, os.Mkdir(path.Join(tmp, "nonempty", "directory"), 0755)) + require.NoError(t, os.Mkdir(path.Join(tmp, "nonempty", "directory"), 0755)) for _, f := range files { var name, ver string parts := strings.SplitN(f, ".", 2) @@ -159,7 +159,7 @@ func setupDirectoryStructure(t *testing.T) (string, map[string][]byte) { ver = parts[1] } file, err := os.Create(path.Join(dir, f)) - assert.NoError(t, err) + require.NoError(t, err) cds := &peer.ChaincodeDeploymentSpec{ ChaincodeSpec: &peer.ChaincodeSpec{ ChaincodeId: &peer.ChaincodeID{Name: name, Version: ver}, diff --git a/core/common/ccprovider/cdspackage_test.go b/core/common/ccprovider/cdspackage_test.go index 68ae2741137..a56ea33d60c 100644 --- a/core/common/ccprovider/cdspackage_test.go +++ b/core/common/ccprovider/cdspackage_test.go @@ -15,7 +15,7 @@ import ( pb "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func setupccdir() string { @@ -118,7 +118,7 @@ func TestCDSGetCCPackage(t *testing.T) { b := protoutil.MarshalOrPanic(cds) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) ccpack, err := GetCCPackage(b, cryptoProvider) if err != nil { @@ -177,42 +177,42 @@ func TestCDSSwitchChaincodes(t *testing.T) { func TestPutChaincodeToFSErrorPaths(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) ccpack := &CDSPackage{GetHasher: cryptoProvider} err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "uninitialized package", "Unexpected error returned") + require.Error(t, err) + require.Contains(t, err.Error(), "uninitialized package", "Unexpected error returned") ccpack.buf = []byte("hello") err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "id cannot be nil if buf is not nil", "Unexpected error returned") + require.Error(t, err) + require.Contains(t, err.Error(), "id cannot be nil if buf is not nil", "Unexpected error returned") ccpack.id = []byte("cc123") err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "depspec cannot be nil if buf is not nil", "Unexpected error returned") + require.Error(t, err) + require.Contains(t, err.Error(), "depspec cannot be nil if buf is not nil", "Unexpected error returned") ccpack.depSpec = &pb.ChaincodeDeploymentSpec{ChaincodeSpec: &pb.ChaincodeSpec{Type: 1, ChaincodeId: &pb.ChaincodeID{Name: "testcc", Version: "0"}, Input: &pb.ChaincodeInput{Args: [][]byte{[]byte("")}}}, CodePackage: []byte("code")} err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "nil data", "Unexpected error returned") + require.Error(t, err) + require.Contains(t, err.Error(), "nil data", "Unexpected error returned") ccpack.data = &CDSData{} err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "nil data bytes", "Unexpected error returned") + require.Error(t, err) + require.Contains(t, err.Error(), "nil data bytes", "Unexpected error returned") } func TestValidateCCErrorPaths(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cpack := &CDSPackage{GetHasher: cryptoProvider} ccdata := &ChaincodeData{} err = cpack.ValidateCC(ccdata) - assert.Error(t, err) - assert.Contains(t, err.Error(), "uninitialized package", "Unexpected error returned") + require.Error(t, err) + require.Contains(t, err.Error(), "uninitialized package", "Unexpected error returned") cpack.depSpec = &pb.ChaincodeDeploymentSpec{ CodePackage: []byte("code"), @@ -223,8 +223,8 @@ func TestValidateCCErrorPaths(t *testing.T) { }, } err = cpack.ValidateCC(ccdata) - assert.Error(t, err) - assert.Contains(t, err.Error(), "nil data", "Unexpected error returned") + require.Error(t, err) + require.Contains(t, err.Error(), "nil data", "Unexpected error returned") // invalid encoded name cpack = &CDSPackage{GetHasher: cryptoProvider} @@ -237,8 +237,8 @@ func TestValidateCCErrorPaths(t *testing.T) { } cpack.data = &CDSData{} err = cpack.ValidateCC(ccdata) - assert.Error(t, err) - assert.Contains(t, err.Error(), `invalid chaincode name: "\x17"`) + require.Error(t, err) + require.Contains(t, err.Error(), `invalid chaincode name: "\x17"`) // mismatched names cpack = &CDSPackage{GetHasher: cryptoProvider} @@ -251,8 +251,8 @@ func TestValidateCCErrorPaths(t *testing.T) { } cpack.data = &CDSData{} err = cpack.ValidateCC(ccdata) - assert.Error(t, err) - assert.Contains(t, err.Error(), `invalid chaincode data name:"Tom" (name:"Jerry" version:"0" )`) + require.Error(t, err) + require.Contains(t, err.Error(), `invalid chaincode data name:"Tom" (name:"Jerry" version:"0" )`) // mismatched versions cpack = &CDSPackage{GetHasher: cryptoProvider} @@ -265,6 +265,6 @@ func TestValidateCCErrorPaths(t *testing.T) { } cpack.data = &CDSData{} err = cpack.ValidateCC(ccdata) - assert.Error(t, err) - assert.Contains(t, err.Error(), `invalid chaincode data name:"Tom" version:"1" (name:"Tom" version:"0" )`) + require.Error(t, err) + require.Contains(t, err.Error(), `invalid chaincode data name:"Tom" version:"1" (name:"Tom" version:"0" )`) } diff --git a/core/common/ccprovider/sigcdspackage_test.go b/core/common/ccprovider/sigcdspackage_test.go index eb2e14d57cb..19355f86b8f 100644 --- a/core/common/ccprovider/sigcdspackage_test.go +++ b/core/common/ccprovider/sigcdspackage_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/core/common/ccpackage" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func processSignedCDS(cds *pb.ChaincodeDeploymentSpec, policy *common.SignaturePolicyEnvelope, tofs bool) (*SignedCDSPackage, []byte, *ChaincodeData, error) { @@ -80,83 +80,83 @@ func TestPutSignedCDSErrorPaths(t *testing.T) { // remove the buffer ccpack.buf = nil err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "uninitialized package", "Unexpected error putting package on the FS") + require.Error(t, err) + require.Contains(t, err.Error(), "uninitialized package", "Unexpected error putting package on the FS") // put back the buffer ccpack.buf = b id := ccpack.id ccpack.id = nil // remove the id err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "id cannot be nil if buf is not nil", "Unexpected error putting package on the FS") + require.Error(t, err) + require.Contains(t, err.Error(), "id cannot be nil if buf is not nil", "Unexpected error putting package on the FS") - assert.Panics(t, func() { + require.Panics(t, func() { ccpack.GetId() }, "GetId should have paniced if chaincode package ID is nil") // put back the id ccpack.id = id id1 := ccpack.GetId() - assert.Equal(t, id, id1) + require.Equal(t, id, id1) savDepSpec := ccpack.sDepSpec ccpack.sDepSpec = nil // remove the signed chaincode deployment spec err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "depspec cannot be nil if buf is not nil", "Unexpected error putting package on the FS") - assert.Panics(t, func() { + require.Error(t, err) + require.Contains(t, err.Error(), "depspec cannot be nil if buf is not nil", "Unexpected error putting package on the FS") + require.Panics(t, func() { ccpack.GetInstantiationPolicy() }, "GetChaincodeData should have paniced if signed chaincode deployment spec is nil") - assert.Panics(t, func() { + require.Panics(t, func() { ccpack.GetDepSpecBytes() }, "GetDepSpecBytes should have paniced if signed chaincode deployment spec is nil") ccpack.sDepSpec = savDepSpec // put back dep spec sdepspec1 := ccpack.GetInstantiationPolicy() - assert.NotNil(t, sdepspec1) + require.NotNil(t, sdepspec1) depspecBytes := ccpack.GetDepSpecBytes() - assert.NotNil(t, depspecBytes) + require.NotNil(t, depspecBytes) // put back the signed chaincode deployment spec depSpec := ccpack.depSpec ccpack.depSpec = nil // remove the chaincode deployment spec - assert.Panics(t, func() { + require.Panics(t, func() { ccpack.GetDepSpec() }, "GetDepSec should have paniced if chaincode deployment spec is nil") - assert.Panics(t, func() { + require.Panics(t, func() { ccpack.GetChaincodeData() }, "GetChaincodeData should have paniced if chaincode deployment spec is nil") ccpack.depSpec = depSpec // put back the chaincode deployment spec depSpec1 := ccpack.GetDepSpec() - assert.NotNil(t, depSpec1) + require.NotNil(t, depSpec1) env := ccpack.env ccpack.env = nil // remove the envelope err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "env cannot be nil if buf and depspec are not nil", "Unexpected error putting package on the FS") + require.Error(t, err) + require.Contains(t, err.Error(), "env cannot be nil if buf and depspec are not nil", "Unexpected error putting package on the FS") ccpack.env = env // put back the envelope env1 := ccpack.GetPackageObject() - assert.Equal(t, env, env1) + require.Equal(t, env, env1) data := ccpack.data ccpack.data = nil // remove the data err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "nil data", "Unexpected error putting package on the FS") + require.Error(t, err) + require.Contains(t, err.Error(), "nil data", "Unexpected error putting package on the FS") ccpack.data = data // put back the data datab := ccpack.datab ccpack.datab = nil // remove the data bytes err = ccpack.PutChaincodeToFS() - assert.Error(t, err) - assert.Contains(t, err.Error(), "nil data bytes", "Unexpected error putting package on the FS") + require.Error(t, err) + require.Contains(t, err.Error(), "nil data bytes", "Unexpected error putting package on the FS") ccpack.datab = datab // put back the data bytes // remove the chaincode directory os.RemoveAll(ccdir) err = ccpack.PutChaincodeToFS() - assert.Error(t, err, "Expected error putting package on the FS") + require.Error(t, err, "Expected error putting package on the FS") } func TestGetCDSDataErrorPaths(t *testing.T) { @@ -173,27 +173,27 @@ func TestGetCDSDataErrorPaths(t *testing.T) { } // Error case 1: signed chaincode deployment spec passed to getCDSData is nil - assert.Panics(t, func() { + require.Panics(t, func() { _, _, _, err = ccpack.getCDSData(nil) }, "getCDSData should have paniced when called with nil signed chaincode deployment spec") // Error case 2: bad chaincode deployment spec scdp := &pb.SignedChaincodeDeploymentSpec{ChaincodeDeploymentSpec: []byte("bad spec")} _, _, _, err = ccpack.getCDSData(scdp) - assert.Error(t, err) + require.Error(t, err) // Error case 3: instantiation policy is nil instPolicy := ccpack.sDepSpec.InstantiationPolicy ccpack.sDepSpec.InstantiationPolicy = nil _, _, _, err = ccpack.getCDSData(ccpack.sDepSpec) - assert.Error(t, err) - assert.Contains(t, err.Error(), "instantiation policy cannot be nil for chaincode", "Unexpected error returned by getCDSData") + require.Error(t, err) + require.Contains(t, err.Error(), "instantiation policy cannot be nil for chaincode", "Unexpected error returned by getCDSData") ccpack.sDepSpec.InstantiationPolicy = instPolicy ccpack.sDepSpec.OwnerEndorsements = make([]*pb.Endorsement, 1) ccpack.sDepSpec.OwnerEndorsements[0] = &pb.Endorsement{} _, _, _, err = ccpack.getCDSData(ccpack.sDepSpec) - assert.NoError(t, err) + require.NoError(t, err) } func TestInitFromBufferErrorPaths(t *testing.T) { @@ -210,8 +210,8 @@ func TestInitFromBufferErrorPaths(t *testing.T) { } _, err = ccpack.InitFromBuffer([]byte("bad buffer")) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to unmarshal envelope from bytes", "Unexpected error returned by InitFromBuffer") + require.Error(t, err) + require.Contains(t, err.Error(), "failed to unmarshal envelope from bytes", "Unexpected error returned by InitFromBuffer") } func TestValidateSignedCCErrorPaths(t *testing.T) { @@ -230,34 +230,34 @@ func TestValidateSignedCCErrorPaths(t *testing.T) { //validate with invalid name cd := &ChaincodeData{Name: "invalname", Version: "0"} err = ccpack.ValidateCC(cd) - assert.Error(t, err) - assert.Contains(t, err.Error(), "invalid chaincode data", "Unexpected error validating package") + require.Error(t, err) + require.Contains(t, err.Error(), "invalid chaincode data", "Unexpected error validating package") savDepSpec := ccpack.sDepSpec ccpack.sDepSpec = nil err = ccpack.ValidateCC(cd) - assert.Error(t, err) - assert.Contains(t, err.Error(), "uninitialized package", "Unexpected error validating package") + require.Error(t, err) + require.Contains(t, err.Error(), "uninitialized package", "Unexpected error validating package") ccpack.sDepSpec = savDepSpec cdspec := ccpack.sDepSpec.ChaincodeDeploymentSpec ccpack.sDepSpec.ChaincodeDeploymentSpec = nil err = ccpack.ValidateCC(cd) - assert.Error(t, err) - assert.Contains(t, err.Error(), "signed chaincode deployment spec cannot be nil in a package", "Unexpected error validating package") + require.Error(t, err) + require.Contains(t, err.Error(), "signed chaincode deployment spec cannot be nil in a package", "Unexpected error validating package") ccpack.sDepSpec.ChaincodeDeploymentSpec = cdspec depspec := ccpack.depSpec ccpack.depSpec = nil err = ccpack.ValidateCC(cd) - assert.Error(t, err) - assert.Contains(t, err.Error(), "chaincode deployment spec cannot be nil in a package", "Unexpected error validating package") + require.Error(t, err) + require.Contains(t, err.Error(), "chaincode deployment spec cannot be nil in a package", "Unexpected error validating package") ccpack.depSpec = depspec cd = &ChaincodeData{Name: "\027", Version: "0"} err = ccpack.ValidateCC(cd) - assert.Error(t, err) - assert.Contains(t, err.Error(), `invalid chaincode name: "\x17"`) + require.Error(t, err) + require.Contains(t, err.Error(), `invalid chaincode name: "\x17"`) } func TestSigCDSGetCCPackage(t *testing.T) { @@ -272,7 +272,7 @@ func TestSigCDSGetCCPackage(t *testing.T) { b := protoutil.MarshalOrPanic(env) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) ccpack, err := GetCCPackage(b, cryptoProvider) if err != nil { @@ -309,7 +309,7 @@ func TestInvalidSigCDSGetCCPackage(t *testing.T) { b := protoutil.MarshalOrPanic(cds) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) ccpack, err := GetCCPackage(b, cryptoProvider) if err != nil { t.Fatalf("failed to get CCPackage %s", err) diff --git a/core/common/ccprovider/targzmetadataprovider_test.go b/core/common/ccprovider/targzmetadataprovider_test.go index daa56f0b739..bad8a080a2e 100644 --- a/core/common/ccprovider/targzmetadataprovider_test.go +++ b/core/common/ccprovider/targzmetadataprovider_test.go @@ -14,7 +14,7 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type tarEntry struct { @@ -70,20 +70,20 @@ func TestNoMetadata(t *testing.T) { entries := []tarEntry{{"path/to/a/file", []byte("somdata")}} cds := getCodePackage([]byte("cc code"), entries) metadata, err := MetadataAsTarEntries(cds) - assert.Nil(t, err) - assert.NotNil(t, metadata) + require.Nil(t, err) + require.NotNil(t, metadata) count, err := getNumEntries(metadata) - assert.Nil(t, err) - assert.Equal(t, count, 0) + require.Nil(t, err) + require.Equal(t, count, 0) } func TestMetadata(t *testing.T) { entries := []tarEntry{{"path/to/a/file", []byte("somdata")}, {ccPackageStatedbDir + "/m1", []byte("m1data")}, {ccPackageStatedbDir + "/m2", []byte("m2data")}} cds := getCodePackage([]byte("cc code"), entries) metadata, err := MetadataAsTarEntries(cds) - assert.Nil(t, err) - assert.NotNil(t, metadata) + require.Nil(t, err) + require.NotNil(t, metadata) count, err := getNumEntries(metadata) - assert.Nil(t, err) - assert.Equal(t, count, 2) + require.Nil(t, err) + require.Equal(t, count, 2) } diff --git a/core/common/privdata/collection_test.go b/core/common/privdata/collection_test.go index 0397117199d..67ca418c24d 100644 --- a/core/common/privdata/collection_test.go +++ b/core/common/privdata/collection_test.go @@ -9,20 +9,20 @@ package privdata import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestBuildCollectionKVSKey(t *testing.T) { chaincodeCollectionKey := BuildCollectionKVSKey("chaincodeKey") - assert.Equal(t, "chaincodeKey~collection", chaincodeCollectionKey, "collection keys should end in ~collection") + require.Equal(t, "chaincodeKey~collection", chaincodeCollectionKey, "collection keys should end in ~collection") } func TestIsCollectionConfigKey(t *testing.T) { isCollection := IsCollectionConfigKey("chaincodeKey") - assert.False(t, isCollection, "key without tilda is not a collection key and should have returned false") + require.False(t, isCollection, "key without tilda is not a collection key and should have returned false") isCollection = IsCollectionConfigKey("chaincodeKey~collection") - assert.True(t, isCollection, "key with tilda is a collection key and should have returned true") + require.True(t, isCollection, "key with tilda is a collection key and should have returned true") } diff --git a/core/common/privdata/membershipinfo_test.go b/core/common/privdata/membershipinfo_test.go index 6f6a3f57ffa..673d22bbe4a 100644 --- a/core/common/privdata/membershipinfo_test.go +++ b/core/common/privdata/membershipinfo_test.go @@ -13,7 +13,7 @@ import ( "github.com/hyperledger/fabric/common/policydsl" "github.com/hyperledger/fabric/msp" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestMembershipInfoProvider(t *testing.T) { @@ -32,35 +32,35 @@ func TestMembershipInfoProvider(t *testing.T) { // verify membership provider pass simple check returns true membershipProvider := NewMembershipInfoProvider(mspID, emptyPeerSelfSignedData, identityDeserializer) res, err := membershipProvider.AmMemberOf("test1", getAccessPolicy([]string{"peer0", "peer1"})) - assert.True(t, res) - assert.Nil(t, err) + require.True(t, res) + require.Nil(t, err) // verify membership provider fall back to default access policy evaluation returns false membershipProvider = NewMembershipInfoProvider(mspID, peerSelfSignedData, identityDeserializer) res, err = membershipProvider.AmMemberOf("test1", getAccessPolicy([]string{"peer2", "peer3"})) - assert.False(t, res) - assert.Nil(t, err) + require.False(t, res) + require.Nil(t, err) // verify membership provider returns false and nil when collection policy config is nil res, err = membershipProvider.AmMemberOf("test1", nil) - assert.False(t, res) - assert.Nil(t, err) + require.False(t, res) + require.Nil(t, err) // verify membership provider returns false and nil when collection policy config is invalid res, err = membershipProvider.AmMemberOf("test1", getBadAccessPolicy([]string{"signer0"}, 1)) - assert.False(t, res) - assert.Nil(t, err) + require.False(t, res) + require.Nil(t, err) // verify membership provider with empty mspID and fall back to default access policy evaluation returns true membershipProvider = NewMembershipInfoProvider("", peerSelfSignedData, identityDeserializer) res, err = membershipProvider.AmMemberOf("test1", getAccessPolicy([]string{"peer0", "peer1"})) - assert.True(t, res) - assert.Nil(t, err) + require.True(t, res) + require.Nil(t, err) // verify membership provider with empty mspID and fall back to default access policy evaluation returns false res, err = membershipProvider.AmMemberOf("test1", getAccessPolicy([]string{"peer2", "peer3"})) - assert.False(t, res) - assert.Nil(t, err) + require.False(t, res) + require.Nil(t, err) } func getAccessPolicy(signers []string) *peer.CollectionPolicyConfig { diff --git a/core/common/privdata/simplecollection_test.go b/core/common/privdata/simplecollection_test.go index 84abe0b14d3..e88c1370691 100644 --- a/core/common/privdata/simplecollection_test.go +++ b/core/common/privdata/simplecollection_test.go @@ -18,7 +18,7 @@ import ( "github.com/hyperledger/fabric/common/policydsl" "github.com/hyperledger/fabric/msp" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func createCollectionPolicyConfig(accessPolicy *cb.SignaturePolicyEnvelope) *pb.CollectionPolicyConfig { @@ -95,7 +95,7 @@ func (md *mockDeserializer) IsWellFormed(_ *mb.SerializedIdentity) error { func TestNewSimpleCollectionWithBadConfig(t *testing.T) { // set up simple collection with nil collection config _, err := NewSimpleCollection(nil, &mockDeserializer{}) - assert.Error(t, err) + require.Error(t, err) // create static collection config with faulty policy collectionConfig := &pb.StaticCollectionConfig{ @@ -104,8 +104,8 @@ func TestNewSimpleCollectionWithBadConfig(t *testing.T) { MemberOrgsPolicy: getBadAccessPolicy([]string{"peer0", "peer1"}, 3), } _, err = NewSimpleCollection(collectionConfig, &mockDeserializer{}) - assert.Error(t, err) - assert.EqualError(t, err, "failed constructing policy object out of collection policy config: identity index out of range, requested 3, but identities length is 2") + require.Error(t, err) + require.EqualError(t, err, "failed constructing policy object out of collection policy config: identity index out of range, requested 3, but identities length is 2") } func TestNewSimpleCollectionWithGoodConfig(t *testing.T) { @@ -123,25 +123,25 @@ func TestNewSimpleCollectionWithGoodConfig(t *testing.T) { // set up simple collection with valid data sc, err := NewSimpleCollection(collectionConfig, &mockDeserializer{}) - assert.NoError(t, err) + require.NoError(t, err) // check name - assert.True(t, sc.CollectionID() == "test collection") + require.True(t, sc.CollectionID() == "test collection") // check members members := sc.MemberOrgs() - assert.Contains(t, members, "signer0") - assert.Contains(t, members, "signer1") + require.Contains(t, members, "signer0") + require.Contains(t, members, "signer1") // check required peer count - assert.True(t, sc.RequiredPeerCount() == 1) + require.True(t, sc.RequiredPeerCount() == 1) } func TestSetupWithBadConfig(t *testing.T) { // set up simple collection with invalid data var sc SimpleCollection err := sc.Setup(&pb.StaticCollectionConfig{}, &mockDeserializer{}) - assert.Error(t, err) + require.Error(t, err) // create static collection config with faulty policy collectionConfig := &pb.StaticCollectionConfig{ @@ -150,8 +150,8 @@ func TestSetupWithBadConfig(t *testing.T) { MemberOrgsPolicy: getBadAccessPolicy([]string{"peer0", "peer1"}, 3), } err = sc.Setup(collectionConfig, &mockDeserializer{}) - assert.Error(t, err) - assert.EqualError(t, err, "failed constructing policy object out of collection policy config: identity index out of range, requested 3, but identities length is 2") + require.Error(t, err) + require.EqualError(t, err, "failed constructing policy object out of collection policy config: identity index out of range, requested 3, but identities length is 2") } func TestSetupGoodConfigCollection(t *testing.T) { @@ -170,18 +170,18 @@ func TestSetupGoodConfigCollection(t *testing.T) { // set up simple collection with valid data var sc SimpleCollection err := sc.Setup(collectionConfig, &mockDeserializer{}) - assert.NoError(t, err) + require.NoError(t, err) // check name - assert.True(t, sc.CollectionID() == "test collection") + require.True(t, sc.CollectionID() == "test collection") // check members members := sc.MemberOrgs() - assert.Contains(t, members, "signer0") - assert.Contains(t, members, "signer1") + require.Contains(t, members, "signer0") + require.Contains(t, members, "signer1") // check required peer count - assert.True(t, sc.RequiredPeerCount() == 1) + require.True(t, sc.RequiredPeerCount() == 1) } func TestSimpleCollectionFilter(t *testing.T) { @@ -200,7 +200,7 @@ func TestSimpleCollectionFilter(t *testing.T) { // set up simple collection var sc SimpleCollection err := sc.Setup(collectionConfig, &mockDeserializer{}) - assert.NoError(t, err) + require.NoError(t, err) // get the collection access filter accessFilter := (&sc).AccessFilter() @@ -211,7 +211,7 @@ func TestSimpleCollectionFilter(t *testing.T) { Signature: []byte{}, Data: []byte{}, } - assert.False(t, accessFilter(notMember)) + require.False(t, accessFilter(notMember)) // check filter: member of the collection member := protoutil.SignedData{ @@ -219,5 +219,5 @@ func TestSimpleCollectionFilter(t *testing.T) { Signature: []byte{}, Data: []byte{}, } - assert.True(t, accessFilter(member)) + require.True(t, accessFilter(member)) } diff --git a/core/common/privdata/store_test.go b/core/common/privdata/store_test.go index a8269a0fb50..373ba512bfc 100644 --- a/core/common/privdata/store_test.go +++ b/core/common/privdata/store_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // local interfaces to avoid import cycles @@ -34,10 +34,10 @@ func TestNewSimpleCollectionStore(t *testing.T) { mockCCInfoProvider := &mock.ChaincodeInfoProvider{} cs := NewSimpleCollectionStore(mockQueryExecutorFactory, mockCCInfoProvider) - assert.NotNil(t, cs) - assert.Exactly(t, mockQueryExecutorFactory, cs.qeFactory) - assert.Exactly(t, mockCCInfoProvider, cs.ccInfoProvider) - assert.NotNil(t, cs.idDeserializerFactory) + require.NotNil(t, cs) + require.Exactly(t, mockQueryExecutorFactory, cs.qeFactory) + require.Exactly(t, mockCCInfoProvider, cs.ccInfoProvider) + require.NotNil(t, cs.idDeserializerFactory) } func TestCollectionStore(t *testing.T) { @@ -55,24 +55,24 @@ func TestCollectionStore(t *testing.T) { mockQueryExecutorFactory.NewQueryExecutorReturns(nil, errors.New("new-query-executor-failed")) _, err := cs.RetrieveCollection(CollectionCriteria{}) - assert.Contains(t, err.Error(), "could not retrieve query executor for collection criteria") + require.Contains(t, err.Error(), "could not retrieve query executor for collection criteria") mockQueryExecutorFactory.NewQueryExecutorReturns(&mock.QueryExecutor{}, nil) _, err = cs.retrieveCollectionConfigPackage(CollectionCriteria{Namespace: "non-existing-chaincode"}, nil) - assert.EqualError(t, err, "Chaincode [non-existing-chaincode] does not exist") + require.EqualError(t, err, "Chaincode [non-existing-chaincode] does not exist") _, err = cs.RetrieveCollection(CollectionCriteria{}) - assert.Contains(t, err.Error(), "could not be found") + require.Contains(t, err.Error(), "could not be found") ccr := CollectionCriteria{Channel: "ch", Namespace: "cc", Collection: "mycollection"} mockCCInfoProvider.CollectionInfoReturns(nil, errors.New("collection-info-error")) _, err = cs.RetrieveCollection(ccr) - assert.EqualError(t, err, "collection-info-error") + require.EqualError(t, err, "collection-info-error") scc := &peer.StaticCollectionConfig{Name: "mycollection"} mockCCInfoProvider.CollectionInfoReturns(scc, nil) _, err = cs.RetrieveCollection(ccr) - assert.Contains(t, err.Error(), "error setting up collection for collection criteria") + require.Contains(t, err.Error(), "error setting up collection for collection criteria") var signers = [][]byte{[]byte("signer0"), []byte("signer1")} policyEnvelope := policydsl.Envelope(policydsl.Or(policydsl.SignedBy(0), policydsl.SignedBy(1)), signers) @@ -87,12 +87,12 @@ func TestCollectionStore(t *testing.T) { mockCCInfoProvider.CollectionInfoReturns(scc, nil) c, err := cs.RetrieveCollection(ccr) - assert.NoError(t, err) - assert.NotNil(t, c) + require.NoError(t, err) + require.NotNil(t, c) ca, err := cs.RetrieveCollectionAccessPolicy(ccr) - assert.NoError(t, err) - assert.NotNil(t, ca) + require.NoError(t, err) + require.NotNil(t, ca) scc = &peer.StaticCollectionConfig{ Name: "mycollection", @@ -113,21 +113,21 @@ func TestCollectionStore(t *testing.T) { mockCCInfoProvider.AllCollectionsConfigPkgReturns(ccp, nil) ccc, err := cs.RetrieveCollectionConfigPackage(ccr) - assert.NoError(t, err) - assert.NotNil(t, ccc) + require.NoError(t, err) + require.NotNil(t, ccc) signedProp, _ := protoutil.MockSignedEndorserProposalOrPanic("A", &peer.ChaincodeSpec{}, []byte("signer0"), []byte("msg1")) readP, writeP, err := cs.RetrieveReadWritePermission(ccr, signedProp, &mock.QueryExecutor{}) - assert.NoError(t, err) - assert.True(t, readP) - assert.True(t, writeP) + require.NoError(t, err) + require.True(t, readP) + require.True(t, writeP) // only signer0 and signer1 are the members signedProp, _ = protoutil.MockSignedEndorserProposalOrPanic("A", &peer.ChaincodeSpec{}, []byte("signer2"), []byte("msg1")) readP, writeP, err = cs.RetrieveReadWritePermission(ccr, signedProp, &mock.QueryExecutor{}) - assert.NoError(t, err) - assert.False(t, readP) - assert.False(t, writeP) + require.NoError(t, err) + require.False(t, readP) + require.False(t, writeP) scc = &peer.StaticCollectionConfig{ Name: "mycollection", @@ -140,7 +140,7 @@ func TestCollectionStore(t *testing.T) { // only signer0 and signer1 are the members signedProp, _ = protoutil.MockSignedEndorserProposalOrPanic("A", &peer.ChaincodeSpec{}, []byte("signer2"), []byte("msg1")) readP, writeP, err = cs.RetrieveReadWritePermission(ccr, signedProp, &mock.QueryExecutor{}) - assert.NoError(t, err) - assert.True(t, readP) - assert.True(t, writeP) + require.NoError(t, err) + require.True(t, readP) + require.True(t, writeP) } diff --git a/core/common/privdata/util_test.go b/core/common/privdata/util_test.go index 44aafb9c003..35b5389807b 100644 --- a/core/common/privdata/util_test.go +++ b/core/common/privdata/util_test.go @@ -10,25 +10,25 @@ import ( "testing" "github.com/hyperledger/fabric-protos-go/peer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetPolicy(t *testing.T) { accessPolicy, err := getPolicy(getAccessPolicy([]string{"signer0", "signer1"}), &mockDeserializer{}) - assert.NotNil(t, accessPolicy) - assert.Nil(t, err) + require.NotNil(t, accessPolicy) + require.Nil(t, err) } func TestGetPolicyFailed(t *testing.T) { // nil policy config _, err := getPolicy(nil, &mockDeserializer{}) - assert.EqualError(t, err, "collection policy config is nil") + require.EqualError(t, err, "collection policy config is nil") // nil collectionPolicyConfig.GetSignaturePolicy() _, err = getPolicy(&peer.CollectionPolicyConfig{}, &mockDeserializer{}) - assert.EqualError(t, err, "collection config access policy is nil") + require.EqualError(t, err, "collection config access policy is nil") // faulty policy config: index out of range _, err = getPolicy(getBadAccessPolicy([]string{"signer0", "signer1"}, 3), &mockDeserializer{}) - assert.EqualError(t, err, "failed constructing policy object out of collection policy config: identity index out of range, requested 3, but identities length is 2") + require.EqualError(t, err, "failed constructing policy object out of collection policy config: identity index out of range, requested 3, but identities length is 2") } diff --git a/core/common/sysccprovider/sysccprovider_test.go b/core/common/sysccprovider/sysccprovider_test.go index 76146afeb4c..5e47af3acf8 100644 --- a/core/common/sysccprovider/sysccprovider_test.go +++ b/core/common/sysccprovider/sysccprovider_test.go @@ -9,7 +9,7 @@ package sysccprovider import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestString(t *testing.T) { @@ -19,6 +19,6 @@ func TestString(t *testing.T) { ChaincodeVersion: "ChaincodeVersion", } - assert.NotNil(t, chaincodeInstance.String(), "str should not be nil") - assert.Equal(t, chaincodeInstance.String(), "ChannelID.ChaincodeName#ChaincodeVersion", "str should be the correct value") + require.NotNil(t, chaincodeInstance.String(), "str should not be nil") + require.Equal(t, chaincodeInstance.String(), "ChannelID.ChaincodeName#ChaincodeVersion", "str should be the correct value") } diff --git a/core/common/validation/config_test.go b/core/common/validation/config_test.go index b04f53efa82..a912d437636 100644 --- a/core/common/validation/config_test.go +++ b/core/common/validation/config_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/internal/configtxgen/encoder" "github.com/hyperledger/fabric/internal/configtxgen/genesisconfig" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestValidateConfigTx(t *testing.T) { @@ -45,7 +45,7 @@ func TestValidateConfigTx(t *testing.T) { }), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) updateResult.Signature, _ = signer.Sign(updateResult.Payload) _, txResult := ValidateTransaction(updateResult, cryptoProvider) if txResult != peer.TxValidationCode_VALID { diff --git a/core/common/validation/fullflow_test.go b/core/common/validation/fullflow_test.go index 6ee3bad361e..de9ff3c03ad 100644 --- a/core/common/validation/fullflow_test.go +++ b/core/common/validation/fullflow_test.go @@ -20,7 +20,7 @@ import ( mspmgmt "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func getProposal(channelID string) (*peer.Proposal, error) { @@ -133,7 +133,7 @@ func TestGoodPath(t *testing.T) { // validate the transaction cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) payl, txResult := ValidateTransaction(tx, cryptoProvider) if txResult != peer.TxValidationCode_VALID { t.Fatalf("ValidateTransaction failed, err %s", err) @@ -195,7 +195,7 @@ func TestTXWithTwoActionsRejected(t *testing.T) { // validate the transaction cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, txResult := ValidateTransaction(tx, cryptoProvider) if txResult == peer.TxValidationCode_VALID { t.Fatalf("ValidateTransaction should have failed") @@ -236,7 +236,7 @@ func TestBadTx(t *testing.T) { // mess with the transaction payload paylOrig := tx.Payload cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) for i := 0; i < len(paylOrig); i++ { paylCopy := make([]byte, len(paylOrig)) copy(paylCopy, paylOrig) @@ -304,7 +304,7 @@ func Test2EndorsersAgree(t *testing.T) { // validate the transaction cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, txResult := ValidateTransaction(tx, cryptoProvider) if txResult != peer.TxValidationCode_VALID { t.Fatalf("ValidateTransaction failed, err %s", err) @@ -350,28 +350,28 @@ func Test2EndorsersDisagree(t *testing.T) { func TestInvocationsBadArgs(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, code := ValidateTransaction(nil, cryptoProvider) - assert.Equal(t, code, peer.TxValidationCode_NIL_ENVELOPE) + require.Equal(t, code, peer.TxValidationCode_NIL_ENVELOPE) err = validateEndorserTransaction(nil, nil) - assert.Error(t, err) + require.Error(t, err) err = validateConfigTransaction(nil, nil) - assert.Error(t, err) + require.Error(t, err) _, _, err = validateCommonHeader(nil) - assert.Error(t, err) + require.Error(t, err) err = validateChannelHeader(nil) - assert.Error(t, err) + require.Error(t, err) err = validateChannelHeader(&common.ChannelHeader{}) - assert.Error(t, err) + require.Error(t, err) err = validateSignatureHeader(nil) - assert.Error(t, err) + require.Error(t, err) err = validateSignatureHeader(&common.SignatureHeader{}) - assert.Error(t, err) + require.Error(t, err) err = validateSignatureHeader(&common.SignatureHeader{Nonce: []byte("a")}) - assert.Error(t, err) + require.Error(t, err) err = checkSignatureFromCreator(nil, nil, nil, "", cryptoProvider) - assert.Error(t, err) + require.Error(t, err) } var signer msp.SigningIdentity diff --git a/core/common/validation/msgvalidation_test.go b/core/common/validation/msgvalidation_test.go index 6f049c25a20..0f20d959740 100644 --- a/core/common/validation/msgvalidation_test.go +++ b/core/common/validation/msgvalidation_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/msp" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func createTestTransactionEnvelope(channel string, response *peer.Response, simRes []byte) (*common.Envelope, error) { @@ -52,7 +52,7 @@ func createTestProposalAndSignedProposal(channel string) (*peer.Proposal, error) func protoMarshal(t *testing.T, m proto.Message) []byte { bytes, err := proto.Marshal(m) - assert.NoError(t, err) + require.NoError(t, err) return bytes } @@ -93,7 +93,7 @@ func createTestEnvelope(t *testing.T, data []byte, header *common.Header, signer payloadBytes := protoMarshal(t, payload) signature, err := signer.Sign(payloadBytes) - assert.NoError(t, err) + require.NoError(t, err) return &common.Envelope{ Payload: payloadBytes, @@ -106,31 +106,31 @@ func TestCheckSignatureFromCreator(t *testing.T) { simRes := []byte("simulation_result") env, err := createTestTransactionEnvelope("testchannelid", response, simRes) - assert.Nil(t, err, "failed to create test transaction: %s", err) - assert.NotNil(t, env) + require.Nil(t, err, "failed to create test transaction: %s", err) + require.NotNil(t, env) // get the payload from the envelope payload, err := protoutil.UnmarshalPayload(env.Payload) - assert.NoError(t, err, "GetPayload returns err %s", err) + require.NoError(t, err, "GetPayload returns err %s", err) // validate the header chdr, shdr, err := validateCommonHeader(payload.Header) - assert.NoError(t, err, "validateCommonHeader returns err %s", err) + require.NoError(t, err, "validateCommonHeader returns err %s", err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) // validate the signature in the envelope err = checkSignatureFromCreator(shdr.Creator, env.Signature, env.Payload, chdr.ChannelId, cryptoProvider) - assert.NoError(t, err, "checkSignatureFromCreator returns err %s", err) + require.NoError(t, err, "checkSignatureFromCreator returns err %s", err) // corrupt the creator err = checkSignatureFromCreator([]byte("junk"), env.Signature, env.Payload, chdr.ChannelId, cryptoProvider) - assert.Error(t, err) - assert.Contains(t, err.Error(), "MSP error: could not deserialize") + require.Error(t, err) + require.Contains(t, err.Error(), "MSP error: could not deserialize") // check nonexistent channel err = checkSignatureFromCreator(shdr.Creator, env.Signature, env.Payload, "junkchannel", cryptoProvider) - assert.Error(t, err) - assert.Contains(t, err.Error(), "MSP error: channel doesn't exist") + require.Error(t, err) + require.Contains(t, err.Error(), "MSP error: channel doesn't exist") } diff --git a/core/common/validation/statebased/v20_test.go b/core/common/validation/statebased/v20_test.go index 5bca1c880b0..b0a18ea40a5 100644 --- a/core/common/validation/statebased/v20_test.go +++ b/core/common/validation/statebased/v20_test.go @@ -15,8 +15,8 @@ import ( "github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/rwsetutil" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func Test0(t *testing.T) { @@ -43,8 +43,8 @@ func Test0(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } func Test1(t *testing.T) { @@ -74,8 +74,8 @@ func Test1(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } func Test1Multiple(t *testing.T) { @@ -106,7 +106,7 @@ func Test1Multiple(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.NoError(t, err) + require.NoError(t, err) } func Test1NoErr(t *testing.T) { @@ -136,8 +136,8 @@ func Test1NoErr(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } func Test1Err1(t *testing.T) { @@ -167,8 +167,8 @@ func Test1Err1(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } func Test1Err2(t *testing.T) { @@ -198,8 +198,8 @@ func Test1Err2(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCExecutionFailureError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCExecutionFailureError{}) } func Test1Meta(t *testing.T) { @@ -229,8 +229,8 @@ func Test1Meta(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } func Test1MetaMultiple(t *testing.T) { @@ -261,7 +261,7 @@ func Test1MetaMultiple(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.NoError(t, err) + require.NoError(t, err) } func Test2(t *testing.T) { @@ -292,8 +292,8 @@ func Test2(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } func Test3(t *testing.T) { @@ -326,8 +326,8 @@ func Test3(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } func Test3Meta(t *testing.T) { @@ -360,8 +360,8 @@ func Test3Meta(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } func Test4(t *testing.T) { @@ -395,8 +395,8 @@ func Test4(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } func Test4Multiple(t *testing.T) { @@ -430,7 +430,7 @@ func Test4Multiple(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.NoError(t, err) + require.NoError(t, err) } func Test4Err(t *testing.T) { @@ -462,8 +462,8 @@ func Test4Err(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCExecutionFailureError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCExecutionFailureError{}) } func Test5(t *testing.T) { @@ -498,8 +498,8 @@ func Test5(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } func Test6(t *testing.T) { @@ -532,8 +532,8 @@ func Test6(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCExecutionFailureError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCExecutionFailureError{}) } func Test7(t *testing.T) { @@ -566,6 +566,6 @@ func Test7(t *testing.T) { rws := rwsb.GetTxReadWriteSet() err := ev.Evaluate(1, 1, rws.NsRwSets, cc, []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) + require.Error(t, err) + require.IsType(t, err, &verr.VSCCEndorsementPolicyError{}) } diff --git a/core/common/validation/statebased/validator_keylevel_test.go b/core/common/validation/statebased/validator_keylevel_test.go index ad45280571e..8f80b84f885 100644 --- a/core/common/validation/statebased/validator_keylevel_test.go +++ b/core/common/validation/statebased/validator_keylevel_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/rwsetutil" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type mockPolicyEvaluator struct { @@ -74,7 +74,7 @@ func rwsetBytes(t *testing.T, cc string) []byte { rwsb.AddToWriteSet(cc, "key", []byte("value")) rws := rwsb.GetTxReadWriteSet() rwsetbytes, err := rws.ToProtoBytes() - assert.NoError(t, err) + require.NoError(t, err) return rwsetbytes } @@ -111,13 +111,13 @@ func TestKeylevelValidation(t *testing.T) { }() err := validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), endorsements) - assert.NoError(t, err) + require.NoError(t, err) pe.EvaluateRV = fmt.Errorf("policy evaluation error") err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), endorsements) - assert.Error(t, err) - assert.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) + require.Error(t, err) + require.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) } func TestKeylevelValidationPvtData(t *testing.T) { @@ -138,7 +138,7 @@ func TestKeylevelValidationPvtData(t *testing.T) { rwsbu.AddToPvtAndHashedWriteSet("cc", "coll", "key", []byte("value")) rws := rwsbu.GetTxReadWriteSet() rwsb, err := rws.ToProtoBytes() - assert.NoError(t, err) + require.NoError(t, err) prp := []byte("barf") block := buildBlockWithTxs(buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key")), buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key"))) @@ -149,13 +149,13 @@ func TestKeylevelValidationPvtData(t *testing.T) { }() err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.NoError(t, err) + require.NoError(t, err) pe.EvaluateRV = fmt.Errorf("policy evaluation error") err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.Error(t, err) - assert.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) + require.Error(t, err) + require.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) } func TestKeylevelValidationMetaUpdate(t *testing.T) { @@ -176,7 +176,7 @@ func TestKeylevelValidationMetaUpdate(t *testing.T) { rwsbu.AddToMetadataWriteSet("cc", "key", map[string][]byte{}) rws := rwsbu.GetTxReadWriteSet() rwsb, err := rws.ToProtoBytes() - assert.NoError(t, err) + require.NoError(t, err) prp := []byte("barf") block := buildBlockWithTxs(buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key")), buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key"))) @@ -187,13 +187,13 @@ func TestKeylevelValidationMetaUpdate(t *testing.T) { }() err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.NoError(t, err) + require.NoError(t, err) pe.EvaluateRV = fmt.Errorf("policy evaluation error") err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.Error(t, err) - assert.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) + require.Error(t, err) + require.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) } func TestKeylevelValidationPvtMetaUpdate(t *testing.T) { @@ -214,7 +214,7 @@ func TestKeylevelValidationPvtMetaUpdate(t *testing.T) { rwsbu.AddToHashedMetadataWriteSet("cc", "coll", "key", map[string][]byte{}) rws := rwsbu.GetTxReadWriteSet() rwsb, err := rws.ToProtoBytes() - assert.NoError(t, err) + require.NoError(t, err) prp := []byte("barf") block := buildBlockWithTxs(buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key")), buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key"))) @@ -225,13 +225,13 @@ func TestKeylevelValidationPvtMetaUpdate(t *testing.T) { }() err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.NoError(t, err) + require.NoError(t, err) pe.EvaluateRV = fmt.Errorf("policy evaluation error") err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.Error(t, err) - assert.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) + require.Error(t, err) + require.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) } func TestKeylevelValidationPolicyRetrievalFailure(t *testing.T) { @@ -258,8 +258,8 @@ func TestKeylevelValidationPolicyRetrievalFailure(t *testing.T) { }() err := validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.Error(t, err) - assert.IsType(t, &errors.VSCCExecutionFailureError{}, err) + require.Error(t, err) + require.IsType(t, &errors.VSCCExecutionFailureError{}, err) } func TestKeylevelValidationLedgerFailures(t *testing.T) { @@ -279,7 +279,7 @@ func TestKeylevelValidationLedgerFailures(t *testing.T) { validator := NewKeyLevelValidator(NewV13Evaluator(&mockPolicyEvaluator{}, pm), pm) err := validator.Validate("cc", 1, 0, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("InvalidCollNameError", func(t *testing.T) { @@ -289,7 +289,7 @@ func TestKeylevelValidationLedgerFailures(t *testing.T) { validator := NewKeyLevelValidator(NewV13Evaluator(&mockPolicyEvaluator{}, pm), pm) err := validator.Validate("cc", 1, 0, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("I/O error", func(t *testing.T) { @@ -299,8 +299,8 @@ func TestKeylevelValidationLedgerFailures(t *testing.T) { validator := NewKeyLevelValidator(NewV13Evaluator(&mockPolicyEvaluator{}, pm), pm) err := validator.Validate("cc", 1, 0, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.Error(t, err) - assert.IsType(t, &errors.VSCCExecutionFailureError{}, err) + require.Error(t, err) + require.IsType(t, &errors.VSCCExecutionFailureError{}, err) }) } @@ -324,7 +324,7 @@ func TestCCEPValidation(t *testing.T) { rwsbu.AddToHashedReadSet("cc", "coll", "readpvtkey", nil) rws := rwsbu.GetTxReadWriteSet() rwsb, err := rws.ToProtoBytes() - assert.NoError(t, err) + require.NoError(t, err) prp := []byte("barf") block := buildBlockWithTxs(buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key")), buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key"))) @@ -335,13 +335,13 @@ func TestCCEPValidation(t *testing.T) { }() err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.NoError(t, err) + require.NoError(t, err) pe.EvaluateRV = fmt.Errorf("policy evaluation error") err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.Error(t, err) - assert.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) + require.Error(t, err) + require.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) } func TestCCEPValidationReads(t *testing.T) { @@ -361,7 +361,7 @@ func TestCCEPValidationReads(t *testing.T) { rwsbu.AddToReadSet("cc", "readkey", nil) rws := rwsbu.GetTxReadWriteSet() rwsb, err := rws.ToProtoBytes() - assert.NoError(t, err) + require.NoError(t, err) prp := []byte("barf") block := buildBlockWithTxs(buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key")), buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key"))) @@ -372,13 +372,13 @@ func TestCCEPValidationReads(t *testing.T) { }() err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.NoError(t, err) + require.NoError(t, err) pe.EvaluateRV = fmt.Errorf("policy evaluation error") err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.Error(t, err) - assert.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) + require.Error(t, err) + require.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) } func TestOnlySBEPChecked(t *testing.T) { @@ -413,7 +413,7 @@ func TestOnlySBEPChecked(t *testing.T) { } err := validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.NoError(t, err) + require.NoError(t, err) // we also test with a read-write set that has a read as well as a write rwsbu := rwsetutil.NewRWSetBuilder() @@ -423,7 +423,7 @@ func TestOnlySBEPChecked(t *testing.T) { rwsb, _ = rws.ToProtoBytes() err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.NoError(t, err) + require.NoError(t, err) } func TestCCEPValidationPvtReads(t *testing.T) { @@ -443,7 +443,7 @@ func TestCCEPValidationPvtReads(t *testing.T) { rwsbu.AddToHashedReadSet("cc", "coll", "readpvtkey", nil) rws := rwsbu.GetTxReadWriteSet() rwsb, err := rws.ToProtoBytes() - assert.NoError(t, err) + require.NoError(t, err) prp := []byte("barf") block := buildBlockWithTxs(buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key")), buildTXWithRwset(rwsetUpdatingMetadataFor("cc", "key"))) @@ -454,13 +454,13 @@ func TestCCEPValidationPvtReads(t *testing.T) { }() err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.NoError(t, err) + require.NoError(t, err) pe.EvaluateRV = fmt.Errorf("policy evaluation error") err = validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.Error(t, err) - assert.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) + require.Error(t, err) + require.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) } func TestKeylevelValidationFailure(t *testing.T) { @@ -489,6 +489,6 @@ func TestKeylevelValidationFailure(t *testing.T) { }() err := validator.Validate("cc", 1, 1, rwsb, prp, []byte("CCEP"), []*pb.Endorsement{}) - assert.Error(t, err) - assert.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) + require.Error(t, err) + require.IsType(t, &errors.VSCCEndorsementPolicyError{}, err) } diff --git a/core/common/validation/statebased/vpmanager_test.go b/core/common/validation/statebased/vpmanager_test.go index 1429e02a87c..c866dd6023e 100644 --- a/core/common/validation/statebased/vpmanager_test.go +++ b/core/common/validation/statebased/vpmanager_test.go @@ -22,7 +22,7 @@ import ( validation "github.com/hyperledger/fabric/core/handlers/validation/api/state" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type mockState struct { @@ -110,9 +110,9 @@ func TestSimple(t *testing.T) { } sp, err := pm.GetValidationParameterForKey("cc", "coll", "key", 0, 0) - assert.NoError(t, err) - assert.Equal(t, protoutil.MarshalOrPanic(spe), sp) - assert.True(t, ms.DoneCalled()) + require.NoError(t, err) + require.Equal(t, protoutil.MarshalOrPanic(spe), sp) + require.True(t, ms.DoneCalled()) } func rwsetUpdatingMetadataFor(cc, key string) []byte { @@ -172,7 +172,7 @@ func runFunctions(t *testing.T, seed int64, funcs ...func()) { for _, i := range r.Perm(len(funcs)) { iLcl := i go func() { - assert.NotPanics(t, funcs[iLcl], "assert failure occurred with seed %d", seed) + require.NotPanics(t, funcs[iLcl], "assert failure occurred with seed %d", seed) c <- struct{}{} }() } @@ -215,10 +215,10 @@ func TestTranslatorBadPolicy(t *testing.T) { sp := <-resC err := <-errC - assert.Errorf(t, err, "assert failure occurred with seed %d", seed) - assert.Contains(t, err.Error(), "could not translate policy for cc:key: you shall not pass", "assert failure occurred with seed %d", seed) - assert.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) - assert.Nil(t, sp, "assert failure occurred with seed %d", seed) + require.Errorf(t, err, "assert failure occurred with seed %d", seed) + require.Contains(t, err.Error(), "could not translate policy for cc:key: you shall not pass", "assert failure occurred with seed %d", seed) + require.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) + require.Nil(t, sp, "assert failure occurred with seed %d", seed) } func TestTranslatorBadPolicyPvt(t *testing.T) { @@ -255,10 +255,10 @@ func TestTranslatorBadPolicyPvt(t *testing.T) { sp := <-resC err := <-errC - assert.Errorf(t, err, "assert failure occurred with seed %d", seed) - assert.Contains(t, err.Error(), "could not translate policy for cc:coll:6b6579: you shall not pass", "assert failure occurred with seed %d", seed) - assert.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) - assert.Nil(t, sp, "assert failure occurred with seed %d", seed) + require.Errorf(t, err, "assert failure occurred with seed %d", seed) + require.Contains(t, err.Error(), "could not translate policy for cc:coll:6b6579: you shall not pass", "assert failure occurred with seed %d", seed) + require.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) + require.Nil(t, sp, "assert failure occurred with seed %d", seed) } func TestDependencyNoConflict(t *testing.T) { @@ -299,9 +299,9 @@ func TestDependencyNoConflict(t *testing.T) { sp := <-resC err := <-errC - assert.NoError(t, err, "assert failure occurred with seed %d", seed) - assert.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) - assert.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) + require.NoError(t, err, "assert failure occurred with seed %d", seed) + require.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) + require.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) } func TestDependencyConflict(t *testing.T) { @@ -343,9 +343,9 @@ func TestDependencyConflict(t *testing.T) { sp := <-resC err := <-errC - assert.Errorf(t, err, "assert failure occurred with seed %d", seed) - assert.IsType(t, &ValidationParameterUpdatedError{}, err, "assert failure occurred with seed %d", seed) - assert.Nil(t, sp, "assert failure occurred with seed %d", seed) + require.Errorf(t, err, "assert failure occurred with seed %d", seed) + require.IsType(t, &ValidationParameterUpdatedError{}, err, "assert failure occurred with seed %d", seed) + require.Nil(t, sp, "assert failure occurred with seed %d", seed) } func TestMultipleDependencyNoConflict(t *testing.T) { @@ -392,9 +392,9 @@ func TestMultipleDependencyNoConflict(t *testing.T) { sp := <-resC err := <-errC - assert.NoError(t, err, "assert failure occurred with seed %d", seed) - assert.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) - assert.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) + require.NoError(t, err, "assert failure occurred with seed %d", seed) + require.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) + require.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) } func TestMultipleDependencyConflict(t *testing.T) { @@ -442,9 +442,9 @@ func TestMultipleDependencyConflict(t *testing.T) { sp := <-resC err := <-errC - assert.Errorf(t, err, "assert failure occurred with seed %d", seed) - assert.IsType(t, &ValidationParameterUpdatedError{}, err, "assert failure occurred with seed %d", seed) - assert.Nil(t, sp, "assert failure occurred with seed %d", seed) + require.Errorf(t, err, "assert failure occurred with seed %d", seed) + require.IsType(t, &ValidationParameterUpdatedError{}, err, "assert failure occurred with seed %d", seed) + require.Nil(t, sp, "assert failure occurred with seed %d", seed) } func TestPvtDependencyNoConflict(t *testing.T) { @@ -480,9 +480,9 @@ func TestPvtDependencyNoConflict(t *testing.T) { sp := <-resC err := <-errC - assert.NoError(t, err, "assert failure occurred with seed %d", seed) - assert.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) - assert.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) + require.NoError(t, err, "assert failure occurred with seed %d", seed) + require.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) + require.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) } func TestPvtDependencyConflict(t *testing.T) { @@ -518,10 +518,10 @@ func TestPvtDependencyConflict(t *testing.T) { sp := <-resC err := <-errC - assert.Errorf(t, err, "assert failure occurred with seed %d", seed) - assert.IsType(t, &ValidationParameterUpdatedError{}, err, "assert failure occurred with seed %d", seed) - assert.True(t, len(err.Error()) > 0, "assert failure occurred with seed %d", seed) - assert.Nil(t, sp, "assert failure occurred with seed %d", seed) + require.Errorf(t, err, "assert failure occurred with seed %d", seed) + require.IsType(t, &ValidationParameterUpdatedError{}, err, "assert failure occurred with seed %d", seed) + require.True(t, len(err.Error()) > 0, "assert failure occurred with seed %d", seed) + require.Nil(t, sp, "assert failure occurred with seed %d", seed) } func TestBlockValidationTerminatesBeforeNewBlock(t *testing.T) { @@ -545,7 +545,7 @@ func TestBlockValidationTerminatesBeforeNewBlock(t *testing.T) { panickingFunc := func() { pm.ExtractValidationParameterDependency(1, 0, rwsetBytes) } - assert.Panics(t, panickingFunc) + require.Panics(t, panickingFunc) } func TestLedgerErrors(t *testing.T) { @@ -580,7 +580,7 @@ func TestLedgerErrors(t *testing.T) { }) err := <-errC - assert.Errorf(t, err, "assert failure occurred with seed %d", seed) + require.Errorf(t, err, "assert failure occurred with seed %d", seed) ms.FetchStateErr = nil @@ -597,7 +597,7 @@ func TestLedgerErrors(t *testing.T) { }) err = <-errC - assert.Error(t, err) + require.Error(t, err) cc, coll, key = "cc", "coll", "key" @@ -616,8 +616,8 @@ func TestLedgerErrors(t *testing.T) { }) err = <-errC - assert.Errorf(t, err, "assert failure occurred with seed %d", seed) - assert.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) + require.Errorf(t, err, "assert failure occurred with seed %d", seed) + require.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) } func TestBadRwsetIsNoDependency(t *testing.T) { @@ -653,9 +653,9 @@ func TestBadRwsetIsNoDependency(t *testing.T) { sp := <-resC err := <-errC - assert.NoError(t, err, "assert failure occurred with seed %d", seed) - assert.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) - assert.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) + require.NoError(t, err, "assert failure occurred with seed %d", seed) + require.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) + require.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) } func TestWritesIntoDifferentNamespaces(t *testing.T) { @@ -691,9 +691,9 @@ func TestWritesIntoDifferentNamespaces(t *testing.T) { sp := <-resC err := <-errC - assert.NoError(t, err, "assert failure occurred with seed %d", seed) - assert.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) - assert.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) + require.NoError(t, err, "assert failure occurred with seed %d", seed) + require.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) + require.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) } func TestCombinedCalls(t *testing.T) { @@ -744,16 +744,16 @@ func TestCombinedCalls(t *testing.T) { sp := <-res1C err := <-err1C - assert.NoError(t, err, "assert failure occurred with seed %d", seed) - assert.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) + require.NoError(t, err, "assert failure occurred with seed %d", seed) + require.Equal(t, protoutil.MarshalOrPanic(spe), sp, "assert failure occurred with seed %d", seed) sp = <-res2C err = <-err2C - assert.Errorf(t, err, "assert failure occurred with seed %d", seed) - assert.IsType(t, &ValidationParameterUpdatedError{}, err, "assert failure occurred with seed %d", seed) - assert.Nil(t, sp, "assert failure occurred with seed %d", seed) + require.Errorf(t, err, "assert failure occurred with seed %d", seed) + require.IsType(t, &ValidationParameterUpdatedError{}, err, "assert failure occurred with seed %d", seed) + require.Nil(t, sp, "assert failure occurred with seed %d", seed) - assert.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) + require.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) } func TestForRaces(t *testing.T) { @@ -789,12 +789,12 @@ func TestForRaces(t *testing.T) { runtime.Gosched() sp, err := pm.GetValidationParameterForKey(cc, coll, key, 1, 2) - assert.Equal(t, protoutil.MarshalOrPanic(spe), sp) - assert.NoError(t, err) + require.Equal(t, protoutil.MarshalOrPanic(spe), sp) + require.NoError(t, err) } } runFunctions(t, seed, funcArray...) - assert.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) + require.True(t, ms.DoneCalled(), "assert failure occurred with seed %d", seed) } diff --git a/core/config/config_test.go b/core/config/config_test.go index 726592106fb..a09e45c1625 100644 --- a/core/config/config_test.go +++ b/core/config/config_test.go @@ -12,18 +12,18 @@ import ( "time" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestConfig_dirExists(t *testing.T) { tmpF := os.TempDir() exists := dirExists(tmpF) - assert.True(t, exists, + require.True(t, exists, "%s directory exists but dirExists returned false", tmpF) tmpF = "/blah-" + time.Now().Format(time.RFC3339Nano) exists = dirExists(tmpF) - assert.False(t, exists, + require.False(t, exists, "%s directory does not exist but dirExists returned true", tmpF) } @@ -32,32 +32,32 @@ func TestConfig_InitViper(t *testing.T) { // Case 1: use viper instance to call InitViper v := viper.New() err := InitViper(v, "") - assert.NoError(t, err, "Error returned by InitViper") + require.NoError(t, err, "Error returned by InitViper") // Case 2: default viper instance to call InitViper err = InitViper(nil, "") - assert.NoError(t, err, "Error returned by InitViper") + require.NoError(t, err, "Error returned by InitViper") } func TestConfig_GetPath(t *testing.T) { // Case 1: non existent viper property path := GetPath("foo") - assert.Equal(t, "", path, "GetPath should have returned empty string for path 'foo'") + require.Equal(t, "", path, "GetPath should have returned empty string for path 'foo'") // Case 2: viper property that has absolute path viper.Set("testpath", "/test/config.yml") path = GetPath("testpath") - assert.Equal(t, "/test/config.yml", path) + require.Equal(t, "/test/config.yml", path) } func TestConfig_TranslatePathInPlace(t *testing.T) { // Case 1: relative path p := "foo" TranslatePathInPlace(OfficialPath, &p) - assert.NotEqual(t, "foo", p, "TranslatePathInPlace failed to translate path %s", p) + require.NotEqual(t, "foo", p, "TranslatePathInPlace failed to translate path %s", p) // Case 2: absolute path p = "/foo" TranslatePathInPlace(OfficialPath, &p) - assert.Equal(t, "/foo", p, "TranslatePathInPlace failed to translate path %s", p) + require.Equal(t, "/foo", p, "TranslatePathInPlace failed to translate path %s", p) } diff --git a/core/config/configtest/config.go b/core/config/configtest/config.go index 26190b328f1..c7fc9cfdd48 100644 --- a/core/config/configtest/config.go +++ b/core/config/configtest/config.go @@ -17,7 +17,6 @@ import ( "testing" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -113,12 +112,12 @@ func SetDevFabricConfigPath(t *testing.T) (cleanup func()) { if resetFabricCfgPath { return func() { err := os.Setenv("FABRIC_CFG_PATH", oldFabricCfgPath) - assert.NoError(t, err) + require.NoError(t, err) } } return func() { err := os.Unsetenv("FABRIC_CFG_PATH") - assert.NoError(t, err) + require.NoError(t, err) } } diff --git a/core/container/dockercontroller/dockercontroller_test.go b/core/container/dockercontroller/dockercontroller_test.go index 0f5ace2af99..592d8ffd656 100644 --- a/core/container/dockercontroller/dockercontroller_test.go +++ b/core/container/dockercontroller/dockercontroller_test.go @@ -30,14 +30,13 @@ import ( "github.com/hyperledger/fabric/core/container/dockercontroller/mock" . "github.com/onsi/gomega" "github.com/onsi/gomega/gbytes" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) // This test used to be part of an integration style test in core/container, moved to here func TestIntegrationPath(t *testing.T) { client, err := docker.NewClientFromEnv() - assert.NoError(t, err) + require.NoError(t, err) fakePlatformBuilder := &mock.PlatformBuilder{} fakePlatformBuilder.GenerateDockerBuildReturns(InMemBuilder{}.Build()) @@ -57,7 +56,7 @@ func TestIntegrationPath(t *testing.T) { }, bytes.NewBuffer([]byte("code-package"))) require.NoError(t, err) - assert.Equal(t, &ContainerInstance{ + require.Equal(t, &ContainerInstance{ CCID: "simple", Type: "TYPE", DockerVM: &dc, @@ -99,11 +98,11 @@ func TestGetArgs(t *testing.T) { args, err := vm.GetArgs(tc.ccType.String(), "peer-address") if tc.expectedErr != "" { - assert.EqualError(t, err, tc.expectedErr) + require.EqualError(t, err, tc.expectedErr) continue } - assert.NoError(t, err) - assert.Equal(t, tc.expectedArgs, args) + require.NoError(t, err) + require.Equal(t, tc.expectedArgs, args) } } @@ -115,7 +114,7 @@ func TestGetEnv(t *testing.T) { t.Run("nil TLS config", func(t *testing.T) { env := vm.GetEnv("test", nil) - assert.Equal(t, []string{"CORE_CHAINCODE_ID_NAME=test", "LOG_ENV=foo", "CORE_PEER_TLS_ENABLED=false", "CORE_PEER_LOCALMSPID=mspid"}, env) + require.Equal(t, []string{"CORE_CHAINCODE_ID_NAME=test", "LOG_ENV=foo", "CORE_PEER_TLS_ENABLED=false", "CORE_PEER_LOCALMSPID=mspid"}, env) }) t.Run("real TLS config", func(t *testing.T) { @@ -124,7 +123,7 @@ func TestGetEnv(t *testing.T) { ClientCert: []byte("cert"), RootCert: []byte("root"), }) - assert.Equal(t, []string{ + require.Equal(t, []string{ "CORE_CHAINCODE_ID_NAME=test", "LOG_ENV=foo", "CORE_PEER_TLS_ENABLED=true", @@ -280,7 +279,7 @@ func Test_Stop(t *testing.T) { // Success case err := dvm.Stop(ccid) - assert.NoError(t, err) + require.NoError(t, err) } func Test_Wait(t *testing.T) { @@ -292,14 +291,14 @@ func Test_Wait(t *testing.T) { client.WaitContainerReturns(99, nil) exitCode, err := dvm.Wait("the-name:the-version") - assert.NoError(t, err) - assert.Equal(t, 99, exitCode) - assert.Equal(t, "the-name-the-version", client.WaitContainerArgsForCall(0)) + require.NoError(t, err) + require.Equal(t, 99, exitCode) + require.Equal(t, "the-name-the-version", client.WaitContainerArgsForCall(0)) // wait fails client.WaitContainerReturns(99, errors.New("no-wait-for-you")) _, err = dvm.Wait("") - assert.EqualError(t, err, "no-wait-for-you") + require.EqualError(t, err, "no-wait-for-you") } func TestHealthCheck(t *testing.T) { @@ -307,12 +306,12 @@ func TestHealthCheck(t *testing.T) { vm := &DockerVM{Client: client} err := vm.HealthCheck(context.Background()) - assert.NoError(t, err) + require.NoError(t, err) client.PingWithContextReturns(errors.New("Error pinging daemon")) err = vm.HealthCheck(context.Background()) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Error pinging daemon") + require.Error(t, err) + require.Contains(t, err.Error(), "Error pinging daemon") } type testCase struct { @@ -364,8 +363,8 @@ func TestGetVMNameForDocker(t *testing.T) { for _, test := range tc { name, err := test.vm.GetVMNameForDocker(test.ccid) - assert.Nil(t, err, "Expected nil error") - assert.Equal(t, test.expectedOutput, name, "Unexpected output for test case name: %s", test.name) + require.Nil(t, err, "Expected nil error") + require.Equal(t, test.expectedOutput, name, "Unexpected output for test case name: %s", test.name) } } @@ -382,7 +381,7 @@ func TestGetVMName(t *testing.T) { for _, test := range tc { name := test.vm.GetVMName(test.ccid) - assert.Equal(t, test.expectedOutput, name, "Unexpected output for test case name: %s", test.name) + require.Equal(t, test.expectedOutput, name, "Unexpected output for test case name: %s", test.name) } } @@ -396,15 +395,15 @@ func Test_buildImage(t *testing.T) { } err := dvm.buildImage("simple", &bytes.Buffer{}) - assert.NoError(t, err) - assert.Equal(t, 1, client.BuildImageCallCount()) + require.NoError(t, err) + require.Equal(t, 1, client.BuildImageCallCount()) opts := client.BuildImageArgsForCall(0) - assert.Equal(t, "simple-a7a39b72f29718e653e73503210fbb597057b7a1c77d1fe321a1afcff041d4e1", opts.Name) - assert.False(t, opts.Pull) - assert.Equal(t, "network-mode", opts.NetworkMode) - assert.Equal(t, &bytes.Buffer{}, opts.InputStream) - assert.NotNil(t, opts.OutputStream) + require.Equal(t, "simple-a7a39b72f29718e653e73503210fbb597057b7a1c77d1fe321a1afcff041d4e1", opts.Name) + require.False(t, opts.Pull) + require.Equal(t, "network-mode", opts.NetworkMode) + require.Equal(t, &bytes.Buffer{}, opts.InputStream) + require.NotNil(t, opts.OutputStream) } func Test_buildImageFailure(t *testing.T) { @@ -417,7 +416,7 @@ func Test_buildImageFailure(t *testing.T) { } err := dvm.buildImage("simple", &bytes.Buffer{}) - assert.EqualError(t, err, "oh-bother-we-failed-badly") + require.EqualError(t, err, "oh-bother-we-failed-badly") } func TestBuild(t *testing.T) { @@ -436,17 +435,17 @@ func TestBuild(t *testing.T) { dvm := &DockerVM{Client: client, BuildMetrics: buildMetrics, PlatformBuilder: fakePlatformBuilder} _, err := dvm.Build("chaincode-name:chaincode-version", md, bytes.NewBuffer([]byte("code-package"))) - assert.NoError(t, err, "should have built successfully") + require.NoError(t, err, "should have built successfully") - assert.Equal(t, 1, client.BuildImageCallCount()) + require.Equal(t, 1, client.BuildImageCallCount()) require.Equal(t, 1, fakePlatformBuilder.GenerateDockerBuildCallCount()) ccType, path, codePackageStream := fakePlatformBuilder.GenerateDockerBuildArgsForCall(0) - assert.Equal(t, "TYPE", ccType) - assert.Equal(t, "path", path) + require.Equal(t, "TYPE", ccType) + require.Equal(t, "path", path) codePackage, err := ioutil.ReadAll(codePackageStream) require.NoError(t, err) - assert.Equal(t, []byte("code-package"), codePackage) + require.Equal(t, []byte("code-package"), codePackage) }) @@ -456,9 +455,9 @@ func TestBuild(t *testing.T) { dvm := &DockerVM{Client: client, BuildMetrics: buildMetrics} _, err := dvm.Build("chaincode-name:chaincode-version", md, bytes.NewBuffer([]byte("code-package"))) - assert.EqualError(t, err, "docker image inspection failed: inspecting-image-fails") + require.EqualError(t, err, "docker image inspection failed: inspecting-image-fails") - assert.Equal(t, 0, client.BuildImageCallCount()) + require.Equal(t, 0, client.BuildImageCallCount()) }) t.Run("when the image exists", func(t *testing.T) { @@ -466,9 +465,9 @@ func TestBuild(t *testing.T) { dvm := &DockerVM{Client: client, BuildMetrics: buildMetrics} _, err := dvm.Build("chaincode-name:chaincode-version", md, bytes.NewBuffer([]byte("code-package"))) - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, 0, client.BuildImageCallCount()) + require.Equal(t, 0, client.BuildImageCallCount()) }) t.Run("when the platform builder fails", func(t *testing.T) { @@ -481,10 +480,10 @@ func TestBuild(t *testing.T) { dvm := &DockerVM{Client: client, BuildMetrics: buildMetrics, PlatformBuilder: fakePlatformBuilder} _, err := dvm.Build("chaincode-name:chaincode-version", md, bytes.NewBuffer([]byte("code-package"))) - assert.Equal(t, 1, client.InspectImageCallCount()) - assert.Equal(t, 1, fakePlatformBuilder.GenerateDockerBuildCallCount()) - assert.Equal(t, 0, client.BuildImageCallCount()) - assert.EqualError(t, err, "platform builder failed: fake-builder-error") + require.Equal(t, 1, client.InspectImageCallCount()) + require.Equal(t, 1, fakePlatformBuilder.GenerateDockerBuildCallCount()) + require.Equal(t, 0, client.BuildImageCallCount()) + require.EqualError(t, err, "platform builder failed: fake-builder-error") }) t.Run("when building the image fails", func(t *testing.T) { @@ -496,9 +495,9 @@ func TestBuild(t *testing.T) { dvm := &DockerVM{Client: client, BuildMetrics: buildMetrics, PlatformBuilder: fakePlatformBuilder} _, err := dvm.Build("chaincode-name:chaincode-version", md, bytes.NewBuffer([]byte("code-package"))) - assert.Equal(t, 1, client.InspectImageCallCount()) - assert.Equal(t, 1, client.BuildImageCallCount()) - assert.EqualError(t, err, "docker image build failed: no-build-for-you") + require.Equal(t, 1, client.InspectImageCallCount()) + require.Equal(t, 1, client.BuildImageCallCount()) + require.EqualError(t, err, "docker image build failed: no-build-for-you") }) } diff --git a/core/deliverservice/config_test.go b/core/deliverservice/config_test.go index 0a82adf7f7f..3d64d7e5197 100644 --- a/core/deliverservice/config_test.go +++ b/core/deliverservice/config_test.go @@ -14,7 +14,6 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/hyperledger/fabric/core/deliverservice" @@ -45,10 +44,10 @@ func TestSecureOptsConfig(t *testing.T) { coreConfig := deliverservice.GlobalConfig() - assert.True(t, coreConfig.SecOpts.UseTLS) - assert.True(t, coreConfig.SecOpts.RequireClientCert) - assert.Equal(t, keyBytes, coreConfig.SecOpts.Key) - assert.Equal(t, certBytes, coreConfig.SecOpts.Certificate) + require.True(t, coreConfig.SecOpts.UseTLS) + require.True(t, coreConfig.SecOpts.RequireClientCert) + require.Equal(t, keyBytes, coreConfig.SecOpts.Key) + require.Equal(t, certBytes, coreConfig.SecOpts.Certificate) }) t.Run("fallback cert", func(t *testing.T) { @@ -62,10 +61,10 @@ func TestSecureOptsConfig(t *testing.T) { coreConfig := deliverservice.GlobalConfig() - assert.True(t, coreConfig.SecOpts.UseTLS) - assert.True(t, coreConfig.SecOpts.RequireClientCert) - assert.Equal(t, keyBytes, coreConfig.SecOpts.Key) - assert.Equal(t, certBytes, coreConfig.SecOpts.Certificate) + require.True(t, coreConfig.SecOpts.UseTLS) + require.True(t, coreConfig.SecOpts.RequireClientCert) + require.Equal(t, keyBytes, coreConfig.SecOpts.Key) + require.Equal(t, certBytes, coreConfig.SecOpts.Certificate) }) t.Run("no cert", func(t *testing.T) { @@ -75,7 +74,7 @@ func TestSecureOptsConfig(t *testing.T) { viper.Set("peer.tls.enabled", true) viper.Set("peer.tls.clientAuthRequired", true) - assert.Panics(t, func() { deliverservice.GlobalConfig() }) + require.Panics(t, func() { deliverservice.GlobalConfig() }) }) } @@ -109,7 +108,7 @@ func TestGlobalConfig(t *testing.T) { }, } - assert.Equal(t, expectedConfig, coreConfig) + require.Equal(t, expectedConfig, coreConfig) } func TestGlobalConfigDefault(t *testing.T) { @@ -126,7 +125,7 @@ func TestGlobalConfigDefault(t *testing.T) { KeepaliveOptions: comm.DefaultKeepaliveOptions, } - assert.Equal(t, expectedConfig, coreConfig) + require.Equal(t, expectedConfig, coreConfig) } func TestLoadOverridesMap(t *testing.T) { @@ -154,10 +153,10 @@ func TestLoadOverridesMap(t *testing.T) { require.Len(t, res, 2) ep1, ok := res["addressFrom1"] require.True(t, ok) - assert.Equal(t, "addressTo1", ep1.Address) + require.Equal(t, "addressTo1", ep1.Address) ep2, ok := res["addressFrom2"] require.True(t, ok) - assert.Equal(t, "addressTo2", ep2.Address) + require.Equal(t, "addressTo2", ep2.Address) }) t.Run("MissingCAFiles", func(t *testing.T) { @@ -179,7 +178,7 @@ func TestLoadOverridesMap(t *testing.T) { require.NoError(t, err) res, err := deliverservice.LoadOverridesMap() require.NoError(t, err) - assert.Len(t, res, 1) + require.Len(t, res, 1) }) t.Run("EmptyCAFiles", func(t *testing.T) { @@ -199,7 +198,7 @@ func TestLoadOverridesMap(t *testing.T) { require.NoError(t, err) res, err := deliverservice.LoadOverridesMap() require.NoError(t, err) - assert.Len(t, res, 2) + require.Len(t, res, 2) }) t.Run("BadYaml", func(t *testing.T) { @@ -230,6 +229,6 @@ func TestLoadOverridesMap(t *testing.T) { require.NoError(t, err) res, err := deliverservice.LoadOverridesMap() require.NoError(t, err) - assert.Nil(t, res) + require.Nil(t, res) }) } diff --git a/core/deliverservice/deliveryclient_test.go b/core/deliverservice/deliveryclient_test.go index 09626620791..5ec7c2b3c7c 100644 --- a/core/deliverservice/deliveryclient_test.go +++ b/core/deliverservice/deliveryclient_test.go @@ -15,7 +15,6 @@ import ( "github.com/hyperledger/fabric/internal/pkg/comm" "github.com/hyperledger/fabric/internal/pkg/peer/blocksprovider" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -76,12 +75,12 @@ eUCutqn1KYDMYh54i6p723cXbdDkmvL2UCciHyHdSWS9lmkKVdyNGIJ6 select { case <-finalized: case <-time.After(time.Second): - assert.FailNow(t, "finalizer should have executed") + require.FailNow(t, "finalizer should have executed") } bp, ok := ds.blockProviders["channel-id"] require.True(t, ok, "map entry must exist") - assert.Equal(t, "76f7a03f8dfdb0ef7c4b28b3901fe163c730e906c70e4cdf887054ad5f608bed", fmt.Sprintf("%x", bp.TLSCertHash)) + require.Equal(t, "76f7a03f8dfdb0ef7c4b28b3901fe163c730e906c70e4cdf887054ad5f608bed", fmt.Sprintf("%x", bp.TLSCertHash)) }) t.Run("Green Path without mutual TLS", func(t *testing.T) { @@ -106,12 +105,12 @@ eUCutqn1KYDMYh54i6p723cXbdDkmvL2UCciHyHdSWS9lmkKVdyNGIJ6 select { case <-finalized: case <-time.After(time.Second): - assert.FailNow(t, "finalizer should have executed") + require.FailNow(t, "finalizer should have executed") } bp, ok := ds.blockProviders["channel-id"] require.True(t, ok, "map entry must exist") - assert.Nil(t, bp.TLSCertHash) + require.Nil(t, bp.TLSCertHash) }) t.Run("Exists", func(t *testing.T) { @@ -124,7 +123,7 @@ eUCutqn1KYDMYh54i6p723cXbdDkmvL2UCciHyHdSWS9lmkKVdyNGIJ6 require.NoError(t, err) err = ds.StartDeliverForChannel("channel-id", fakeLedgerInfo, func() {}) - assert.EqualError(t, err, "Delivery service - block provider already exists for channel-id found, can't start delivery") + require.EqualError(t, err, "Delivery service - block provider already exists for channel-id found, can't start delivery") }) t.Run("Stopping", func(t *testing.T) { @@ -136,7 +135,7 @@ eUCutqn1KYDMYh54i6p723cXbdDkmvL2UCciHyHdSWS9lmkKVdyNGIJ6 ds.Stop() err = ds.StartDeliverForChannel("channel-id", fakeLedgerInfo, func() {}) - assert.EqualError(t, err, "Delivery service is stopping cannot join a new channel channel-id") + require.EqualError(t, err, "Delivery service is stopping cannot join a new channel channel-id") }) } @@ -153,14 +152,14 @@ func TestStopDeliverForChannel(t *testing.T) { }, } err := ds.StopDeliverForChannel("a") - assert.NoError(t, err) - assert.Len(t, ds.blockProviders, 1) + require.NoError(t, err) + require.Len(t, ds.blockProviders, 1) _, ok := ds.blockProviders["a"] - assert.False(t, ok) + require.False(t, ok) select { case <-doneA: default: - assert.Fail(t, "should have stopped the blocksprovider") + require.Fail(t, "should have stopped the blocksprovider") } }) @@ -177,7 +176,7 @@ func TestStopDeliverForChannel(t *testing.T) { ds.Stop() err := ds.StopDeliverForChannel("a") - assert.EqualError(t, err, "Delivery service is stopping, cannot stop delivery for channel a") + require.EqualError(t, err, "Delivery service is stopping, cannot stop delivery for channel a") }) t.Run("Non-existent", func(t *testing.T) { @@ -192,7 +191,7 @@ func TestStopDeliverForChannel(t *testing.T) { } err := ds.StopDeliverForChannel("c") - assert.EqualError(t, err, "Delivery service - no block provider for c found, can't stop delivery") + require.EqualError(t, err, "Delivery service - no block provider for c found, can't stop delivery") }) } @@ -206,23 +205,23 @@ func TestStop(t *testing.T) { DoneC: make(chan struct{}), }, } - assert.False(t, ds.stopping) + require.False(t, ds.stopping) for _, bp := range ds.blockProviders { select { case <-bp.DoneC: - assert.Fail(t, "block providers should not be closed") + require.Fail(t, "block providers should not be closed") default: } } ds.Stop() - assert.True(t, ds.stopping) - assert.Len(t, ds.blockProviders, 2) + require.True(t, ds.stopping) + require.Len(t, ds.blockProviders, 2) for _, bp := range ds.blockProviders { select { case <-bp.DoneC: default: - assert.Fail(t, "block providers should te closed") + require.Fail(t, "block providers should te closed") } } diff --git a/core/endorser/plugin_endorser_test.go b/core/endorser/plugin_endorser_test.go index 9131a735ca4..b35d4fd33d9 100644 --- a/core/endorser/plugin_endorser_test.go +++ b/core/endorser/plugin_endorser_test.go @@ -24,8 +24,8 @@ import ( "github.com/hyperledger/fabric/core/transientstore" "github.com/hyperledger/fabric/gossip/privdata" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) var ( @@ -85,9 +85,9 @@ func TestPluginEndorserNotFound(t *testing.T) { PluginMapper: pluginMapper, }) endorsement, prpBytes, err := pluginEndorser.EndorseWithPlugin("notfound", "", nil, nil) - assert.Nil(t, endorsement) - assert.Nil(t, prpBytes) - assert.Contains(t, err.Error(), "plugin with name notfound wasn't found") + require.Nil(t, endorsement) + require.Nil(t, prpBytes) + require.Contains(t, err.Error(), "plugin with name notfound wasn't found") } func TestPluginEndorserGreenPath(t *testing.T) { @@ -114,9 +114,9 @@ func TestPluginEndorserGreenPath(t *testing.T) { // Scenario I: Call the endorsement for the first time endorsement, prpBytes, err := pluginEndorser.EndorseWithPlugin("plugin", "mychannel", nil, nil) - assert.NoError(t, err) - assert.Equal(t, expectedSignature, endorsement.Signature) - assert.Equal(t, expectedProposalResponsePayload, prpBytes) + require.NoError(t, err) + require.Equal(t, expectedSignature, endorsement.Signature) + require.Equal(t, expectedProposalResponsePayload, prpBytes) // Ensure both state and SigningIdentityFetcher were passed to Init() plugin.AssertCalled(t, "Init", &endorser.ChannelState{QueryCreator: queryCreator, Store: &transientstore.Store{}}, sif) @@ -125,9 +125,9 @@ func TestPluginEndorserGreenPath(t *testing.T) { // was used to service the request. // Also - check that the Init() wasn't called more than once on the plugin. endorsement, prpBytes, err = pluginEndorser.EndorseWithPlugin("plugin", "mychannel", nil, nil) - assert.NoError(t, err) - assert.Equal(t, expectedSignature, endorsement.Signature) - assert.Equal(t, expectedProposalResponsePayload, prpBytes) + require.NoError(t, err) + require.Equal(t, expectedSignature, endorsement.Signature) + require.Equal(t, expectedProposalResponsePayload, prpBytes) pluginFactory.AssertNumberOfCalls(t, "New", 1) plugin.AssertNumberOfCalls(t, "Init", 1) @@ -137,9 +137,9 @@ func TestPluginEndorserGreenPath(t *testing.T) { pluginFactory.On("New").Return(plugin).Once() plugin.On("Init", mock.Anything).Return(nil).Once() endorsement, prpBytes, err = pluginEndorser.EndorseWithPlugin("plugin", "", nil, nil) - assert.NoError(t, err) - assert.Equal(t, expectedSignature, endorsement.Signature) - assert.Equal(t, expectedProposalResponsePayload, prpBytes) + require.NoError(t, err) + require.Equal(t, expectedSignature, endorsement.Signature) + require.Equal(t, expectedProposalResponsePayload, prpBytes) plugin.AssertCalled(t, "Init", sif) } @@ -165,9 +165,9 @@ func TestPluginEndorserErrors(t *testing.T) { t.Run("PluginInitializationFailure", func(t *testing.T) { plugin.On("Init", mock.Anything, mock.Anything).Return(errors.New("plugin initialization failed")).Once() endorsement, prpBytes, err := pluginEndorser.EndorseWithPlugin("plugin", "mychannel", nil, nil) - assert.Nil(t, endorsement) - assert.Nil(t, prpBytes) - assert.Contains(t, err.Error(), "plugin initialization failed") + require.Nil(t, endorsement) + require.Nil(t, prpBytes) + require.Contains(t, err.Error(), "plugin initialization failed") }) } @@ -242,10 +242,10 @@ func TestTransientStore(t *testing.T) { }) _, prpBytes, err := pluginEndorser.EndorseWithPlugin("plugin", "mychannel", nil, nil) - assert.NoError(t, err) + require.NoError(t, err) txrws := &rwset.TxPvtReadWriteSet{} err = proto.Unmarshal(prpBytes, txrws) - assert.NoError(t, err) - assert.True(t, proto.Equal(rws, txrws)) + require.NoError(t, err) + require.True(t, proto.Equal(rws, txrws)) } diff --git a/core/endorser/pvtrwset_assembler_test.go b/core/endorser/pvtrwset_assembler_test.go index e79ede9fee1..2f8608a28a5 100644 --- a/core/endorser/pvtrwset_assembler_test.go +++ b/core/endorser/pvtrwset_assembler_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/core/ledger/mock" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestAssemblePvtRWSet(t *testing.T) { @@ -65,17 +65,17 @@ func TestAssemblePvtRWSet(t *testing.T) { } pvtReadWriteSetWithConfigInfo, err := AssemblePvtRWSet("", privData, nil, mockDeployedCCInfoProvider) - assert.NoError(t, err) - assert.NotNil(t, pvtReadWriteSetWithConfigInfo) - assert.NotNil(t, pvtReadWriteSetWithConfigInfo.PvtRwset) + require.NoError(t, err) + require.NotNil(t, pvtReadWriteSetWithConfigInfo) + require.NotNil(t, pvtReadWriteSetWithConfigInfo.PvtRwset) configPackages := pvtReadWriteSetWithConfigInfo.CollectionConfigs - assert.NotNil(t, configPackages) + require.NotNil(t, configPackages) configs, found := configPackages["myCC"] - assert.True(t, found) - assert.Equal(t, 1, len(configs.Config)) - assert.NotNil(t, configs.Config[0]) - assert.NotNil(t, configs.Config[0].GetStaticCollectionConfig()) - assert.Equal(t, "mycollection-1", configs.Config[0].GetStaticCollectionConfig().Name) - assert.Equal(t, 1, len(pvtReadWriteSetWithConfigInfo.PvtRwset.NsPvtRwset)) + require.True(t, found) + require.Equal(t, 1, len(configs.Config)) + require.NotNil(t, configs.Config[0]) + require.NotNil(t, configs.Config[0].GetStaticCollectionConfig()) + require.Equal(t, "mycollection-1", configs.Config[0].GetStaticCollectionConfig().Name) + require.Equal(t, 1, len(pvtReadWriteSetWithConfigInfo.PvtRwset.NsPvtRwset)) } diff --git a/core/handlers/auth/auth_test.go b/core/handlers/auth/auth_test.go index a67bee74954..c7c4a92b6e5 100644 --- a/core/handlers/auth/auth_test.go +++ b/core/handlers/auth/auth_test.go @@ -12,7 +12,7 @@ import ( "testing" "github.com/hyperledger/fabric-protos-go/peer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestChainFilters(t *testing.T) { @@ -25,18 +25,18 @@ func TestChainFilters(t *testing.T) { firstFilter := ChainFilters(endorser, filters...) firstFilter.ProcessProposal(context.Background(), initialProposal) for i := 0; i < iterations; i++ { - assert.Equal(t, uint32(i), filters[i].(*mockAuthFilter).sequence, + require.Equal(t, uint32(i), filters[i].(*mockAuthFilter).sequence, "Expected filters to be invoked in the provided sequence") } - assert.Equal(t, uint32(iterations), endorser.sequence, + require.Equal(t, uint32(iterations), endorser.sequence, "Expected endorser to be invoked after filters") // Test with no filters binary.BigEndian.PutUint32(initialProposal.ProposalBytes, 0) firstFilter = ChainFilters(endorser) firstFilter.ProcessProposal(context.Background(), initialProposal) - assert.Equal(t, uint32(0), endorser.sequence, + require.Equal(t, uint32(0), endorser.sequence, "Expected endorser to be invoked first") } diff --git a/core/handlers/auth/filter/expiration_test.go b/core/handlers/auth/filter/expiration_test.go index 09c375aeaef..477b17f547a 100644 --- a/core/handlers/auth/filter/expiration_test.go +++ b/core/handlers/auth/filter/expiration_test.go @@ -17,7 +17,7 @@ import ( "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type mutator func([]byte) []byte @@ -33,12 +33,12 @@ func corruptMutator(b []byte) []byte { func createX509Identity(t *testing.T, certFileName string) []byte { certBytes, err := ioutil.ReadFile(filepath.Join("testdata", certFileName)) - assert.NoError(t, err) + require.NoError(t, err) sId := &msp.SerializedIdentity{ IdBytes: certBytes, } idBytes, err := proto.Marshal(sId) - assert.NoError(t, err) + require.NoError(t, err) return idBytes } @@ -49,12 +49,12 @@ func createIdemixIdentity(t *testing.T) []byte { Ou: []byte("OU1"), } idemixBytes, err := proto.Marshal(idemixId) - assert.NoError(t, err) + require.NoError(t, err) sId := &msp.SerializedIdentity{ IdBytes: idemixBytes, } idBytes, err := proto.Marshal(sId) - assert.NoError(t, err) + require.NoError(t, err) return idBytes } @@ -63,13 +63,13 @@ func createSignedProposal(t *testing.T, serializedIdentity []byte, corruptSigHdr hdr := protoutil.MakePayloadHeader(&common.ChannelHeader{}, sHdr) hdr.SignatureHeader = corruptSigHdr(hdr.SignatureHeader) hdrBytes, err := proto.Marshal(hdr) - assert.NoError(t, err) + require.NoError(t, err) prop := &peer.Proposal{ Header: hdrBytes, } prop.Header = corruptHdr(prop.Header) propBytes, err := proto.Marshal(prop) - assert.NoError(t, err) + require.NoError(t, err) return &peer.SignedProposal{ ProposalBytes: propBytes, } @@ -95,42 +95,42 @@ func TestExpirationCheckFilter(t *testing.T) { // Scenario I: Expired x509 identity sp := createValidSignedProposal(t, createX509Identity(t, "expiredCert.pem")) _, err := auth.ProcessProposal(context.Background(), sp) - assert.Equal(t, err.Error(), "identity expired") - assert.False(t, nextEndorser.invoked) + require.Equal(t, err.Error(), "identity expired") + require.False(t, nextEndorser.invoked) // Scenario II: Not expired x509 identity sp = createValidSignedProposal(t, createX509Identity(t, "notExpiredCert.pem")) _, err = auth.ProcessProposal(context.Background(), sp) - assert.NoError(t, err) - assert.True(t, nextEndorser.invoked) + require.NoError(t, err) + require.True(t, nextEndorser.invoked) nextEndorser.invoked = false // Scenario III: Idemix identity sp = createValidSignedProposal(t, createIdemixIdentity(t)) _, err = auth.ProcessProposal(context.Background(), sp) - assert.NoError(t, err) - assert.True(t, nextEndorser.invoked) + require.NoError(t, err) + require.True(t, nextEndorser.invoked) nextEndorser.invoked = false // Scenario IV: Malformed proposal sp = createValidSignedProposal(t, createX509Identity(t, "notExpiredCert.pem")) sp.ProposalBytes = append(sp.ProposalBytes, 0) _, err = auth.ProcessProposal(context.Background(), sp) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed parsing proposal") - assert.False(t, nextEndorser.invoked) + require.Error(t, err) + require.Contains(t, err.Error(), "failed parsing proposal") + require.False(t, nextEndorser.invoked) // Scenario V: Malformed signature header sp = createSignedProposalWithInvalidSigHeader(t, createX509Identity(t, "notExpiredCert.pem")) _, err = auth.ProcessProposal(context.Background(), sp) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed parsing signature header") - assert.False(t, nextEndorser.invoked) + require.Error(t, err) + require.Contains(t, err.Error(), "failed parsing signature header") + require.False(t, nextEndorser.invoked) // Scenario VI: Malformed header sp = createSignedProposalWithInvalidHeader(t, createX509Identity(t, "notExpiredCert.pem")) _, err = auth.ProcessProposal(context.Background(), sp) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed parsing header") - assert.False(t, nextEndorser.invoked) + require.Error(t, err) + require.Contains(t, err.Error(), "failed parsing header") + require.False(t, nextEndorser.invoked) } diff --git a/core/handlers/auth/filter/filter_test.go b/core/handlers/auth/filter/filter_test.go index c82376019e2..04782e0cd06 100644 --- a/core/handlers/auth/filter/filter_test.go +++ b/core/handlers/auth/filter/filter_test.go @@ -11,7 +11,7 @@ import ( "testing" "github.com/hyperledger/fabric-protos-go/peer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type mockEndorserServer struct { @@ -28,5 +28,5 @@ func TestFilter(t *testing.T) { nextEndorser := &mockEndorserServer{} auth.Init(nextEndorser) auth.ProcessProposal(context.Background(), nil) - assert.True(t, nextEndorser.invoked) + require.True(t, nextEndorser.invoked) } diff --git a/core/handlers/auth/plugin/filter_test.go b/core/handlers/auth/plugin/filter_test.go index 75ce736e801..7c0f9f5a879 100644 --- a/core/handlers/auth/plugin/filter_test.go +++ b/core/handlers/auth/plugin/filter_test.go @@ -11,7 +11,7 @@ import ( "testing" "github.com/hyperledger/fabric-protos-go/peer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type mockEndorserServer struct { @@ -29,5 +29,5 @@ func TestFilter(t *testing.T) { nextEndorser := &mockEndorserServer{} auth.Init(nextEndorser) auth.ProcessProposal(context.Background(), nil) - assert.True(t, nextEndorser.invoked) + require.True(t, nextEndorser.invoked) } diff --git a/core/handlers/decoration/decoration_test.go b/core/handlers/decoration/decoration_test.go index a4e9ead1c79..fec168ab55f 100644 --- a/core/handlers/decoration/decoration_test.go +++ b/core/handlers/decoration/decoration_test.go @@ -11,7 +11,7 @@ import ( "testing" "github.com/hyperledger/fabric-protos-go/peer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const ( @@ -28,11 +28,11 @@ func TestApplyDecorations(t *testing.T) { finalInput := Apply(nil, initialInput, decorators...) for i := 0; i < iterations; i++ { - assert.Equal(t, uint32(i), decorators[i].(*mockDecorator).sequence, + require.Equal(t, uint32(i), decorators[i].(*mockDecorator).sequence, "Expected decorators to be applied in the provided sequence") } - assert.Equal(t, uint32(iterations), binary.BigEndian.Uint32(finalInput.Decorations[decorationKey]), + require.Equal(t, uint32(iterations), binary.BigEndian.Uint32(finalInput.Decorations[decorationKey]), "Expected decorators to be applied in the provided sequence") } diff --git a/core/handlers/decoration/decorator/decorator_test.go b/core/handlers/decoration/decorator/decorator_test.go index 941854deeb8..b3924f16037 100644 --- a/core/handlers/decoration/decorator/decorator_test.go +++ b/core/handlers/decoration/decorator/decorator_test.go @@ -10,7 +10,7 @@ import ( "testing" "github.com/hyperledger/fabric-protos-go/peer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestDecorator(t *testing.T) { @@ -19,5 +19,5 @@ func TestDecorator(t *testing.T) { Args: [][]byte{{1, 2, 3}}, } out := dec.Decorate(nil, in) - assert.Equal(t, in, out) + require.Equal(t, in, out) } diff --git a/core/handlers/decoration/plugin/decorator_test.go b/core/handlers/decoration/plugin/decorator_test.go index 44df1925e04..5608982ff8f 100644 --- a/core/handlers/decoration/plugin/decorator_test.go +++ b/core/handlers/decoration/plugin/decorator_test.go @@ -10,7 +10,7 @@ import ( "testing" "github.com/hyperledger/fabric-protos-go/peer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestDecorator(t *testing.T) { @@ -19,5 +19,5 @@ func TestDecorator(t *testing.T) { Args: [][]byte{{1, 2, 3}}, } out := dec.Decorate(nil, in) - assert.Equal(t, in, out) + require.Equal(t, in, out) } diff --git a/core/handlers/endorsement/builtin/default_endorsement_test.go b/core/handlers/endorsement/builtin/default_endorsement_test.go index 3b0040c45e4..258306bca44 100644 --- a/core/handlers/endorsement/builtin/default_endorsement_test.go +++ b/core/handlers/endorsement/builtin/default_endorsement_test.go @@ -14,8 +14,8 @@ import ( "github.com/hyperledger/fabric/core/handlers/endorsement/builtin" mocks2 "github.com/hyperledger/fabric/core/handlers/endorsement/builtin/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestDefaultEndorsement(t *testing.T) { @@ -24,39 +24,39 @@ func TestDefaultEndorsement(t *testing.T) { // Scenario I: Don't pass any dependencies, and observe that the initialization fails err := endorser.Init() - assert.Equal(t, "could not find SigningIdentityFetcher in dependencies", err.Error()) + require.Equal(t, "could not find SigningIdentityFetcher in dependencies", err.Error()) // Scenario II: Pass into init a SigningIdentityFetcher sif := &mocks.SigningIdentityFetcher{} // Pass also another item just to ensure it is ignored err = endorser.Init("foo", sif) - assert.NoError(t, err) + require.NoError(t, err) // Scenario III: Obtaining a signing identity fails sif.On("SigningIdentityForRequest", mock.Anything).Return(nil, errors.New("foo")).Once() _, _, err = endorser.Endorse(nil, nil) - assert.Contains(t, err.Error(), "foo") + require.Contains(t, err.Error(), "foo") // Scenario IV: Obtaining a signing identity succeeds but serializing the identity fails sid := &mocks2.SigningIdentity{} sid.On("Serialize").Return(nil, errors.New("bar")).Once() sif.On("SigningIdentityForRequest", mock.Anything).Return(sid, nil) _, _, err = endorser.Endorse(nil, nil) - assert.Contains(t, err.Error(), "bar") + require.Contains(t, err.Error(), "bar") // Scenario V: Serializing the identity succeeds but signing fails sid.On("Serialize").Return([]byte{1, 2, 3}, nil) sid.On("Sign", mock.Anything).Return(nil, errors.New("baz")).Once() _, _, err = endorser.Endorse([]byte{1, 1, 1, 1, 1}, nil) - assert.Contains(t, err.Error(), "baz") + require.Contains(t, err.Error(), "baz") // Scenario VI: Signing succeeds sid.On("Serialize").Return([]byte{1, 2, 3}, nil) sid.On("Sign", mock.Anything).Return([]byte{10, 20, 30}, nil).Once() endorsement, resp, err := endorser.Endorse([]byte{1, 1, 1, 1, 1}, nil) - assert.NoError(t, err) - assert.Equal(t, resp, []byte{1, 1, 1, 1, 1}) - assert.Equal(t, &peer.Endorsement{ + require.NoError(t, err) + require.Equal(t, resp, []byte{1, 1, 1, 1, 1}) + require.Equal(t, &peer.Endorsement{ Signature: []byte{10, 20, 30}, Endorser: []byte{1, 2, 3}, }, endorsement) diff --git a/core/handlers/endorsement/plugin/plugin_test.go b/core/handlers/endorsement/plugin/plugin_test.go index d76a253687d..a794b1a099c 100644 --- a/core/handlers/endorsement/plugin/plugin_test.go +++ b/core/handlers/endorsement/plugin/plugin_test.go @@ -14,8 +14,8 @@ import ( "github.com/hyperledger/fabric/core/endorser/mocks" mocks2 "github.com/hyperledger/fabric/core/handlers/endorsement/builtin/mocks" plgn "github.com/hyperledger/fabric/core/handlers/endorsement/plugin" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestEndorsementPlugin(t *testing.T) { @@ -23,37 +23,37 @@ func TestEndorsementPlugin(t *testing.T) { plugin := factory.New() dependency := &struct{}{} err := plugin.Init(dependency) - assert.EqualError(t, err, "could not find SigningIdentityFetcher in dependencies") + require.EqualError(t, err, "could not find SigningIdentityFetcher in dependencies") sif := &mocks.SigningIdentityFetcher{} err1 := plugin.Init(sif) - assert.NoError(t, err1) + require.NoError(t, err1) // For each test, mock methods are called only once. Check it for them. // SigningIdentity fails sif.On("SigningIdentityForRequest", mock.Anything).Return(nil, errors.New("signingIdentityForRequestReturnsError")).Once() endorsement2, prepBytes2, err2 := plugin.Endorse(nil, nil) - assert.Nil(t, endorsement2) - assert.Nil(t, prepBytes2) - assert.EqualError(t, err2, "failed fetching signing identity: signingIdentityForRequestReturnsError") + require.Nil(t, endorsement2) + require.Nil(t, prepBytes2) + require.EqualError(t, err2, "failed fetching signing identity: signingIdentityForRequestReturnsError") // Serializing the identity fails sid := &mocks2.SigningIdentity{} sid.On("Serialize").Return(nil, errors.New("serializeReturnsError")).Once() sif.On("SigningIdentityForRequest", mock.Anything).Return(sid, nil).Once() endorsement3, prepBytes3, err3 := plugin.Endorse(nil, nil) - assert.Nil(t, endorsement3) - assert.Nil(t, prepBytes3) - assert.EqualError(t, err3, "could not serialize the signing identity: serializeReturnsError") + require.Nil(t, endorsement3) + require.Nil(t, prepBytes3) + require.EqualError(t, err3, "could not serialize the signing identity: serializeReturnsError") // Signing fails sid.On("Serialize").Return([]byte("Endorser4"), nil).Once() sid.On("Sign", mock.Anything).Return(nil, errors.New("signReturnsError")).Once() sif.On("SigningIdentityForRequest", mock.Anything).Return(sid, nil).Once() endorsement4, prepBytes4, err4 := plugin.Endorse([]byte("prpBytes4"), nil) - assert.Nil(t, endorsement4) - assert.Nil(t, prepBytes4) - assert.EqualError(t, err4, "could not sign the proposal response payload: signReturnsError") + require.Nil(t, endorsement4) + require.Nil(t, prepBytes4) + require.EqualError(t, err4, "could not sign the proposal response payload: signReturnsError") // Success sid.On("Serialize").Return([]byte("Endorser5"), nil).Once() @@ -61,7 +61,7 @@ func TestEndorsementPlugin(t *testing.T) { sif.On("SigningIdentityForRequest", mock.Anything).Return(sid, nil).Once() endorsement5, prpBytes5, err5 := plugin.Endorse([]byte("prpBytes5"), nil) expected5 := &peer.Endorsement{Signature: []byte("Signature5"), Endorser: []byte("Endorser5")} - assert.NoError(t, err5) - assert.Equal(t, expected5, endorsement5) - assert.Equal(t, []byte("prpBytes5"), prpBytes5) + require.NoError(t, err5) + require.Equal(t, expected5, endorsement5) + require.Equal(t, []byte("prpBytes5"), prpBytes5) } diff --git a/core/handlers/library/registry_plugin_test.go b/core/handlers/library/registry_plugin_test.go index 802ed440719..260e7e8422f 100644 --- a/core/handlers/library/registry_plugin_test.go +++ b/core/handlers/library/registry_plugin_test.go @@ -18,7 +18,7 @@ import ( "github.com/hyperledger/fabric-protos-go/peer" endorsement "github.com/hyperledger/fabric/core/handlers/endorsement/api" validation "github.com/hyperledger/fabric/core/handlers/validation/api" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const ( @@ -39,14 +39,14 @@ func buildPlugin(t *testing.T, dest, pkg string) { } cmd.Args = append(cmd.Args, pkg) output, err := cmd.CombinedOutput() - assert.NoError(t, err, "Could not build plugin: "+string(output)) + require.NoError(t, err, "Could not build plugin: "+string(output)) } func TestLoadAuthPlugin(t *testing.T) { endorser := &mockEndorserServer{} testDir, err := ioutil.TempDir("", "") - assert.NoError(t, err, "Could not create temp directory for plugins") + require.NoError(t, err, "Could not create temp directory for plugins") defer os.Remove(testDir) pluginPath := filepath.Join(testDir, "authplugin.so") @@ -54,11 +54,11 @@ func TestLoadAuthPlugin(t *testing.T) { testReg := registry{} testReg.loadPlugin(pluginPath, Auth) - assert.Len(t, testReg.filters, 1, "Expected filter to be registered") + require.Len(t, testReg.filters, 1, "Expected filter to be registered") testReg.filters[0].Init(endorser) testReg.filters[0].ProcessProposal(context.TODO(), nil) - assert.True(t, endorser.invoked, "Expected filter to invoke endorser on invoke") + require.True(t, endorser.invoked, "Expected filter to invoke endorser on invoke") } func TestLoadDecoratorPlugin(t *testing.T) { @@ -66,7 +66,7 @@ func TestLoadDecoratorPlugin(t *testing.T) { testInput := &peer.ChaincodeInput{Args: [][]byte{[]byte("test")}} testDir, err := ioutil.TempDir("", "") - assert.NoError(t, err, "Could not create temp directory for plugins") + require.NoError(t, err, "Could not create temp directory for plugins") defer os.Remove(testDir) pluginPath := filepath.Join(testDir, "decoratorplugin.so") @@ -74,15 +74,15 @@ func TestLoadDecoratorPlugin(t *testing.T) { testReg := registry{} testReg.loadPlugin(pluginPath, Decoration) - assert.Len(t, testReg.decorators, 1, "Expected decorator to be registered") + require.Len(t, testReg.decorators, 1, "Expected decorator to be registered") decoratedInput := testReg.decorators[0].Decorate(testProposal, testInput) - assert.True(t, proto.Equal(decoratedInput, testInput), "Expected chaincode input to remain unchanged") + require.True(t, proto.Equal(decoratedInput, testInput), "Expected chaincode input to remain unchanged") } func TestEndorsementPlugin(t *testing.T) { testDir, err := ioutil.TempDir("", "") - assert.NoError(t, err, "Could not create temp directory for plugins") + require.NoError(t, err, "Could not create temp directory for plugins") defer os.Remove(testDir) pluginPath := filepath.Join(testDir, "endorsementplugin.so") @@ -92,18 +92,18 @@ func TestEndorsementPlugin(t *testing.T) { testReg.loadPlugin(pluginPath, Endorsement, "escc") mapping := testReg.Lookup(Endorsement).(map[string]endorsement.PluginFactory) factory := mapping["escc"] - assert.NotNil(t, factory) + require.NotNil(t, factory) instance := factory.New() - assert.NotNil(t, instance) - assert.NoError(t, instance.Init()) + require.NotNil(t, instance) + require.NoError(t, instance.Init()) _, output, err := instance.Endorse([]byte{1, 2, 3}, nil) - assert.NoError(t, err) - assert.Equal(t, []byte{1, 2, 3}, output) + require.NoError(t, err) + require.Equal(t, []byte{1, 2, 3}, output) } func TestValidationPlugin(t *testing.T) { testDir, err := ioutil.TempDir("", "") - assert.NoError(t, err, "Could not create temp directory for plugins") + require.NoError(t, err, "Could not create temp directory for plugins") defer os.Remove(testDir) pluginPath := filepath.Join(testDir, "validationplugin.so") @@ -113,12 +113,12 @@ func TestValidationPlugin(t *testing.T) { testReg.loadPlugin(pluginPath, Validation, "vscc") mapping := testReg.Lookup(Validation).(map[string]validation.PluginFactory) factory := mapping["vscc"] - assert.NotNil(t, factory) + require.NotNil(t, factory) instance := factory.New() - assert.NotNil(t, instance) - assert.NoError(t, instance.Init()) + require.NotNil(t, instance) + require.NoError(t, instance.Init()) err = instance.Validate(nil, "", 0, 0) - assert.NoError(t, err) + require.NoError(t, err) } func TestLoadPluginInvalidPath(t *testing.T) { diff --git a/core/handlers/library/registry_test.go b/core/handlers/library/registry_test.go index 33f7707e055..40b67636878 100644 --- a/core/handlers/library/registry_test.go +++ b/core/handlers/library/registry_test.go @@ -11,7 +11,7 @@ import ( "github.com/hyperledger/fabric/core/handlers/auth" "github.com/hyperledger/fabric/core/handlers/decoration" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInitRegistry(t *testing.T) { @@ -19,18 +19,18 @@ func TestInitRegistry(t *testing.T) { AuthFilters: []*HandlerConfig{{Name: "DefaultAuth"}}, Decorators: []*HandlerConfig{{Name: "DefaultDecorator"}}, }) - assert.NotNil(t, r) + require.NotNil(t, r) authHandlers := r.Lookup(Auth) - assert.NotNil(t, authHandlers) + require.NotNil(t, authHandlers) filters, isAuthFilters := authHandlers.([]auth.Filter) - assert.True(t, isAuthFilters) - assert.Len(t, filters, 1) + require.True(t, isAuthFilters) + require.Len(t, filters, 1) decorationHandlers := r.Lookup(Decoration) - assert.NotNil(t, decorationHandlers) + require.NotNil(t, decorationHandlers) decorators, isDecorators := decorationHandlers.([]decoration.Decorator) - assert.True(t, isDecorators) - assert.Len(t, decorators, 1) + require.True(t, isDecorators) + require.Len(t, decorators, 1) } func TestLoadCompiledInvalid(t *testing.T) { diff --git a/core/handlers/validation/builtin/default_validation_test.go b/core/handlers/validation/builtin/default_validation_test.go index ceee68a3dcd..f380b2a3dee 100644 --- a/core/handlers/validation/builtin/default_validation_test.go +++ b/core/handlers/validation/builtin/default_validation_test.go @@ -17,8 +17,8 @@ import ( "github.com/hyperledger/fabric/core/handlers/validation/builtin/v12/mocks" v20mocks "github.com/hyperledger/fabric/core/handlers/validation/builtin/v20/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestInit(t *testing.T) { @@ -31,14 +31,14 @@ func TestInit(t *testing.T) { polEval := &mocks.PolicyEvaluator{} colRes := &v20mocks.CollectionResources{} - assert.Equal(t, "stateFetcher not passed in init", defValidation.Init(identityDeserializer, capabilities, polEval, colRes).Error()) - assert.Equal(t, "identityDeserializer not passed in init", defValidation.Init(capabilities, stateFetcher, polEval, colRes).Error()) - assert.Equal(t, "capabilities not passed in init", defValidation.Init(identityDeserializer, stateFetcher, polEval, colRes).Error()) - assert.Equal(t, "policy fetcher not passed in init", defValidation.Init(identityDeserializer, capabilities, stateFetcher, colRes).Error()) - assert.Equal(t, "collection resources not passed in init", defValidation.Init(identityDeserializer, capabilities, stateFetcher, polEval).Error()) + require.Equal(t, "stateFetcher not passed in init", defValidation.Init(identityDeserializer, capabilities, polEval, colRes).Error()) + require.Equal(t, "identityDeserializer not passed in init", defValidation.Init(capabilities, stateFetcher, polEval, colRes).Error()) + require.Equal(t, "capabilities not passed in init", defValidation.Init(identityDeserializer, stateFetcher, polEval, colRes).Error()) + require.Equal(t, "policy fetcher not passed in init", defValidation.Init(identityDeserializer, capabilities, stateFetcher, colRes).Error()) + require.Equal(t, "collection resources not passed in init", defValidation.Init(identityDeserializer, capabilities, stateFetcher, polEval).Error()) fullDeps := []Dependency{identityDeserializer, capabilities, stateFetcher, polEval, colRes} - assert.NoError(t, defValidation.Init(fullDeps...)) + require.NoError(t, defValidation.Init(fullDeps...)) } func TestErrorConversion(t *testing.T) { @@ -62,23 +62,23 @@ func TestErrorConversion(t *testing.T) { // Scenario I: An error that isn't *commonerrors.ExecutionFailureError or *commonerrors.VSCCEndorsementPolicyError // should cause a panic validator.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(errors.New("bla bla")).Once() - assert.Panics(t, func() { + require.Panics(t, func() { validation.Validate(block, "", 0, 0, plugin.SerializedPolicy("policy")) }) // Scenario II: Non execution errors are returned as is validator.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&commonerrors.VSCCEndorsementPolicyError{Err: errors.New("foo")}).Once() err := validation.Validate(block, "", 0, 0, plugin.SerializedPolicy("policy")) - assert.Equal(t, (&commonerrors.VSCCEndorsementPolicyError{Err: errors.New("foo")}).Error(), err.Error()) + require.Equal(t, (&commonerrors.VSCCEndorsementPolicyError{Err: errors.New("foo")}).Error(), err.Error()) // Scenario III: Execution errors are converted to the plugin error type validator.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&commonerrors.VSCCExecutionFailureError{Err: errors.New("bar")}).Once() err = validation.Validate(block, "", 0, 0, plugin.SerializedPolicy("policy")) - assert.Equal(t, &ExecutionFailureError{Reason: "bar"}, err) + require.Equal(t, &ExecutionFailureError{Reason: "bar"}, err) // Scenario IV: No errors are forwarded validator.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil).Once() - assert.NoError(t, validation.Validate(block, "", 0, 0, plugin.SerializedPolicy("policy"))) + require.NoError(t, validation.Validate(block, "", 0, 0, plugin.SerializedPolicy("policy"))) } func TestValidateBadInput(t *testing.T) { @@ -90,7 +90,7 @@ func TestValidateBadInput(t *testing.T) { // Scenario I: Nil block validator.On("Validate", mock.Anything, mock.Anything).Return(nil).Once() err := validation.Validate(nil, "", 0, 0, plugin.SerializedPolicy("policy")) - assert.Equal(t, "empty block", err.Error()) + require.Equal(t, "empty block", err.Error()) block := &common.Block{ Header: &common.BlockHeader{}, @@ -101,7 +101,7 @@ func TestValidateBadInput(t *testing.T) { // Scenario II: Block with 1 transaction, but position is at 1 also validator.On("Validate", mock.Anything, mock.Anything).Return(nil).Once() err = validation.Validate(block, "", 1, 0, plugin.SerializedPolicy("policy")) - assert.Equal(t, "block has only 1 transactions, but requested tx at position 1", err.Error()) + require.Equal(t, "block has only 1 transactions, but requested tx at position 1", err.Error()) // Scenario III: Block without header validator.On("Validate", mock.Anything, mock.Anything).Return(nil).Once() @@ -110,10 +110,10 @@ func TestValidateBadInput(t *testing.T) { Data: [][]byte{{}}, }, }, "", 0, 0, plugin.SerializedPolicy("policy")) - assert.Equal(t, "no block header", err.Error()) + require.Equal(t, "no block header", err.Error()) // Scenario IV: No serialized policy passed - assert.Panics(t, func() { + require.Panics(t, func() { validator.On("Validate", mock.Anything, mock.Anything).Return(nil).Once() err = validation.Validate(&common.Block{ Header: &common.BlockHeader{}, @@ -124,7 +124,7 @@ func TestValidateBadInput(t *testing.T) { }) // Scenario V: Policy passed isn't a serialized policy - assert.Panics(t, func() { + require.Panics(t, func() { validator.On("Validate", mock.Anything, mock.Anything).Return(nil).Once() err = validation.Validate(&common.Block{ Header: &common.BlockHeader{}, diff --git a/core/handlers/validation/builtin/v12/validation_logic_test.go b/core/handlers/validation/builtin/v12/validation_logic_test.go index fe6dc4a9407..325fc78f50d 100644 --- a/core/handlers/validation/builtin/v12/validation_logic_test.go +++ b/core/handlers/validation/builtin/v12/validation_logic_test.go @@ -37,7 +37,7 @@ import ( msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mocks/state.go -fake-name State . vsState @@ -395,13 +395,13 @@ func TestDeduplicateIdentity(t *testing.T) { } signedData, err := (&Validator{}).deduplicateIdentity(chaincodeActionPayload) - assert.NoError(t, err) + require.NoError(t, err) // The original bytes of proposalResponsePayload are preserved - assert.Equal(t, proposalResponsePayload, signedData[0].Data[:len(proposalResponsePayload)]) - assert.Equal(t, proposalResponsePayload, signedData[1].Data[:len(proposalResponsePayload)]) + require.Equal(t, proposalResponsePayload, signedData[0].Data[:len(proposalResponsePayload)]) + require.Equal(t, proposalResponsePayload, signedData[1].Data[:len(proposalResponsePayload)]) // And are suffixed with the identity bytes - assert.Equal(t, identity1, signedData[0].Data[len(proposalResponsePayload):]) - assert.Equal(t, identity2, signedData[1].Data[len(proposalResponsePayload):]) + require.Equal(t, identity1, signedData[0].Data[len(proposalResponsePayload):]) + require.Equal(t, identity2, signedData[1].Data[len(proposalResponsePayload):]) } func TestInvoke(t *testing.T) { @@ -411,18 +411,18 @@ func TestInvoke(t *testing.T) { var err error b := &common.Block{Data: &common.BlockData{Data: [][]byte{[]byte("a")}}} err = v.Validate(b, "foo", 0, 0, []byte("a")) - assert.Error(t, err) + require.Error(t, err) // (still) broken Envelope b = &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(&common.Envelope{Payload: []byte("barf")})}}} err = v.Validate(b, "foo", 0, 0, []byte("a")) - assert.Error(t, err) + require.Error(t, err) // (still) broken Envelope e := protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: []byte("barf")}})}) b = &common.Block{Data: &common.BlockData{Data: [][]byte{e}}} err = v.Validate(b, "foo", 0, 0, []byte("a")) - assert.Error(t, err) + require.Error(t, err) tx, err := createTx(false) if err != nil { @@ -437,7 +437,7 @@ func TestInvoke(t *testing.T) { // broken policy b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "foo", 0, 0, []byte("barf")) - assert.Error(t, err) + require.Error(t, err) policy, err := getSignedByMSPMemberPolicy(mspid) if err != nil { @@ -448,18 +448,18 @@ func TestInvoke(t *testing.T) { e = protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: protoutil.MarshalOrPanic(&common.ChannelHeader{Type: int32(common.HeaderType_ORDERER_TRANSACTION)})}})}) b = &common.Block{Data: &common.BlockData{Data: [][]byte{e}}} err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) + require.Error(t, err) // broken tx payload e = protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: protoutil.MarshalOrPanic(&common.ChannelHeader{Type: int32(common.HeaderType_ORDERER_TRANSACTION)})}})}) b = &common.Block{Data: &common.BlockData{Data: [][]byte{e}}} err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) + require.Error(t, err) // good path: signed by the right MSP b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "foo", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) // bad path: signed by the wrong MSP policy, err = getSignedByMSPMemberPolicy("barf") @@ -468,7 +468,7 @@ func TestInvoke(t *testing.T) { } err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) + require.Error(t, err) // bad path: signed by duplicated MSP identity policy, err = getSignedByOneMemberTwicePolicy(mspid) @@ -485,7 +485,7 @@ func TestInvoke(t *testing.T) { } b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) + require.Error(t, err) } func TestRWSetTooBig(t *testing.T) { @@ -510,9 +510,9 @@ func TestRWSetTooBig(t *testing.T) { rwsetBuilder.AddToWriteSet("lscc", "spurious", []byte("spurious")) sr, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) srBytes, err := sr.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.DEPLOY, srBytes) if err != nil { t.Fatalf("createTx returned err %s", err) @@ -531,7 +531,7 @@ func TestRWSetTooBig(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "LSCC can only issue a single putState upon deploy") + require.EqualError(t, err, "LSCC can only issue a single putState upon deploy") t.Logf("error: %s", err) } @@ -566,7 +566,7 @@ func TestValidateDeployFail(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "No read write set for lscc was found") + require.EqualError(t, err, "No read write set for lscc was found") /************************/ /* test bogus write set */ @@ -575,9 +575,9 @@ func TestValidateDeployFail(t *testing.T) { rwsetBuilder := rwsetutil.NewRWSetBuilder() rwsetBuilder.AddToWriteSet("lscc", ccname, []byte("barf")) sr, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) resBogusBytes, err := sr.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, resBogusBytes) if err != nil { t.Fatalf("createTx returned err %s", err) @@ -596,14 +596,14 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "unmarhsalling of ChaincodeData failed, error unexpected EOF") + require.EqualError(t, err, "unmarhsalling of ChaincodeData failed, error unexpected EOF") /**********************/ /* test bad LSCC args */ /**********************/ res, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxPutCds(ccname, ccver, lscc.DEPLOY, res, nil, false) if err != nil { @@ -623,14 +623,14 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "Wrong number of arguments for invocation lscc(deploy): expected at least 2, received 1") + require.EqualError(t, err, "Wrong number of arguments for invocation lscc(deploy): expected at least 2, received 1") /**********************/ /* test bad LSCC args */ /**********************/ res, err = createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxPutCds(ccname, ccver, lscc.DEPLOY, res, []byte("barf"), true) if err != nil { @@ -650,14 +650,14 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "GetChaincodeDeploymentSpec error error unmarshaling ChaincodeDeploymentSpec: unexpected EOF") + require.EqualError(t, err, "GetChaincodeDeploymentSpec error error unmarshaling ChaincodeDeploymentSpec: unexpected EOF") /***********************/ /* test bad cc version */ /***********************/ res, err = createCCDataRWset(ccname, ccname, ccver+".1", nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -677,7 +677,7 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "expected cc version 1, found 1.1") + require.EqualError(t, err, "expected cc version 1, found 1.1") /*************/ /* bad rwset */ @@ -701,14 +701,14 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "txRWSet.FromProtoBytes error unexpected EOF") + require.EqualError(t, err, "txRWSet.FromProtoBytes error unexpected EOF") /********************/ /* test bad cc name */ /********************/ res, err = createCCDataRWset(ccname+".badbad", ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -727,14 +727,14 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "expected key mycc, found mycc.badbad") + require.EqualError(t, err, "expected key mycc, found mycc.badbad") /**********************/ /* test bad cc name 2 */ /**********************/ res, err = createCCDataRWset(ccname, ccname+".badbad", ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -753,7 +753,7 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "expected cc name mycc, found mycc.badbad") + require.EqualError(t, err, "expected cc name mycc, found mycc.badbad") /************************/ /* test spurious writes */ @@ -770,9 +770,9 @@ func TestValidateDeployFail(t *testing.T) { rwsetBuilder.AddToWriteSet("lscc", ccname, cdbytes) rwsetBuilder.AddToWriteSet("bogusbogus", "key", []byte("val")) sr, err = rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) srBytes, err := sr.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, srBytes) if err != nil { t.Fatalf("createTx returned err %s", err) @@ -790,7 +790,7 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "LSCC invocation is attempting to write to namespace bogusbogus") + require.EqualError(t, err, "LSCC invocation is attempting to write to namespace bogusbogus") } @@ -807,7 +807,7 @@ func TestAlreadyDeployed(t *testing.T) { state["lscc"][ccname] = []byte{} simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.DEPLOY, simresres) if err != nil { @@ -827,7 +827,7 @@ func TestAlreadyDeployed(t *testing.T) { bl := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) - assert.EqualError(t, err, "Chaincode mycc is already instantiated") + require.EqualError(t, err, "Chaincode mycc is already instantiated") } func TestValidateDeployNoLedger(t *testing.T) { @@ -843,9 +843,9 @@ func TestValidateDeployNoLedger(t *testing.T) { ccver := "1" defaultPolicy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) res, err := createCCDataRWset(ccname, ccname, ccver, defaultPolicy) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -865,7 +865,7 @@ func TestValidateDeployNoLedger(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "could not retrieve QueryExecutor for channel testchannelid, error failed obtaining query executor") + require.EqualError(t, err, "could not retrieve QueryExecutor for channel testchannelid, error failed obtaining query executor") } func TestValidateDeployNOKNilChaincodeSpec(t *testing.T) { @@ -878,13 +878,13 @@ func TestValidateDeployNOKNilChaincodeSpec(t *testing.T) { ccver := "1" defaultPolicy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) res, err := createCCDataRWset(ccname, ccname, ccver, defaultPolicy) - assert.NoError(t, err) + require.NoError(t, err) // Create a ChaincodeDeploymentSpec with nil ChaincodeSpec for negative test cdsBytes, err := proto.Marshal(&peer.ChaincodeDeploymentSpec{}) - assert.NoError(t, err) + require.NoError(t, err) // ChaincodeDeploymentSpec/ChaincodeSpec are derived from cdsBytes (i.e., cis.ChaincodeSpec.Input.Args[2]) cis := &peer.ChaincodeInvocationSpec{ @@ -898,15 +898,15 @@ func TestValidateDeployNOKNilChaincodeSpec(t *testing.T) { } prop, _, err := protoutil.CreateProposalFromCIS(common.HeaderType_ENDORSER_TRANSACTION, "testchannelid", cis, sid) - assert.NoError(t, err) + require.NoError(t, err) ccid := &peer.ChaincodeID{Name: ccname, Version: ccver} presp, err := protoutil.CreateProposalResponse(prop.Header, prop.Payload, &peer.Response{Status: 200}, res, nil, ccid, id) - assert.NoError(t, err) + require.NoError(t, err) env, err := protoutil.CreateSignedTx(prop, id, presp) - assert.NoError(t, err) + require.NoError(t, err) // good path: signed by the right MSP policy, err := getSignedByMSPMemberPolicy(mspid) @@ -916,7 +916,7 @@ func TestValidateDeployNOKNilChaincodeSpec(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(env)}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "VSCC error: invocation of lscc(deploy) does not have appropriate arguments") + require.EqualError(t, err, "VSCC error: invocation of lscc(deploy) does not have appropriate arguments") } func TestValidateDeployOK(t *testing.T) { @@ -929,9 +929,9 @@ func TestValidateDeployOK(t *testing.T) { ccver := "1" defaultPolicy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) res, err := createCCDataRWset(ccname, ccname, ccver, defaultPolicy) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -951,7 +951,7 @@ func TestValidateDeployOK(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } func TestValidateDeployNOK(t *testing.T) { @@ -976,7 +976,7 @@ func TestValidateDeployNOK(t *testing.T) { v := newValidationInstance(state) policy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { @@ -987,7 +987,7 @@ func TestValidateDeployNOK(t *testing.T) { func testChaincodeDeployNOK(t *testing.T, ccName, ccVersion, errMsg string, v *Validator, policy []byte) { res, err := createCCDataRWset(ccName, ccName, ccVersion, policy) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccName, ccVersion, lscc.DEPLOY, res) if err != nil { @@ -1001,7 +1001,7 @@ func testChaincodeDeployNOK(t *testing.T, ccName, ccVersion, errMsg string, v *V b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, errMsg) + require.EqualError(t, err, errMsg) } func TestValidateDeployWithCollection(t *testing.T) { @@ -1043,13 +1043,13 @@ func TestValidateDeployWithCollection(t *testing.T) { // Test 1: Deploy chaincode with a valid collection configs --> success ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll2}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) defaultPolicy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) res, err := createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTxWithCollection(ccname, ccver, lscc.DEPLOY, res, defaultPolicy, ccpBytes) if err != nil { @@ -1069,17 +1069,17 @@ func TestValidateDeployWithCollection(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) // Test 2: Deploy the chaincode with duplicate collection configs --> no error as the // peer is not in V1_2Validation mode ccp = &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll2, coll1}} ccpBytes, err = proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) res, err = createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxWithCollection(ccname, ccver, lscc.DEPLOY, res, defaultPolicy, ccpBytes) if err != nil { @@ -1093,7 +1093,7 @@ func TestValidateDeployWithCollection(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) // Test 3: Once the V1_2Validation is enabled, validation should fail due to duplicate collection configs capabilities = &mocks.Capabilities{} @@ -1103,7 +1103,7 @@ func TestValidateDeployWithCollection(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "collection-name: mycollection1 -- found duplicate collection configuration") + require.EqualError(t, err, "collection-name: mycollection1 -- found duplicate collection configuration") } func TestValidateDeployWithPolicies(t *testing.T) { @@ -1120,7 +1120,7 @@ func TestValidateDeployWithPolicies(t *testing.T) { /*********************************************/ res, err := createCCDataRWset(ccname, ccname, ccver, policydsl.MarshaledAcceptAllPolicy) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -1140,14 +1140,14 @@ func TestValidateDeployWithPolicies(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) /********************************************/ /* test 2: failure with a reject-all policy */ /********************************************/ res, err = createCCDataRWset(ccname, ccname, ccver, policydsl.MarshaledRejectAllPolicy) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -1167,7 +1167,7 @@ func TestValidateDeployWithPolicies(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "chaincode instantiation policy violated, error signature set did not satisfy policy") + require.EqualError(t, err, "chaincode instantiation policy violated, error signature set did not satisfy policy") } func TestInvalidUpgrade(t *testing.T) { @@ -1180,7 +1180,7 @@ func TestInvalidUpgrade(t *testing.T) { ccver := "2" simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1200,7 +1200,7 @@ func TestInvalidUpgrade(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "Upgrading non-existent chaincode mycc") + require.EqualError(t, err, "Upgrading non-existent chaincode mycc") } func TestValidateUpgradeOK(t *testing.T) { @@ -1230,7 +1230,7 @@ func TestValidateUpgradeOK(t *testing.T) { state["lscc"][ccname] = cdbytes simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1244,7 +1244,7 @@ func TestValidateUpgradeOK(t *testing.T) { bl := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } func TestInvalidateUpgradeBadVersion(t *testing.T) { @@ -1274,7 +1274,7 @@ func TestInvalidateUpgradeBadVersion(t *testing.T) { state["lscc"][ccname] = cdbytes simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1288,7 +1288,7 @@ func TestInvalidateUpgradeBadVersion(t *testing.T) { bl := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) - assert.EqualError(t, err, fmt.Sprintf("Existing version of the cc on the ledger (%s) should be different from the upgraded one", ccver)) + require.EqualError(t, err, fmt.Sprintf("Existing version of the cc on the ledger (%s) should be different from the upgraded one", ccver)) } func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bool) { @@ -1348,13 +1348,13 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo // Note: We might change V1_2Validation with CollectionUpdate capability ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll2}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) defaultPolicy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) res, err := createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTxWithCollection(ccname, ccver, lscc.UPGRADE, res, defaultPolicy, ccpBytes) if err != nil { @@ -1369,9 +1369,9 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo bl := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) if V1_2Validation { - assert.NoError(t, err) + require.NoError(t, err) } else { - assert.Error(t, err, "LSCC can only issue a single putState upon deploy/upgrade") + require.Error(t, err, "LSCC can only issue a single putState upon deploy/upgrade") } state["lscc"][privdata.BuildCollectionKVSKey(ccname)] = ccpBytes @@ -1386,11 +1386,11 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo // V1_2Validation mode --> error ccp = &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll3}} ccpBytes, err = proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) res, err = createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxWithCollection(ccname, ccver, lscc.UPGRADE, res, defaultPolicy, ccpBytes) if err != nil { @@ -1404,7 +1404,7 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo bl = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) - assert.Error(t, err, "Some existing collection configurations are missing in the new collection configuration package") + require.Error(t, err, "Some existing collection configurations are missing in the new collection configuration package") ccver = "3" @@ -1412,11 +1412,11 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo // V1_2Validation mode --> error ccp = &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll3}} ccpBytes, err = proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) res, err = createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxWithCollection(ccname, ccver, lscc.UPGRADE, res, defaultPolicy, ccpBytes) if err != nil { @@ -1430,18 +1430,18 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo bl = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) - assert.Error(t, err, "existing collection named mycollection2 is missing in the new collection configuration package") + require.Error(t, err, "existing collection named mycollection2 is missing in the new collection configuration package") ccver = "3" // Test 4: valid collection config config and peer in V1_2Validation mode --> success ccp = &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll2, coll3}} ccpBytes, err = proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) res, err = createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxWithCollection(ccname, ccver, lscc.UPGRADE, res, defaultPolicy, ccpBytes) if err != nil { @@ -1455,7 +1455,7 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo bl = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } } @@ -1492,7 +1492,7 @@ func TestValidateUpgradeWithPoliciesOK(t *testing.T) { state["lscc"][ccname] = cdbytes simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1506,7 +1506,7 @@ func TestValidateUpgradeWithPoliciesOK(t *testing.T) { bl := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } func TestValidateUpgradeWithNewFailAllIP(t *testing.T) { @@ -1567,7 +1567,7 @@ func validateUpgradeWithNewFailAllIP(t *testing.T, ccver string, v11capability, simresres, err := createCCDataRWset(ccname, ccname, ccver, policydsl.MarshaledRejectAllPolicy, // here's where we specify the IP of the upgraded cc ) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1588,11 +1588,11 @@ func validateUpgradeWithNewFailAllIP(t *testing.T, ccver string, v11capability, if expecterr { bl := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) - assert.Error(t, err) + require.Error(t, err) } else { bl := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } } @@ -1622,7 +1622,7 @@ func TestValidateUpgradeWithPoliciesFail(t *testing.T) { ccver = "2" simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1642,7 +1642,7 @@ func TestValidateUpgradeWithPoliciesFail(t *testing.T) { bl := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}} err = v.Validate(bl, "lscc", 0, 0, policy) - assert.EqualError(t, err, "chaincode instantiation policy violated, error signature set did not satisfy policy") + require.EqualError(t, err, "chaincode instantiation policy violated, error signature set did not satisfy policy") } var id msp.SigningIdentity @@ -1692,8 +1692,8 @@ func testValidateCollection(t *testing.T, v *Validator, collectionConfigs []*pee ) error { ccp := &peer.CollectionConfigPackage{Config: collectionConfigs} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) lsccargs := [][]byte{nil, nil, nil, nil, nil, ccpBytes} rwset := &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: cdRWSet.Name}, {Key: privdata.BuildCollectionKVSKey(cdRWSet.Name), Value: ccpBytes}}} @@ -1723,36 +1723,36 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { // Test 1: More than two entries in the rwset -> error rwset := &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: ccid}, {Key: "b"}, {Key: "c"}}} err = v.validateRWSetAndCollection(rwset, cdRWSet, nil, lsccFunc, ac, chid) - assert.EqualError(t, err, "LSCC can only issue one or two putState upon deploy") + require.EqualError(t, err, "LSCC can only issue one or two putState upon deploy") // Test 2: Invalid key for the collection config package -> error rwset = &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: ccid}, {Key: "b"}}} err = v.validateRWSetAndCollection(rwset, cdRWSet, nil, lsccFunc, ac, chid) - assert.EqualError(t, err, "invalid key for the collection of chaincode mycc:1.0; expected 'mycc~collection', received 'b'") + require.EqualError(t, err, "invalid key for the collection of chaincode mycc:1.0; expected 'mycc~collection', received 'b'") // Test 3: No collection config package -> success rwset = &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: ccid}}} err = v.validateRWSetAndCollection(rwset, cdRWSet, nil, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) lsccargs := [][]byte{nil, nil, nil, nil, nil, nil} err = v.validateRWSetAndCollection(rwset, cdRWSet, lsccargs, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Test 4: Valid key for the collection config package -> success rwset = &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: ccid}, {Key: privdata.BuildCollectionKVSKey(ccid)}}} err = v.validateRWSetAndCollection(rwset, cdRWSet, lsccargs, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Test 5: Collection configuration of the lscc args doesn't match the rwset lsccargs = [][]byte{nil, nil, nil, nil, nil, []byte("barf")} err = v.validateRWSetAndCollection(rwset, cdRWSet, lsccargs, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection configuration arguments supplied for chaincode mycc:1.0 do not match the configuration in the lscc writeset") + require.EqualError(t, err, "collection configuration arguments supplied for chaincode mycc:1.0 do not match the configuration in the lscc writeset") // Test 6: Invalid collection config package -> error rwset = &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: ccid}, {Key: privdata.BuildCollectionKVSKey("mycc"), Value: []byte("barf")}}} err = v.validateRWSetAndCollection(rwset, cdRWSet, lsccargs, lsccFunc, ac, chid) - assert.EqualError(t, err, "invalid collection configuration supplied for chaincode mycc:1.0") + require.EqualError(t, err, "invalid collection configuration supplied for chaincode mycc:1.0") // Test 7: Valid collection config package -> success collName1 := "mycollection1" @@ -1768,11 +1768,11 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { coll2 := createCollectionConfig(collName2, policyEnvelope, requiredPeerCount, maximumPeerCount, blockToLive) err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Test 8: Duplicate collections in the collection config package -> success as the peer is in v1.1 validation mode err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll1}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Test 9: requiredPeerCount > maximumPeerCount -> success as the peer is in v1.1 validation mode collName3 := "mycollection3" @@ -1781,7 +1781,7 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { blockToLive = 10000 coll3 := createCollectionConfig(collName3, policyEnvelope, requiredPeerCount, maximumPeerCount, blockToLive) err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Enable v1.2 validation mode ac = capabilities.NewApplicationProvider(map[string]*common.Capability{ @@ -1790,7 +1790,7 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { // Test 10: Duplicate collections in the collection config package -> error err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll1}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection-name: mycollection1 -- found duplicate collection configuration") + require.EqualError(t, err, "collection-name: mycollection1 -- found duplicate collection configuration") // Test 11: requiredPeerCount < 0 -> error requiredPeerCount = -2 @@ -1798,7 +1798,7 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { blockToLive = 10000 coll3 = createCollectionConfig(collName3, policyEnvelope, requiredPeerCount, maximumPeerCount, blockToLive) err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection-name: mycollection3 -- requiredPeerCount (-2) cannot be less than zero", + require.EqualError(t, err, "collection-name: mycollection3 -- requiredPeerCount (-2) cannot be less than zero", collName3, maximumPeerCount, requiredPeerCount) // Test 11: requiredPeerCount > maximumPeerCount -> error @@ -1807,7 +1807,7 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { blockToLive = 10000 coll3 = createCollectionConfig(collName3, policyEnvelope, requiredPeerCount, maximumPeerCount, blockToLive) err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection-name: mycollection3 -- maximum peer count (1) cannot be less than the required peer count (2)") + require.EqualError(t, err, "collection-name: mycollection3 -- maximum peer count (1) cannot be less than the required peer count (2)") // Test 12: AND concatenation of orgs in access policy -> error requiredPeerCount = 1 @@ -1815,15 +1815,15 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { policyEnvelope = policydsl.Envelope(policydsl.And(policydsl.SignedBy(0), policydsl.SignedBy(1)), signers) coll3 = createCollectionConfig(collName3, policyEnvelope, requiredPeerCount, maximumPeerCount, blockToLive) err = testValidateCollection(t, v, []*peer.CollectionConfig{coll3}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection-name: mycollection3 -- error in member org policy: signature policy is not an OR concatenation, NOutOf 2") + require.EqualError(t, err, "collection-name: mycollection3 -- error in member org policy: signature policy is not an OR concatenation, NOutOf 2") // Test 13: deploy with existing collection config on the ledger -> error ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) + require.NoError(t, err) state["lscc"][privdata.BuildCollectionKVSKey(ccid)] = ccpBytes err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection data should not exist for chaincode mycc:1.0") + require.EqualError(t, err, "collection data should not exist for chaincode mycc:1.0") } func TestValidateRWSetAndCollectionForUpgrade(t *testing.T) { @@ -1859,36 +1859,36 @@ func TestValidateRWSetAndCollectionForUpgrade(t *testing.T) { ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll2}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) + require.NoError(t, err) // Test 1: no existing collection config package -> success err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) state["lscc"][privdata.BuildCollectionKVSKey(ccid)] = ccpBytes // Test 2: exactly same as the existing collection config package -> success err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Test 3: missing one existing collection (check based on the length) -> error err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "the following existing collections are missing in the new collection configuration package: [mycollection2]") + require.EqualError(t, err, "the following existing collections are missing in the new collection configuration package: [mycollection2]") // Test 4: missing one existing collection (check based on the collection names) -> error err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "the following existing collections are missing in the new collection configuration package: [mycollection2]") + require.EqualError(t, err, "the following existing collections are missing in the new collection configuration package: [mycollection2]") // Test 5: adding a new collection along with the existing collections -> success err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) newBlockToLive := blockToLive + 1 coll2 = createCollectionConfig(collName2, policyEnvelope, requiredPeerCount, maximumPeerCount, newBlockToLive) // Test 6: modify the BlockToLive in an existing collection -> error err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "the BlockToLive in the following existing collections must not be modified: [mycollection2]") + require.EqualError(t, err, "the BlockToLive in the following existing collections must not be modified: [mycollection2]") } var mockMSPIDGetter = func(cid string) []string { @@ -1962,9 +1962,9 @@ func TestInValidCollectionName(t *testing.T) { inValidNames := []string{"collection.1", "collection%2", ""} for _, name := range validNames { - assert.NoError(t, validateCollectionName(name), "Testing for name = "+name) + require.NoError(t, validateCollectionName(name), "Testing for name = "+name) } for _, name := range inValidNames { - assert.Error(t, validateCollectionName(name), "Testing for name = "+name) + require.Error(t, validateCollectionName(name), "Testing for name = "+name) } } diff --git a/core/handlers/validation/builtin/v13/validation_logic_test.go b/core/handlers/validation/builtin/v13/validation_logic_test.go index 2f3c76a97ad..93de0dfcaef 100644 --- a/core/handlers/validation/builtin/v13/validation_logic_test.go +++ b/core/handlers/validation/builtin/v13/validation_logic_test.go @@ -37,8 +37,8 @@ import ( msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mocks/state.go -fake-name State . vsState @@ -395,19 +395,19 @@ func TestStateBasedValidationFailure(t *testing.T) { // bad path: policy validation error sbvm.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&commonerrors.VSCCEndorsementPolicyError{Err: fmt.Errorf("some sbe validation err")}).Once() err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) - assert.IsType(t, &commonerrors.VSCCEndorsementPolicyError{}, err) + require.Error(t, err) + require.IsType(t, &commonerrors.VSCCEndorsementPolicyError{}, err) // bad path: execution error sbvm.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&commonerrors.VSCCExecutionFailureError{Err: fmt.Errorf("some sbe validation err")}).Once() err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) - assert.IsType(t, &commonerrors.VSCCExecutionFailureError{}, err) + require.Error(t, err) + require.IsType(t, &commonerrors.VSCCExecutionFailureError{}, err) // good path: signed by the right MSP sbvm.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil).Once() err = v.Validate(b, "foo", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } func TestInvoke(t *testing.T) { @@ -417,18 +417,18 @@ func TestInvoke(t *testing.T) { var err error b := &common.Block{Data: &common.BlockData{Data: [][]byte{[]byte("a")}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, []byte("a")) - assert.Error(t, err) + require.Error(t, err) // (still) broken Envelope b = &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(&common.Envelope{Payload: []byte("barf")})}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, []byte("a")) - assert.Error(t, err) + require.Error(t, err) // (still) broken Envelope e := protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: []byte("barf")}})}) b = &common.Block{Data: &common.BlockData{Data: [][]byte{e}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, []byte("a")) - assert.Error(t, err) + require.Error(t, err) tx, err := createTx(false) if err != nil { @@ -449,18 +449,18 @@ func TestInvoke(t *testing.T) { e = protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: protoutil.MarshalOrPanic(&common.ChannelHeader{Type: int32(common.HeaderType_ORDERER_TRANSACTION)})}})}) b = &common.Block{Data: &common.BlockData{Data: [][]byte{e}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) + require.Error(t, err) // broken tx payload e = protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: protoutil.MarshalOrPanic(&common.ChannelHeader{Type: int32(common.HeaderType_ORDERER_TRANSACTION)})}})}) b = &common.Block{Data: &common.BlockData{Data: [][]byte{e}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) + require.Error(t, err) // good path: signed by the right MSP b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } func TestRWSetTooBig(t *testing.T) { @@ -484,9 +484,9 @@ func TestRWSetTooBig(t *testing.T) { rwsetBuilder.AddToWriteSet("lscc", "spurious", []byte("spurious")) sr, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) srBytes, err := sr.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.DEPLOY, srBytes) if err != nil { t.Fatalf("createTx returned err %s", err) @@ -505,7 +505,7 @@ func TestRWSetTooBig(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "LSCC can only issue a single putState upon deploy") + require.EqualError(t, err, "LSCC can only issue a single putState upon deploy") } func TestValidateDeployFail(t *testing.T) { @@ -538,7 +538,7 @@ func TestValidateDeployFail(t *testing.T) { b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "No read write set for lscc was found") + require.EqualError(t, err, "No read write set for lscc was found") /************************/ /* test bogus write set */ @@ -547,9 +547,9 @@ func TestValidateDeployFail(t *testing.T) { rwsetBuilder := rwsetutil.NewRWSetBuilder() rwsetBuilder.AddToWriteSet("lscc", ccname, []byte("barf")) sr, err := rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) resBogusBytes, err := sr.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, resBogusBytes) if err != nil { t.Fatalf("createTx returned err %s", err) @@ -568,14 +568,14 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "unmarhsalling of ChaincodeData failed, error unexpected EOF") + require.EqualError(t, err, "unmarhsalling of ChaincodeData failed, error unexpected EOF") /**********************/ /* test bad LSCC args */ /**********************/ res, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxPutCds(ccname, ccver, lscc.DEPLOY, res, nil, false) if err != nil { @@ -595,14 +595,14 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "Wrong number of arguments for invocation lscc(deploy): expected at least 2, received 1") + require.EqualError(t, err, "Wrong number of arguments for invocation lscc(deploy): expected at least 2, received 1") /**********************/ /* test bad LSCC args */ /**********************/ res, err = createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxPutCds(ccname, ccver, lscc.DEPLOY, res, []byte("barf"), true) if err != nil { @@ -622,14 +622,14 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "GetChaincodeDeploymentSpec error error unmarshaling ChaincodeDeploymentSpec: unexpected EOF") + require.EqualError(t, err, "GetChaincodeDeploymentSpec error error unmarshaling ChaincodeDeploymentSpec: unexpected EOF") /***********************/ /* test bad cc version */ /***********************/ res, err = createCCDataRWset(ccname, ccname, ccver+".1", nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -649,7 +649,7 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, fmt.Sprintf("expected cc version %s, found %s", ccver, ccver+".1")) + require.EqualError(t, err, fmt.Sprintf("expected cc version %s, found %s", ccver, ccver+".1")) /*************/ /* bad rwset */ @@ -673,14 +673,14 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "txRWSet.FromProtoBytes error unexpected EOF") + require.EqualError(t, err, "txRWSet.FromProtoBytes error unexpected EOF") /********************/ /* test bad cc name */ /********************/ res, err = createCCDataRWset(ccname+".badbad", ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -699,14 +699,14 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, fmt.Sprintf("expected key %s, found %s", ccname, ccname+".badbad")) + require.EqualError(t, err, fmt.Sprintf("expected key %s, found %s", ccname, ccname+".badbad")) /**********************/ /* test bad cc name 2 */ /**********************/ res, err = createCCDataRWset(ccname, ccname+".badbad", ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -725,7 +725,7 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, fmt.Sprintf("expected cc name %s, found %s", ccname, ccname+".badbad")) + require.EqualError(t, err, fmt.Sprintf("expected cc name %s, found %s", ccname, ccname+".badbad")) /************************/ /* test suprious writes */ @@ -742,9 +742,9 @@ func TestValidateDeployFail(t *testing.T) { rwsetBuilder.AddToWriteSet("lscc", ccname, cdbytes) rwsetBuilder.AddToWriteSet("bogusbogus", "key", []byte("val")) sr, err = rwsetBuilder.GetTxSimulationResults() - assert.NoError(t, err) + require.NoError(t, err) srBytes, err := sr.GetPubSimulationBytes() - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, srBytes) if err != nil { t.Fatalf("createTx returned err %s", err) @@ -762,7 +762,7 @@ func TestValidateDeployFail(t *testing.T) { b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, fmt.Sprintf("LSCC invocation is attempting to write to namespace bogusbogus")) + require.EqualError(t, err, fmt.Sprintf("LSCC invocation is attempting to write to namespace bogusbogus")) } func TestAlreadyDeployed(t *testing.T) { @@ -778,7 +778,7 @@ func TestAlreadyDeployed(t *testing.T) { state["lscc"][ccname] = []byte{} simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.DEPLOY, simresres) if err != nil { @@ -803,7 +803,7 @@ func TestAlreadyDeployed(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(bl, "lscc", 0, 0, policy) - assert.EqualError(t, err, "Chaincode mycc is already instantiated") + require.EqualError(t, err, "Chaincode mycc is already instantiated") } func TestValidateDeployNoLedger(t *testing.T) { @@ -819,9 +819,9 @@ func TestValidateDeployNoLedger(t *testing.T) { ccver := "1" defaultPolicy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) res, err := createCCDataRWset(ccname, ccname, ccver, defaultPolicy) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -846,7 +846,7 @@ func TestValidateDeployNoLedger(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "could not retrieve QueryExecutor for channel testchannelid, error failed obtaining query executor") + require.EqualError(t, err, "could not retrieve QueryExecutor for channel testchannelid, error failed obtaining query executor") } func TestValidateDeployNOKNilChaincodeSpec(t *testing.T) { @@ -859,13 +859,13 @@ func TestValidateDeployNOKNilChaincodeSpec(t *testing.T) { ccver := "1" defaultPolicy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) res, err := createCCDataRWset(ccname, ccname, ccver, defaultPolicy) - assert.NoError(t, err) + require.NoError(t, err) // Create a ChaincodeDeploymentSpec with nil ChaincodeSpec for negative test cdsBytes, err := proto.Marshal(&peer.ChaincodeDeploymentSpec{}) - assert.NoError(t, err) + require.NoError(t, err) // ChaincodeDeploymentSpec/ChaincodeSpec are derived from cdsBytes (i.e., cis.ChaincodeSpec.Input.Args[2]) cis := &peer.ChaincodeInvocationSpec{ @@ -879,15 +879,15 @@ func TestValidateDeployNOKNilChaincodeSpec(t *testing.T) { } prop, _, err := protoutil.CreateProposalFromCIS(common.HeaderType_ENDORSER_TRANSACTION, "testchannelid", cis, sid) - assert.NoError(t, err) + require.NoError(t, err) ccid := &peer.ChaincodeID{Name: ccname, Version: ccver} presp, err := protoutil.CreateProposalResponse(prop.Header, prop.Payload, &peer.Response{Status: 200}, res, nil, ccid, id) - assert.NoError(t, err) + require.NoError(t, err) env, err := protoutil.CreateSignedTx(prop, id, presp) - assert.NoError(t, err) + require.NoError(t, err) // good path: signed by the right MSP policy, err := getSignedByMSPMemberPolicy(mspid) @@ -902,7 +902,7 @@ func TestValidateDeployNOKNilChaincodeSpec(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "VSCC error: invocation of lscc(deploy) does not have appropriate arguments") + require.EqualError(t, err, "VSCC error: invocation of lscc(deploy) does not have appropriate arguments") } func TestValidateDeployOK(t *testing.T) { @@ -915,9 +915,9 @@ func TestValidateDeployOK(t *testing.T) { ccver := "1" defaultPolicy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) res, err := createCCDataRWset(ccname, ccname, ccver, defaultPolicy) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -942,7 +942,7 @@ func TestValidateDeployOK(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(b, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } func TestValidateDeployNOK(t *testing.T) { @@ -967,7 +967,7 @@ func TestValidateDeployNOK(t *testing.T) { v := newValidationInstance(state) policy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { @@ -978,7 +978,7 @@ func TestValidateDeployNOK(t *testing.T) { func testChaincodeDeployNOK(t *testing.T, ccName, ccVersion, errMsg string, v *Validator, policy []byte) { res, err := createCCDataRWset(ccName, ccName, ccVersion, policy) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccName, ccVersion, lscc.DEPLOY, res) if err != nil { @@ -992,7 +992,7 @@ func testChaincodeDeployNOK(t *testing.T, ccName, ccVersion, errMsg string, v *V b := &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, errMsg) + require.EqualError(t, err, errMsg) } func TestValidateDeployWithCollection(t *testing.T) { @@ -1034,13 +1034,13 @@ func TestValidateDeployWithCollection(t *testing.T) { // Test 1: Deploy chaincode with a valid collection configs --> success ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll2}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) defaultPolicy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) res, err := createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTxWithCollection(ccname, ccver, lscc.DEPLOY, res, defaultPolicy, ccpBytes) if err != nil { @@ -1065,17 +1065,17 @@ func TestValidateDeployWithCollection(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(b, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) // Test 2: Deploy the chaincode with duplicate collection configs --> no error as the // peer is not in V1_2Validation mode ccp = &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll2, coll1}} ccpBytes, err = proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) res, err = createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxWithCollection(ccname, ccver, lscc.DEPLOY, res, defaultPolicy, ccpBytes) if err != nil { @@ -1094,7 +1094,7 @@ func TestValidateDeployWithCollection(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(b, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) // Test 3: Once the V1_2Validation is enabled, validation should fail due to duplicate collection configs capabilities = &mocks.Capabilities{} @@ -1109,7 +1109,7 @@ func TestValidateDeployWithCollection(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "collection-name: mycollection1 -- found duplicate collection configuration") + require.EqualError(t, err, "collection-name: mycollection1 -- found duplicate collection configuration") } func TestValidateDeployWithPolicies(t *testing.T) { @@ -1126,7 +1126,7 @@ func TestValidateDeployWithPolicies(t *testing.T) { /*********************************************/ res, err := createCCDataRWset(ccname, ccname, ccver, policydsl.MarshaledAcceptAllPolicy) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -1151,14 +1151,14 @@ func TestValidateDeployWithPolicies(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(b, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) /********************************************/ /* test 2: failure with a reject-all policy */ /********************************************/ res, err = createCCDataRWset(ccname, ccname, ccver, policydsl.MarshaledRejectAllPolicy) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTx(ccname, ccver, lscc.DEPLOY, res) if err != nil { @@ -1183,7 +1183,7 @@ func TestValidateDeployWithPolicies(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "chaincode instantiation policy violated, error signature set did not satisfy policy") + require.EqualError(t, err, "chaincode instantiation policy violated, error signature set did not satisfy policy") } func TestInvalidUpgrade(t *testing.T) { @@ -1196,7 +1196,7 @@ func TestInvalidUpgrade(t *testing.T) { ccver := "2" simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1221,7 +1221,7 @@ func TestInvalidUpgrade(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(b, "lscc", 0, 0, policy) - assert.EqualError(t, err, "Upgrading non-existent chaincode mycc") + require.EqualError(t, err, "Upgrading non-existent chaincode mycc") } func TestValidateUpgradeOK(t *testing.T) { @@ -1251,7 +1251,7 @@ func TestValidateUpgradeOK(t *testing.T) { state["lscc"][ccname] = cdbytes simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1270,7 +1270,7 @@ func TestValidateUpgradeOK(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(bl, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } func TestInvalidateUpgradeBadVersion(t *testing.T) { @@ -1300,7 +1300,7 @@ func TestInvalidateUpgradeBadVersion(t *testing.T) { state["lscc"][ccname] = cdbytes simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1319,7 +1319,7 @@ func TestInvalidateUpgradeBadVersion(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(bl, "lscc", 0, 0, policy) - assert.EqualError(t, err, fmt.Sprintf("Existing version of the cc on the ledger (%s) should be different from the upgraded one", ccver)) + require.EqualError(t, err, fmt.Sprintf("Existing version of the cc on the ledger (%s) should be different from the upgraded one", ccver)) } func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bool) { @@ -1379,13 +1379,13 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo // Note: We might change V1_2Validation with CollectionUpdate capability ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll2}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) defaultPolicy, err := getSignedByMSPAdminPolicy(mspid) - assert.NoError(t, err) + require.NoError(t, err) res, err := createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTxWithCollection(ccname, ccver, lscc.UPGRADE, res, defaultPolicy, ccpBytes) if err != nil { @@ -1405,9 +1405,9 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo } err = v.Validate(bl, "lscc", 0, 0, policy) if V1_2Validation { - assert.NoError(t, err) + require.NoError(t, err) } else { - assert.Error(t, err, "LSCC can only issue a single putState upon deploy/upgrade") + require.Error(t, err, "LSCC can only issue a single putState upon deploy/upgrade") } state["lscc"][privdata.BuildCollectionKVSKey(ccname)] = ccpBytes @@ -1422,11 +1422,11 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo // V1_2Validation mode --> error ccp = &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll3}} ccpBytes, err = proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) res, err = createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxWithCollection(ccname, ccver, lscc.UPGRADE, res, defaultPolicy, ccpBytes) if err != nil { @@ -1445,7 +1445,7 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo Header: &common.BlockHeader{}, } err = v.Validate(bl, "lscc", 0, 0, policy) - assert.Error(t, err, "Some existing collection configurations are missing in the new collection configuration package") + require.Error(t, err, "Some existing collection configurations are missing in the new collection configuration package") ccver = "3" @@ -1453,11 +1453,11 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo // V1_2Validation mode --> error ccp = &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll3}} ccpBytes, err = proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) res, err = createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxWithCollection(ccname, ccver, lscc.UPGRADE, res, defaultPolicy, ccpBytes) if err != nil { @@ -1476,18 +1476,18 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo Header: &common.BlockHeader{}, } err = v.Validate(bl, "lscc", 0, 0, policy) - assert.Error(t, err, "existing collection named mycollection2 is missing in the new collection configuration package") + require.Error(t, err, "existing collection named mycollection2 is missing in the new collection configuration package") ccver = "3" // Test 4: valid collection config config and peer in V1_2Validation mode --> success ccp = &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll2, coll3}} ccpBytes, err = proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) res, err = createCCDataRWsetWithCollection(ccname, ccname, ccver, defaultPolicy, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) tx, err = createLSCCTxWithCollection(ccname, ccver, lscc.UPGRADE, res, defaultPolicy, ccpBytes) if err != nil { @@ -1506,7 +1506,7 @@ func validateUpgradeWithCollection(t *testing.T, ccver string, V1_2Validation bo Header: &common.BlockHeader{}, } err = v.Validate(bl, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } } @@ -1543,7 +1543,7 @@ func TestValidateUpgradeWithPoliciesOK(t *testing.T) { state["lscc"][ccname] = cdbytes simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1562,7 +1562,7 @@ func TestValidateUpgradeWithPoliciesOK(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(bl, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } func TestValidateUpgradeWithNewFailAllIP(t *testing.T) { @@ -1623,7 +1623,7 @@ func validateUpgradeWithNewFailAllIP(t *testing.T, ccver string, v11capability, simresres, err := createCCDataRWset(ccname, ccname, ccver, policydsl.MarshaledRejectAllPolicy, // here's where we specify the IP of the upgraded cc ) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1649,10 +1649,10 @@ func validateUpgradeWithNewFailAllIP(t *testing.T, ccver string, v11capability, } if expecterr { err = v.Validate(bl, "lscc", 0, 0, policy) - assert.Error(t, err) + require.Error(t, err) } else { err = v.Validate(bl, "lscc", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } } @@ -1682,7 +1682,7 @@ func TestValidateUpgradeWithPoliciesFail(t *testing.T) { ccver = "2" simresres, err := createCCDataRWset(ccname, ccname, ccver, nil) - assert.NoError(t, err) + require.NoError(t, err) tx, err := createLSCCTx(ccname, ccver, lscc.UPGRADE, simresres) if err != nil { @@ -1707,7 +1707,7 @@ func TestValidateUpgradeWithPoliciesFail(t *testing.T) { Header: &common.BlockHeader{}, } err = v.Validate(bl, "lscc", 0, 0, policy) - assert.EqualError(t, err, "chaincode instantiation policy violated, error signature set did not satisfy policy") + require.EqualError(t, err, "chaincode instantiation policy violated, error signature set did not satisfy policy") } var id msp.SigningIdentity @@ -1757,8 +1757,8 @@ func testValidateCollection(t *testing.T, v *Validator, collectionConfigs []*pee ) error { ccp := &peer.CollectionConfigPackage{Config: collectionConfigs} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) lsccargs := [][]byte{nil, nil, nil, nil, nil, ccpBytes} rwset := &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: cdRWSet.Name}, {Key: privdata.BuildCollectionKVSKey(cdRWSet.Name), Value: ccpBytes}}} @@ -1788,36 +1788,36 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { // Test 1: More than two entries in the rwset -> error rwset := &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: ccid}, {Key: "b"}, {Key: "c"}}} err = v.validateRWSetAndCollection(rwset, cdRWSet, nil, lsccFunc, ac, chid) - assert.EqualError(t, err, "LSCC can only issue one or two putState upon deploy") + require.EqualError(t, err, "LSCC can only issue one or two putState upon deploy") // Test 2: Invalid key for the collection config package -> error rwset = &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: ccid}, {Key: "b"}}} err = v.validateRWSetAndCollection(rwset, cdRWSet, nil, lsccFunc, ac, chid) - assert.EqualError(t, err, "invalid key for the collection of chaincode mycc:1.0; expected 'mycc~collection', received 'b'") + require.EqualError(t, err, "invalid key for the collection of chaincode mycc:1.0; expected 'mycc~collection', received 'b'") // Test 3: No collection config package -> success rwset = &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: ccid}}} err = v.validateRWSetAndCollection(rwset, cdRWSet, nil, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) lsccargs := [][]byte{nil, nil, nil, nil, nil, nil} err = v.validateRWSetAndCollection(rwset, cdRWSet, lsccargs, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Test 4: Valid key for the collection config package -> success rwset = &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: ccid}, {Key: privdata.BuildCollectionKVSKey(ccid)}}} err = v.validateRWSetAndCollection(rwset, cdRWSet, lsccargs, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Test 5: Collection configuration of the lscc args doesn't match the rwset lsccargs = [][]byte{nil, nil, nil, nil, nil, []byte("barf")} err = v.validateRWSetAndCollection(rwset, cdRWSet, lsccargs, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection configuration arguments supplied for chaincode mycc:1.0 do not match the configuration in the lscc writeset") + require.EqualError(t, err, "collection configuration arguments supplied for chaincode mycc:1.0 do not match the configuration in the lscc writeset") // Test 6: Invalid collection config package -> error rwset = &kvrwset.KVRWSet{Writes: []*kvrwset.KVWrite{{Key: ccid}, {Key: privdata.BuildCollectionKVSKey("mycc"), Value: []byte("barf")}}} err = v.validateRWSetAndCollection(rwset, cdRWSet, lsccargs, lsccFunc, ac, chid) - assert.EqualError(t, err, "invalid collection configuration supplied for chaincode mycc:1.0") + require.EqualError(t, err, "invalid collection configuration supplied for chaincode mycc:1.0") // Test 7: Valid collection config package -> success collName1 := "mycollection1" @@ -1833,11 +1833,11 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { coll2 := createCollectionConfig(collName2, policyEnvelope, requiredPeerCount, maximumPeerCount, blockToLive) err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Test 8: Duplicate collections in the collection config package -> success as the peer is in v1.1 validation mode err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll1}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Test 9: requiredPeerCount > maximumPeerCount -> success as the peer is in v1.1 validation mode collName3 := "mycollection3" @@ -1846,7 +1846,7 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { blockToLive = 10000 coll3 := createCollectionConfig(collName3, policyEnvelope, requiredPeerCount, maximumPeerCount, blockToLive) err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Enable v1.2 validation mode ac = capabilities.NewApplicationProvider(map[string]*common.Capability{ @@ -1855,7 +1855,7 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { // Test 10: Duplicate collections in the collection config package -> error err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll1}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection-name: mycollection1 -- found duplicate collection configuration") + require.EqualError(t, err, "collection-name: mycollection1 -- found duplicate collection configuration") // Test 11: requiredPeerCount < 0 -> error requiredPeerCount = -2 @@ -1863,7 +1863,7 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { blockToLive = 10000 coll3 = createCollectionConfig(collName3, policyEnvelope, requiredPeerCount, maximumPeerCount, blockToLive) err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection-name: mycollection3 -- requiredPeerCount (1) cannot be less than zero (-2)", + require.EqualError(t, err, "collection-name: mycollection3 -- requiredPeerCount (1) cannot be less than zero (-2)", collName3, maximumPeerCount, requiredPeerCount) // Test 11: requiredPeerCount > maximumPeerCount -> error @@ -1872,7 +1872,7 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { blockToLive = 10000 coll3 = createCollectionConfig(collName3, policyEnvelope, requiredPeerCount, maximumPeerCount, blockToLive) err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection-name: mycollection3 -- maximum peer count (1) cannot be less than the required peer count (2)") + require.EqualError(t, err, "collection-name: mycollection3 -- maximum peer count (1) cannot be less than the required peer count (2)") // Test 12: AND concatenation of orgs in access policy -> error requiredPeerCount = 1 @@ -1880,15 +1880,15 @@ func TestValidateRWSetAndCollectionForDeploy(t *testing.T) { policyEnvelope = policydsl.Envelope(policydsl.And(policydsl.SignedBy(0), policydsl.SignedBy(1)), signers) coll3 = createCollectionConfig(collName3, policyEnvelope, requiredPeerCount, maximumPeerCount, blockToLive) err = testValidateCollection(t, v, []*peer.CollectionConfig{coll3}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection-name: mycollection3 -- error in member org policy: signature policy is not an OR concatenation, NOutOf 2") + require.EqualError(t, err, "collection-name: mycollection3 -- error in member org policy: signature policy is not an OR concatenation, NOutOf 2") // Test 13: deploy with existing collection config on the ledger -> error ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) + require.NoError(t, err) state["lscc"][privdata.BuildCollectionKVSKey(ccid)] = ccpBytes err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "collection data should not exist for chaincode mycc:1.0") + require.EqualError(t, err, "collection data should not exist for chaincode mycc:1.0") } func TestValidateRWSetAndCollectionForUpgrade(t *testing.T) { @@ -1924,36 +1924,36 @@ func TestValidateRWSetAndCollectionForUpgrade(t *testing.T) { ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1, coll2}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) + require.NoError(t, err) // Test 1: no existing collection config package -> success err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) state["lscc"][privdata.BuildCollectionKVSKey(ccid)] = ccpBytes // Test 2: exactly same as the existing collection config package -> success err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) // Test 3: missing one existing collection (check based on the length) -> error err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "the following existing collections are missing in the new collection configuration package: [mycollection2]") + require.EqualError(t, err, "the following existing collections are missing in the new collection configuration package: [mycollection2]") // Test 4: missing one existing collection (check based on the collection names) -> error err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "the following existing collections are missing in the new collection configuration package: [mycollection2]") + require.EqualError(t, err, "the following existing collections are missing in the new collection configuration package: [mycollection2]") // Test 5: adding a new collection along with the existing collections -> success err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.NoError(t, err) + require.NoError(t, err) newBlockToLive := blockToLive + 1 coll2 = createCollectionConfig(collName2, policyEnvelope, requiredPeerCount, maximumPeerCount, newBlockToLive) // Test 6: modify the BlockToLive in an existing collection -> error err = testValidateCollection(t, v, []*peer.CollectionConfig{coll1, coll2, coll3}, cdRWSet, lsccFunc, ac, chid) - assert.EqualError(t, err, "the BlockToLive in the following existing collections must not be modified: [mycollection2]") + require.EqualError(t, err, "the BlockToLive in the following existing collections must not be modified: [mycollection2]") } var mockMSPIDGetter = func(cid string) []string { @@ -2027,16 +2027,16 @@ func TestInValidCollectionName(t *testing.T) { inValidNames := []string{"collection.1", "collection%2", ""} for _, name := range validNames { - assert.NoError(t, validateCollectionName(name), "Testing for name = "+name) + require.NoError(t, validateCollectionName(name), "Testing for name = "+name) } for _, name := range inValidNames { - assert.Error(t, validateCollectionName(name), "Testing for name = "+name) + require.Error(t, validateCollectionName(name), "Testing for name = "+name) } } func TestNoopTranslator_Translate(t *testing.T) { tr := &noopTranslator{} res, err := tr.Translate([]byte("Nel mezzo del cammin di nostra vita")) - assert.NoError(t, err) - assert.Equal(t, res, []byte("Nel mezzo del cammin di nostra vita")) + require.NoError(t, err) + require.Equal(t, res, []byte("Nel mezzo del cammin di nostra vita")) } diff --git a/core/handlers/validation/builtin/v20/validation_logic_test.go b/core/handlers/validation/builtin/v20/validation_logic_test.go index 82f098f635d..6f51e56b52d 100644 --- a/core/handlers/validation/builtin/v20/validation_logic_test.go +++ b/core/handlers/validation/builtin/v20/validation_logic_test.go @@ -26,8 +26,8 @@ import ( mspmgmt "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mocks/capabilities.go -fake-name Capabilities . capabilities @@ -155,19 +155,19 @@ func TestStateBasedValidationFailure(t *testing.T) { // bad path: policy validation error sbvm.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&commonerrors.VSCCEndorsementPolicyError{Err: fmt.Errorf("some sbe validation err")}).Once() err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) - assert.IsType(t, &commonerrors.VSCCEndorsementPolicyError{}, err) + require.Error(t, err) + require.IsType(t, &commonerrors.VSCCEndorsementPolicyError{}, err) // bad path: execution error sbvm.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&commonerrors.VSCCExecutionFailureError{Err: fmt.Errorf("some sbe validation err")}).Once() err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) - assert.IsType(t, &commonerrors.VSCCExecutionFailureError{}, err) + require.Error(t, err) + require.IsType(t, &commonerrors.VSCCExecutionFailureError{}, err) // good path: signed by the right MSP sbvm.On("Validate", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil).Once() err = v.Validate(b, "foo", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } func TestInvoke(t *testing.T) { @@ -177,18 +177,18 @@ func TestInvoke(t *testing.T) { var err error b := &common.Block{Data: &common.BlockData{Data: [][]byte{[]byte("a")}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, []byte("a")) - assert.Error(t, err) + require.Error(t, err) // (still) broken Envelope b = &common.Block{Data: &common.BlockData{Data: [][]byte{protoutil.MarshalOrPanic(&common.Envelope{Payload: []byte("barf")})}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, []byte("a")) - assert.Error(t, err) + require.Error(t, err) // (still) broken Envelope e := protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: []byte("barf")}})}) b = &common.Block{Data: &common.BlockData{Data: [][]byte{e}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, []byte("a")) - assert.Error(t, err) + require.Error(t, err) tx, err := createTx(false) if err != nil { @@ -209,34 +209,34 @@ func TestInvoke(t *testing.T) { e = protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: protoutil.MarshalOrPanic(&common.ChannelHeader{Type: int32(common.HeaderType_ORDERER_TRANSACTION)})}})}) b = &common.Block{Data: &common.BlockData{Data: [][]byte{e}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) + require.Error(t, err) // broken tx payload e = protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: protoutil.MarshalOrPanic(&common.ChannelHeader{Type: int32(common.HeaderType_ORDERER_TRANSACTION)})}})}) b = &common.Block{Data: &common.BlockData{Data: [][]byte{e}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, policy) - assert.Error(t, err) + require.Error(t, err) // good path: signed by the right MSP b = &common.Block{Data: &common.BlockData{Data: [][]byte{envBytes}}, Header: &common.BlockHeader{}} err = v.Validate(b, "foo", 0, 0, policy) - assert.NoError(t, err) + require.NoError(t, err) } func TestToApplicationPolicyTranslator_Translate(t *testing.T) { tr := &toApplicationPolicyTranslator{} res, err := tr.Translate(nil) - assert.NoError(t, err) - assert.Nil(t, res) + require.NoError(t, err) + require.Nil(t, res) res, err = tr.Translate([]byte("barf")) - assert.Error(t, err) - assert.Contains(t, err.Error(), "could not unmarshal signature policy envelope: unexpected EOF") - assert.Nil(t, res) + require.Error(t, err) + require.Contains(t, err.Error(), "could not unmarshal signature policy envelope: unexpected EOF") + require.Nil(t, res) res, err = tr.Translate(protoutil.MarshalOrPanic(policydsl.SignedByMspMember("the right honourable member for Ipswich"))) - assert.NoError(t, err) - assert.Equal(t, res, protoutil.MarshalOrPanic(&peer.ApplicationPolicy{ + require.NoError(t, err) + require.Equal(t, res, protoutil.MarshalOrPanic(&peer.ApplicationPolicy{ Type: &peer.ApplicationPolicy_SignaturePolicy{ SignaturePolicy: policydsl.SignedByMspMember("the right honourable member for Ipswich"), }, diff --git a/core/ledger/internal/version/version_test.go b/core/ledger/internal/version/version_test.go index f6394381799..3f0271755b9 100644 --- a/core/ledger/internal/version/version_test.go +++ b/core/ledger/internal/version/version_test.go @@ -19,27 +19,27 @@ package version import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestVersionSerialization(t *testing.T) { h1 := NewHeight(10, 100) b := h1.ToBytes() h2, n, err := NewHeightFromBytes(b) - assert.NoError(t, err) - assert.Equal(t, h1, h2) - assert.Len(t, b, n) + require.NoError(t, err) + require.Equal(t, h1, h2) + require.Len(t, b, n) } func TestVersionComparison(t *testing.T) { - assert.Equal(t, 1, NewHeight(10, 100).Compare(NewHeight(9, 1000))) - assert.Equal(t, 1, NewHeight(10, 100).Compare(NewHeight(10, 90))) - assert.Equal(t, -1, NewHeight(10, 100).Compare(NewHeight(11, 1))) - assert.Equal(t, 0, NewHeight(10, 100).Compare(NewHeight(10, 100))) - - assert.True(t, AreSame(NewHeight(10, 100), NewHeight(10, 100))) - assert.True(t, AreSame(nil, nil)) - assert.False(t, AreSame(NewHeight(10, 100), nil)) + require.Equal(t, 1, NewHeight(10, 100).Compare(NewHeight(9, 1000))) + require.Equal(t, 1, NewHeight(10, 100).Compare(NewHeight(10, 90))) + require.Equal(t, -1, NewHeight(10, 100).Compare(NewHeight(11, 1))) + require.Equal(t, 0, NewHeight(10, 100).Compare(NewHeight(10, 100))) + + require.True(t, AreSame(NewHeight(10, 100), NewHeight(10, 100))) + require.True(t, AreSame(nil, nil)) + require.False(t, AreSame(NewHeight(10, 100), nil)) } func TestVersionExtraBytes(t *testing.T) { @@ -48,8 +48,8 @@ func TestVersionExtraBytes(t *testing.T) { b := h1.ToBytes() b1 := append(b, extraBytes...) h2, n, err := NewHeightFromBytes(b1) - assert.NoError(t, err) - assert.Equal(t, h1, h2) - assert.Len(t, b, n) - assert.Equal(t, extraBytes, b1[n:]) + require.NoError(t, err) + require.Equal(t, h1, h2) + require.Len(t, b, n) + require.Equal(t, extraBytes, b1[n:]) } diff --git a/core/ledger/kvledger/bookkeeping/provider_test.go b/core/ledger/kvledger/bookkeeping/provider_test.go index c327172c152..707a1e3761d 100644 --- a/core/ledger/kvledger/bookkeeping/provider_test.go +++ b/core/ledger/kvledger/bookkeeping/provider_test.go @@ -9,7 +9,7 @@ package bookkeeping import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestProvider(t *testing.T) { @@ -17,8 +17,8 @@ func TestProvider(t *testing.T) { defer testEnv.Cleanup() p := testEnv.TestProvider db := p.GetDBHandle("TestLedger", PvtdataExpiry) - assert.NoError(t, db.Put([]byte("key"), []byte("value"), true)) + require.NoError(t, db.Put([]byte("key"), []byte("value"), true)) val, err := db.Get([]byte("key")) - assert.NoError(t, err) - assert.Equal(t, []byte("value"), val) + require.NoError(t, err) + require.Equal(t, []byte("value"), val) } diff --git a/core/ledger/kvledger/history/db_test.go b/core/ledger/kvledger/history/db_test.go index 9d13aaa7c39..8a12f028689 100644 --- a/core/ledger/kvledger/history/db_test.go +++ b/core/ledger/kvledger/history/db_test.go @@ -22,7 +22,6 @@ import ( util2 "github.com/hyperledger/fabric/common/util" "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/internal/pkg/txflags" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -38,21 +37,21 @@ func TestSavepoint(t *testing.T) { // read the savepoint, it should not exist and should return nil Height object savepoint, err := env.testHistoryDB.GetLastSavepoint() - assert.NoError(t, err, "Error upon historyDatabase.GetLastSavepoint()") - assert.Nil(t, savepoint) + require.NoError(t, err, "Error upon historyDatabase.GetLastSavepoint()") + require.Nil(t, savepoint) // ShouldRecover should return true when no savepoint is found and recovery from block 0 status, blockNum, err := env.testHistoryDB.ShouldRecover(0) - assert.NoError(t, err, "Error upon historyDatabase.ShouldRecover()") - assert.True(t, status) - assert.Equal(t, uint64(0), blockNum) + require.NoError(t, err, "Error upon historyDatabase.ShouldRecover()") + require.True(t, status) + require.Equal(t, uint64(0), blockNum) bg, gb := testutil.NewBlockGenerator(t, "testLedger", false) - assert.NoError(t, env.testHistoryDB.Commit(gb)) + require.NoError(t, env.testHistoryDB.Commit(gb)) // read the savepoint, it should now exist and return a Height object with BlockNum 0 savepoint, err = env.testHistoryDB.GetLastSavepoint() - assert.NoError(t, err, "Error upon historyDatabase.GetLastSavepoint()") - assert.Equal(t, uint64(0), savepoint.BlockNum) + require.NoError(t, err, "Error upon historyDatabase.GetLastSavepoint()") + require.Equal(t, uint64(0), savepoint.BlockNum) // create the next block (block 1) txid := util2.GenerateUUID() @@ -62,16 +61,16 @@ func TestSavepoint(t *testing.T) { simRes, _ := simulator.GetTxSimulationResults() pubSimResBytes, _ := simRes.GetPubSimulationBytes() block1 := bg.NextBlock([][]byte{pubSimResBytes}) - assert.NoError(t, env.testHistoryDB.Commit(block1)) + require.NoError(t, env.testHistoryDB.Commit(block1)) savepoint, err = env.testHistoryDB.GetLastSavepoint() - assert.NoError(t, err, "Error upon historyDatabase.GetLastSavepoint()") - assert.Equal(t, uint64(1), savepoint.BlockNum) + require.NoError(t, err, "Error upon historyDatabase.GetLastSavepoint()") + require.Equal(t, uint64(1), savepoint.BlockNum) // Should Recover should return false status, blockNum, err = env.testHistoryDB.ShouldRecover(1) - assert.NoError(t, err, "Error upon historyDatabase.ShouldRecover()") - assert.False(t, status) - assert.Equal(t, uint64(2), blockNum) + require.NoError(t, err, "Error upon historyDatabase.ShouldRecover()") + require.False(t, status) + require.Equal(t, uint64(2), blockNum) // create the next block (block 2) txid = util2.GenerateUUID() @@ -85,14 +84,14 @@ func TestSavepoint(t *testing.T) { // assume that the peer failed to commit this block to historyDB and is being recovered now env.testHistoryDB.CommitLostBlock(&ledger.BlockAndPvtData{Block: block2}) savepoint, err = env.testHistoryDB.GetLastSavepoint() - assert.NoError(t, err, "Error upon historyDatabase.GetLastSavepoint()") - assert.Equal(t, uint64(2), savepoint.BlockNum) + require.NoError(t, err, "Error upon historyDatabase.GetLastSavepoint()") + require.Equal(t, uint64(2), savepoint.BlockNum) //Pass high blockNum, ShouldRecover should return true with 3 as blocknum to recover from status, blockNum, err = env.testHistoryDB.ShouldRecover(10) - assert.NoError(t, err, "Error upon historyDatabase.ShouldRecover()") - assert.True(t, status) - assert.Equal(t, uint64(3), blockNum) + require.NoError(t, err, "Error upon historyDatabase.ShouldRecover()") + require.True(t, status) + require.Equal(t, uint64(3), blockNum) } func TestHistory(t *testing.T) { @@ -101,13 +100,13 @@ func TestHistory(t *testing.T) { provider := env.testBlockStorageEnv.provider ledger1id := "ledger1" store1, err := provider.Open(ledger1id) - assert.NoError(t, err, "Error upon provider.OpenBlockStore()") + require.NoError(t, err, "Error upon provider.OpenBlockStore()") defer store1.Shutdown() - assert.Equal(t, "history", env.testHistoryDB.Name()) + require.Equal(t, "history", env.testHistoryDB.Name()) bg, gb := testutil.NewBlockGenerator(t, ledger1id, false) - assert.NoError(t, store1.AddBlock(gb)) - assert.NoError(t, env.testHistoryDB.Commit(gb)) + require.NoError(t, store1.AddBlock(gb)) + require.NoError(t, env.testHistoryDB.Commit(gb)) //block1 txid := util2.GenerateUUID() @@ -119,9 +118,9 @@ func TestHistory(t *testing.T) { pubSimResBytes, _ := simRes.GetPubSimulationBytes() block1 := bg.NextBlock([][]byte{pubSimResBytes}) err = store1.AddBlock(block1) - assert.NoError(t, err) + require.NoError(t, err) err = env.testHistoryDB.Commit(block1) - assert.NoError(t, err) + require.NoError(t, err) //block2 tran1 simulationResults := [][]byte{} @@ -144,9 +143,9 @@ func TestHistory(t *testing.T) { simulationResults = append(simulationResults, pubSimResBytes2) block2 := bg.NextBlock(simulationResults) err = store1.AddBlock(block2) - assert.NoError(t, err) + require.NoError(t, err) err = env.testHistoryDB.Commit(block2) - assert.NoError(t, err) + require.NoError(t, err) //block3 txid = util2.GenerateUUID() @@ -157,16 +156,16 @@ func TestHistory(t *testing.T) { pubSimResBytes, _ = simRes.GetPubSimulationBytes() block3 := bg.NextBlock([][]byte{pubSimResBytes}) err = store1.AddBlock(block3) - assert.NoError(t, err) + require.NoError(t, err) err = env.testHistoryDB.Commit(block3) - assert.NoError(t, err) + require.NoError(t, err) t.Logf("Inserted all 3 blocks") qhistory, err := env.testHistoryDB.NewQueryExecutor(store1) - assert.NoError(t, err, "Error upon NewQueryExecutor") + require.NoError(t, err, "Error upon NewQueryExecutor") itr, err2 := qhistory.GetHistoryForKey("ns1", "key7") - assert.NoError(t, err2, "Error upon GetHistoryForKey()") + require.NoError(t, err2, "Error upon GetHistoryForKey()") count := 0 for { @@ -185,17 +184,17 @@ func TestHistory(t *testing.T) { if count != 1 { // entries 2, 3, 4 are block2:tran2, block2:tran1 and block1:tran1 expectedValue := []byte("value" + strconv.Itoa(5-count)) - assert.Equal(t, expectedValue, retrievedValue) - assert.NotNil(t, retrievedTimestamp) - assert.False(t, retrievedIsDelete) + require.Equal(t, expectedValue, retrievedValue) + require.NotNil(t, retrievedTimestamp) + require.False(t, retrievedIsDelete) } else { // entry 1 is block3:tran1 - assert.Equal(t, []uint8(nil), retrievedValue) - assert.NotNil(t, retrievedTimestamp) - assert.True(t, retrievedIsDelete) + require.Equal(t, []uint8(nil), retrievedValue) + require.NotNil(t, retrievedTimestamp) + require.True(t, retrievedIsDelete) } } - assert.Equal(t, 4, count) + require.Equal(t, 4, count) t.Run("test-iter-error-path", func(t *testing.T) { env.testHistoryDBProvider.Close() @@ -213,12 +212,12 @@ func TestHistoryForInvalidTran(t *testing.T) { provider := env.testBlockStorageEnv.provider ledger1id := "ledger1" store1, err := provider.Open(ledger1id) - assert.NoError(t, err, "Error upon provider.OpenBlockStore()") + require.NoError(t, err, "Error upon provider.OpenBlockStore()") defer store1.Shutdown() bg, gb := testutil.NewBlockGenerator(t, ledger1id, false) - assert.NoError(t, store1.AddBlock(gb)) - assert.NoError(t, env.testHistoryDB.Commit(gb)) + require.NoError(t, store1.AddBlock(gb)) + require.NoError(t, env.testHistoryDB.Commit(gb)) //block1 txid := util2.GenerateUUID() @@ -236,19 +235,19 @@ func TestHistoryForInvalidTran(t *testing.T) { block1.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER] = txsFilter err = store1.AddBlock(block1) - assert.NoError(t, err) + require.NoError(t, err) err = env.testHistoryDB.Commit(block1) - assert.NoError(t, err) + require.NoError(t, err) qhistory, err := env.testHistoryDB.NewQueryExecutor(store1) - assert.NoError(t, err, "Error upon NewQueryExecutor") + require.NoError(t, err, "Error upon NewQueryExecutor") itr, err2 := qhistory.GetHistoryForKey("ns1", "key7") - assert.NoError(t, err2, "Error upon GetHistoryForKey()") + require.NoError(t, err2, "Error upon GetHistoryForKey()") // test that there are no history values, since the tran was marked as invalid kmod, _ := itr.Next() - assert.Nil(t, kmod) + require.Nil(t, kmod) } //TestGenesisBlockNoError tests that Genesis blocks are ignored by history processing @@ -257,9 +256,9 @@ func TestGenesisBlockNoError(t *testing.T) { env := newTestHistoryEnv(t) defer env.cleanup() block, err := configtxtest.MakeGenesisBlock("test_chainid") - assert.NoError(t, err) + require.NoError(t, err) err = env.testHistoryDB.Commit(block) - assert.NoError(t, err) + require.NoError(t, err) } // TestHistoryWithKeyContainingNilBytes tests historydb when keys contains nil bytes (FAB-11244) - @@ -270,12 +269,12 @@ func TestHistoryWithKeyContainingNilBytes(t *testing.T) { provider := env.testBlockStorageEnv.provider ledger1id := "ledger1" store1, err := provider.Open(ledger1id) - assert.NoError(t, err, "Error upon provider.OpenBlockStore()") + require.NoError(t, err, "Error upon provider.OpenBlockStore()") defer store1.Shutdown() bg, gb := testutil.NewBlockGenerator(t, ledger1id, false) - assert.NoError(t, store1.AddBlock(gb)) - assert.NoError(t, env.testHistoryDB.Commit(gb)) + require.NoError(t, store1.AddBlock(gb)) + require.NoError(t, env.testHistoryDB.Commit(gb)) //block1 txid := util2.GenerateUUID() @@ -286,9 +285,9 @@ func TestHistoryWithKeyContainingNilBytes(t *testing.T) { pubSimResBytes, _ := simRes.GetPubSimulationBytes() block1 := bg.NextBlock([][]byte{pubSimResBytes}) err = store1.AddBlock(block1) - assert.NoError(t, err) + require.NoError(t, err) err = env.testHistoryDB.Commit(block1) - assert.NoError(t, err) + require.NoError(t, err) //block2 tran1 simulationResults := [][]byte{} @@ -336,12 +335,12 @@ func TestHistoryWithKeyContainingNilBytes(t *testing.T) { simulationResults = append(simulationResults, pubSimResBytes2) block2 := bg.NextBlock(simulationResults) err = store1.AddBlock(block2) - assert.NoError(t, err) + require.NoError(t, err) err = env.testHistoryDB.Commit(block2) - assert.NoError(t, err) + require.NoError(t, err) qhistory, err := env.testHistoryDB.NewQueryExecutor(store1) - assert.NoError(t, err, "Error upon NewQueryExecutor") + require.NoError(t, err, "Error upon NewQueryExecutor") // verify the results for each key, in the order of newest to oldest testutilVerifyResults(t, qhistory, "ns1", "key", []string{"value2", "value1"}) @@ -368,12 +367,12 @@ func TestHistoryWithBlockNumber256(t *testing.T) { provider := env.testBlockStorageEnv.provider ledger1id := "ledger1" store1, err := provider.Open(ledger1id) - assert.NoError(t, err, "Error upon provider.OpenBlockStore()") + require.NoError(t, err, "Error upon provider.OpenBlockStore()") defer store1.Shutdown() bg, gb := testutil.NewBlockGenerator(t, ledger1id, false) - assert.NoError(t, store1.AddBlock(gb)) - assert.NoError(t, env.testHistoryDB.Commit(gb)) + require.NoError(t, store1.AddBlock(gb)) + require.NoError(t, env.testHistoryDB.Commit(gb)) // add 256 blocks, each block has 1 transaction setting state for "ns1" and "key", value is "value" for i := 1; i <= 256; i++ { @@ -386,14 +385,14 @@ func TestHistoryWithBlockNumber256(t *testing.T) { pubSimResBytes, _ := simRes.GetPubSimulationBytes() block := bg.NextBlock([][]byte{pubSimResBytes}) err = store1.AddBlock(block) - assert.NoError(t, err) + require.NoError(t, err) err = env.testHistoryDB.Commit(block) - assert.NoError(t, err) + require.NoError(t, err) } // query history db for "ns1", "key" qhistory, err := env.testHistoryDB.NewQueryExecutor(store1) - assert.NoError(t, err, "Error upon NewQueryExecutor") + require.NoError(t, err, "Error upon NewQueryExecutor") // verify history query returns the expected results in the orderer of block256, 255, 254 .... 1. expectedHistoryResults := make([]string, 0) @@ -406,13 +405,13 @@ func TestHistoryWithBlockNumber256(t *testing.T) { func TestName(t *testing.T) { env := newTestHistoryEnv(t) defer env.cleanup() - assert.Equal(t, "history", env.testHistoryDB.Name()) + require.Equal(t, "history", env.testHistoryDB.Name()) } // verify history results func testutilVerifyResults(t *testing.T, hqe ledger.HistoryQueryExecutor, ns, key string, expectedVals []string) { itr, err := hqe.GetHistoryForKey(ns, key) - assert.NoError(t, err, "Error upon GetHistoryForKey()") + require.NoError(t, err, "Error upon GetHistoryForKey()") retrievedVals := []string{} for { kmod, _ := itr.Next() @@ -424,13 +423,13 @@ func testutilVerifyResults(t *testing.T, hqe ledger.HistoryQueryExecutor, ns, ke retrievedVals = append(retrievedVals, retrievedValue) t.Logf("Retrieved history record at TxId=%s with value %s", txid, retrievedValue) } - assert.Equal(t, expectedVals, retrievedVals) + require.Equal(t, expectedVals, retrievedVals) } // testutilCheckKeyNotInRange verifies that a (false) key is not returned in range query when searching for the desired key func testutilCheckKeyNotInRange(t *testing.T, hqe ledger.HistoryQueryExecutor, ns, desiredKey, falseKey string) { itr, err := hqe.GetHistoryForKey(ns, desiredKey) - assert.NoError(t, err, "Error upon GetHistoryForKey()") + require.NoError(t, err, "Error upon GetHistoryForKey()") scanner := itr.(*historyScanner) rangeScanKeys := constructRangeScan(ns, falseKey) for { @@ -439,7 +438,7 @@ func testutilCheckKeyNotInRange(t *testing.T, hqe ledger.HistoryQueryExecutor, n } historyKey := scanner.dbItr.Key() if bytes.Contains(historyKey, rangeScanKeys.startKey) { - assert.Failf(t, "false key %s should not be returned in range query for key %s", falseKey, desiredKey) + require.Failf(t, "false key %s should not be returned in range query for key %s", falseKey, desiredKey) } } } diff --git a/core/ledger/kvledger/history/kv_encoding_test.go b/core/ledger/kvledger/history/kv_encoding_test.go index 7ebe2c2c4dc..c9976e746a1 100644 --- a/core/ledger/kvledger/history/kv_encoding_test.go +++ b/core/ledger/kvledger/history/kv_encoding_test.go @@ -10,7 +10,7 @@ import ( "bytes" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var strKeySep = string(compositeKeySep) @@ -32,8 +32,8 @@ func TestCompositeKeyConstruction(t *testing.T) { for _, testDatum := range testData { key := constructDataKey(testDatum.ns, testDatum.key, testDatum.blkNum, testDatum.tranNum) rangeScan := constructRangeScan(testDatum.ns, testDatum.key) - assert.Equal(t, bytes.Compare(rangeScan.startKey, key), -1) //startKey should be smaller than key - assert.Equal(t, bytes.Compare(rangeScan.endKey, key), 1) //endKey should be greater than key + require.Equal(t, bytes.Compare(rangeScan.startKey, key), -1) //startKey should be smaller than key + require.Equal(t, bytes.Compare(rangeScan.endKey, key), 1) //endKey should be greater than key } for i, testDatum := range testData { @@ -43,7 +43,7 @@ func TestCompositeKeyConstruction(t *testing.T) { } rangeScan := constructRangeScan(testDatum.ns, testDatum.key) anotherKey := constructDataKey(another.ns, another.key, another.blkNum, another.tranNum) - assert.False(t, bytes.Compare(anotherKey, rangeScan.startKey) == 1 && bytes.Compare(anotherKey, rangeScan.endKey) == -1) //any key should not fall in the range of start/end key range query for any other key + require.False(t, bytes.Compare(anotherKey, rangeScan.startKey) == 1 && bytes.Compare(anotherKey, rangeScan.endKey) == -1) //any key should not fall in the range of start/end key range query for any other key } } } @@ -52,7 +52,7 @@ func TestSplitCompositeKey(t *testing.T) { dataKey := constructDataKey("ns1", "key1", 20, 200) rangeScan := constructRangeScan("ns1", "key1") blkNum, txNum, err := rangeScan.decodeBlockNumTranNum(dataKey) - assert.NoError(t, err) - assert.Equal(t, blkNum, uint64(20)) - assert.Equal(t, txNum, uint64(200)) + require.NoError(t, err) + require.Equal(t, blkNum, uint64(20)) + require.Equal(t, txNum, uint64(200)) } diff --git a/core/ledger/kvledger/history/pkg_test.go b/core/ledger/kvledger/history/pkg_test.go index a50f674e020..a174d412786 100644 --- a/core/ledger/kvledger/history/pkg_test.go +++ b/core/ledger/kvledger/history/pkg_test.go @@ -18,7 +18,7 @@ import ( "github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/privacyenabledstate" "github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/txmgr" "github.com/hyperledger/fabric/core/ledger/mock" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var ( @@ -69,11 +69,11 @@ func newTestHistoryEnv(t *testing.T) *levelDBLockBasedHistoryEnv { } txMgr, err := txmgr.NewLockBasedTxMgr(txmgrInitializer) - assert.NoError(t, err) + require.NoError(t, err) testHistoryDBProvider, err := NewDBProvider(testHistoryDBPath) - assert.NoError(t, err) + require.NoError(t, err) testHistoryDB, err := testHistoryDBProvider.GetDBHandle("TestHistoryDB") - assert.NoError(t, err) + require.NoError(t, err) return &levelDBLockBasedHistoryEnv{ t, @@ -122,7 +122,7 @@ func newBlockStorageTestEnv(t testing.TB) *testBlockStoreEnv { indexConfig := &blkstorage.IndexConfig{AttrsToIndex: attrsToIndex} p, err := blkstorage.NewProvider(conf, indexConfig, &disabled.Provider{}) - assert.NoError(t, err) + require.NoError(t, err) return &testBlockStoreEnv{t, p, testPath} } diff --git a/core/ledger/kvledger/tests/client.go b/core/ledger/kvledger/tests/client.go index 224039cd8da..eb527874473 100644 --- a/core/ledger/kvledger/tests/client.go +++ b/core/ledger/kvledger/tests/client.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/core/common/privdata" "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // client helps in a transction simulation. The client keeps accumlating the results of each simulated transaction @@ -27,11 +27,11 @@ type client struct { lgrID string simulatedTrans []*txAndPvtdata // accumulates the results of transactions simulations missingPvtData ledger.TxMissingPvtDataMap - assert *assert.Assertions + assert *require.Assertions } func newClient(lgr ledger.PeerLedger, lgrID string, t *testing.T) *client { - return &client{lgr, lgrID, nil, make(ledger.TxMissingPvtDataMap), assert.New(t)} + return &client{lgr, lgrID, nil, make(ledger.TxMissingPvtDataMap), require.New(t)} } // simulateDataTx takes a simulation logic and wraps it between @@ -137,7 +137,7 @@ func (c *client) currentCommitHash() []byte { type simulator struct { ledger.TxSimulator txid string - assert *assert.Assertions + assert *require.Assertions } func (s *simulator) getState(ns, key string) string { diff --git a/core/ledger/kvledger/tests/committer.go b/core/ledger/kvledger/tests/committer.go index 6a9c7862e9e..39b14385b55 100644 --- a/core/ledger/kvledger/tests/committer.go +++ b/core/ledger/kvledger/tests/committer.go @@ -13,18 +13,18 @@ import ( "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // committer helps in cutting a block and commits the block (with pvt data) to the ledger type committer struct { lgr ledger.PeerLedger blkgen *blkGenerator - assert *assert.Assertions + assert *require.Assertions } func newCommitter(lgr ledger.PeerLedger, t *testing.T) *committer { - return &committer{lgr, newBlockGenerator(lgr, t), assert.New(t)} + return &committer{lgr, newBlockGenerator(lgr, t), require.New(t)} } // cutBlockAndCommitLegacy cuts the next block from the given 'txAndPvtdata' and commits the block (with pvt data) to the ledger @@ -63,17 +63,17 @@ func (c *committer) copyOfBlockAndPvtdata(blk *ledger.BlockAndPvtData) *ledger.B type blkGenerator struct { lastNum uint64 lastHash []byte - assert *assert.Assertions + assert *require.Assertions } // newBlockGenerator constructs a 'blkGenerator' and initializes the 'blkGenerator' // from the last block available in the ledger so that the next block can be populated // with the correct block number and previous block hash func newBlockGenerator(lgr ledger.PeerLedger, t *testing.T) *blkGenerator { - assert := assert.New(t) + require := require.New(t) info, err := lgr.GetBlockchainInfo() - assert.NoError(err) - return &blkGenerator{info.Height - 1, info.CurrentBlockHash, assert} + require.NoError(err) + return &blkGenerator{info.Height - 1, info.CurrentBlockHash, require} } // nextBlockAndPvtdata cuts the next block diff --git a/core/ledger/kvledger/tests/customtx_processor_test.go b/core/ledger/kvledger/tests/customtx_processor_test.go index 1d8f678ca98..4fc5b942a77 100644 --- a/core/ledger/kvledger/tests/customtx_processor_test.go +++ b/core/ledger/kvledger/tests/customtx_processor_test.go @@ -16,14 +16,14 @@ import ( "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/core/ledger/ledgermgmt" "github.com/hyperledger/fabric/core/ledger/mock" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestReadWriteCustomTxProcessor(t *testing.T) { fakeTxProcessor := &mock.CustomTxProcessor{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) env := newEnvWithInitializer( t, @@ -50,8 +50,8 @@ func TestReadWriteCustomTxProcessor(t *testing.T) { // tx processor reads and modifies key1 func(txEnvelop *common.Envelope, s ledger.TxSimulator, initializingLedger bool) error { valKey1, err := s.GetState("ns", "key1") - assert.NoError(t, err) - assert.Equal(t, []byte("value1"), valKey1) + require.NoError(t, err) + require.Equal(t, []byte("value1"), valKey1) valueCounter++ return s.SetState("ns", "key1", []byte(fmt.Sprintf("value1_%d", valueCounter))) } @@ -74,7 +74,7 @@ func TestRangeReadAndWriteCustomTxProcessor(t *testing.T) { fakeTxProcessor3 := &mock.CustomTxProcessor{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) env := newEnvWithInitializer( t, @@ -108,10 +108,10 @@ func TestRangeReadAndWriteCustomTxProcessor(t *testing.T) { // tx processor for txtype 102 reads a range (that covers key1) and sets key2 func(txEnvelop *common.Envelope, s ledger.TxSimulator, initializingLedger bool) error { itr, err := s.GetStateRangeScanIterator("ns", "key1", "key2") - assert.NoError(t, err) + require.NoError(t, err) for { res, err := itr.Next() - assert.NoError(t, err) + require.NoError(t, err) if res == nil { break } @@ -123,10 +123,10 @@ func TestRangeReadAndWriteCustomTxProcessor(t *testing.T) { // tx processor for txtype 103 reads a range (that does not include key1) and sets key2 func(txEnvelop *common.Envelope, s ledger.TxSimulator, initializingLedger bool) error { itr, err := s.GetStateRangeScanIterator("ns", "key2", "key3") - assert.NoError(t, err) + require.NoError(t, err) for { res, err := itr.Next() - assert.NoError(t, err) + require.NoError(t, err) if res == nil { break } diff --git a/core/ledger/kvledger/tests/env.go b/core/ledger/kvledger/tests/env.go index d459ed682d3..502421ae350 100644 --- a/core/ledger/kvledger/tests/env.go +++ b/core/ledger/kvledger/tests/env.go @@ -30,7 +30,7 @@ import ( "github.com/hyperledger/fabric/msp" "github.com/hyperledger/fabric/msp/mgmt" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type rebuildable uint8 @@ -44,14 +44,14 @@ const ( ) type env struct { - assert *assert.Assertions + assert *require.Assertions initializer *ledgermgmt.Initializer ledgerMgr *ledgermgmt.LedgerMgr } func newEnv(t *testing.T) *env { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) return newEnvWithInitializer(t, &ledgermgmt.Initializer{ HashProvider: cryptoProvider, EbMetadataProvider: &externalbuilder.MetadataProvider{ @@ -64,7 +64,7 @@ func newEnvWithInitializer(t *testing.T, initializer *ledgermgmt.Initializer) *e populateMissingsWithTestDefaults(t, initializer) return &env{ - assert: assert.New(t), + assert: require.New(t), initializer: initializer, } } @@ -213,7 +213,7 @@ func populateMissingsWithTestDefaults(t *testing.T, initializer *ledgermgmt.Init return mgmt.GetManagerForChain(chainID) } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mspID := "test-mspid" membershipInfoProvider := privdata.NewMembershipInfoProvider(mspID, createSelfSignedData(cryptoProvider), identityDeserializerFactory) initializer.MembershipInfoProvider = membershipInfoProvider diff --git a/core/ledger/kvledger/tests/missing_pvtdata_retrieval_test.go b/core/ledger/kvledger/tests/missing_pvtdata_retrieval_test.go index ca932e183db..672396a802d 100644 --- a/core/ledger/kvledger/tests/missing_pvtdata_retrieval_test.go +++ b/core/ledger/kvledger/tests/missing_pvtdata_retrieval_test.go @@ -11,7 +11,7 @@ import ( "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/core/ledger/kvledger" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetMissingPvtDataAfterRollback(t *testing.T) { @@ -68,7 +68,7 @@ func TestGetMissingPvtDataAfterRollback(t *testing.T) { h.verifyLedgerHeight(5) env.closeLedgerMgmt() err := kvledger.RollbackKVLedger(env.initializer.Config.RootFSPath, "ledger1", 2) - assert.NoError(t, err) + require.NoError(t, err) env.initLedgerMgmt() h = env.newTestHelperOpenLgr("ledger1", t) @@ -81,13 +81,13 @@ func TestGetMissingPvtDataAfterRollback(t *testing.T) { h.verifyMissingPvtDataSameAs(5, nil) // recommit block 3 - assert.NoError(t, h.lgr.CommitLegacy(blk3, &ledger.CommitOptions{})) + require.NoError(t, h.lgr.CommitLegacy(blk3, &ledger.CommitOptions{})) // when the pvtdata store is ahead of blockstore, // missing pvtdata info for block 2 would not be returned. h.verifyMissingPvtDataSameAs(5, nil) // recommit block 4 - assert.NoError(t, h.lgr.CommitLegacy(blk4, &ledger.CommitOptions{})) + require.NoError(t, h.lgr.CommitLegacy(blk4, &ledger.CommitOptions{})) // once the pvtdata store and blockstore becomes equal, // missing pvtdata info for block 2 would be returned. h.verifyMissingPvtDataSameAs(5, expectedMissingPvtDataInfo) diff --git a/core/ledger/kvledger/tests/rollback_test.go b/core/ledger/kvledger/tests/rollback_test.go index 8edd29bbf2d..c52c7285ed6 100644 --- a/core/ledger/kvledger/tests/rollback_test.go +++ b/core/ledger/kvledger/tests/rollback_test.go @@ -12,7 +12,7 @@ import ( "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/core/ledger/kvledger" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestRollbackKVLedger(t *testing.T) { @@ -27,27 +27,27 @@ func TestRollbackKVLedger(t *testing.T) { dataHelper.populateLedger(h) dataHelper.verifyLedgerContent(h) bcInfo, err := h.lgr.GetBlockchainInfo() - assert.NoError(t, err) + require.NoError(t, err) env.closeLedgerMgmt() // Rollback the testLedger (invalid rollback params) err = kvledger.RollbackKVLedger(env.initializer.Config.RootFSPath, "noLedger", 0) - assert.Equal(t, "ledgerID [noLedger] does not exist", err.Error()) + require.Equal(t, "ledgerID [noLedger] does not exist", err.Error()) err = kvledger.RollbackKVLedger(env.initializer.Config.RootFSPath, "testLedger", bcInfo.Height) expectedErr := fmt.Sprintf("target block number [%d] should be less than the biggest block number [%d]", bcInfo.Height, bcInfo.Height-1) - assert.Equal(t, expectedErr, err.Error()) + require.Equal(t, expectedErr, err.Error()) // Rollback the testLedger (valid rollback params) targetBlockNum := bcInfo.Height - 3 err = kvledger.RollbackKVLedger(env.initializer.Config.RootFSPath, "testLedger", targetBlockNum) - assert.NoError(t, err) + require.NoError(t, err) rebuildable := rebuildableStatedb + rebuildableBookkeeper + rebuildableConfigHistory + rebuildableHistoryDB env.verifyRebuilableDoesNotExist(rebuildable) env.initLedgerMgmt() preResetHt, err := kvledger.LoadPreResetHeight(env.initializer.Config.RootFSPath, []string{"testLedger"}) - assert.NoError(t, err) - assert.Equal(t, bcInfo.Height, preResetHt["testLedger"]) + require.NoError(t, err) + require.Equal(t, bcInfo.Height, preResetHt["testLedger"]) t.Logf("preResetHt = %#v", preResetHt) h = env.newTestHelperOpenLgr("testLedger", t) @@ -56,10 +56,10 @@ func TestRollbackKVLedger(t *testing.T) { for _, b := range dataHelper.submittedData["testLedger"].Blocks[targetBlockNumIndex+1:] { // if the pvtData is already present in the pvtdata store, the ledger (during commit) should be // able to fetch them if not passed along with the block. - assert.NoError(t, h.lgr.CommitLegacy(b, &ledger.CommitOptions{FetchPvtDataFromLedger: true})) + require.NoError(t, h.lgr.CommitLegacy(b, &ledger.CommitOptions{FetchPvtDataFromLedger: true})) } actualBcInfo, err := h.lgr.GetBlockchainInfo() - assert.Equal(t, bcInfo, actualBcInfo) + require.Equal(t, bcInfo, actualBcInfo) dataHelper.verifyLedgerContent(h) // TODO: extend integration test with BTL support for pvtData. FAB-15704 } @@ -114,7 +114,7 @@ func TestRollbackKVLedgerWithBTL(t *testing.T) { // rebuild statedb and bookkeeper err := kvledger.RollbackKVLedger(env.initializer.Config.RootFSPath, "ledger1", 4) - assert.NoError(t, err) + require.NoError(t, err) rebuildable := rebuildableStatedb | rebuildableBookkeeper | rebuildableConfigHistory | rebuildableHistoryDB env.verifyRebuilableDoesNotExist(rebuildable) diff --git a/core/ledger/kvledger/tests/sample_data_helper.go b/core/ledger/kvledger/tests/sample_data_helper.go index 8aaedf3418e..fa147ac4bee 100644 --- a/core/ledger/kvledger/tests/sample_data_helper.go +++ b/core/ledger/kvledger/tests/sample_data_helper.go @@ -12,7 +12,7 @@ import ( protopeer "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/core/ledger" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type submittedData map[string]*submittedLedgerData @@ -42,12 +42,12 @@ func (s submittedData) recordSubmittedTxs(lgrid string, tx ...*txAndPvtdata) { type sampleDataHelper struct { submittedData submittedData - assert *assert.Assertions + assert *require.Assertions t *testing.T } func newSampleDataHelper(t *testing.T) *sampleDataHelper { - return &sampleDataHelper{make(submittedData), assert.New(t), t} + return &sampleDataHelper{make(submittedData), require.New(t), t} } func (d *sampleDataHelper) populateLedger(h *testhelper) { diff --git a/core/ledger/kvledger/tests/test_helper.go b/core/ledger/kvledger/tests/test_helper.go index 57d41c87428..fcf98ea1c61 100644 --- a/core/ledger/kvledger/tests/test_helper.go +++ b/core/ledger/kvledger/tests/test_helper.go @@ -10,7 +10,7 @@ import ( "testing" "github.com/hyperledger/fabric/core/ledger" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // testhelper embeds (1) a client, (2) a committer and (3) a verifier, all three operate on @@ -25,25 +25,25 @@ type testhelper struct { *verifier lgr ledger.PeerLedger lgrid string - assert *assert.Assertions + assert *require.Assertions } // newTestHelperCreateLgr creates a new ledger and retruns a 'testhelper' for the ledger func (env *env) newTestHelperCreateLgr(id string, t *testing.T) *testhelper { genesisBlk, err := constructTestGenesisBlock(id) - assert.NoError(t, err) + require.NoError(t, err) lgr, err := env.ledgerMgr.CreateLedger(id, genesisBlk) - assert.NoError(t, err) + require.NoError(t, err) client, committer, verifier := newClient(lgr, id, t), newCommitter(lgr, t), newVerifier(lgr, t) - return &testhelper{client, committer, verifier, lgr, id, assert.New(t)} + return &testhelper{client, committer, verifier, lgr, id, require.New(t)} } // newTestHelperOpenLgr opens an existing ledger and retruns a 'testhelper' for the ledger func (env *env) newTestHelperOpenLgr(id string, t *testing.T) *testhelper { lgr, err := env.ledgerMgr.OpenLedger(id) - assert.NoError(t, err) + require.NoError(t, err) client, committer, verifier := newClient(lgr, id, t), newCommitter(lgr, t), newVerifier(lgr, t) - return &testhelper{client, committer, verifier, lgr, id, assert.New(t)} + return &testhelper{client, committer, verifier, lgr, id, require.New(t)} } // cutBlockAndCommitLegacy gathers all the transactions simulated by the test code (by calling @@ -68,7 +68,7 @@ func (h *testhelper) cutBlockAndCommitExpectError() (*ledger.BlockAndPvtData, er // this function assumes that the last return type of function 'f' is of type 'error' func (h *testhelper) assertError(output ...interface{}) { lastParam := output[len(output)-1] - assert.NotNil(h.t, lastParam) + require.NotNil(h.t, lastParam) h.assert.Error(lastParam.(error)) } diff --git a/core/ledger/kvledger/tests/verifier.go b/core/ledger/kvledger/tests/verifier.go index eb7d4cf6e4a..556c7e70c3b 100644 --- a/core/ledger/kvledger/tests/verifier.go +++ b/core/ledger/kvledger/tests/verifier.go @@ -17,7 +17,7 @@ import ( protopeer "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/internal/pkg/txflags" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // verifier provides functions that help tests with less verbose code for querying the ledger @@ -25,12 +25,12 @@ import ( // For the straight forward functions, tests can call them directly on the ledger type verifier struct { lgr ledger.PeerLedger - assert *assert.Assertions + assert *require.Assertions t *testing.T } func newVerifier(lgr ledger.PeerLedger, t *testing.T) *verifier { - return &verifier{lgr, assert.New(t), t} + return &verifier{lgr, require.New(t), t} } func (v *verifier) verifyLedgerHeight(expectedHt uint64) { @@ -161,7 +161,7 @@ type expectedCollConfInfo struct { type retrievedBlockAndPvtdata struct { *ledger.BlockAndPvtData - assert *assert.Assertions + assert *require.Assertions } func (r *retrievedBlockAndPvtdata) sameAs(expectedBlockAndPvtdata *ledger.BlockAndPvtData) { diff --git a/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/expiry_keeper_test.go b/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/expiry_keeper_test.go index cc43f8b198c..0bbfb85fff4 100644 --- a/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/expiry_keeper_test.go +++ b/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/expiry_keeper_test.go @@ -13,7 +13,6 @@ import ( "github.com/davecgh/go-spew/spew" "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric/core/ledger/kvledger/bookkeeping" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -23,11 +22,11 @@ func TestExpiryKVEncoding(t *testing.T) { expiryInfo := &expiryInfo{&expiryInfoKey{expiryBlk: 10, committingBlk: 2}, pvtdataKeys} t.Logf("expiryInfo:%s", spew.Sdump(expiryInfo)) k, v, err := encodeKV(expiryInfo) - assert.NoError(t, err) + require.NoError(t, err) expiryInfo1, err := decodeExpiryInfo(k, v) - assert.NoError(t, err) - assert.Equal(t, expiryInfo.expiryInfoKey, expiryInfo1.expiryInfoKey) - assert.True(t, proto.Equal(expiryInfo.pvtdataKeys, expiryInfo1.pvtdataKeys), "proto messages are not equal") + require.NoError(t, err) + require.Equal(t, expiryInfo.expiryInfoKey, expiryInfo1.expiryInfoKey) + require.True(t, proto.Equal(expiryInfo.pvtdataKeys, expiryInfo1.pvtdataKeys), "proto messages are not equal") } func TestExpiryKeeper(t *testing.T) { @@ -47,34 +46,34 @@ func TestExpiryKeeper(t *testing.T) { // Retrieve entries by expiring block 13, 15, and 17 listExpinfo1, _ := expiryKeeper.retrieve(13) - assert.Len(t, listExpinfo1, 2) - assert.Equal(t, expinfo1.expiryInfoKey, listExpinfo1[0].expiryInfoKey) - assert.True(t, proto.Equal(expinfo1.pvtdataKeys, listExpinfo1[0].pvtdataKeys)) - assert.Equal(t, expinfo3.expiryInfoKey, listExpinfo1[1].expiryInfoKey) - assert.True(t, proto.Equal(expinfo3.pvtdataKeys, listExpinfo1[1].pvtdataKeys)) + require.Len(t, listExpinfo1, 2) + require.Equal(t, expinfo1.expiryInfoKey, listExpinfo1[0].expiryInfoKey) + require.True(t, proto.Equal(expinfo1.pvtdataKeys, listExpinfo1[0].pvtdataKeys)) + require.Equal(t, expinfo3.expiryInfoKey, listExpinfo1[1].expiryInfoKey) + require.True(t, proto.Equal(expinfo3.pvtdataKeys, listExpinfo1[1].pvtdataKeys)) listExpinfo2, _ := expiryKeeper.retrieve(15) - assert.Len(t, listExpinfo2, 1) - assert.Equal(t, expinfo2.expiryInfoKey, listExpinfo2[0].expiryInfoKey) - assert.True(t, proto.Equal(expinfo2.pvtdataKeys, listExpinfo2[0].pvtdataKeys)) + require.Len(t, listExpinfo2, 1) + require.Equal(t, expinfo2.expiryInfoKey, listExpinfo2[0].expiryInfoKey) + require.True(t, proto.Equal(expinfo2.pvtdataKeys, listExpinfo2[0].pvtdataKeys)) listExpinfo3, _ := expiryKeeper.retrieve(17) - assert.Len(t, listExpinfo3, 1) - assert.Equal(t, expinfo4.expiryInfoKey, listExpinfo3[0].expiryInfoKey) - assert.True(t, proto.Equal(expinfo4.pvtdataKeys, listExpinfo3[0].pvtdataKeys)) + require.Len(t, listExpinfo3, 1) + require.Equal(t, expinfo4.expiryInfoKey, listExpinfo3[0].expiryInfoKey) + require.True(t, proto.Equal(expinfo4.pvtdataKeys, listExpinfo3[0].pvtdataKeys)) // Clear entries for keys expiring at block 13 and 15 and again retrieve by expiring block 13, 15, and 17 expiryKeeper.update(nil, []*expiryInfoKey{expinfo1.expiryInfoKey, expinfo2.expiryInfoKey, expinfo3.expiryInfoKey}) listExpinfo4, _ := expiryKeeper.retrieve(13) - assert.Nil(t, listExpinfo4) + require.Nil(t, listExpinfo4) listExpinfo5, _ := expiryKeeper.retrieve(15) - assert.Nil(t, listExpinfo5) + require.Nil(t, listExpinfo5) listExpinfo6, _ := expiryKeeper.retrieve(17) - assert.Len(t, listExpinfo6, 1) - assert.Equal(t, expinfo4.expiryInfoKey, listExpinfo6[0].expiryInfoKey) - assert.True(t, proto.Equal(expinfo4.pvtdataKeys, listExpinfo6[0].pvtdataKeys)) + require.Len(t, listExpinfo6, 1) + require.Equal(t, expinfo4.expiryInfoKey, listExpinfo6[0].expiryInfoKey) + require.True(t, proto.Equal(expinfo4.pvtdataKeys, listExpinfo6[0].pvtdataKeys)) t.Run("test-error-path", func(t *testing.T) { testenv.TestProvider.Close() diff --git a/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/expiry_schedule_builder_test.go b/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/expiry_schedule_builder_test.go index 89608f7a0ae..243babd5579 100644 --- a/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/expiry_schedule_builder_test.go +++ b/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/expiry_schedule_builder_test.go @@ -14,7 +14,7 @@ import ( "github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/privacyenabledstate" btltestutil "github.com/hyperledger/fabric/core/ledger/pvtdatapolicy/testutil" "github.com/hyperledger/fabric/core/ledger/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestBuildExpirySchedule(t *testing.T) { @@ -34,7 +34,7 @@ func TestBuildExpirySchedule(t *testing.T) { putPvtAndHashUpdates(t, updates, "ns3", "coll4", "pvtkey4", []byte("pvtvalue4"), version.NewHeight(4, 1)) listExpinfo, err := buildExpirySchedule(btlPolicy, updates.PvtUpdates, updates.HashUpdates) - assert.NoError(t, err) + require.NoError(t, err) t.Logf("listExpinfo=%s", spew.Sdump(listExpinfo)) pvtdataKeys1 := newPvtdataKeys() @@ -52,8 +52,8 @@ func TestBuildExpirySchedule(t *testing.T) { {expiryInfoKey: &expiryInfoKey{expiryBlk: 7, committingBlk: 3}, pvtdataKeys: pvtdataKeys3}, } - assert.Len(t, listExpinfo, 3) - assert.ElementsMatch(t, expectedListExpInfo, listExpinfo) + require.Len(t, listExpinfo, 3) + require.ElementsMatch(t, expectedListExpInfo, listExpinfo) } func TestBuildExpiryScheduleWithMissingPvtdata(t *testing.T) { @@ -86,7 +86,7 @@ func TestBuildExpiryScheduleWithMissingPvtdata(t *testing.T) { deleteHashUpdates(updates, "ns3", "coll5", "pvtkey6", version.NewHeight(50, 6)) listExpinfo, err := buildExpirySchedule(btlPolicy, updates.PvtUpdates, updates.HashUpdates) - assert.NoError(t, err) + require.NoError(t, err) t.Logf("listExpinfo=%s", spew.Sdump(listExpinfo)) pvtdataKeys1 := newPvtdataKeys() @@ -102,8 +102,8 @@ func TestBuildExpiryScheduleWithMissingPvtdata(t *testing.T) { {expiryInfoKey: &expiryInfoKey{expiryBlk: 54, committingBlk: 50}, pvtdataKeys: pvtdataKeys3}, } - assert.Len(t, listExpinfo, 3) - assert.ElementsMatch(t, expectedListExpInfo, listExpinfo) + require.Len(t, listExpinfo, 3) + require.ElementsMatch(t, expectedListExpInfo, listExpinfo) } func putPvtAndHashUpdates(t *testing.T, updates *privacyenabledstate.UpdateBatch, ns, coll, key string, value []byte, ver *version.Height) { diff --git a/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/purge_mgr_test.go b/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/purge_mgr_test.go index 4038842f1dc..2e204e9cc9e 100644 --- a/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/purge_mgr_test.go +++ b/core/ledger/kvledger/txmgmt/pvtstatepurgemgmt/purge_mgr_test.go @@ -18,7 +18,7 @@ import ( "github.com/hyperledger/fabric/core/ledger/pvtdatapolicy" btltestutil "github.com/hyperledger/fabric/core/ledger/pvtdatapolicy/testutil" "github.com/hyperledger/fabric/core/ledger/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const ( @@ -180,7 +180,7 @@ func TestKeyUpdateBeforeExpiryBlock(t *testing.T) { putHashUpdates(block1Updates, "ns", "coll", "pvtkey", []byte("pvtvalue-1"), version.NewHeight(1, 1)) helper.commitUpdatesForTesting(1, block1Updates) expInfo, _ := helper.purgeMgr.expKeeper.retrieve(3) - assert.Len(t, expInfo, 1) + require.Len(t, expInfo, 1) // block-2 update: Update both hash and pvt data block2Updates := privacyenabledstate.NewUpdateBatch() @@ -308,67 +308,67 @@ func (h *testHelper) cleanup() { func (h *testHelper) commitUpdatesForTesting(blkNum uint64, updates *privacyenabledstate.UpdateBatch) { h.purgeMgr.PrepareForExpiringKeys(blkNum) - assert.NoError(h.t, h.purgeMgr.UpdateExpiryInfo(updates.PvtUpdates, updates.HashUpdates)) - assert.NoError(h.t, h.purgeMgr.AddExpiredEntriesToUpdateBatch(updates.PvtUpdates, updates.HashUpdates)) - assert.NoError(h.t, h.db.ApplyPrivacyAwareUpdates(updates, version.NewHeight(blkNum, 1))) + require.NoError(h.t, h.purgeMgr.UpdateExpiryInfo(updates.PvtUpdates, updates.HashUpdates)) + require.NoError(h.t, h.purgeMgr.AddExpiredEntriesToUpdateBatch(updates.PvtUpdates, updates.HashUpdates)) + require.NoError(h.t, h.db.ApplyPrivacyAwareUpdates(updates, version.NewHeight(blkNum, 1))) h.db.ClearCachedVersions() h.purgeMgr.BlockCommitDone() } func (h *testHelper) commitPvtDataOfOldBlocksForTesting(updates *privacyenabledstate.UpdateBatch) { - assert.NoError(h.t, h.purgeMgr.UpdateExpiryInfoOfPvtDataOfOldBlocks(updates.PvtUpdates)) - assert.NoError(h.t, h.db.ApplyPrivacyAwareUpdates(updates, nil)) + require.NoError(h.t, h.purgeMgr.UpdateExpiryInfoOfPvtDataOfOldBlocks(updates.PvtUpdates)) + require.NoError(h.t, h.db.ApplyPrivacyAwareUpdates(updates, nil)) } func (h *testHelper) checkPvtdataExists(ns, coll, key string, value []byte) { vv, hashVersion := h.fetchPvtdataFronDB(ns, coll, key) - assert.NotNil(h.t, vv) - assert.Equal(h.t, value, vv.Value) - assert.Equal(h.t, vv.Version, hashVersion) + require.NotNil(h.t, vv) + require.Equal(h.t, value, vv.Value) + require.Equal(h.t, vv.Version, hashVersion) } func (h *testHelper) checkPvtdataDoesNotExist(ns, coll, key string) { vv, hashVersion := h.fetchPvtdataFronDB(ns, coll, key) - assert.Nil(h.t, vv) - assert.Nil(h.t, hashVersion) + require.Nil(h.t, vv) + require.Nil(h.t, hashVersion) } func (h *testHelper) checkOnlyPvtKeyExists(ns, coll, key string, value []byte) { vv, hashVersion := h.fetchPvtdataFronDB(ns, coll, key) - assert.NotNil(h.t, vv) - assert.Nil(h.t, hashVersion) - assert.Equal(h.t, value, vv.Value) + require.NotNil(h.t, vv) + require.Nil(h.t, hashVersion) + require.Equal(h.t, value, vv.Value) } func (h *testHelper) checkOnlyPvtKeyDoesNotExist(ns, coll, key string) { kv, err := h.db.GetPrivateData(ns, coll, key) - assert.Nil(h.t, err) - assert.Nil(h.t, kv) + require.Nil(h.t, err) + require.Nil(h.t, kv) } func (h *testHelper) checkOnlyKeyHashExists(ns, coll, key string) { vv, hashVersion := h.fetchPvtdataFronDB(ns, coll, key) - assert.Nil(h.t, vv) - assert.NotNil(h.t, hashVersion) + require.Nil(h.t, vv) + require.NotNil(h.t, hashVersion) } func (h *testHelper) fetchPvtdataFronDB(ns, coll, key string) (kv *statedb.VersionedValue, hashVersion *version.Height) { var err error kv, err = h.db.GetPrivateData(ns, coll, key) - assert.NoError(h.t, err) + require.NoError(h.t, err) hashVersion, err = h.db.GetKeyHashVersion(ns, coll, util.ComputeStringHash(key)) - assert.NoError(h.t, err) + require.NoError(h.t, err) return } func (h *testHelper) checkExpiryEntryExistsForBlockNum(expiringBlk uint64, expectedNumEntries int) { expInfo, err := h.purgeMgr.expKeeper.retrieve(expiringBlk) - assert.NoError(h.t, err) - assert.Len(h.t, expInfo, expectedNumEntries) + require.NoError(h.t, err) + require.Len(h.t, expInfo, expectedNumEntries) } func (h *testHelper) checkNoExpiryEntryExistsForBlockNum(expiringBlk uint64) { expInfo, err := h.purgeMgr.expKeeper.retrieve(expiringBlk) - assert.NoError(h.t, err) - assert.Len(h.t, expInfo, 0) + require.NoError(h.t, err) + require.Len(h.t, expInfo, 0) } diff --git a/core/ledger/kvledger/txmgmt/statedb/commontests/test_common.go b/core/ledger/kvledger/txmgmt/statedb/commontests/test_common.go index b7a263f25cd..ad614b8fcac 100644 --- a/core/ledger/kvledger/txmgmt/statedb/commontests/test_common.go +++ b/core/ledger/kvledger/txmgmt/statedb/commontests/test_common.go @@ -13,19 +13,18 @@ import ( "github.com/hyperledger/fabric/core/ledger/internal/version" "github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) // TestGetStateMultipleKeys tests read for given multiple keys func TestGetStateMultipleKeys(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testgetmultiplekeys", nil) - assert.NoError(t, err) + require.NoError(t, err) // Test that savepoint is nil for a new state db sp, err := db.GetLatestSavePoint() - assert.NoError(t, err, "Error upon GetLatestSavePoint()") - assert.Nil(t, sp) + require.NoError(t, err, "Error upon GetLatestSavePoint()") + require.Nil(t, sp) batch := statedb.NewUpdateBatch() expectedValues := make([]*statedb.VersionedValue, 2) @@ -43,24 +42,24 @@ func TestGetStateMultipleKeys(t *testing.T, dbProvider statedb.VersionedDBProvid db.ApplyUpdates(batch, savePoint) actualValues, _ := db.GetStateMultipleKeys("ns1", []string{"key1", "key2"}) - assert.Equal(t, expectedValues, actualValues) + require.Equal(t, expectedValues, actualValues) } // TestBasicRW tests basic read-write func TestBasicRW(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testbasicrw", nil) - assert.NoError(t, err) + require.NoError(t, err) // Test that savepoint is nil for a new state db sp, err := db.GetLatestSavePoint() - assert.NoError(t, err, "Error upon GetLatestSavePoint()") - assert.Nil(t, sp) + require.NoError(t, err, "Error upon GetLatestSavePoint()") + require.Nil(t, sp) // Test retrieval of non-existent key - returns nil rather than error // For more details see https://github.com/hyperledger-archives/fabric/issues/936. val, err := db.GetState("ns", "key1") - assert.NoError(t, err, "Should receive nil rather than error upon reading non existent key") - assert.Nil(t, val) + require.NoError(t, err, "Should receive nil rather than error upon reading non existent key") + require.Nil(t, val) batch := statedb.NewUpdateBatch() vv1 := statedb.VersionedValue{Value: []byte("value1"), Version: version.NewHeight(1, 1)} @@ -77,27 +76,27 @@ func TestBasicRW(t *testing.T, dbProvider statedb.VersionedDBProvider) { db.ApplyUpdates(batch, savePoint) vv, _ := db.GetState("ns1", "key1") - assert.Equal(t, &vv1, vv) + require.Equal(t, &vv1, vv) vv, _ = db.GetState("ns2", "key4") - assert.Equal(t, &vv4, vv) + require.Equal(t, &vv4, vv) vv, _ = db.GetState("ns2", "key5") - assert.Equal(t, &vv5, vv) + require.Equal(t, &vv5, vv) sp, err = db.GetLatestSavePoint() - assert.NoError(t, err) - assert.Equal(t, savePoint, sp) + require.NoError(t, err) + require.Equal(t, savePoint, sp) } // TestMultiDBBasicRW tests basic read-write on multiple dbs func TestMultiDBBasicRW(t *testing.T, dbProvider statedb.VersionedDBProvider) { db1, err := dbProvider.GetDBHandle("testmultidbbasicrw", nil) - assert.NoError(t, err) + require.NoError(t, err) db2, err := dbProvider.GetDBHandle("testmultidbbasicrw2", nil) - assert.NoError(t, err) + require.NoError(t, err) batch1 := statedb.NewUpdateBatch() vv1 := statedb.VersionedValue{Value: []byte("value1_db1"), Version: version.NewHeight(1, 1)} @@ -116,24 +115,24 @@ func TestMultiDBBasicRW(t *testing.T, dbProvider statedb.VersionedDBProvider) { db2.ApplyUpdates(batch2, savePoint2) vv, _ := db1.GetState("ns1", "key1") - assert.Equal(t, &vv1, vv) + require.Equal(t, &vv1, vv) sp, err := db1.GetLatestSavePoint() - assert.NoError(t, err) - assert.Equal(t, savePoint1, sp) + require.NoError(t, err) + require.Equal(t, savePoint1, sp) vv, _ = db2.GetState("ns1", "key1") - assert.Equal(t, &vv3, vv) + require.Equal(t, &vv3, vv) sp, err = db2.GetLatestSavePoint() - assert.NoError(t, err) - assert.Equal(t, savePoint2, sp) + require.NoError(t, err) + require.Equal(t, savePoint2, sp) } // TestDeletes tests deletes func TestDeletes(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testdeletes", nil) - assert.NoError(t, err) + require.NoError(t, err) batch := statedb.NewUpdateBatch() vv1 := statedb.VersionedValue{Value: []byte("value1"), Version: version.NewHeight(1, 1)} @@ -148,27 +147,27 @@ func TestDeletes(t *testing.T, dbProvider statedb.VersionedDBProvider) { batch.Delete("ns", "key3", version.NewHeight(1, 5)) savePoint := version.NewHeight(1, 5) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) vv, _ := db.GetState("ns", "key2") - assert.Equal(t, &vv2, vv) + require.Equal(t, &vv2, vv) vv, err = db.GetState("ns", "key3") - assert.NoError(t, err) - assert.Nil(t, vv) + require.NoError(t, err) + require.Nil(t, vv) batch = statedb.NewUpdateBatch() batch.Delete("ns", "key2", version.NewHeight(1, 6)) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) vv, err = db.GetState("ns", "key2") - assert.NoError(t, err) - assert.Nil(t, vv) + require.NoError(t, err) + require.Nil(t, vv) } // TestIterator tests the iterator func TestIterator(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testiterator", nil) - assert.NoError(t, err) + require.NoError(t, err) db.Open() defer db.Close() batch := statedb.NewUpdateBatch() @@ -201,16 +200,16 @@ func testItr(t *testing.T, itr statedb.ResultsIterator, expectedKeys []string) { queryResult, _ := itr.Next() vkv := queryResult.(*statedb.VersionedKV) key := vkv.Key - assert.Equal(t, expectedKey, key) + require.Equal(t, expectedKey, key) } _, err := itr.Next() - assert.NoError(t, err) + require.NoError(t, err) } // TestQuery tests queries func TestQuery(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testquery", nil) - assert.NoError(t, err) + require.NoError(t, err) db.Open() defer db.Close() batch := statedb.NewUpdateBatch() @@ -254,235 +253,235 @@ func TestQuery(t *testing.T, dbProvider statedb.VersionedDBProvider) { // query for owner=jerry, use namespace "ns1" itr, err := db.ExecuteQuery("ns1", `{"selector":{"owner":"jerry"}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify one jerry result queryResult1, err := itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult1) + require.NoError(t, err) + require.NotNil(t, queryResult1) versionedQueryRecord := queryResult1.(*statedb.VersionedKV) stringRecord := string(versionedQueryRecord.Value) bFoundRecord := strings.Contains(stringRecord, "jerry") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify no more results queryResult2, err := itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult2) + require.NoError(t, err) + require.Nil(t, queryResult2) // query for owner=jerry, use namespace "ns2" itr, err = db.ExecuteQuery("ns2", `{"selector":{"owner":"jerry"}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify one jerry result queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult1) + require.NoError(t, err) + require.NotNil(t, queryResult1) versionedQueryRecord = queryResult1.(*statedb.VersionedKV) stringRecord = string(versionedQueryRecord.Value) bFoundRecord = strings.Contains(stringRecord, "jerry") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify no more results queryResult2, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult2) + require.NoError(t, err) + require.Nil(t, queryResult2) // query for owner=jerry, use namespace "ns3" itr, err = db.ExecuteQuery("ns3", `{"selector":{"owner":"jerry"}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify results - should be no records queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult1) + require.NoError(t, err) + require.Nil(t, queryResult1) // query using bad query string _, err = db.ExecuteQuery("ns1", "this is an invalid query string") - assert.Error(t, err, "Should have received an error for invalid query string") + require.Error(t, err, "Should have received an error for invalid query string") // query returns 0 records _, err = db.ExecuteQuery("ns1", `{"selector":{"owner":"not_a_valid_name"}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify no results queryResult3, err := itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult3) + require.NoError(t, err) + require.Nil(t, queryResult3) // query with fields, namespace "ns1" itr, err = db.ExecuteQuery("ns1", `{"selector":{"owner":"jerry"},"fields": ["owner", "asset_name", "color", "size"]}`) - assert.NoError(t, err) + require.NoError(t, err) // verify one jerry result queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult1) + require.NoError(t, err) + require.NotNil(t, queryResult1) versionedQueryRecord = queryResult1.(*statedb.VersionedKV) stringRecord = string(versionedQueryRecord.Value) bFoundRecord = strings.Contains(stringRecord, "jerry") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify no more results queryResult2, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult2) + require.NoError(t, err) + require.Nil(t, queryResult2) // query with fields, namespace "ns2" itr, err = db.ExecuteQuery("ns2", `{"selector":{"owner":"jerry"},"fields": ["owner", "asset_name", "color", "size"]}`) - assert.NoError(t, err) + require.NoError(t, err) // verify one jerry result queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult1) + require.NoError(t, err) + require.NotNil(t, queryResult1) versionedQueryRecord = queryResult1.(*statedb.VersionedKV) stringRecord = string(versionedQueryRecord.Value) bFoundRecord = strings.Contains(stringRecord, "jerry") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify no more results queryResult2, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult2) + require.NoError(t, err) + require.Nil(t, queryResult2) // query with fields, namespace "ns3" itr, err = db.ExecuteQuery("ns3", `{"selector":{"owner":"jerry"},"fields": ["owner", "asset_name", "color", "size"]}`) - assert.NoError(t, err) + require.NoError(t, err) // verify no results queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult1) + require.NoError(t, err) + require.Nil(t, queryResult1) // query with complex selector, namespace "ns1" itr, err = db.ExecuteQuery("ns1", `{"selector":{"$and":[{"size":{"$gt": 5}},{"size":{"$lt":8}},{"$not":{"size":6}}]}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify one fred result queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult1) + require.NoError(t, err) + require.NotNil(t, queryResult1) versionedQueryRecord = queryResult1.(*statedb.VersionedKV) stringRecord = string(versionedQueryRecord.Value) bFoundRecord = strings.Contains(stringRecord, "fred") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify no more results queryResult2, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult2) + require.NoError(t, err) + require.Nil(t, queryResult2) // query with complex selector, namespace "ns2" itr, err = db.ExecuteQuery("ns2", `{"selector":{"$and":[{"size":{"$gt": 5}},{"size":{"$lt":8}},{"$not":{"size":6}}]}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify one fred result queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult1) + require.NoError(t, err) + require.NotNil(t, queryResult1) versionedQueryRecord = queryResult1.(*statedb.VersionedKV) stringRecord = string(versionedQueryRecord.Value) bFoundRecord = strings.Contains(stringRecord, "fred") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify no more results queryResult2, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult2) + require.NoError(t, err) + require.Nil(t, queryResult2) // query with complex selector, namespace "ns3" itr, err = db.ExecuteQuery("ns3", `{"selector":{"$and":[{"size":{"$gt": 5}},{"size":{"$lt":8}},{"$not":{"size":6}}]}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify no more results queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult1) + require.NoError(t, err) + require.Nil(t, queryResult1) // query with embedded implicit "AND" and explicit "OR", namespace "ns1" itr, err = db.ExecuteQuery("ns1", `{"selector":{"color":"green","$or":[{"owner":"fred"},{"owner":"mary"}]}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify one green result queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult1) + require.NoError(t, err) + require.NotNil(t, queryResult1) versionedQueryRecord = queryResult1.(*statedb.VersionedKV) stringRecord = string(versionedQueryRecord.Value) bFoundRecord = strings.Contains(stringRecord, "green") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify another green result queryResult2, err = itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult2) + require.NoError(t, err) + require.NotNil(t, queryResult2) versionedQueryRecord = queryResult2.(*statedb.VersionedKV) stringRecord = string(versionedQueryRecord.Value) bFoundRecord = strings.Contains(stringRecord, "green") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify no more results queryResult3, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult3) + require.NoError(t, err) + require.Nil(t, queryResult3) // query with embedded implicit "AND" and explicit "OR", namespace "ns2" itr, err = db.ExecuteQuery("ns2", `{"selector":{"color":"green","$or":[{"owner":"fred"},{"owner":"mary"}]}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify one green result queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult1) + require.NoError(t, err) + require.NotNil(t, queryResult1) versionedQueryRecord = queryResult1.(*statedb.VersionedKV) stringRecord = string(versionedQueryRecord.Value) bFoundRecord = strings.Contains(stringRecord, "green") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify another green result queryResult2, err = itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult2) + require.NoError(t, err) + require.NotNil(t, queryResult2) versionedQueryRecord = queryResult2.(*statedb.VersionedKV) stringRecord = string(versionedQueryRecord.Value) bFoundRecord = strings.Contains(stringRecord, "green") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify no more results queryResult3, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult3) + require.NoError(t, err) + require.Nil(t, queryResult3) // query with embedded implicit "AND" and explicit "OR", namespace "ns3" itr, err = db.ExecuteQuery("ns3", `{"selector":{"color":"green","$or":[{"owner":"fred"},{"owner":"mary"}]}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify no results queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult1) + require.NoError(t, err) + require.Nil(t, queryResult1) // query with integer with digit-count equals 7 and response received is also received // with same digit-count and there is no float transformation itr, err = db.ExecuteQuery("ns1", `{"selector":{"$and":[{"size":{"$eq": 1000007}}]}}`) - assert.NoError(t, err) + require.NoError(t, err) // verify one jerry result queryResult1, err = itr.Next() - assert.NoError(t, err) - assert.NotNil(t, queryResult1) + require.NoError(t, err) + require.NotNil(t, queryResult1) versionedQueryRecord = queryResult1.(*statedb.VersionedKV) stringRecord = string(versionedQueryRecord.Value) bFoundRecord = strings.Contains(stringRecord, "joe") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) bFoundRecord = strings.Contains(stringRecord, "1000007") - assert.True(t, bFoundRecord) + require.True(t, bFoundRecord) // verify no more results queryResult2, err = itr.Next() - assert.NoError(t, err) - assert.Nil(t, queryResult2) + require.NoError(t, err) + require.Nil(t, queryResult2) } @@ -490,7 +489,7 @@ func TestQuery(t *testing.T, dbProvider statedb.VersionedDBProvider) { func TestGetVersion(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testgetversion", nil) - assert.NoError(t, err) + require.NoError(t, err) batch := statedb.NewUpdateBatch() vv1 := statedb.VersionedValue{Value: []byte("value1"), Version: version.NewHeight(1, 1)} @@ -504,7 +503,7 @@ func TestGetVersion(t *testing.T, dbProvider statedb.VersionedDBProvider) { batch.Put("ns", "key4", vv2.Value, vv4.Version) savePoint := version.NewHeight(1, 5) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) //check to see if the bulk optimizable interface is supported (couchdb) if bulkdb, ok := db.(statedb.BulkOptimizable); ok { @@ -514,13 +513,13 @@ func TestGetVersion(t *testing.T, dbProvider statedb.VersionedDBProvider) { //retrieve a version by namespace and key resp, err := db.GetVersion("ns", "key2") - assert.NoError(t, err) - assert.Equal(t, version.NewHeight(1, 2), resp) + require.NoError(t, err) + require.Equal(t, version.NewHeight(1, 2), resp) //attempt to retrieve an non-existent namespace and key resp, err = db.GetVersion("ns2", "key2") - assert.NoError(t, err) - assert.Nil(t, resp) + require.NoError(t, err) + require.Nil(t, resp) //check to see if the bulk optimizable interface is supported (couchdb) if bulkdb, ok := db.(statedb.BulkOptimizable); ok { @@ -538,8 +537,8 @@ func TestGetVersion(t *testing.T, dbProvider statedb.VersionedDBProvider) { //retrieve a version by namespace and key resp, err := db.GetVersion("ns", "key3") - assert.NoError(t, err) - assert.Equal(t, version.NewHeight(1, 3), resp) + require.NoError(t, err) + require.Equal(t, version.NewHeight(1, 3), resp) } } @@ -547,7 +546,7 @@ func TestGetVersion(t *testing.T, dbProvider statedb.VersionedDBProvider) { // TestSmallBatchSize tests multiple update batches func TestSmallBatchSize(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testsmallbatchsize", nil) - assert.NoError(t, err) + require.NoError(t, err) db.Open() defer db.Close() batch := statedb.NewUpdateBatch() @@ -580,44 +579,44 @@ func TestSmallBatchSize(t *testing.T, dbProvider statedb.VersionedDBProvider) { //Verify all marbles were added vv, _ := db.GetState("ns1", "key1") - assert.JSONEq(t, string(jsonValue1), string(vv.Value)) + require.JSONEq(t, string(jsonValue1), string(vv.Value)) vv, _ = db.GetState("ns1", "key2") - assert.JSONEq(t, string(jsonValue2), string(vv.Value)) + require.JSONEq(t, string(jsonValue2), string(vv.Value)) vv, _ = db.GetState("ns1", "key3") - assert.JSONEq(t, string(jsonValue3), string(vv.Value)) + require.JSONEq(t, string(jsonValue3), string(vv.Value)) vv, _ = db.GetState("ns1", "key4") - assert.JSONEq(t, string(jsonValue4), string(vv.Value)) + require.JSONEq(t, string(jsonValue4), string(vv.Value)) vv, _ = db.GetState("ns1", "key5") - assert.JSONEq(t, string(jsonValue5), string(vv.Value)) + require.JSONEq(t, string(jsonValue5), string(vv.Value)) vv, _ = db.GetState("ns1", "key6") - assert.JSONEq(t, string(jsonValue6), string(vv.Value)) + require.JSONEq(t, string(jsonValue6), string(vv.Value)) vv, _ = db.GetState("ns1", "key7") - assert.JSONEq(t, string(jsonValue7), string(vv.Value)) + require.JSONEq(t, string(jsonValue7), string(vv.Value)) vv, _ = db.GetState("ns1", "key8") - assert.JSONEq(t, string(jsonValue8), string(vv.Value)) + require.JSONEq(t, string(jsonValue8), string(vv.Value)) vv, _ = db.GetState("ns1", "key9") - assert.JSONEq(t, string(jsonValue9), string(vv.Value)) + require.JSONEq(t, string(jsonValue9), string(vv.Value)) vv, _ = db.GetState("ns1", "key10") - assert.JSONEq(t, string(jsonValue10), string(vv.Value)) + require.JSONEq(t, string(jsonValue10), string(vv.Value)) vv, _ = db.GetState("ns1", "key11") - assert.JSONEq(t, string(jsonValue11), string(vv.Value)) + require.JSONEq(t, string(jsonValue11), string(vv.Value)) } // TestBatchWithIndividualRetry tests a single failure in a batch func TestBatchWithIndividualRetry(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testbatchretry", nil) - assert.NoError(t, err) + require.NoError(t, err) batch := statedb.NewUpdateBatch() vv1 := statedb.VersionedValue{Value: []byte("value1"), Version: version.NewHeight(1, 1)} @@ -631,7 +630,7 @@ func TestBatchWithIndividualRetry(t *testing.T, dbProvider statedb.VersionedDBPr batch.Put("ns", "key4", vv4.Value, vv4.Version) savePoint := version.NewHeight(1, 5) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) // Clear the cache for the next batch, in place of simulation if bulkdb, ok := db.(statedb.BulkOptimizable); ok { @@ -646,7 +645,7 @@ func TestBatchWithIndividualRetry(t *testing.T, dbProvider statedb.VersionedDBPr batch.Put("ns", "key4", vv4.Value, vv4.Version) savePoint = version.NewHeight(1, 6) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) // Update document key3 batch = statedb.NewUpdateBatch() @@ -654,7 +653,7 @@ func TestBatchWithIndividualRetry(t *testing.T, dbProvider statedb.VersionedDBPr batch.Put("ns", "key3", vv3.Value, vv3.Version) savePoint = version.NewHeight(1, 7) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) // This should force a retry for couchdb revision conflict for both delete and update // Retry logic should correct the update and prevent delete from throwing an error @@ -663,7 +662,7 @@ func TestBatchWithIndividualRetry(t *testing.T, dbProvider statedb.VersionedDBPr batch.Put("ns", "key3", vv3.Value, vv3.Version) savePoint = version.NewHeight(1, 8) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) //Create a new set of values that use JSONs instead of binary jsonValue5 := []byte(`{"asset_name": "marble5","color": "blue","size": 5,"owner": "fred"}`) @@ -684,7 +683,7 @@ func TestBatchWithIndividualRetry(t *testing.T, dbProvider statedb.VersionedDBPr batch.Put("ns1", "key8", jsonValue8, version.NewHeight(1, 12)) savePoint = version.NewHeight(1, 6) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) // Clear the cache for the next batch, in place of simulation if bulkdb, ok := db.(statedb.BulkOptimizable); ok { @@ -700,7 +699,7 @@ func TestBatchWithIndividualRetry(t *testing.T, dbProvider statedb.VersionedDBPr batch.Put("ns1", "key8", jsonValue8, version.NewHeight(1, 12)) savePoint = version.NewHeight(1, 6) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) // Update document key3 // this will cause an inconsistent cache entry for connection db2 @@ -709,7 +708,7 @@ func TestBatchWithIndividualRetry(t *testing.T, dbProvider statedb.VersionedDBPr batch.Put("ns1", "key7", jsonValue7, version.NewHeight(1, 14)) savePoint = version.NewHeight(1, 15) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) // This should force a retry for couchdb revision conflict for both delete and update // Retry logic should correct the update and prevent delete from throwing an error @@ -718,14 +717,14 @@ func TestBatchWithIndividualRetry(t *testing.T, dbProvider statedb.VersionedDBPr batch.Put("ns1", "key7", jsonValue7, version.NewHeight(1, 17)) savePoint = version.NewHeight(1, 18) err = db.ApplyUpdates(batch, savePoint) - assert.NoError(t, err) + require.NoError(t, err) } // TestValueAndMetadataWrites tests statedb for value and metadata read-writes func TestValueAndMetadataWrites(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testvalueandmetadata", nil) - assert.NoError(t, err) + require.NoError(t, err) batch := statedb.NewUpdateBatch() vv1 := statedb.VersionedValue{Value: []byte("value1"), Metadata: []byte("metadata1"), Version: version.NewHeight(1, 1)} @@ -740,22 +739,22 @@ func TestValueAndMetadataWrites(t *testing.T, dbProvider statedb.VersionedDBProv db.ApplyUpdates(batch, version.NewHeight(2, 5)) vv, _ := db.GetState("ns1", "key1") - assert.Equal(t, &vv1, vv) + require.Equal(t, &vv1, vv) vv, _ = db.GetState("ns1", "key2") - assert.Equal(t, &vv2, vv) + require.Equal(t, &vv2, vv) vv, _ = db.GetState("ns2", "key3") - assert.Equal(t, &vv3, vv) + require.Equal(t, &vv3, vv) vv, _ = db.GetState("ns2", "key4") - assert.Equal(t, &vv4, vv) + require.Equal(t, &vv4, vv) } // TestPaginatedRangeQuery tests range queries with pagination func TestPaginatedRangeQuery(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testpaginatedrangequery", nil) - assert.NoError(t, err) + require.NoError(t, err) db.Open() defer db.Close() batch := statedb.NewUpdateBatch() @@ -849,40 +848,40 @@ func TestPaginatedRangeQuery(t *testing.T, dbProvider statedb.VersionedDBProvide //Test range query with no pagination returnKeys := []string{} _, err = executeRangeQuery(t, db, "ns1", "key1", "key15", int32(0), returnKeys) - assert.NoError(t, err) + require.NoError(t, err) //Test range query with large page size (single page return) returnKeys = []string{"key1", "key10", "key11", "key12", "key13", "key14"} _, err = executeRangeQuery(t, db, "ns1", "key1", "key15", int32(10), returnKeys) - assert.NoError(t, err) + require.NoError(t, err) //Test explicit pagination //Test range query with multiple pages returnKeys = []string{"key1", "key10"} nextStartKey, err := executeRangeQuery(t, db, "ns1", "key1", "key22", int32(2), returnKeys) - assert.NoError(t, err) + require.NoError(t, err) // NextStartKey is now passed in as startKey, verify the pagesize is working returnKeys = []string{"key11", "key12"} _, err = executeRangeQuery(t, db, "ns1", nextStartKey, "key22", int32(2), returnKeys) - assert.NoError(t, err) + require.NoError(t, err) //Test implicit pagination //Test range query with no pagesize and a small queryLimit returnKeys = []string{} _, err = executeRangeQuery(t, db, "ns1", "key1", "key15", int32(0), returnKeys) - assert.NoError(t, err) + require.NoError(t, err) //Test range query with pagesize greater than the queryLimit returnKeys = []string{"key1", "key10", "key11", "key12"} _, err = executeRangeQuery(t, db, "ns1", "key1", "key15", int32(4), returnKeys) - assert.NoError(t, err) + require.NoError(t, err) } // TestRangeQuerySpecialCharacters tests range queries for keys with special characters and/or non-English characters func TestRangeQuerySpecialCharacters(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("testrangequeryspecialcharacters", nil) - assert.NoError(t, err) + require.NoError(t, err) db.Open() defer db.Close() @@ -917,7 +916,7 @@ func TestRangeQuerySpecialCharacters(t *testing.T, dbProvider statedb.VersionedD returnKeys := []string{"key1", "key1%=", "key1&%-", "key1-a", "key10", "key1español", "key1z", "key1中文", "key1한국어"} // returnKeys := []string{"key1", "key1%=", "key1&%-", "key1-a", "key10", "key1español", "key1z"} _, err = executeRangeQuery(t, db, "ns1", "key1", "key2", int32(10), returnKeys) - assert.NoError(t, err) + require.NoError(t, err) } func executeRangeQuery(t *testing.T, db statedb.VersionedDB, namespace, startKey, endKey string, pageSize int32, returnKeys []string) (string, error) { @@ -954,32 +953,32 @@ func executeRangeQuery(t *testing.T, db statedb.VersionedDB, namespace, startKey func TestItrWithoutClose(t *testing.T, itr statedb.ResultsIterator, expectedKeys []string) { for _, expectedKey := range expectedKeys { queryResult, err := itr.Next() - assert.NoError(t, err, "An unexpected error was thrown during iterator Next()") + require.NoError(t, err, "An unexpected error was thrown during iterator Next()") vkv := queryResult.(*statedb.VersionedKV) key := vkv.Key - assert.Equal(t, expectedKey, key) + require.Equal(t, expectedKey, key) } queryResult, err := itr.Next() - assert.NoError(t, err, "An unexpected error was thrown during iterator Next()") - assert.Nil(t, queryResult) + require.NoError(t, err, "An unexpected error was thrown during iterator Next()") + require.Nil(t, queryResult) } func TestApplyUpdatesWithNilHeight(t *testing.T, dbProvider statedb.VersionedDBProvider) { db, err := dbProvider.GetDBHandle("test-apply-updates-with-nil-height", nil) - assert.NoError(t, err) + require.NoError(t, err) batch1 := statedb.NewUpdateBatch() batch1.Put("ns", "key1", []byte("value1"), version.NewHeight(1, 4)) savePoint := version.NewHeight(1, 5) - assert.NoError(t, db.ApplyUpdates(batch1, savePoint)) + require.NoError(t, db.ApplyUpdates(batch1, savePoint)) batch2 := statedb.NewUpdateBatch() batch2.Put("ns", "key1", []byte("value2"), version.NewHeight(1, 1)) - assert.NoError(t, db.ApplyUpdates(batch2, nil)) + require.NoError(t, db.ApplyUpdates(batch2, nil)) ht, err := db.GetLatestSavePoint() - assert.NoError(t, err) - assert.Equal(t, savePoint, ht) // savepoint should still be what was set with batch1 + require.NoError(t, err) + require.Equal(t, savePoint, ht) // savepoint should still be what was set with batch1 // (because batch2 calls ApplyUpdates with savepoint as nil) } @@ -989,7 +988,7 @@ func TestDataExportImport( valueFormat byte) { sourceDB, err := dbProvider.GetDBHandle("sourceLedger", nil) - assert.NoError(t, err) + require.NoError(t, err) // generateSampleData returns a slice of KVs. The returned value contains five KVs for each of the namespaces generateSampleData := func(namespaces ...string) []*statedb.VersionedKV { @@ -1034,7 +1033,7 @@ func TestDataExportImport( require.Equal(t, valueFormat, valFormat) destinationDB, err := dbProvider.GetDBHandle(destDBName, nil) - assert.NoError(t, err) + require.NoError(t, err) err = destinationDB.ImportState(fullScanItr, valFormat) require.NoError(t, err) diff --git a/core/ledger/pkg_test.go b/core/ledger/pkg_test.go index dbf318cb2db..41268e629bf 100644 --- a/core/ledger/pkg_test.go +++ b/core/ledger/pkg_test.go @@ -9,12 +9,12 @@ import ( "testing" "github.com/hyperledger/fabric-protos-go/ledger/rwset" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestTxPvtData(t *testing.T) { txPvtData := &TxPvtData{} - assert.False(t, txPvtData.Has("ns", "coll")) + require.False(t, txPvtData.Has("ns", "coll")) txPvtData.WriteSet = &rwset.TxPvtReadWriteSet{ DataModel: rwset.TxReadWriteSet_KV, @@ -35,18 +35,18 @@ func TestTxPvtData(t *testing.T) { }, } - assert.True(t, txPvtData.Has("ns", "coll-1")) - assert.True(t, txPvtData.Has("ns", "coll-2")) - assert.False(t, txPvtData.Has("ns", "coll-3")) - assert.False(t, txPvtData.Has("ns1", "coll-1")) + require.True(t, txPvtData.Has("ns", "coll-1")) + require.True(t, txPvtData.Has("ns", "coll-2")) + require.False(t, txPvtData.Has("ns", "coll-3")) + require.False(t, txPvtData.Has("ns1", "coll-1")) } func TestPvtNsCollFilter(t *testing.T) { filter := NewPvtNsCollFilter() filter.Add("ns", "coll-1") filter.Add("ns", "coll-2") - assert.True(t, filter.Has("ns", "coll-1")) - assert.True(t, filter.Has("ns", "coll-2")) - assert.False(t, filter.Has("ns", "coll-3")) - assert.False(t, filter.Has("ns1", "coll-3")) + require.True(t, filter.Has("ns", "coll-1")) + require.True(t, filter.Has("ns", "coll-2")) + require.False(t, filter.Has("ns", "coll-3")) + require.False(t, filter.Has("ns1", "coll-3")) } diff --git a/core/ledger/pvtdatastorage/test_exports.go b/core/ledger/pvtdatastorage/test_exports.go index 4390cce7c5f..8824b254ec1 100644 --- a/core/ledger/pvtdatastorage/test_exports.go +++ b/core/ledger/pvtdatastorage/test_exports.go @@ -13,7 +13,7 @@ import ( "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/core/ledger/pvtdatapolicy" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func pvtDataConf() *PrivateDataConfig { @@ -48,13 +48,13 @@ func NewTestStoreEnv( if err != nil { t.Fatalf("Failed to create private data storage directory: %s", err) } - assert := assert.New(t) + require := require.New(t) conf.StorePath = storeDir testStoreProvider, err := NewProvider(conf) - assert.NoError(err) + require.NoError(err) testStore, err := testStoreProvider.OpenStore(ledgerid) testStore.Init(btlPolicy) - assert.NoError(err) + require.NoError(err) return &StoreEnv{t, testStoreProvider, testStore, ledgerid, btlPolicy, conf} } @@ -63,10 +63,10 @@ func (env *StoreEnv) CloseAndReopen() { var err error env.TestStoreProvider.Close() env.TestStoreProvider, err = NewProvider(env.conf) - assert.NoError(env.t, err) + require.NoError(env.t, err) env.TestStore, err = env.TestStoreProvider.OpenStore(env.ledgerid) env.TestStore.Init(env.btlPolicy) - assert.NoError(env.t, err) + require.NoError(env.t, err) } // Cleanup cleansup the store env after testing diff --git a/core/ledger/util/util_test.go b/core/ledger/util/util_test.go index 3040d323509..2116080c42e 100644 --- a/core/ledger/util/util_test.go +++ b/core/ledger/util/util_test.go @@ -19,7 +19,7 @@ package util import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetSortedKeys(t *testing.T) { @@ -30,7 +30,7 @@ func TestGetSortedKeys(t *testing.T) { mapKeyValue["123"] = 22 mapKeyValue["a"] = 33 mapKeyValue[""] = 30 - assert.Equal(t, []string{"", "123", "a", "apple", "blue", "red"}, GetSortedKeys(mapKeyValue)) + require.Equal(t, []string{"", "123", "a", "apple", "blue", "red"}, GetSortedKeys(mapKeyValue)) } func TestGetValuesBySortedKeys(t *testing.T) { @@ -46,7 +46,7 @@ func TestGetValuesBySortedKeys(t *testing.T) { sortedRes := []*name{} GetValuesBySortedKeys(&mapKeyValue, &sortedRes) - assert.Equal( + require.Equal( t, []*name{{"None", "none"}, {"Two", "two"}, {"Three", "three"}, {"Five", "five"}}, sortedRes, diff --git a/core/peer/config_test.go b/core/peer/config_test.go index cc3a4634416..6db5da4784a 100644 --- a/core/peer/config_test.go +++ b/core/peer/config_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/internal/pkg/comm" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCacheConfigurationNegative(t *testing.T) { @@ -24,22 +24,22 @@ func TestCacheConfigurationNegative(t *testing.T) { viper.Set("peer.addressAutoDetect", true) viper.Set("peer.address", "testing.com") _, err := GlobalConfig() - assert.Error(t, err, "Expected error for bad configuration") + require.Error(t, err, "Expected error for bad configuration") viper.Set("peer.addressAutoDetect", false) viper.Set("peer.address", "") _, err = GlobalConfig() - assert.Error(t, err, "Expected error for bad configuration") + require.Error(t, err, "Expected error for bad configuration") viper.Set("peer.address", "wrongAddress") _, err = GlobalConfig() - assert.Error(t, err, "Expected error for bad configuration") + require.Error(t, err, "Expected error for bad configuration") } func TestPeerAddress(t *testing.T) { localIP, err := comm.GetLocalIP() - assert.NoError(t, err) + require.NoError(t, err) var tests = []struct { name string @@ -87,8 +87,8 @@ func TestPeerAddress(t *testing.T) { viper.Set(k, v) } c, err := GlobalConfig() - assert.NoError(t, err, "GlobalConfig returned unexpected error") - assert.Equal(t, test.expectedPeerAddress, c.PeerAddress) + require.NoError(t, err, "GlobalConfig returned unexpected error") + require.Equal(t, test.expectedPeerAddress, c.PeerAddress) }) } } @@ -98,20 +98,20 @@ func TestGetServerConfig(t *testing.T) { viper.Set("peer.tls.enabled", false) viper.Set("peer.connectiontimeout", "7s") sc, _ := GetServerConfig() - assert.Equal(t, false, sc.SecOpts.UseTLS, "ServerConfig.SecOpts.UseTLS should be false") - assert.Equal(t, sc.ConnectionTimeout, 7*time.Second, "ServerConfig.ConnectionTimeout should be 7 seconds") + require.Equal(t, false, sc.SecOpts.UseTLS, "ServerConfig.SecOpts.UseTLS should be false") + require.Equal(t, sc.ConnectionTimeout, 7*time.Second, "ServerConfig.ConnectionTimeout should be 7 seconds") // keepalive options - assert.Equal(t, comm.DefaultKeepaliveOptions, sc.KaOpts, "ServerConfig.KaOpts should be set to default values") + require.Equal(t, comm.DefaultKeepaliveOptions, sc.KaOpts, "ServerConfig.KaOpts should be set to default values") viper.Set("peer.keepalive.interval", "60m") sc, _ = GetServerConfig() - assert.Equal(t, time.Duration(60)*time.Minute, sc.KaOpts.ServerInterval, "ServerConfig.KaOpts.ServerInterval should be set to 60 min") + require.Equal(t, time.Duration(60)*time.Minute, sc.KaOpts.ServerInterval, "ServerConfig.KaOpts.ServerInterval should be set to 60 min") viper.Set("peer.keepalive.timeout", "30s") sc, _ = GetServerConfig() - assert.Equal(t, time.Duration(30)*time.Second, sc.KaOpts.ServerTimeout, "ServerConfig.KaOpts.ServerTimeout should be set to 30 sec") + require.Equal(t, time.Duration(30)*time.Second, sc.KaOpts.ServerTimeout, "ServerConfig.KaOpts.ServerTimeout should be set to 30 sec") viper.Set("peer.keepalive.minInterval", "2m") sc, _ = GetServerConfig() - assert.Equal(t, time.Duration(2)*time.Minute, sc.KaOpts.ServerMinInterval, "ServerConfig.KaOpts.ServerMinInterval should be set to 2 min") + require.Equal(t, time.Duration(2)*time.Minute, sc.KaOpts.ServerMinInterval, "ServerConfig.KaOpts.ServerMinInterval should be set to 2 min") // good config with TLS viper.Set("peer.tls.enabled", true) @@ -119,24 +119,24 @@ func TestGetServerConfig(t *testing.T) { viper.Set("peer.tls.key.file", filepath.Join("testdata", "Org1-server1-key.pem")) viper.Set("peer.tls.rootcert.file", filepath.Join("testdata", "Org1-cert.pem")) sc, _ = GetServerConfig() - assert.Equal(t, true, sc.SecOpts.UseTLS, "ServerConfig.SecOpts.UseTLS should be true") - assert.Equal(t, false, sc.SecOpts.RequireClientCert, "ServerConfig.SecOpts.RequireClientCert should be false") + require.Equal(t, true, sc.SecOpts.UseTLS, "ServerConfig.SecOpts.UseTLS should be true") + require.Equal(t, false, sc.SecOpts.RequireClientCert, "ServerConfig.SecOpts.RequireClientCert should be false") viper.Set("peer.tls.clientAuthRequired", true) viper.Set("peer.tls.clientRootCAs.files", []string{ filepath.Join("testdata", "Org1-cert.pem"), filepath.Join("testdata", "Org2-cert.pem"), }) sc, _ = GetServerConfig() - assert.Equal(t, true, sc.SecOpts.RequireClientCert, "ServerConfig.SecOpts.RequireClientCert should be true") - assert.Equal(t, 2, len(sc.SecOpts.ClientRootCAs), "ServerConfig.SecOpts.ClientRootCAs should contain 2 entries") + require.Equal(t, true, sc.SecOpts.RequireClientCert, "ServerConfig.SecOpts.RequireClientCert should be true") + require.Equal(t, 2, len(sc.SecOpts.ClientRootCAs), "ServerConfig.SecOpts.ClientRootCAs should contain 2 entries") // bad config with TLS viper.Set("peer.tls.rootcert.file", filepath.Join("testdata", "Org11-cert.pem")) _, err := GetServerConfig() - assert.Error(t, err, "GetServerConfig should return error with bad root cert path") + require.Error(t, err, "GetServerConfig should return error with bad root cert path") viper.Set("peer.tls.cert.file", filepath.Join("testdata", "Org11-cert.pem")) _, err = GetServerConfig() - assert.Error(t, err, "GetServerConfig should return error with bad tls cert path") + require.Error(t, err, "GetServerConfig should return error with bad tls cert path") // disable TLS for remaining tests viper.Set("peer.tls.enabled", false) @@ -151,19 +151,19 @@ func TestGetClientCertificate(t *testing.T) { // neither client nor server key pairs set - expect error _, err := GetClientCertificate() - assert.Error(t, err) + require.Error(t, err) viper.Set("peer.tls.key.file", "") viper.Set("peer.tls.cert.file", filepath.Join("testdata", "Org1-server1-cert.pem")) // missing server key file - expect error _, err = GetClientCertificate() - assert.Error(t, err) + require.Error(t, err) viper.Set("peer.tls.key.file", filepath.Join("testdata", "Org1-server1-key.pem")) viper.Set("peer.tls.cert.file", "") // missing server cert file - expect error _, err = GetClientCertificate() - assert.Error(t, err) + require.Error(t, err) // set server TLS settings to ensure we get the client TLS settings // when they are set properly @@ -173,13 +173,13 @@ func TestGetClientCertificate(t *testing.T) { // peer.tls.clientCert.file not set - expect error viper.Set("peer.tls.clientKey.file", filepath.Join("testdata", "Org2-server1-key.pem")) _, err = GetClientCertificate() - assert.Error(t, err) + require.Error(t, err) // peer.tls.clientKey.file not set - expect error viper.Set("peer.tls.clientKey.file", "") viper.Set("peer.tls.clientCert.file", filepath.Join("testdata", "Org2-server1-cert.pem")) _, err = GetClientCertificate() - assert.Error(t, err) + require.Error(t, err) // client auth required and clientKey/clientCert set expected, err := tls.LoadX509KeyPair( @@ -191,8 +191,8 @@ func TestGetClientCertificate(t *testing.T) { } viper.Set("peer.tls.clientKey.file", filepath.Join("testdata", "Org2-server1-key.pem")) cert, err := GetClientCertificate() - assert.NoError(t, err) - assert.Equal(t, expected, cert) + require.NoError(t, err) + require.Equal(t, expected, cert) // client auth required and clientKey/clientCert not set - expect // client cert to be the server cert @@ -206,14 +206,14 @@ func TestGetClientCertificate(t *testing.T) { t.Fatalf("Failed to load test certificate (%s)", err) } cert, err = GetClientCertificate() - assert.NoError(t, err) - assert.Equal(t, expected, cert) + require.NoError(t, err) + require.Equal(t, expected, cert) } func TestGlobalConfig(t *testing.T) { defer viper.Reset() cwd, err := os.Getwd() - assert.NoError(t, err, "failed to get current working directory") + require.NoError(t, err, "failed to get current working directory") viper.SetConfigFile(filepath.Join(cwd, "core.yaml")) //Capture the configuration from viper @@ -272,7 +272,7 @@ func TestGlobalConfig(t *testing.T) { }) coreConfig, err := GlobalConfig() - assert.NoError(t, err) + require.NoError(t, err) expectedConfig := &Config{ LocalMSPID: "SampleOrg", @@ -333,7 +333,7 @@ func TestGlobalConfig(t *testing.T) { DockerCA: filepath.Join(cwd, "test/vm/tls/ca/file"), } - assert.Equal(t, coreConfig, expectedConfig) + require.Equal(t, coreConfig, expectedConfig) } func TestGlobalConfigDefault(t *testing.T) { @@ -341,7 +341,7 @@ func TestGlobalConfigDefault(t *testing.T) { viper.Set("peer.address", "localhost:8080") coreConfig, err := GlobalConfig() - assert.NoError(t, err) + require.NoError(t, err) expectedConfig := &Config{ AuthenticationTimeWindow: 15 * time.Minute, @@ -351,7 +351,7 @@ func TestGlobalConfigDefault(t *testing.T) { DeliverClientKeepaliveOptions: comm.DefaultKeepaliveOptions, } - assert.Equal(t, expectedConfig, coreConfig) + require.Equal(t, expectedConfig, coreConfig) } func TestPropagateEnvironment(t *testing.T) { @@ -376,7 +376,7 @@ func TestPropagateEnvironment(t *testing.T) { }, }) coreConfig, err := GlobalConfig() - assert.NoError(t, err) + require.NoError(t, err) expectedConfig := &Config{ AuthenticationTimeWindow: 15 * time.Minute, @@ -404,7 +404,7 @@ func TestPropagateEnvironment(t *testing.T) { }, }, } - assert.Equal(t, expectedConfig, coreConfig) + require.Equal(t, expectedConfig, coreConfig) } func TestMissingExternalBuilderPath(t *testing.T) { @@ -416,7 +416,7 @@ func TestMissingExternalBuilderPath(t *testing.T) { }, }) _, err := GlobalConfig() - assert.EqualError(t, err, "invalid external builder configuration, path attribute missing in one or more builders") + require.EqualError(t, err, "invalid external builder configuration, path attribute missing in one or more builders") } func TestMissingExternalBuilderName(t *testing.T) { @@ -428,5 +428,5 @@ func TestMissingExternalBuilderName(t *testing.T) { }, }) _, err := GlobalConfig() - assert.EqualError(t, err, "external builder at path relative/plugin_dir has no name attribute") + require.EqualError(t, err, "external builder at path relative/plugin_dir has no name attribute") } diff --git a/core/peer/configtx_test.go b/core/peer/configtx_test.go index 019d3f5f8d9..243cff40584 100644 --- a/core/peer/configtx_test.go +++ b/core/peer/configtx_test.go @@ -23,7 +23,6 @@ import ( "github.com/hyperledger/fabric/internal/configtxgen/encoder" "github.com/hyperledger/fabric/internal/configtxgen/genesisconfig" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -47,11 +46,11 @@ func TestConfigTxCreateLedger(t *testing.T) { genesisTx := helper.constructGenesisTx(t, channelID, chanConf) genesisBlock := helper.constructBlock(genesisTx, 0, nil) ledger, err := ledgerMgr.CreateLedger(channelID, genesisBlock) - assert.NoError(t, err) + require.NoError(t, err) retrievedchanConf, err := retrievePersistedChannelConfig(ledger) - assert.NoError(t, err) - assert.Equal(t, proto.CompactTextString(chanConf), proto.CompactTextString(retrievedchanConf)) + require.NoError(t, err) + require.Equal(t, proto.CompactTextString(chanConf), proto.CompactTextString(retrievedchanConf)) } func TestConfigTxErrorScenarios(t *testing.T) { @@ -90,32 +89,32 @@ func TestConfigTxUpdateChanConfig(t *testing.T) { genesisTx := helper.constructGenesisTx(t, channelID, chanConf) genesisBlock := helper.constructBlock(genesisTx, 0, nil) lgr, err := ledgerMgr.CreateLedger(channelID, genesisBlock) - assert.NoError(t, err) + require.NoError(t, err) retrievedchanConf, err := retrievePersistedChannelConfig(lgr) - assert.NoError(t, err) - assert.Equal(t, proto.CompactTextString(chanConf), proto.CompactTextString(retrievedchanConf)) + require.NoError(t, err) + require.Equal(t, proto.CompactTextString(chanConf), proto.CompactTextString(retrievedchanConf)) helper.mockCreateChain(t, channelID, lgr) defer helper.clearMockChains() bs := helper.peer.channels[channelID].bundleSource inMemoryChanConf := bs.ConfigtxValidator().ConfigProto() - assert.Equal(t, proto.CompactTextString(chanConf), proto.CompactTextString(inMemoryChanConf)) + require.Equal(t, proto.CompactTextString(chanConf), proto.CompactTextString(inMemoryChanConf)) retrievedchanConf, err = retrievePersistedChannelConfig(lgr) - assert.NoError(t, err) - assert.Equal(t, proto.CompactTextString(bs.ConfigtxValidator().ConfigProto()), proto.CompactTextString(retrievedchanConf)) + require.NoError(t, err) + require.Equal(t, proto.CompactTextString(bs.ConfigtxValidator().ConfigProto()), proto.CompactTextString(retrievedchanConf)) lgr.Close() helper.clearMockChains() _, err = ledgerMgr.OpenLedger(channelID) - assert.NoError(t, err) + require.NoError(t, err) } func TestGenesisBlockCreateLedger(t *testing.T) { b, err := configtxtest.MakeGenesisBlock("testchain") - assert.NoError(t, err) + require.NoError(t, err) tempdir, err := ioutil.TempDir("", "peer-test") require.NoError(t, err, "failed to create temporary directory") @@ -130,10 +129,10 @@ func TestGenesisBlockCreateLedger(t *testing.T) { }() lgr, err := ledgerMgr.CreateLedger("testchain", b) - assert.NoError(t, err) + require.NoError(t, err) chanConf, err := retrievePersistedChannelConfig(lgr) - assert.NoError(t, err) - assert.NotNil(t, chanConf) + require.NoError(t, err) + require.NotNil(t, chanConf) t.Logf("chanConf = %s", chanConf) } @@ -144,7 +143,7 @@ type testHelper struct { func newTestHelper(t *testing.T) *testHelper { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) return &testHelper{ t: t, peer: &Peer{CryptoProvider: cryptoProvider}, @@ -172,7 +171,7 @@ func (h *testHelper) constructGenesisTx(t *testing.T, channelID string, chanConf LastUpdate: h.constructLastUpdateField(channelID), } txEnvelope, err := protoutil.CreateSignedEnvelope(common.HeaderType_CONFIG, channelID, nil, configEnvelop, 0, 0) - assert.NoError(t, err) + require.NoError(t, err) return txEnvelope } @@ -197,12 +196,12 @@ func (h *testHelper) constructLastUpdateField(channelID string) *common.Envelope func (h *testHelper) mockCreateChain(t *testing.T, channelID string, ledger ledger.PeerLedger) { chanBundle, err := h.constructChannelBundle(channelID, ledger) - assert.NoError(t, err) + require.NoError(t, err) if h.peer.channels == nil { h.peer.channels = map[string]*Channel{} } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) h.peer.channels[channelID] = &Channel{ bundleSource: channelconfig.NewBundleSource(chanBundle), ledger: ledger, diff --git a/core/peer/deliverevents_test.go b/core/peer/deliverevents_test.go index 4288b8b617f..74e5a5b3b2b 100644 --- a/core/peer/deliverevents_test.go +++ b/core/peer/deliverevents_test.go @@ -28,8 +28,8 @@ import ( "github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/rwsetutil" fake "github.com/hyperledger/fabric/core/peer/mock" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "google.golang.org/grpc/metadata" peer2 "google.golang.org/grpc/peer" ) @@ -179,7 +179,7 @@ type testConfig struct { chaincodeName string txID string payload *common.Payload - *assert.Assertions + *require.Assertions } type testCase struct { @@ -190,8 +190,8 @@ type testCase struct { func TestFilteredBlockResponseSenderIsFiltered(t *testing.T) { var fbrs interface{} = &filteredBlockResponseSender{} filtered, ok := fbrs.(deliver.Filtered) - assert.True(t, ok, "should be filtered") - assert.True(t, filtered.IsFiltered(), "should return true from IsFiltered") + require.True(t, ok, "should be filtered") + require.True(t, filtered.IsFiltered(), "should return true from IsFiltered") } func TestEventsServer_DeliverFiltered(t *testing.T) { @@ -269,7 +269,7 @@ func TestEventsServer_DeliverFiltered(t *testing.T) { Behavior: orderer.SeekInfo_BLOCK_UNTIL_READY, }), }, - Assertions: assert.New(t), + Assertions: require.New(t), }), }, { @@ -342,7 +342,7 @@ func TestEventsServer_DeliverFiltered(t *testing.T) { Behavior: orderer.SeekInfo_BLOCK_UNTIL_READY, }), }, - Assertions: assert.New(t), + Assertions: require.New(t), }), }, { @@ -396,7 +396,7 @@ func TestEventsServer_DeliverFiltered(t *testing.T) { Behavior: orderer.SeekInfo_BLOCK_UNTIL_READY, }), }, - Assertions: assert.New(t), + Assertions: require.New(t), }), }, } @@ -414,7 +414,7 @@ func TestEventsServer_DeliverFiltered(t *testing.T) { err := server.DeliverFiltered(deliverServer) wg.Wait() // no error expected - assert.NoError(t, err) + require.NoError(t, err) }) } } @@ -504,7 +504,7 @@ func TestEventsServer_DeliverWithPrivateData(t *testing.T) { Behavior: orderer.SeekInfo_BLOCK_UNTIL_READY, }), }, - Assertions: assert.New(t), + Assertions: require.New(t), }), }, { @@ -553,7 +553,7 @@ func TestEventsServer_DeliverWithPrivateData(t *testing.T) { Behavior: orderer.SeekInfo_BLOCK_UNTIL_READY, }), }, - Assertions: assert.New(t), + Assertions: require.New(t), }), }, } @@ -574,7 +574,7 @@ func TestEventsServer_DeliverWithPrivateData(t *testing.T) { err := server.DeliverWithPrivateData(deliverServer) wg.Wait() // no error expected - assert.NoError(t, err) + require.NoError(t, err) }) } } diff --git a/core/peer/peer_test.go b/core/peer/peer_test.go index 2820e1ab203..cb2b554416b 100644 --- a/core/peer/peer_test.go +++ b/core/peer/peer_test.go @@ -38,7 +38,6 @@ import ( "github.com/hyperledger/fabric/internal/pkg/comm" "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -55,7 +54,7 @@ func NewTestPeer(t *testing.T) (*Peer, func()) { // Initialize gossip service cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) signer := mgmt.GetLocalSigningIdentityOrPanic(cryptoProvider) messageCryptoService := peergossip.NewMCS(&mocks.ChannelPolicyManagerGetter{}, signer, mgmt.NewDeserializersManager(cryptoProvider), cryptoProvider) @@ -100,11 +99,11 @@ func NewTestPeer(t *testing.T) (*Peer, func()) { ledgerMgr, err := constructLedgerMgrWithTestDefaults(filepath.Join(tempdir, "ledgersData")) require.NoError(t, err, "failed to create ledger manager") - assert.NoError(t, err) + require.NoError(t, err) transientStoreProvider, err := transientstore.NewStoreProvider( filepath.Join(tempdir, "transientstore"), ) - assert.NoError(t, err) + require.NoError(t, err) peerInstance := &Peer{ GossipService: gossipService, StoreProvider: transientStoreProvider, @@ -154,7 +153,7 @@ func TestInitialize(t *testing.T) { nil, runtime.NumCPU(), ) - assert.Equal(t, peerInstance.server, server) + require.Equal(t, peerInstance.server, server) } func TestCreateChannel(t *testing.T) { @@ -184,7 +183,7 @@ func TestCreateChannel(t *testing.T) { t.Fatalf("failed to create chain %s", err) } - assert.Equal(t, testChannelID, initArg) + require.Equal(t, testChannelID, initArg) // Correct ledger ledger := peerInstance.GetLedger(testChannelID) @@ -194,9 +193,9 @@ func TestCreateChannel(t *testing.T) { // Get config block from ledger block, err = ConfigBlockFromLedger(ledger) - assert.NoError(t, err, "Failed to get config block from ledger") - assert.NotNil(t, block, "Config block should not be nil") - assert.Equal(t, uint64(0), block.Header.Number, "config block should have been block 0") + require.NoError(t, err, "Failed to get config block from ledger") + require.NotNil(t, block, "Config block should not be nil") + require.Equal(t, uint64(0), block.Header.Number, "config block should have been block 0") // Bad ledger ledger = peerInstance.GetLedger("BogusChain") @@ -229,11 +228,11 @@ func TestDeliverSupportManager(t *testing.T) { manager := &DeliverChainManager{Peer: peerInstance} chainSupport := manager.GetChain("fake") - assert.Nil(t, chainSupport, "chain support should be nil") + require.Nil(t, chainSupport, "chain support should be nil") peerInstance.channels = map[string]*Channel{"testchain": {}} chainSupport = manager.GetChain("testchain") - assert.NotNil(t, chainSupport, "chain support should not be nil") + require.NotNil(t, chainSupport, "chain support should not be nil") } func constructLedgerMgrWithTestDefaults(ledgersDataDir string) (*ledgermgmt.LedgerMgr, error) { diff --git a/core/peer/pkg_test.go b/core/peer/pkg_test.go index 57a046734ff..815d9ecc717 100644 --- a/core/peer/pkg_test.go +++ b/core/peer/pkg_test.go @@ -28,7 +28,6 @@ import ( "github.com/hyperledger/fabric/internal/pkg/comm/testpb" "github.com/hyperledger/fabric/internal/pkg/txflags" "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/credentials" @@ -285,8 +284,8 @@ func TestUpdateRootsFromConfigBlock(t *testing.T) { peerInstance.SetServer(server) peerInstance.ServerConfig = test.serverConfig - assert.NoError(t, err, "NewGRPCServer should not have returned an error") - assert.NotNil(t, server, "NewGRPCServer should have created a server") + require.NoError(t, err, "NewGRPCServer should not have returned an error") + require.NotNil(t, server, "NewGRPCServer should have created a server") // register a GRPC test service testpb.RegisterTestServiceServer(server.Server(), &testServiceServer{}) go server.Start() @@ -304,18 +303,18 @@ func TestUpdateRootsFromConfigBlock(t *testing.T) { // invoke the EmptyCall service with good options but should fail // until channel is created and root CAs are updated _, err = invokeEmptyCall(testAddress, test.goodOptions) - assert.Error(t, err, "Expected error invoking the EmptyCall service ") + require.Error(t, err, "Expected error invoking the EmptyCall service ") // creating channel should update the trusted client roots test.createChannel(t) // invoke the EmptyCall service with good options _, err = invokeEmptyCall(testAddress, test.goodOptions) - assert.NoError(t, err, "Failed to invoke the EmptyCall service") + require.NoError(t, err, "Failed to invoke the EmptyCall service") // invoke the EmptyCall service with bad options _, err = invokeEmptyCall(testAddress, test.badOptions) - assert.Error(t, err, "Expected error using bad dial options") + require.Error(t, err, "Expected error using bad dial options") }) } } diff --git a/core/policy/application_test.go b/core/policy/application_test.go index 9ef48d0c2ee..5d5d4dc4921 100644 --- a/core/policy/application_test.go +++ b/core/policy/application_test.go @@ -17,8 +17,8 @@ import ( "github.com/hyperledger/fabric/msp" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestComponentIntegrationSignaturePolicyEnv(t *testing.T) { @@ -48,7 +48,7 @@ func TestComponentIntegrationSignaturePolicyEnv(t *testing.T) { Data: []byte("batti"), Signature: []byte("lei"), }}) - assert.NoError(t, err) + require.NoError(t, err) } func TestEvaluator(t *testing.T) { @@ -68,14 +68,14 @@ func TestEvaluator(t *testing.T) { // SCENARIO: bad policy argument err := ev.Evaluate([]byte("bad bad"), nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to unmarshal ApplicationPolicy bytes") + require.Error(t, err) + require.Contains(t, err.Error(), "failed to unmarshal ApplicationPolicy bytes") // SCENARIO: bad policy type err = ev.Evaluate([]byte{}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "unsupported policy type") + require.Error(t, err) + require.Contains(t, err.Error(), "unsupported policy type") // SCENARIO: signature policy supplied - good and bad path @@ -87,15 +87,15 @@ func TestEvaluator(t *testing.T) { }) spp.On("NewPolicy", spenv).Return(okEval, nil).Once() err = ev.Evaluate(mspenv, nil) - assert.NoError(t, err) + require.NoError(t, err) spp.On("NewPolicy", spenv).Return(nokEval, nil).Once() err = ev.Evaluate(mspenv, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "bad bad") + require.Error(t, err) + require.Contains(t, err.Error(), "bad bad") spp.On("NewPolicy", spenv).Return(nil, errors.New("bad policy")).Once() err = ev.Evaluate(mspenv, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "bad policy") + require.Error(t, err) + require.Contains(t, err.Error(), "bad policy") // SCENARIO: channel ref policy supplied - good and bad path @@ -107,30 +107,30 @@ func TestEvaluator(t *testing.T) { }) cpp.On("NewPolicy", chrefstr).Return(okEval, nil).Once() err = ev.Evaluate(chrefstrEnv, nil) - assert.NoError(t, err) + require.NoError(t, err) cpp.On("NewPolicy", chrefstr).Return(nokEval, nil).Once() err = ev.Evaluate(chrefstrEnv, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "bad bad") + require.Error(t, err) + require.Contains(t, err.Error(), "bad bad") cpp.On("NewPolicy", chrefstr).Return(nil, errors.New("bad policy")).Once() err = ev.Evaluate(chrefstrEnv, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "bad policy") + require.Error(t, err) + require.Contains(t, err.Error(), "bad policy") } func TestChannelPolicyReference(t *testing.T) { mcpmg := &mocks.ChannelPolicyManagerGetter{} mcpmg.On("Manager", "channel").Return(nil, false).Once() ape, err := New(nil, "channel", mcpmg) - assert.Error(t, err) - assert.Nil(t, ape) - assert.Contains(t, err.Error(), "failed to retrieve policy manager for channel") + require.Error(t, err) + require.Nil(t, ape) + require.Contains(t, err.Error(), "failed to retrieve policy manager for channel") mm := &mocks.PolicyManager{} mcpmg.On("Manager", "channel").Return(mm, true).Once() ape, err = New(nil, "channel", mcpmg) - assert.NoError(t, err) - assert.NotNil(t, ape) + require.NoError(t, err) + require.NotNil(t, ape) mcpmg.On("Manager", "channel").Return(mm, true) @@ -138,10 +138,10 @@ func TestChannelPolicyReference(t *testing.T) { mp.On("EvaluateSignedData", mock.Anything).Return(nil) mm.On("GetPolicy", "As the sun breaks above the ground").Return(mp, true) err = ape.evaluateChannelConfigPolicyReference("As the sun breaks above the ground", nil) - assert.NoError(t, err) + require.NoError(t, err) mm.On("GetPolicy", "An old man stands on the hill").Return(nil, false) err = ape.evaluateChannelConfigPolicyReference("An old man stands on the hill", nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to retrieve policy for reference") + require.Error(t, err) + require.Contains(t, err.Error(), "failed to retrieve policy for reference") } diff --git a/core/policy/policy_test.go b/core/policy/policy_test.go index df6cc558c3a..1a5aa2a8801 100644 --- a/core/policy/policy_test.go +++ b/core/policy/policy_test.go @@ -14,7 +14,7 @@ import ( "github.com/hyperledger/fabric/core/policy/mocks" "github.com/hyperledger/fabric/msp/mgmt" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCheckPolicyInvalidArgs(t *testing.T) { @@ -33,8 +33,8 @@ func TestCheckPolicyInvalidArgs(t *testing.T) { pc := &policyChecker{channelPolicyManagerGetter: policyManagerGetter} err := pc.CheckPolicy("B", "admin", &peer.SignedProposal{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed to get policy manager for channel [B]") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed to get policy manager for channel [B]") } func TestCheckPolicyBySignedDataInvalidArgs(t *testing.T) { @@ -52,24 +52,24 @@ func TestCheckPolicyBySignedDataInvalidArgs(t *testing.T) { pc := &policyChecker{channelPolicyManagerGetter: policyManagerGetter} err := pc.CheckPolicyBySignedData("", "admin", []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid channel ID name during check policy on signed data. Name must be different from nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid channel ID name during check policy on signed data. Name must be different from nil.") err = pc.CheckPolicyBySignedData("A", "", []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid policy name during check policy on signed data on channel [A]. Name must be different from nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid policy name during check policy on signed data on channel [A]. Name must be different from nil.") err = pc.CheckPolicyBySignedData("A", "admin", nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid signed data during check policy on channel [A] with policy [admin]") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid signed data during check policy on channel [A] with policy [admin]") err = pc.CheckPolicyBySignedData("B", "admin", []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed to get policy manager for channel [B]") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed to get policy manager for channel [B]") err = pc.CheckPolicyBySignedData("A", "admin", []*protoutil.SignedData{{}}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed evaluating policy on signed data during check policy on channel [A] with policy [admin]") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed evaluating policy on signed data during check policy on channel [A] with policy [admin]") } func TestPolicyCheckerInvalidArgs(t *testing.T) { @@ -107,23 +107,23 @@ func TestPolicyCheckerInvalidArgs(t *testing.T) { // Check that (non-empty channel, empty policy) fails err := pc.CheckPolicy("A", "", nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid policy name during check policy on channel [A]. Name must be different from nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid policy name during check policy on channel [A]. Name must be different from nil.") // Check that (empty channel, empty policy) fails err = pc.CheckPolicy("", "", nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid policy name during channelless check policy. Name must be different from nil.") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid policy name during channelless check policy. Name must be different from nil.") // Check that (non-empty channel, non-empty policy, nil proposal) fails err = pc.CheckPolicy("A", "A", nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid signed proposal during check policy on channel [A] with policy [A]") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid signed proposal during check policy on channel [A] with policy [A]") // Check that (empty channel, non-empty policy, nil proposal) fails err = pc.CheckPolicy("", "A", nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid signed proposal during channelless check policy with policy [A]") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid signed proposal during channelless check policy with policy [A]") } func TestPolicyChecker(t *testing.T) { @@ -167,26 +167,26 @@ func TestPolicyChecker(t *testing.T) { policyManagerGetter.Managers["A"].(*mocks.MockChannelPolicyManager).MockPolicy.(*mocks.MockPolicy).Deserializer.(*mocks.MockIdentityDeserializer).Msg = sProp.ProposalBytes sProp.Signature = sProp.ProposalBytes err := pc.CheckPolicy("A", "readers", sProp) - assert.NoError(t, err) + require.NoError(t, err) // Proposal from Alice for channel A should fail against channel B, where Alice is not involved err = pc.CheckPolicy("B", "readers", sProp) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed evaluating policy on signed data during check policy on channel [B] with policy [readers]: [Invalid Identity]") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed evaluating policy on signed data during check policy on channel [B] with policy [readers]: [Invalid Identity]") // Proposal from Alice for channel A should fail against channel C, where Alice is involved but signature is not valid err = pc.CheckPolicy("C", "readers", sProp) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed evaluating policy on signed data during check policy on channel [C] with policy [readers]: [Invalid Signature]") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed evaluating policy on signed data during check policy on channel [C] with policy [readers]: [Invalid Signature]") // Alice is a member of the local MSP, policy check must succeed identityDeserializer.Msg = sProp.ProposalBytes err = pc.CheckPolicyNoChannel(mgmt.Members, sProp) - assert.NoError(t, err) + require.NoError(t, err) sProp, _ = protoutil.MockSignedEndorserProposalOrPanic("A", &peer.ChaincodeSpec{}, []byte("Bob"), []byte("msg2")) // Bob is not a member of the local MSP, policy check must fail err = pc.CheckPolicyNoChannel(mgmt.Members, sProp) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed deserializing proposal creator during channelless check policy with policy [Members]: [Invalid Identity]") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed deserializing proposal creator during channelless check policy with policy [Members]: [Invalid Identity]") } diff --git a/core/scc/cscc/configure_test.go b/core/scc/cscc/configure_test.go index ed357bde1fd..68822f53954 100644 --- a/core/scc/cscc/configure_test.go +++ b/core/scc/cscc/configure_test.go @@ -47,7 +47,6 @@ import ( msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -93,19 +92,19 @@ func TestConfigerInit(t *testing.T) { mockACLProvider := &mocks.ACLProvider{} mockStub := &mocks.ChaincodeStub{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cscc := &PeerConfiger{ aclProvider: mockACLProvider, bccsp: cryptoProvider, } res := cscc.Init(mockStub) - assert.Equal(t, int32(shim.OK), res.Status) + require.Equal(t, int32(shim.OK), res.Status) } func TestConfigerInvokeInvalidParameters(t *testing.T) { mockACLProvider := &mocks.ACLProvider{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cscc := &PeerConfiger{ aclProvider: mockACLProvider, bccsp: cryptoProvider, @@ -115,37 +114,37 @@ func TestConfigerInvokeInvalidParameters(t *testing.T) { mockStub.GetArgsReturns(nil) mockStub.GetSignedProposalReturns(validSignedProposal(), nil) res := cscc.Invoke(mockStub) - assert.NotEqual( + require.NotEqual( t, int32(shim.OK), res.Status, "cscc invoke expected to fail having zero arguments", ) - assert.Equal(t, "Incorrect number of arguments, 0", res.Message) + require.Equal(t, "Incorrect number of arguments, 0", res.Message) mockACLProvider.CheckACLReturns(errors.New("Failed authorization")) args := [][]byte{[]byte("GetChannels")} mockStub.GetArgsReturns(args) res = cscc.Invoke(mockStub) - assert.NotEqual( + require.NotEqual( t, int32(shim.OK), res.Status, "invoke expected to fail no signed proposal provided", ) - assert.Equal(t, "access denied for [GetChannels]: Failed authorization", res.Message) + require.Equal(t, "access denied for [GetChannels]: Failed authorization", res.Message) mockACLProvider.CheckACLReturns(nil) args = [][]byte{[]byte("fooFunction"), []byte("testChannelID")} mockStub.GetArgsReturns(args) res = cscc.Invoke(mockStub) - assert.NotEqual( + require.NotEqual( t, int32(shim.OK), res.Status, "invoke invoke expected wrong function name provided", ) - assert.Equal(t, "Requested function fooFunction not found.", res.Message) + require.Equal(t, "Requested function fooFunction not found.", res.Message) mockACLProvider.CheckACLReturns(nil) args = [][]byte{[]byte("GetConfigBlock"), []byte("testChannelID")} @@ -154,13 +153,13 @@ func TestConfigerInvokeInvalidParameters(t *testing.T) { ProposalBytes: []byte("garbage"), }, nil) res = cscc.Invoke(mockStub) - assert.NotEqual( + require.NotEqual( t, int32(shim.OK), res.Status, "invoke expected to fail in ccc2cc context", ) - assert.Equal( + require.Equal( t, "Failed to identify the called chaincode: could not unmarshal proposal: proto: can't skip unknown wire type 7", res.Message, @@ -183,13 +182,13 @@ func TestConfigerInvokeInvalidParameters(t *testing.T) { }), }, nil) res = cscc.Invoke(mockStub) - assert.NotEqual( + require.NotEqual( t, int32(shim.OK), res.Status, "invoke expected to fail in ccc2cc context", ) - assert.Equal( + require.Equal( t, "Rejecting invoke of CSCC from another chaincode, original invocation for 'fake-cc2cc'", res.Message, @@ -200,13 +199,13 @@ func TestConfigerInvokeInvalidParameters(t *testing.T) { args = [][]byte{[]byte("GetConfigBlock"), []byte("testChannelID")} mockStub.GetArgsReturns(args) res = cscc.Invoke(mockStub) - assert.NotEqual( + require.NotEqual( t, int32(shim.OK), res.Status, "invoke expected to fail no signed proposal provided", ) - assert.Equal( + require.Equal( t, "access denied for [GetConfigBlock][testChannelID]: Failed authorization", res.Message, @@ -215,7 +214,7 @@ func TestConfigerInvokeInvalidParameters(t *testing.T) { func TestConfigerInvokeJoinChainMissingParams(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cscc := &PeerConfiger{ aclProvider: &mocks.ACLProvider{}, bccsp: cryptoProvider, @@ -223,7 +222,7 @@ func TestConfigerInvokeJoinChainMissingParams(t *testing.T) { mockStub := &mocks.ChaincodeStub{} mockStub.GetArgsReturns([][]byte{[]byte("JoinChain")}) res := cscc.Invoke(mockStub) - assert.NotEqual( + require.NotEqual( t, int32(shim.OK), res.Status, @@ -233,7 +232,7 @@ func TestConfigerInvokeJoinChainMissingParams(t *testing.T) { func TestConfigerInvokeJoinChainWrongParams(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cscc := &PeerConfiger{ aclProvider: &mocks.ACLProvider{}, bccsp: cryptoProvider, @@ -242,7 +241,7 @@ func TestConfigerInvokeJoinChainWrongParams(t *testing.T) { mockStub.GetArgsReturns([][]byte{[]byte("JoinChain"), []byte("action")}) mockStub.GetSignedProposalReturns(validSignedProposal(), nil) res := cscc.Invoke(mockStub) - assert.NotEqual( + require.NotEqual( t, int32(shim.OK), res.Status, @@ -274,7 +273,7 @@ func TestConfigerInvokeJoinChainCorrectParams(t *testing.T) { require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) signer := mgmt.GetLocalSigningIdentityOrPanic(cryptoProvider) @@ -294,7 +293,7 @@ func TestConfigerInvokeJoinChainCorrectParams(t *testing.T) { comm.ClientKeepaliveOptions(comm.DefaultKeepaliveOptions)..., ) gossipConfig, err := gossip.GlobalConfig(peerEndpoint, nil) - assert.NoError(t, err) + require.NoError(t, err) gossipService, err := service.New( signer, @@ -314,12 +313,12 @@ func TestConfigerInvokeJoinChainCorrectParams(t *testing.T) { ReconnectTotalTimeThreshold: deliverservice.DefaultReConnectTotalTimeThreshold, }, ) - assert.NoError(t, err) + require.NoError(t, err) go grpcServer.Serve(socket) defer grpcServer.Stop() - assert.NoError(t, err) + require.NoError(t, err) // setup cscc instance mockACLProvider := &mocks.ACLProvider{} @@ -350,7 +349,7 @@ func TestConfigerInvokeJoinChainCorrectParams(t *testing.T) { mockStub.GetSignedProposalReturns(sProp, nil) res := cscc.Invoke(mockStub) //res := stub.MockInvokeWithSignedProposal("2", [][]byte{[]byte("JoinChain"), nil}, sProp) - assert.Equal(t, int32(shim.ERROR), res.Status) + require.Equal(t, int32(shim.ERROR), res.Status) // Try fail path with block and nil payload header payload, _ := proto.Marshal(&cb.Payload{}) @@ -366,13 +365,13 @@ func TestConfigerInvokeJoinChainCorrectParams(t *testing.T) { mockStub.GetArgsReturns([][]byte{[]byte("JoinChain"), badBlockBytes}) res = cscc.Invoke(mockStub) //res = stub.MockInvokeWithSignedProposal("2", [][]byte{[]byte("JoinChain"), badBlockBytes}, sProp) - assert.Equal(t, int32(shim.ERROR), res.Status) + require.Equal(t, int32(shim.ERROR), res.Status) // Now, continue with valid execution path mockStub.GetArgsReturns(args) mockStub.GetSignedProposalReturns(sProp, nil) res = cscc.Invoke(mockStub) - assert.Equal(t, int32(shim.OK), res.Status, "invoke JoinChain failed with: %v", res.Message) + require.Equal(t, int32(shim.OK), res.Status, "invoke JoinChain failed with: %v", res.Message) // This call must fail sProp.Signature = nil @@ -381,8 +380,8 @@ func TestConfigerInvokeJoinChainCorrectParams(t *testing.T) { mockStub.GetSignedProposalReturns(sProp, nil) res = cscc.Invoke(mockStub) - assert.Equal(t, int32(shim.ERROR), res.Status) - assert.Contains(t, res.Message, "access denied for [JoinChain][mytestchannelid]") + require.Equal(t, int32(shim.ERROR), res.Status) + require.Contains(t, res.Message, "access denied for [JoinChain][mytestchannelid]") sProp.Signature = sProp.ProposalBytes // Query the configuration block @@ -398,13 +397,13 @@ func TestConfigerInvokeJoinChainCorrectParams(t *testing.T) { mockStub.GetArgsReturns(args) mockStub.GetSignedProposalReturns(sProp, nil) res = cscc.Invoke(mockStub) - assert.Equal(t, int32(shim.ERROR), res.Status, "invoke GetConfigBlock should have failed: %v", res.Message) - assert.Contains(t, res.Message, "Failed authorization") + require.Equal(t, int32(shim.ERROR), res.Status, "invoke GetConfigBlock should have failed: %v", res.Message) + require.Contains(t, res.Message, "Failed authorization") // Test with ACL okay mockACLProvider.CheckACLReturns(nil) res = cscc.Invoke(mockStub) - assert.Equal(t, int32(shim.OK), res.Status, "invoke GetConfigBlock failed with: %v", res.Message) + require.Equal(t, int32(shim.OK), res.Status, "invoke GetConfigBlock failed with: %v", res.Message) // get channels for the peer mockACLProvider.CheckACLReturns(nil) @@ -431,12 +430,12 @@ func TestPeerConfiger_SubmittingOrdererGenesis(t *testing.T) { conf := genesisconfig.Load(genesisconfig.SampleSingleMSPSoloProfile, configtest.GetDevConfigDir()) conf.Application = nil cg, err := encoder.NewChannelGroup(conf) - assert.NoError(t, err) + require.NoError(t, err) block := genesis.NewFactoryImpl(cg).Block("mytestchannelid") blockBytes := protoutil.MarshalOrPanic(block) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockACLProvider := &mocks.ACLProvider{} cscc := &PeerConfiger{ aclProvider: mockACLProvider, @@ -449,13 +448,13 @@ func TestPeerConfiger_SubmittingOrdererGenesis(t *testing.T) { mockStub.GetSignedProposalReturns(validSignedProposal(), nil) res := cscc.Invoke(mockStub) - assert.NotEqual( + require.NotEqual( t, int32(shim.OK), res.Status, "invoke JoinChain should have failed with wrong genesis block", ) - assert.Contains(t, res.Message, "missing Application configuration group") + require.Contains(t, res.Message, "missing Application configuration group") } func mockConfigBlock() []byte { diff --git a/core/scc/inprocstream_test.go b/core/scc/inprocstream_test.go index 79e6575eec5..5e9bcee23d3 100644 --- a/core/scc/inprocstream_test.go +++ b/core/scc/inprocstream_test.go @@ -10,7 +10,7 @@ import ( "testing" pb "github.com/hyperledger/fabric-protos-go/peer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSend(t *testing.T) { @@ -22,14 +22,14 @@ func TestSend(t *testing.T) { msg := &pb.ChaincodeMessage{} go stream.Send(msg) msg2, _ := stream.Recv() - assert.Equal(t, msg, msg2, "send != recv") + require.Equal(t, msg, msg2, "send != recv") //close the channel close(ch) //bad send, should panic, unblock and return error err := stream.Send(msg) - assert.NotNil(t, err, "should have errored on panic") + require.NotNil(t, err, "should have errored on panic") } func TestRecvChannelClosedError(t *testing.T) { @@ -42,9 +42,8 @@ func TestRecvChannelClosedError(t *testing.T) { // Trying to call a closed receive channel should return an error _, err := stream.Recv() - if assert.Error(t, err, "Should return an error") { - assert.Contains(t, err.Error(), "channel is closed") - } + require.Error(t, err, "Should return an error") + require.Contains(t, err.Error(), "channel is closed") } func TestCloseSend(t *testing.T) { @@ -55,6 +54,6 @@ func TestCloseSend(t *testing.T) { stream.CloseSend() _, ok := <-send - assert.False(t, ok, "send channel should be closed") - assert.NotPanics(t, func() { stream.CloseSend() }, "CloseSend should be idempotent") + require.False(t, ok, "send channel should be closed") + require.NotPanics(t, func() { stream.CloseSend() }, "CloseSend should be idempotent") } diff --git a/core/scc/lscc/deployedcc_infoprovider_test.go b/core/scc/lscc/deployedcc_infoprovider_test.go index 86c44486556..e1158879d8d 100644 --- a/core/scc/lscc/deployedcc_infoprovider_test.go +++ b/core/scc/lscc/deployedcc_infoprovider_test.go @@ -18,14 +18,14 @@ import ( "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/core/scc/lscc" "github.com/hyperledger/fabric/core/scc/lscc/mock" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNamespaces(t *testing.T) { ccInfoProvdier := &lscc.DeployedCCInfoProvider{} namespaces := ccInfoProvdier.Namespaces() - assert.Len(t, namespaces, 1) - assert.Equal(t, "lscc", namespaces[0]) + require.Len(t, namespaces, 1) + require.Equal(t, "lscc", namespaces[0]) } func TestChaincodeInfo(t *testing.T) { @@ -46,19 +46,19 @@ func TestChaincodeInfo(t *testing.T) { ccInfoProvdier := &lscc.DeployedCCInfoProvider{} ccInfo1, err := ccInfoProvdier.ChaincodeInfo("", "cc1", mockQE) - assert.NoError(t, err) + require.NoError(t, err) expectedCCInfo1 := cc1 expectedCCInfo1.IsLegacy = true - assert.Equal(t, expectedCCInfo1, ccInfo1) + require.Equal(t, expectedCCInfo1, ccInfo1) ccInfo2, err := ccInfoProvdier.ChaincodeInfo("", "cc2", mockQE) - assert.NoError(t, err) - assert.Equal(t, cc2.Name, ccInfo2.Name) - assert.True(t, proto.Equal(cc2.ExplicitCollectionConfigPkg, ccInfo2.ExplicitCollectionConfigPkg)) + require.NoError(t, err) + require.Equal(t, cc2.Name, ccInfo2.Name) + require.True(t, proto.Equal(cc2.ExplicitCollectionConfigPkg, ccInfo2.ExplicitCollectionConfigPkg)) ccInfo3, err := ccInfoProvdier.ChaincodeInfo("", "cc3", mockQE) - assert.NoError(t, err) - assert.Nil(t, ccInfo3) + require.NoError(t, err) + require.Nil(t, ccInfo3) } func TestAllChaincodesInfo(t *testing.T) { @@ -89,21 +89,21 @@ func TestAllChaincodesInfo(t *testing.T) { ccInfoProvider := &lscc.DeployedCCInfoProvider{} deployedChaincodesInfo, err := ccInfoProvider.AllChaincodesInfo("testchannel", mockQE) - assert.NoError(t, err) - assert.Equal(t, 2, len(deployedChaincodesInfo)) - assert.Equal(t, cc1, deployedChaincodesInfo["cc1"]) + require.NoError(t, err) + require.Equal(t, 2, len(deployedChaincodesInfo)) + require.Equal(t, cc1, deployedChaincodesInfo["cc1"]) // because ExplicitCollectionConfigPkg is a protobuf object, we have to compare individual fields for cc2 ccInfo := deployedChaincodesInfo["cc2"] - assert.True(t, proto.Equal(cc2.ExplicitCollectionConfigPkg, ccInfo.ExplicitCollectionConfigPkg)) - assert.Equal(t, cc2.Name, ccInfo.Name) - assert.Equal(t, cc2.Version, ccInfo.Version) - assert.Equal(t, cc2.Hash, ccInfo.Hash) - assert.Equal(t, cc2.IsLegacy, ccInfo.IsLegacy) + require.True(t, proto.Equal(cc2.ExplicitCollectionConfigPkg, ccInfo.ExplicitCollectionConfigPkg)) + require.Equal(t, cc2.Name, ccInfo.Name) + require.Equal(t, cc2.Version, ccInfo.Version) + require.Equal(t, cc2.Hash, ccInfo.Hash) + require.Equal(t, cc2.IsLegacy, ccInfo.IsLegacy) mockQE.GetStateRangeScanIteratorReturns(nil, fmt.Errorf("fake-rangescan-error")) _, err = ccInfoProvider.AllChaincodesInfo("testchannel", mockQE) - assert.EqualError(t, err, "fake-rangescan-error") + require.EqualError(t, err, "fake-rangescan-error") } func TestCollectionInfo(t *testing.T) { @@ -124,24 +124,24 @@ func TestCollectionInfo(t *testing.T) { ccInfoProvdier := &lscc.DeployedCCInfoProvider{} collInfo1, err := ccInfoProvdier.CollectionInfo("", "cc1", "non-existing-coll-in-cc1", mockQE) - assert.NoError(t, err) - assert.Nil(t, collInfo1) + require.NoError(t, err) + require.Nil(t, collInfo1) collInfo2, err := ccInfoProvdier.CollectionInfo("", "cc2", "cc2_coll1", mockQE) - assert.NoError(t, err) - assert.Equal(t, "cc2_coll1", collInfo2.Name) + require.NoError(t, err) + require.Equal(t, "cc2_coll1", collInfo2.Name) collInfo3, err := ccInfoProvdier.CollectionInfo("", "cc2", "non-existing-coll-in-cc2", mockQE) - assert.NoError(t, err) - assert.Nil(t, collInfo3) + require.NoError(t, err) + require.Nil(t, collInfo3) ccPkg1, err := ccInfoProvdier.AllCollectionsConfigPkg("", "cc1", mockQE) - assert.NoError(t, err) - assert.Nil(t, ccPkg1) + require.NoError(t, err) + require.Nil(t, ccPkg1) ccPkg2, err := ccInfoProvdier.AllCollectionsConfigPkg("", "cc2", mockQE) - assert.NoError(t, err) - assert.Equal(t, prepapreCollectionConfigPkg([]string{"cc2_coll1", "cc2_coll2"}), ccPkg2) + require.NoError(t, err) + require.Equal(t, prepapreCollectionConfigPkg([]string{"cc2_coll1", "cc2_coll2"}), ccPkg2) } func prepareMockQE(t *testing.T, deployedChaincodes []*ledger.DeployedChaincodeInfo) *mock.QueryExecutor { @@ -150,12 +150,12 @@ func prepareMockQE(t *testing.T, deployedChaincodes []*ledger.DeployedChaincodeI for _, cc := range deployedChaincodes { chaincodeData := &ccprovider.ChaincodeData{Name: cc.Name, Version: cc.Version, Id: cc.Hash} chaincodeDataBytes, err := proto.Marshal(chaincodeData) - assert.NoError(t, err) + require.NoError(t, err) lsccTable[cc.Name] = chaincodeDataBytes if cc.ExplicitCollectionConfigPkg != nil { collConfigPkgByte, err := proto.Marshal(cc.ExplicitCollectionConfigPkg) - assert.NoError(t, err) + require.NoError(t, err) lsccTable[privdata.BuildCollectionKVSKey(cc.Name)] = collConfigPkgByte } } diff --git a/core/scc/lscc/lscc_test.go b/core/scc/lscc/lscc_test.go index 80b8976bc11..b32a5509c46 100644 --- a/core/scc/lscc/lscc_test.go +++ b/core/scc/lscc/lscc_test.go @@ -47,7 +47,6 @@ import ( mspmocks "github.com/hyperledger/fabric/msp/mocks" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -168,7 +167,7 @@ func TestInstall(t *testing.T) { chaincodeBuilder := &mock.ChaincodeBuilder{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &MockSupport{}, @@ -183,30 +182,30 @@ func TestInstall(t *testing.T) { } stub := shimtest.NewMockStub("lscc", scc) res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) res = stub.MockInvokeWithSignedProposal("1", [][]byte{}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid number of arguments to lscc: 0", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid number of arguments to lscc: 0", res.Message) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte("install")}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid number of arguments to lscc: 1", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid number of arguments to lscc: 1", res.Message) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte("install")}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid number of arguments to lscc: 1", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid number of arguments to lscc: 1", res.Message) path := "mychaincode" testInstall(t, "example02", "0", path, false, "", "Alice", scc, stub, nil) - assert.Equal(t, 1, chaincodeBuilder.BuildCallCount()) - assert.Equal(t, "example02:0", chaincodeBuilder.BuildArgsForCall(0)) + require.Equal(t, 1, chaincodeBuilder.BuildCallCount()) + require.Equal(t, "example02:0", chaincodeBuilder.BuildArgsForCall(0)) // Re-install, should not build a second time testInstall(t, "example02", "0", path, false, "", "Alice", scc, stub, nil) - assert.Equal(t, 1, chaincodeBuilder.BuildCallCount()) + require.Equal(t, 1, chaincodeBuilder.BuildCallCount()) chaincodeBuilder.BuildReturns(fmt.Errorf("fake-build-error")) testInstall(t, "example02-different", "0", path, false, "chaincode installed to peer but could not build chaincode: fake-build-error", "Alice", scc, stub, nil) @@ -249,7 +248,7 @@ func testInstall(t *testing.T, ccname string, version string, path string, creat ) cds, err := constructDeploymentSpec(ccname, path, version, [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}, createInvalidIndex, false, scc) - assert.NoError(t, err) + require.NoError(t, err) cdsBytes := protoutil.MarshalOrPanic(cds) // constructDeploymentSpec puts the depspec on the FS. This should succeed @@ -264,10 +263,10 @@ func testInstall(t *testing.T, ccname string, version string, path string, creat if expectedErrorMsg == "" { res := stub.MockInvokeWithSignedProposal("1", args, sProp) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) } else { res := stub.MockInvokeWithSignedProposal("1", args, sProp) - assert.True(t, strings.HasPrefix(string(res.Message), expectedErrorMsg), res.Message) + require.True(t, strings.HasPrefix(string(res.Message), expectedErrorMsg), res.Message) } }) } @@ -281,7 +280,7 @@ func TestNewLifecycleEnabled(t *testing.T) { sccProvider := &mock.SystemChaincodeProvider{} sccProvider.GetApplicationConfigReturns(application, true) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, @@ -295,8 +294,8 @@ func TestNewLifecycleEnabled(t *testing.T) { } stub := shimtest.NewMockStub("lscc", scc) res := stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte("deploy"), []byte("test"), nil}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "Channel 'test' has been migrated to the new lifecycle, LSCC is now read-only", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "Channel 'test' has been migrated to the new lifecycle, LSCC is now read-only", res.Message) } @@ -313,7 +312,7 @@ func TestDeploy(t *testing.T) { testDeploy(t, "example02", "0", path, true, true, true, InvalidChaincodeNameErr("").Error(), nil, nil, nil) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &MockSupport{}, @@ -326,19 +325,19 @@ func TestDeploy(t *testing.T) { } stub := shimtest.NewMockStub("lscc", scc) res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte("deploy")}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid number of arguments to lscc: 1", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid number of arguments to lscc: 1", res.Message) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte("deploy"), []byte(""), []byte("")}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid channel name: ", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid channel name: ", res.Message) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte("deploy"), []byte("chain"), []byte("barf")}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "error unmarshaling ChaincodeDeploymentSpec: unexpected EOF", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "error unmarshaling ChaincodeDeploymentSpec: unexpected EOF", res.Message) testDeploy(t, "example02", "1.0", path, false, false, true, "", scc, stub, nil) testDeploy(t, "example02", "1.0", path, false, false, true, "chaincode with name 'example02' already exists", scc, stub, nil) @@ -355,7 +354,7 @@ func TestDeploy(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).GetInstantiationPolicyErr = errors.New("barf") testDeploy(t, "example02", "1.0", path, false, false, true, "barf", scc, stub, nil) @@ -372,7 +371,7 @@ func TestDeploy(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).CheckInstantiationPolicyErr = errors.New("barf") testDeploy(t, "example02", "1.0", path, false, false, true, "barf", scc, stub, nil) @@ -389,7 +388,7 @@ func TestDeploy(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) // As the PrivateChannelData is disabled, the following error message is expected due to the presence of // collectionConfigBytes in the stub.args @@ -415,16 +414,16 @@ func TestDeploy(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) // As the PrivateChannelData is enabled and collectionConfigBytes is invalid, the following error // message is expected. errMessage := "invalid collection configuration supplied for chaincode example02:1.0" testDeploy(t, "example02", "1.0", path, false, false, true, errMessage, scc, stub, []byte("invalid collection")) // Should contain an entry for the chaincodeData only - assert.Equal(t, 1, len(stub.State)) + require.Equal(t, 1, len(stub.State)) _, ok := stub.State["example02"] - assert.Equal(t, true, ok) + require.Equal(t, true, ok) collName1 := "mycollection1" policyEnvelope := policydsl.SignedByAnyMember([]string{"SampleOrg"}) @@ -435,8 +434,8 @@ func TestDeploy(t *testing.T) { ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) scc = &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, @@ -450,17 +449,17 @@ func TestDeploy(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) // As the PrivateChannelData is enabled and collectionConfigBytes is valid, no error is expected testDeploy(t, "example02", "1.0", path, false, false, true, "", scc, stub, ccpBytes) // Should contain two entries: one for the chaincodeData and another for the collectionConfigBytes - assert.Equal(t, 2, len(stub.State)) + require.Equal(t, 2, len(stub.State)) _, ok = stub.State["example02"] - assert.Equal(t, true, ok) + require.Equal(t, true, ok) actualccpBytes, ok := stub.State["example02~collection"] - assert.Equal(t, true, ok) - assert.Equal(t, ccpBytes, actualccpBytes) + require.Equal(t, true, ok) + require.Equal(t, ccpBytes, actualccpBytes) scc = &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, @@ -474,15 +473,15 @@ func TestDeploy(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) // As the PrivateChannelData is enabled and collectionConfigBytes is nil, no error is expected testDeploy(t, "example02", "1.0", path, false, false, true, "", scc, stub, []byte("nil")) // Should contain an entry for the chaincodeData only. As the collectionConfigBytes is nil, it // is ignored - assert.Equal(t, 1, len(stub.State)) + require.Equal(t, 1, len(stub.State)) _, ok = stub.State["example02"] - assert.Equal(t, true, ok) + require.Equal(t, true, ok) } func createCollectionConfig(collectionName string, signaturePolicyEnvelope *common.SignaturePolicyEnvelope, @@ -522,7 +521,7 @@ func testDeploy(t *testing.T, ccname string, version string, path string, forceB } stub = shimtest.NewMockStub("lscc", scc) res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) } stub.ChannelID = channelID @@ -542,7 +541,7 @@ func testDeploy(t *testing.T, ccname string, version string, path string, forceB sProp.Signature = sProp.ProposalBytes cds, err := constructDeploymentSpec(ccname, path, version, [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}, false, install, scc) - assert.NoError(t, err) + require.NoError(t, err) if forceBlankCCName { cds.ChaincodeSpec.ChaincodeId.Name = "" @@ -566,7 +565,7 @@ func testDeploy(t *testing.T, ccname string, version string, path string, forceB res := stub.MockInvokeWithSignedProposal("1", args, sProp2) if expectedErrorMsg == "" { - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) for _, function := range []string{"getchaincodes", "GetChaincodes"} { t.Run(function, func(t *testing.T) { @@ -574,7 +573,7 @@ func testDeploy(t *testing.T, ccname string, version string, path string, forceB mockAclProvider.On("CheckACL", resources.Lscc_GetInstantiatedChaincodes, channelID, sProp).Return(nil) args = [][]byte{[]byte(function)} res = stub.MockInvokeWithSignedProposal("1", args, sProp) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) }) } for _, function := range []string{"getid", "ChaincodeExists"} { @@ -583,7 +582,7 @@ func testDeploy(t *testing.T, ccname string, version string, path string, forceB mockAclProvider.On("CheckACL", resources.Lscc_ChaincodeExists, "test", sProp).Return(nil) args = [][]byte{[]byte(function), []byte("test"), []byte(cds.ChaincodeSpec.ChaincodeId.Name)} res = stub.MockInvokeWithSignedProposal("1", args, sProp) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) }) } for _, function := range []string{"getdepspec", "GetDeploymentSpec"} { @@ -592,18 +591,18 @@ func testDeploy(t *testing.T, ccname string, version string, path string, forceB mockAclProvider.On("CheckACL", resources.Lscc_GetDeploymentSpec, "test", sProp).Return(nil) args = [][]byte{[]byte(function), []byte("test"), []byte(cds.ChaincodeSpec.ChaincodeId.Name)} res = stub.MockInvokeWithSignedProposal("1", args, sProp) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).GetChaincodeFromLocalStorageErr = errors.New("barf") res = stub.MockInvokeWithSignedProposal("1", args, sProp) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid deployment spec: barf", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid deployment spec: barf", res.Message) scc.Support.(*MockSupport).GetChaincodeFromLocalStorageErr = nil bkpCCFromLSRv := scc.Support.(*MockSupport).GetChaincodeFromLocalStorageRv cryptoProvider, _ := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) scc.Support.(*MockSupport).GetChaincodeFromLocalStorageRv = &ccprovider.CDSPackage{GetHasher: cryptoProvider} res = stub.MockInvokeWithSignedProposal("1", args, sProp) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Contains(t, res.Message, "chaincode fingerprint mismatch") + require.NotEqual(t, int32(shim.OK), res.Status) + require.Contains(t, res.Message, "chaincode fingerprint mismatch") scc.Support.(*MockSupport).GetChaincodeFromLocalStorageRv = bkpCCFromLSRv }) } @@ -614,11 +613,11 @@ func testDeploy(t *testing.T, ccname string, version string, path string, forceB mockAclProvider.On("CheckACL", resources.Lscc_GetChaincodeData, "test", sProp).Return(nil) args = [][]byte{[]byte(function), []byte("test"), []byte(cds.ChaincodeSpec.ChaincodeId.Name)} res = stub.MockInvokeWithSignedProposal("1", args, sProp) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) }) } } else { - assert.Equal(t, expectedErrorMsg, string(res.Message)) + require.Equal(t, expectedErrorMsg, string(res.Message)) } } @@ -635,7 +634,7 @@ func TestUpgrade(t *testing.T) { testUpgrade(t, "example02", "0", "", "1", path, InvalidChaincodeNameErr("").Error(), nil, nil, nil) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &MockSupport{}, @@ -648,7 +647,7 @@ func TestUpgrade(t *testing.T) { } stub := shimtest.NewMockStub("lscc", scc) res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).GetInstantiationPolicyRv = []byte("instantiation policy") scc.Support.(*MockSupport).GetInstantiationPolicyErr = errors.New("barf") @@ -666,7 +665,7 @@ func TestUpgrade(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) testUpgrade(t, "example02", "0", "example02", "1", path, "instantiation policy missing", scc, stub, nil) @@ -682,7 +681,7 @@ func TestUpgrade(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).GetInstantiationPolicyRv = []byte("instantiation policy") scc.Support.(*MockSupport).GetInstantiationPolicyMap = map[string][]byte{} scc.Support.(*MockSupport).CheckInstantiationPolicyMap = map[string]error{"example020": errors.New("barf")} @@ -701,7 +700,7 @@ func TestUpgrade(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).GetInstantiationPolicyRv = []byte("instantiation policy") scc.Support.(*MockSupport).GetInstantiationPolicyMap = map[string][]byte{} scc.Support.(*MockSupport).CheckInstantiationPolicyMap = map[string]error{"example021": errors.New("barf")} @@ -728,7 +727,7 @@ func TestUpgrade(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).GetInstantiationPolicyRv = []byte("instantiation policy") collName1 := "mycollection1" @@ -739,8 +738,8 @@ func TestUpgrade(t *testing.T) { ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) // As v12 capability is not enabled (which is required for the collection upgrade), an error is expected expectedErrorMsg := "as V1_2 capability is not enabled, collection upgrades are not allowed" @@ -767,15 +766,15 @@ func TestUpgrade(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).GetInstantiationPolicyRv = []byte("instantiation policy") // As the PrivateChannelData is enabled and collectionConfigBytes is valid, no error is expected testUpgrade(t, "example02", "0", "example02", "1", path, "", scc, stub, []byte("nil")) // Should contain an entry for the chaincodeData only as the collectionConfigBytes is nil - assert.Equal(t, 1, len(stub.State)) + require.Equal(t, 1, len(stub.State)) _, ok := stub.State["example02"] - assert.Equal(t, true, ok) + require.Equal(t, true, ok) scc = &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, @@ -789,7 +788,7 @@ func TestUpgrade(t *testing.T) { } stub = shimtest.NewMockStub("lscc", scc) res = stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).GetInstantiationPolicyRv = []byte("instantiation policy") // As the PrivateChannelData is enabled and collectionConfigBytes is valid, no error is expected @@ -797,18 +796,18 @@ func TestUpgrade(t *testing.T) { // Should contain two entries: one for the chaincodeData and another for the collectionConfigBytes // as the V1_2Validation is enabled. Only in V1_2Validation, collection upgrades are allowed. // Note that V1_2Validation would be replaced with CollectionUpgrade capability. - assert.Equal(t, 2, len(stub.State)) + require.Equal(t, 2, len(stub.State)) _, ok = stub.State["example02"] - assert.Equal(t, true, ok) + require.Equal(t, true, ok) actualccpBytes, ok := stub.State["example02~collection"] - assert.Equal(t, true, ok) - assert.Equal(t, ccpBytes, actualccpBytes) + require.Equal(t, true, ok) + require.Equal(t, ccpBytes, actualccpBytes) } func testUpgrade(t *testing.T, ccname string, version string, newccname string, newversion string, path string, expectedErrorMsg string, scc *SCC, stub *shimtest.MockStub, collectionConfigBytes []byte) { t.Run(ccname+":"+version+"->"+newccname+":"+newversion, func(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) if scc == nil { scc = &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, @@ -822,12 +821,12 @@ func testUpgrade(t *testing.T, ccname string, version string, newccname string, } stub = shimtest.NewMockStub("lscc", scc) res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).GetInstantiationPolicyRv = []byte("instantiation policy") } cds, err := constructDeploymentSpec(ccname, path, version, [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}, false, true, scc) - assert.NoError(t, err) + require.NoError(t, err) cdsBytes := protoutil.MarshalOrPanic(cds) sProp, _ := protoutil.MockSignedEndorserProposal2OrPanic(channelID, &pb.ChaincodeSpec{}, id) @@ -837,12 +836,12 @@ func testUpgrade(t *testing.T, ccname string, version string, newccname string, scc.Support.(*MockSupport).GetInstantiationPolicyErr = nil scc.Support.(*MockSupport).CheckInstantiationPolicyMap = nil res := stub.MockInvokeWithSignedProposal("1", args, sProp) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support.(*MockSupport).GetInstantiationPolicyErr = saved1 scc.Support.(*MockSupport).CheckInstantiationPolicyMap = saved2 newCds, err := constructDeploymentSpec(newccname, path, newversion, [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}, false, true, scc) - assert.NoError(t, err) + require.NoError(t, err) newCdsBytes := protoutil.MarshalOrPanic(newCds) if len(collectionConfigBytes) > 0 { @@ -857,32 +856,32 @@ func testUpgrade(t *testing.T, ccname string, version string, newccname string, res = stub.MockInvokeWithSignedProposal("1", args, sProp) if expectedErrorMsg == "" { - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) cd := &ccprovider.ChaincodeData{} err = proto.Unmarshal(res.Payload, cd) - assert.NoError(t, err) + require.NoError(t, err) newVer := cd.Version expectVer := "1" - assert.Equal(t, newVer, expectVer, fmt.Sprintf("Upgrade chaincode version error, expected %s, got %s", expectVer, newVer)) + require.Equal(t, newVer, expectVer, fmt.Sprintf("Upgrade chaincode version error, expected %s, got %s", expectVer, newVer)) chaincodeEvent := <-stub.ChaincodeEventsChannel - assert.Equal(t, "upgrade", chaincodeEvent.EventName) + require.Equal(t, "upgrade", chaincodeEvent.EventName) lifecycleEvent := &pb.LifecycleEvent{} err = proto.Unmarshal(chaincodeEvent.Payload, lifecycleEvent) - assert.NoError(t, err) - assert.Equal(t, newccname, lifecycleEvent.ChaincodeName) + require.NoError(t, err) + require.Equal(t, newccname, lifecycleEvent.ChaincodeName) } else { - assert.Equal(t, expectedErrorMsg, string(res.Message)) + require.Equal(t, expectedErrorMsg, string(res.Message)) } }) } func TestFunctionsWithAliases(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &MockSupport{}, @@ -894,7 +893,7 @@ func TestFunctionsWithAliases(t *testing.T) { } stub := shimtest.NewMockStub("lscc", scc) res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) identityDeserializer := &policymocks.MockIdentityDeserializer{Identity: []byte("Alice"), Msg: []byte("msg1")} policyManagerGetter := &policymocks.MockChannelPolicyManagerGetter{ @@ -914,20 +913,20 @@ func TestFunctionsWithAliases(t *testing.T) { testInvoke := func(function, resource string) { t.Run(function, func(t *testing.T) { res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function), []byte("testchannel1")}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid number of arguments to lscc: 2", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid number of arguments to lscc: 2", res.Message) mockAclProvider.Reset() mockAclProvider.On("CheckACL", resource, "testchannel1", sProp).Return(errors.New("bonanza")) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function), []byte("testchannel1"), []byte("chaincode")}, sProp) - assert.NotEqual(t, int32(shim.OK), res.Status, res.Message) - assert.Equal(t, fmt.Sprintf("access denied for [%s][testchannel1]: bonanza", function), res.Message) + require.NotEqual(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, fmt.Sprintf("access denied for [%s][testchannel1]: bonanza", function), res.Message) mockAclProvider.Reset() mockAclProvider.On("CheckACL", resource, "testchannel1", sProp).Return(nil) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function), []byte("testchannel1"), []byte("nonexistentchaincode")}, sProp) - assert.NotEqual(t, int32(shim.OK), res.Status, res.Message) - assert.Equal(t, res.Message, "could not find chaincode with name 'nonexistentchaincode'") + require.NotEqual(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, res.Message, "could not find chaincode with name 'nonexistentchaincode'") }) } @@ -941,7 +940,7 @@ func TestFunctionsWithAliases(t *testing.T) { func TestGetChaincodes(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &MockSupport{}, @@ -954,13 +953,13 @@ func TestGetChaincodes(t *testing.T) { stub := shimtest.NewMockStub("lscc", scc) stub.ChannelID = "test" res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) for _, function := range []string{"getchaincodes", "GetChaincodes"} { t.Run(function, func(t *testing.T) { res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function), []byte("barf")}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid number of arguments to lscc: 2", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid number of arguments to lscc: 2", res.Message) sProp, _ := protoutil.MockSignedEndorserProposalOrPanic("test", &pb.ChaincodeSpec{}, []byte("Bob"), []byte("msg1")) sProp.Signature = sProp.ProposalBytes @@ -968,20 +967,20 @@ func TestGetChaincodes(t *testing.T) { mockAclProvider.Reset() mockAclProvider.On("CheckACL", resources.Lscc_GetInstantiatedChaincodes, "test", sProp).Return(errors.New("coyote")) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function)}, sProp) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Regexp(t, `access denied for \[`+function+`\]\[test\](.*)coyote`, res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Regexp(t, `access denied for \[`+function+`\]\[test\](.*)coyote`, res.Message) mockAclProvider.Reset() mockAclProvider.On("CheckACL", resources.Lscc_GetInstantiatedChaincodes, "test", sProp).Return(nil) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function)}, sProp) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) }) } } func TestGetChaincodesFilter(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &MockSupport{GetChaincodeFromLocalStorageErr: errors.New("banana")}, @@ -1007,13 +1006,13 @@ func TestGetChaincodesFilter(t *testing.T) { stub.GetStateByRangeReturns(sqi, nil) resp := scc.getChaincodes(stub) - assert.Equal(t, resp.Status, int32(shim.OK)) + require.Equal(t, resp.Status, int32(shim.OK)) cqr := &pb.ChaincodeQueryResponse{} err = proto.Unmarshal(resp.GetPayload(), cqr) - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, cqr.Chaincodes, []*pb.ChaincodeInfo{ + require.Equal(t, cqr.Chaincodes, []*pb.ChaincodeInfo{ {Name: "name-one", Version: "1.0", Escc: "escc", Vscc: "vscc"}, {Name: "name-two", Version: "2.0", Escc: "escc-2", Vscc: "vscc-2"}, }) @@ -1021,7 +1020,7 @@ func TestGetChaincodesFilter(t *testing.T) { func TestGetInstalledChaincodes(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &MockSupport{}, @@ -1033,13 +1032,13 @@ func TestGetInstalledChaincodes(t *testing.T) { } stub := shimtest.NewMockStub("lscc", scc) res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) for _, function := range []string{"getinstalledchaincodes", "GetInstalledChaincodes"} { t.Run(function, func(t *testing.T) { res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function), []byte("barf")}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid number of arguments to lscc: 2", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid number of arguments to lscc: 2", res.Message) identityDeserializer := &policymocks.MockIdentityDeserializer{Identity: []byte("Alice"), Msg: []byte("msg1")} policyManagerGetter := &policymocks.MockChannelPolicyManagerGetter{ @@ -1059,8 +1058,8 @@ func TestGetInstalledChaincodes(t *testing.T) { mockAclProvider.Reset() mockAclProvider.On("CheckACL", resources.Lscc_GetInstalledChaincodes, "", sProp).Return(errors.New("authorization failure")) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function)}, sProp) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Contains(t, res.Message, "access denied for ["+function+"]") + require.NotEqual(t, int32(shim.OK), res.Status) + require.Contains(t, res.Message, "access denied for ["+function+"]") sProp, _ = protoutil.MockSignedEndorserProposalOrPanic("", &pb.ChaincodeSpec{}, []byte("Alice"), []byte("msg1")) identityDeserializer.Msg = sProp.ProposalBytes @@ -1069,21 +1068,21 @@ func TestGetInstalledChaincodes(t *testing.T) { mockAclProvider.Reset() mockAclProvider.On("CheckACL", resources.Lscc_GetInstalledChaincodes, "", sProp).Return(nil) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function)}, sProp) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "proto: Marshal called with nil", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "proto: Marshal called with nil", res.Message) _, err := constructDeploymentSpec("ccname-"+function, "path", "version", [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}, false, false, scc) - assert.NoError(t, err) + require.NoError(t, err) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function)}, sProp) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "barf", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "barf", res.Message) _, err = constructDeploymentSpec("ccname-"+function, "path", "version", [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}, false, true, scc) - assert.NoError(t, err) + require.NoError(t, err) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte(function)}, sProp) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) scc.Support = &MockSupport{} }) @@ -1092,7 +1091,7 @@ func TestGetInstalledChaincodes(t *testing.T) { func TestNewLifeCycleSysCC(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &SupportImpl{GetMSPIDs: getMSPIDs}, @@ -1102,19 +1101,19 @@ func TestNewLifeCycleSysCC(t *testing.T) { BuildRegistry: &container.BuildRegistry{}, ChaincodeBuilder: &mock.ChaincodeBuilder{}, } - assert.NotNil(t, scc) + require.NotNil(t, scc) stub := shimtest.NewMockStub("lscc", scc) res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) res = stub.MockInvokeWithSignedProposal("1", [][]byte{[]byte("barf")}, nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid function to lscc: barf", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid function to lscc: barf", res.Message) } func TestGetChaincodeData(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &SupportImpl{GetMSPIDs: getMSPIDs}, @@ -1124,22 +1123,22 @@ func TestGetChaincodeData(t *testing.T) { BuildRegistry: &container.BuildRegistry{}, ChaincodeBuilder: &mock.ChaincodeBuilder{}, } - assert.NotNil(t, scc) + require.NotNil(t, scc) stub := shimtest.NewMockStub("lscc", scc) res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) _, err = scc.getChaincodeData("barf", []byte("barf")) - assert.Error(t, err) + require.Error(t, err) _, err = scc.getChaincodeData("barf", protoutil.MarshalOrPanic(&ccprovider.ChaincodeData{Name: "barf s'more"})) - assert.Error(t, err) - assert.True(t, len(err.Error()) > 0) + require.Error(t, err) + require.True(t, len(err.Error()) > 0) } func TestExecuteInstall(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &SupportImpl{GetMSPIDs: getMSPIDs}, @@ -1149,13 +1148,13 @@ func TestExecuteInstall(t *testing.T) { BuildRegistry: &container.BuildRegistry{}, ChaincodeBuilder: &mock.ChaincodeBuilder{}, } - assert.NotNil(t, scc) + require.NotNil(t, scc) stub := shimtest.NewMockStub("lscc", scc) res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) err = scc.executeInstall(stub, []byte("barf")) - assert.Error(t, err) + require.Error(t, err) } func TestErrors(t *testing.T) { @@ -1164,10 +1163,10 @@ func TestErrors(t *testing.T) { // tons of lines of mocking code) to // get in testing err1 := TXNotFoundErr("") - assert.True(t, len(err1.Error()) > 0) + require.True(t, len(err1.Error()) > 0) err3 := MarshallErr("") - assert.True(t, len(err3.Error()) > 0) + require.True(t, len(err3.Error()) > 0) } func TestPutChaincodeCollectionData(t *testing.T) { @@ -1182,34 +1181,34 @@ func TestPutChaincodeCollectionData(t *testing.T) { } err := scc.putChaincodeCollectionData(stub, nil, nil) - assert.Error(t, err) + require.Error(t, err) cd := &ccprovider.ChaincodeData{Name: "foo"} err = scc.putChaincodeCollectionData(stub, cd, nil) - assert.NoError(t, err) + require.NoError(t, err) collName1 := "mycollection1" coll1 := createCollectionConfig(collName1, testPolicyEnvelope, 1, 2) ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) stub.MockTransactionStart("foo") err = scc.putChaincodeCollectionData(stub, cd, []byte("barf")) - assert.Error(t, err) + require.Error(t, err) stub.MockTransactionEnd("foo") stub.MockTransactionStart("foo") err = scc.putChaincodeCollectionData(stub, cd, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) stub.MockTransactionEnd("foo") } func TestGetChaincodeCollectionData(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) scc := &SCC{ BuiltinSCCs: map[string]struct{}{"lscc": {}}, Support: &SupportImpl{GetMSPIDs: getMSPIDs}, @@ -1229,16 +1228,16 @@ func TestGetChaincodeCollectionData(t *testing.T) { coll1 := createCollectionConfig(collName1, testPolicyEnvelope, 1, 2) ccp := &peer.CollectionConfigPackage{Config: []*peer.CollectionConfig{coll1}} ccpBytes, err := proto.Marshal(ccp) - assert.NoError(t, err) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccpBytes) stub.MockTransactionStart("foo") err = scc.putChaincodeCollectionData(stub, cd, ccpBytes) - assert.NoError(t, err) + require.NoError(t, err) stub.MockTransactionEnd("foo") res := stub.MockInit("1", nil) - assert.Equal(t, int32(shim.OK), res.Status, res.Message) + require.Equal(t, int32(shim.OK), res.Status, res.Message) for _, function := range []string{"GetCollectionsConfig", "getcollectionsconfig"} { sProp, _ := protoutil.MockSignedEndorserProposalOrPanic("test", &pb.ChaincodeSpec{}, []byte("Bob"), []byte("msg1")) @@ -1246,27 +1245,27 @@ func TestGetChaincodeCollectionData(t *testing.T) { t.Run("invalid number of arguments", func(t *testing.T) { res = stub.MockInvokeWithSignedProposal("1", util.ToChaincodeArgs(function, "foo", "bar"), nil) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, "invalid number of arguments to lscc: 3", res.Message) + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, "invalid number of arguments to lscc: 3", res.Message) }) t.Run("invalid identity", func(t *testing.T) { mockAclProvider.Reset() mockAclProvider.On("CheckACL", resources.Lscc_GetCollectionsConfig, "test", sProp).Return(errors.New("acl check failed")) res = stub.MockInvokeWithSignedProposal("1", util.ToChaincodeArgs(function, "foo"), sProp) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Contains(t, res.Message, "access denied for ["+function+"]") + require.NotEqual(t, int32(shim.OK), res.Status) + require.Contains(t, res.Message, "access denied for ["+function+"]") }) t.Run("non-exists collections config", func(t *testing.T) { mockAclProvider.Reset() mockAclProvider.On("CheckACL", resources.Lscc_GetCollectionsConfig, "test", sProp).Return(nil) res = stub.MockInvokeWithSignedProposal("1", util.ToChaincodeArgs(function, "bar"), sProp) - assert.NotEqual(t, int32(shim.OK), res.Status) - assert.Equal(t, res.Message, "collections config not defined for chaincode bar") + require.NotEqual(t, int32(shim.OK), res.Status) + require.Equal(t, res.Message, "collections config not defined for chaincode bar") }) t.Run("Success", func(t *testing.T) { res = stub.MockInvokeWithSignedProposal("1", util.ToChaincodeArgs(function, "foo"), sProp) - assert.Equal(t, int32(shim.OK), res.Status) - assert.NotNil(t, res.Payload) + require.Equal(t, int32(shim.OK), res.Status) + require.NotNil(t, res.Payload) }) } } @@ -1274,7 +1273,7 @@ func TestGetChaincodeCollectionData(t *testing.T) { func TestCheckCollectionMemberPolicy(t *testing.T) { // error case: no msp manager set, no collection config set err := checkCollectionMemberPolicy(nil, nil) - assert.Error(t, err) + require.Error(t, err) mockmsp := new(mspmocks.MockMSP) mockmsp.On("DeserializeIdentity", []byte("signer0")).Return(&mspmocks.MockIdentity{}, nil) @@ -1286,24 +1285,24 @@ func TestCheckCollectionMemberPolicy(t *testing.T) { // error case: msp manager not set up, no collection config set err = checkCollectionMemberPolicy(nil, nil) - assert.EqualError(t, err, "msp manager not set") + require.EqualError(t, err, "msp manager not set") // set up msp manager mgr.Setup([]msp.MSP{mockmsp}) // error case: no collection config set err = checkCollectionMemberPolicy(nil, mgr) - assert.EqualError(t, err, "collection configuration is not set") + require.EqualError(t, err, "collection configuration is not set") // error case: empty collection config cc := &peer.CollectionConfig{} err = checkCollectionMemberPolicy(cc, mgr) - assert.EqualError(t, err, "collection configuration is empty") + require.EqualError(t, err, "collection configuration is empty") // error case: no static collection config cc = &peer.CollectionConfig{Payload: &peer.CollectionConfig_StaticCollectionConfig{}} err = checkCollectionMemberPolicy(cc, mgr) - assert.EqualError(t, err, "collection configuration is empty") + require.EqualError(t, err, "collection configuration is empty") // error case: member org policy not set cc = &peer.CollectionConfig{ @@ -1312,7 +1311,7 @@ func TestCheckCollectionMemberPolicy(t *testing.T) { }, } err = checkCollectionMemberPolicy(cc, mgr) - assert.EqualError(t, err, "collection member policy is not set") + require.EqualError(t, err, "collection member policy is not set") // error case: member org policy config empty cc = &peer.CollectionConfig{ @@ -1326,7 +1325,7 @@ func TestCheckCollectionMemberPolicy(t *testing.T) { }, } err = checkCollectionMemberPolicy(cc, mgr) - assert.EqualError(t, err, "collection member org policy is empty") + require.EqualError(t, err, "collection member org policy is empty") // error case: signd-by index is out of range of signers cc = &peer.CollectionConfig{ @@ -1338,7 +1337,7 @@ func TestCheckCollectionMemberPolicy(t *testing.T) { }, } err = checkCollectionMemberPolicy(cc, mgr) - assert.EqualError(t, err, "invalid member org policy for collection 'mycollection': identity index out of range, requested 1, but identities length is 1") + require.EqualError(t, err, "invalid member org policy for collection 'mycollection': identity index out of range, requested 1, but identities length is 1") // valid case: well-formed collection policy config cc = &peer.CollectionConfig{ @@ -1354,7 +1353,7 @@ func TestCheckCollectionMemberPolicy(t *testing.T) { }, } err = checkCollectionMemberPolicy(cc, mgr) - assert.NoError(t, err) + require.NoError(t, err) // check MSPPrincipal_IDENTITY type var signers = [][]byte{[]byte("signer0"), []byte("signer1")} @@ -1374,7 +1373,7 @@ func TestCheckCollectionMemberPolicy(t *testing.T) { }, } err = checkCollectionMemberPolicy(cc, mgr) - assert.NoError(t, err) + require.NoError(t, err) mockmsp.AssertNumberOfCalls(t, "DeserializeIdentity", 3) // check MSPPrincipal_ROLE type @@ -1390,7 +1389,7 @@ func TestCheckCollectionMemberPolicy(t *testing.T) { }, } err = checkCollectionMemberPolicy(cc, mgr) - assert.NoError(t, err) + require.NoError(t, err) // check MSPPrincipal_ROLE type for unknown org signaturePolicyEnvelope = policydsl.SignedByAnyMember([]string{"Org2"}) @@ -1406,7 +1405,7 @@ func TestCheckCollectionMemberPolicy(t *testing.T) { } err = checkCollectionMemberPolicy(cc, mgr) // this does not raise an error but prints a warning logging message instead - assert.NoError(t, err) + require.NoError(t, err) // check MSPPrincipal_ORGANIZATION_UNIT type principal := &mb.MSPPrincipal{ @@ -1429,42 +1428,42 @@ func TestCheckCollectionMemberPolicy(t *testing.T) { }, } err = checkCollectionMemberPolicy(cc, mgr) - assert.NoError(t, err) + require.NoError(t, err) } func TestCheckChaincodeName(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) lscc := &SCC{BCCSP: cryptoProvider} /*allowed naming*/ err = lscc.isValidChaincodeName("a-b") - assert.NoError(t, err) + require.NoError(t, err) err = lscc.isValidChaincodeName("a_b") - assert.NoError(t, err) + require.NoError(t, err) err = lscc.isValidChaincodeName("a_b-c") - assert.NoError(t, err) + require.NoError(t, err) err = lscc.isValidChaincodeName("a-b_c") - assert.NoError(t, err) + require.NoError(t, err) /*invalid naming*/ err = lscc.isValidChaincodeName("") - assert.EqualError(t, err, "invalid chaincode name ''. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") + require.EqualError(t, err, "invalid chaincode name ''. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") err = lscc.isValidChaincodeName("-ab") - assert.EqualError(t, err, "invalid chaincode name '-ab'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") + require.EqualError(t, err, "invalid chaincode name '-ab'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") err = lscc.isValidChaincodeName("_ab") - assert.EqualError(t, err, "invalid chaincode name '_ab'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") + require.EqualError(t, err, "invalid chaincode name '_ab'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") err = lscc.isValidChaincodeName("ab-") - assert.EqualError(t, err, "invalid chaincode name 'ab-'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") + require.EqualError(t, err, "invalid chaincode name 'ab-'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") err = lscc.isValidChaincodeName("ab_") - assert.EqualError(t, err, "invalid chaincode name 'ab_'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") + require.EqualError(t, err, "invalid chaincode name 'ab_'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") err = lscc.isValidChaincodeName("a__b") - assert.EqualError(t, err, "invalid chaincode name 'a__b'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") + require.EqualError(t, err, "invalid chaincode name 'a__b'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") err = lscc.isValidChaincodeName("a--b") - assert.EqualError(t, err, "invalid chaincode name 'a--b'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") + require.EqualError(t, err, "invalid chaincode name 'a--b'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") err = lscc.isValidChaincodeName("a-_b") - assert.EqualError(t, err, "invalid chaincode name 'a-_b'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") + require.EqualError(t, err, "invalid chaincode name 'a-_b'. Names must start with an alphanumeric character and can only consist of alphanumerics, '_', and '-'") } func TestCheckChaincodeVersion(t *testing.T) { @@ -1473,32 +1472,32 @@ func TestCheckChaincodeVersion(t *testing.T) { validCCName := "ccname" /*allowed versions*/ err := lscc.isValidChaincodeVersion(validCCName, "a_b") - assert.NoError(t, err) + require.NoError(t, err) err = lscc.isValidChaincodeVersion(validCCName, "a.b") - assert.NoError(t, err) + require.NoError(t, err) err = lscc.isValidChaincodeVersion(validCCName, "a+b") - assert.NoError(t, err) + require.NoError(t, err) err = lscc.isValidChaincodeVersion(validCCName, "a-b") - assert.NoError(t, err) + require.NoError(t, err) err = lscc.isValidChaincodeVersion(validCCName, "-ab") - assert.NoError(t, err) + require.NoError(t, err) err = lscc.isValidChaincodeVersion(validCCName, "a.0") - assert.NoError(t, err) + require.NoError(t, err) err = lscc.isValidChaincodeVersion(validCCName, "a_b.c+d-e") - assert.NoError(t, err) + require.NoError(t, err) err = lscc.isValidChaincodeVersion(validCCName, "0") - assert.NoError(t, err) + require.NoError(t, err) /*invalid versions*/ err = lscc.isValidChaincodeVersion(validCCName, "") - assert.EqualError(t, err, "invalid chaincode version ''. Versions must not be empty and can only consist of alphanumerics, '_', '-', '+', and '.'") + require.EqualError(t, err, "invalid chaincode version ''. Versions must not be empty and can only consist of alphanumerics, '_', '-', '+', and '.'") err = lscc.isValidChaincodeVersion(validCCName, "$badversion") - assert.EqualError(t, err, "invalid chaincode version '$badversion'. Versions must not be empty and can only consist of alphanumerics, '_', '-', '+', and '.'") + require.EqualError(t, err, "invalid chaincode version '$badversion'. Versions must not be empty and can only consist of alphanumerics, '_', '-', '+', and '.'") } func TestLifecycleChaincodeRegularExpressionsMatch(t *testing.T) { - assert.Equal(t, ChaincodeNameRegExp.String(), lifecycle.ChaincodeNameRegExp.String()) - assert.Equal(t, ChaincodeVersionRegExp.String(), lifecycle.ChaincodeVersionRegExp.String()) + require.Equal(t, ChaincodeNameRegExp.String(), lifecycle.ChaincodeNameRegExp.String()) + require.Equal(t, ChaincodeVersionRegExp.String(), lifecycle.ChaincodeVersionRegExp.String()) } var id msp.SigningIdentity diff --git a/core/scc/qscc/query_test.go b/core/scc/qscc/query_test.go index 133c19ed4de..ec4eb8aa817 100644 --- a/core/scc/qscc/query_test.go +++ b/core/scc/qscc/query_test.go @@ -28,7 +28,6 @@ import ( "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -110,15 +109,15 @@ func TestQueryGetChainInfo(t *testing.T) { args := [][]byte{[]byte(GetChainInfo), []byte(chainid)} prop := resetProvider(resources.Qscc_GetChainInfo, chainid, nil, nil) res := stub.MockInvokeWithSignedProposal("1", args, prop) - assert.Equal(t, int32(shim.OK), res.Status, "GetChainInfo failed with err: %s", res.Message) + require.Equal(t, int32(shim.OK), res.Status, "GetChainInfo failed with err: %s", res.Message) args = [][]byte{[]byte(GetChainInfo)} res = stub.MockInvoke("2", args) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetChainInfo should have failed because no channel id was provided") + require.Equal(t, int32(shim.ERROR), res.Status, "GetChainInfo should have failed because no channel id was provided") args = [][]byte{[]byte(GetChainInfo), []byte("fakechainid")} res = stub.MockInvoke("3", args) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetChainInfo should have failed because the channel id does not exist") + require.Equal(t, int32(shim.ERROR), res.Status, "GetChainInfo should have failed because the channel id does not exist") } func TestQueryGetTransactionByID(t *testing.T) { @@ -135,16 +134,16 @@ func TestQueryGetTransactionByID(t *testing.T) { args := [][]byte{[]byte(GetTransactionByID), []byte(chainid), []byte("1")} prop := resetProvider(resources.Qscc_GetTransactionByID, chainid, &peer2.SignedProposal{}, nil) res := stub.MockInvokeWithSignedProposal("1", args, prop) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetTransactionByID should have failed with invalid txid: 1") + require.Equal(t, int32(shim.ERROR), res.Status, "GetTransactionByID should have failed with invalid txid: 1") args = [][]byte{[]byte(GetTransactionByID), []byte(chainid), []byte(nil)} res = stub.MockInvoke("2", args) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetTransactionByID should have failed with invalid txid: nil") + require.Equal(t, int32(shim.ERROR), res.Status, "GetTransactionByID should have failed with invalid txid: nil") // Test with wrong number of parameters args = [][]byte{[]byte(GetTransactionByID), []byte(chainid)} res = stub.MockInvoke("3", args) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetTransactionByID should have failed due to incorrect number of arguments") + require.Equal(t, int32(shim.ERROR), res.Status, "GetTransactionByID should have failed due to incorrect number of arguments") } func TestQueryGetBlockByNumber(t *testing.T) { @@ -162,17 +161,17 @@ func TestQueryGetBlockByNumber(t *testing.T) { args := [][]byte{[]byte(GetBlockByNumber), []byte(chainid), []byte("0")} prop := resetProvider(resources.Qscc_GetBlockByNumber, chainid, nil, nil) res := stub.MockInvokeWithSignedProposal("1", args, prop) - assert.Equal(t, int32(shim.OK), res.Status, "GetBlockByNumber should have succeeded for block number: 0") + require.Equal(t, int32(shim.OK), res.Status, "GetBlockByNumber should have succeeded for block number: 0") // block number 1 should not be present in the ledger args = [][]byte{[]byte(GetBlockByNumber), []byte(chainid), []byte("1")} res = stub.MockInvoke("2", args) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByNumber should have failed with invalid number: 1") + require.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByNumber should have failed with invalid number: 1") // block number cannot be nil args = [][]byte{[]byte(GetBlockByNumber), []byte(chainid), []byte(nil)} res = stub.MockInvoke("3", args) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByNumber should have failed with nil block number") + require.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByNumber should have failed with nil block number") } func TestQueryGetBlockByHash(t *testing.T) { @@ -189,11 +188,11 @@ func TestQueryGetBlockByHash(t *testing.T) { args := [][]byte{[]byte(GetBlockByHash), []byte(chainid), []byte("0")} prop := resetProvider(resources.Qscc_GetBlockByHash, chainid, &peer2.SignedProposal{}, nil) res := stub.MockInvokeWithSignedProposal("1", args, prop) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByHash should have failed with invalid hash: 0") + require.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByHash should have failed with invalid hash: 0") args = [][]byte{[]byte(GetBlockByHash), []byte(chainid), []byte(nil)} res = stub.MockInvoke("2", args) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByHash should have failed with nil hash") + require.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByHash should have failed with nil hash") } func TestQueryGetBlockByTxID(t *testing.T) { @@ -210,7 +209,7 @@ func TestQueryGetBlockByTxID(t *testing.T) { args := [][]byte{[]byte(GetBlockByTxID), []byte(chainid), []byte("")} prop := resetProvider(resources.Qscc_GetBlockByTxID, chainid, &peer2.SignedProposal{}, nil) res := stub.MockInvokeWithSignedProposal("1", args, prop) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByTxID should have failed with blank txId.") + require.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByTxID should have failed with blank txId.") } func TestFailingCC2CC(t *testing.T) { @@ -224,8 +223,8 @@ func TestFailingCC2CC(t *testing.T) { // Set the ACLProvider to have a failure resetProvider(resources.Qscc_GetChainInfo, "testchannel", sProp, nil) res := stub.MockInvokeWithSignedProposal("2", args, sProp) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetChainInfo must fail: %s", res.Message) - assert.Contains(t, res.Message, "Failed to identify the called chaincode: could not unmarshal proposal: proto: can't skip unknown wire type 7") + require.Equal(t, int32(shim.ERROR), res.Status, "GetChainInfo must fail: %s", res.Message) + require.Contains(t, res.Message, "Failed to identify the called chaincode: could not unmarshal proposal: proto: can't skip unknown wire type 7") }) t.Run("DifferentInvokedCC", func(t *testing.T) { @@ -245,8 +244,8 @@ func TestFailingCC2CC(t *testing.T) { // Set the ACLProvider to have a failure resetProvider(resources.Qscc_GetChainInfo, "testchannel", sProp, nil) res := stub.MockInvokeWithSignedProposal("2", args, sProp) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetChainInfo must fail: %s", res.Message) - assert.Contains(t, res.Message, "Rejecting invoke of QSCC from another chaincode because of potential for deadlocks, original invocation for 'usercc'") + require.Equal(t, int32(shim.ERROR), res.Status, "GetChainInfo must fail: %s", res.Message) + require.Contains(t, res.Message, "Rejecting invoke of QSCC from another chaincode because of potential for deadlocks, original invocation for 'usercc'") }) } @@ -280,8 +279,8 @@ func TestFailingAccessControl(t *testing.T) { // Set the ACLProvider to have a failure resetProvider(resources.Qscc_GetChainInfo, chainid, sProp, errors.New("Failed access control")) res := stub.MockInvokeWithSignedProposal("2", args, sProp) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetChainInfo must fail: %s", res.Message) - assert.Contains(t, res.Message, "Failed access control") + require.Equal(t, int32(shim.ERROR), res.Status, "GetChainInfo must fail: %s", res.Message) + require.Contains(t, res.Message, "Failed access control") // assert that the expectations were met mockAclProvider.AssertExpectations(t) @@ -301,8 +300,8 @@ func TestFailingAccessControl(t *testing.T) { // Set the ACLProvider to have a failure resetProvider(resources.Qscc_GetBlockByNumber, chainid, sProp, errors.New("Failed access control")) res = stub.MockInvokeWithSignedProposal("2", args, sProp) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByNumber must fail: %s", res.Message) - assert.Contains(t, res.Message, "Failed access control") + require.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByNumber must fail: %s", res.Message) + require.Contains(t, res.Message, "Failed access control") // assert that the expectations were met mockAclProvider.AssertExpectations(t) @@ -322,8 +321,8 @@ func TestFailingAccessControl(t *testing.T) { // Set the ACLProvider to have a failure resetProvider(resources.Qscc_GetBlockByHash, chainid, sProp, errors.New("Failed access control")) res = stub.MockInvokeWithSignedProposal("2", args, sProp) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByHash must fail: %s", res.Message) - assert.Contains(t, res.Message, "Failed access control") + require.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByHash must fail: %s", res.Message) + require.Contains(t, res.Message, "Failed access control") // assert that the expectations were met mockAclProvider.AssertExpectations(t) @@ -343,8 +342,8 @@ func TestFailingAccessControl(t *testing.T) { // Set the ACLProvider to have a failure resetProvider(resources.Qscc_GetBlockByTxID, chainid, sProp, errors.New("Failed access control")) res = stub.MockInvokeWithSignedProposal("2", args, sProp) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByTxID must fail: %s", res.Message) - assert.Contains(t, res.Message, "Failed access control") + require.Equal(t, int32(shim.ERROR), res.Status, "GetBlockByTxID must fail: %s", res.Message) + require.Contains(t, res.Message, "Failed access control") // assert that the expectations were met mockAclProvider.AssertExpectations(t) @@ -364,8 +363,8 @@ func TestFailingAccessControl(t *testing.T) { // Set the ACLProvider to have a failure resetProvider(resources.Qscc_GetTransactionByID, chainid, sProp, errors.New("Failed access control")) res = stub.MockInvokeWithSignedProposal("2", args, sProp) - assert.Equal(t, int32(shim.ERROR), res.Status, "Qscc_GetTransactionByID must fail: %s", res.Message) - assert.Contains(t, res.Message, "Failed access control") + require.Equal(t, int32(shim.ERROR), res.Status, "Qscc_GetTransactionByID must fail: %s", res.Message) + require.Contains(t, res.Message, "Failed access control") // assert that the expectations were met mockAclProvider.AssertExpectations(t) } @@ -384,7 +383,7 @@ func TestQueryNonexistentFunction(t *testing.T) { args := [][]byte{[]byte("GetBlocks"), []byte(chainid), []byte("arg1")} prop := resetProvider("qscc/GetBlocks", chainid, &peer2.SignedProposal{}, nil) res := stub.MockInvokeWithSignedProposal("1", args, prop) - assert.Equal(t, int32(shim.ERROR), res.Status, "GetBlocks should have failed because the function does not exist") + require.Equal(t, int32(shim.ERROR), res.Status, "GetBlocks should have failed because the function does not exist") } // TestQueryGeneratedBlock tests various queries for a newly generated block @@ -406,13 +405,13 @@ func TestQueryGeneratedBlock(t *testing.T) { args := [][]byte{[]byte(GetBlockByNumber), []byte(chainid), []byte("1")} prop := resetProvider(resources.Qscc_GetBlockByNumber, chainid, nil, nil) res := stub.MockInvokeWithSignedProposal("1", args, prop) - assert.Equal(t, int32(shim.OK), res.Status, "GetBlockByNumber should have succeeded for block number 1") + require.Equal(t, int32(shim.OK), res.Status, "GetBlockByNumber should have succeeded for block number 1") // block number 1 args = [][]byte{[]byte(GetBlockByHash), []byte(chainid), protoutil.BlockHeaderHash(block1.Header)} prop = resetProvider(resources.Qscc_GetBlockByHash, chainid, nil, nil) res = stub.MockInvokeWithSignedProposal("2", args, prop) - assert.Equal(t, int32(shim.OK), res.Status, "GetBlockByHash should have succeeded for block 1 hash") + require.Equal(t, int32(shim.OK), res.Status, "GetBlockByHash should have succeeded for block 1 hash") // drill into the block to find the transaction ids it contains for _, d := range block1.Data.Data { @@ -434,12 +433,12 @@ func TestQueryGeneratedBlock(t *testing.T) { mockAclProvider.Reset() prop = resetProvider(resources.Qscc_GetBlockByTxID, chainid, nil, nil) res = stub.MockInvokeWithSignedProposal("3", args, prop) - assert.Equal(t, int32(shim.OK), res.Status, "GetBlockByTxId should have succeeded for txid: %s", chdr.TxId) + require.Equal(t, int32(shim.OK), res.Status, "GetBlockByTxId should have succeeded for txid: %s", chdr.TxId) args = [][]byte{[]byte(GetTransactionByID), []byte(chainid), []byte(chdr.TxId)} prop = resetProvider(resources.Qscc_GetTransactionByID, chainid, nil, nil) res = stub.MockInvokeWithSignedProposal("4", args, prop) - assert.Equal(t, int32(shim.OK), res.Status, "GetTransactionById should have succeeded for txid: %s", chdr.TxId) + require.Equal(t, int32(shim.OK), res.Status, "GetTransactionById should have succeeded for txid: %s", chdr.TxId) } } } @@ -469,7 +468,7 @@ func addBlockForTesting(t *testing.T, chainid string, p *peer.Peer) *common.Bloc pubSimResBytes2, _ := simRes2.GetPubSimulationBytes() bcInfo, err := ledger.GetBlockchainInfo() - assert.NoError(t, err) + require.NoError(t, err) block1 := testutil.ConstructBlock(t, 1, bcInfo.CurrentBlockHash, [][]byte{pubSimResBytes1, pubSimResBytes2}, false) ledger.CommitLegacy(&ledger2.BlockAndPvtData{Block: block1}, &ledger2.CommitOptions{}) return block1 diff --git a/core/transientstore/store_test.go b/core/transientstore/store_test.go index 6ca75d93216..067bfbd93d4 100644 --- a/core/transientstore/store_test.go +++ b/core/transientstore/store_test.go @@ -22,7 +22,6 @@ import ( commonutil "github.com/hyperledger/fabric/common/util" "github.com/hyperledger/fabric/core/ledger" "github.com/hyperledger/fabric/core/ledger/util" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -65,7 +64,7 @@ func (env *testEnv) initTestEnv(t *testing.T) { var env testEnv func TestPurgeIndexKeyCodingEncoding(t *testing.T) { - assert := assert.New(t) + require := require.New(t) blkHts := []uint64{0, 10, 20000} txids := []string{"txid", ""} uuids := []string{"uuid", ""} @@ -77,10 +76,10 @@ func TestPurgeIndexKeyCodingEncoding(t *testing.T) { t.Logf("Running test case [%s]", testCase) purgeIndexKey := createCompositeKeyForPurgeIndexByHeight(blkHt, txid, uuid) txid1, uuid1, blkHt1, err := splitCompositeKeyOfPurgeIndexByHeight(purgeIndexKey) - assert.NoError(err) - assert.Equal(txid, txid1) - assert.Equal(uuid, uuid1) - assert.Equal(blkHt, blkHt1) + require.NoError(err) + require.Equal(txid, txid1) + require.Equal(uuid, uuid1) + require.Equal(blkHt, blkHt1) }) } } @@ -88,7 +87,7 @@ func TestPurgeIndexKeyCodingEncoding(t *testing.T) { } func TestRWSetKeyCodingEncoding(t *testing.T) { - assert := assert.New(t) + require := require.New(t) blkHts := []uint64{0, 10, 20000} txids := []string{"txid", ""} uuids := []string{"uuid", ""} @@ -100,9 +99,9 @@ func TestRWSetKeyCodingEncoding(t *testing.T) { t.Logf("Running test case [%s]", testCase) rwsetKey := createCompositeKeyForPvtRWSet(txid, uuid, blkHt) uuid1, blkHt1, err := splitCompositeKeyOfPvtRWSet(rwsetKey) - assert.NoError(err) - assert.Equal(uuid, uuid1) - assert.Equal(blkHt, blkHt1) + require.NoError(err) + require.Equal(uuid, uuid1) + require.Equal(blkHt, blkHt1) }) } } @@ -113,7 +112,7 @@ func TestTransientStorePersistAndRetrieve(t *testing.T) { env.initTestEnv(t) defer env.cleanup() testStore := env.store - assert := assert.New(t) + require := require.New(t) txid := "txid-1" samplePvtRWSetWithConfig := samplePvtDataWithConfigInfo(t) @@ -139,17 +138,17 @@ func TestTransientStorePersistAndRetrieve(t *testing.T) { for i := 0; i < len(endorsersResults); i++ { err = testStore.Persist(txid, endorsersResults[i].ReceivedAtBlockHeight, endorsersResults[i].PvtSimulationResultsWithConfig) - assert.NoError(err) + require.NoError(err) } // Retrieve simulation results of txid-1 from store iter, err := testStore.GetTxPvtRWSetByTxid(txid, nil) - assert.NoError(err) + require.NoError(err) var actualEndorsersResults []*EndorserPvtSimulationResults for { result, err := iter.Next() - assert.NoError(err) + require.NoError(err) if result == nil { break } @@ -158,14 +157,14 @@ func TestTransientStorePersistAndRetrieve(t *testing.T) { iter.Close() sortResults(endorsersResults) sortResults(actualEndorsersResults) - assert.Equal(endorsersResults, actualEndorsersResults) + require.Equal(endorsersResults, actualEndorsersResults) } func TestTransientStorePersistAndRetrieveBothOldAndNewProto(t *testing.T) { env.initTestEnv(t) defer env.cleanup() testStore := env.store - assert := assert.New(t) + require := require.New(t) txid := "txid-1" var receivedAtBlockHeight uint64 = 10 var err error @@ -173,12 +172,12 @@ func TestTransientStorePersistAndRetrieveBothOldAndNewProto(t *testing.T) { // Create and persist private simulation results with old proto for txid-1 samplePvtRWSet := samplePvtData(t) err = testStore.persistOldProto(txid, receivedAtBlockHeight, samplePvtRWSet) - assert.NoError(err) + require.NoError(err) // Create and persist private simulation results with new proto for txid-1 samplePvtRWSetWithConfig := samplePvtDataWithConfigInfo(t) err = testStore.Persist(txid, receivedAtBlockHeight, samplePvtRWSetWithConfig) - assert.NoError(err) + require.NoError(err) // Construct the expected results var expectedEndorsersResults []*EndorserPvtSimulationResults @@ -201,12 +200,12 @@ func TestTransientStorePersistAndRetrieveBothOldAndNewProto(t *testing.T) { // Retrieve simulation results of txid-1 from store iter, err := testStore.GetTxPvtRWSetByTxid(txid, nil) - assert.NoError(err) + require.NoError(err) var actualEndorsersResults []*EndorserPvtSimulationResults for { result, err := iter.Next() - assert.NoError(err) + require.NoError(err) if result == nil { break } @@ -215,14 +214,14 @@ func TestTransientStorePersistAndRetrieveBothOldAndNewProto(t *testing.T) { iter.Close() sortResults(expectedEndorsersResults) sortResults(actualEndorsersResults) - assert.Equal(expectedEndorsersResults, actualEndorsersResults) + require.Equal(expectedEndorsersResults, actualEndorsersResults) } func TestTransientStorePurgeByTxids(t *testing.T) { env.initTestEnv(t) defer env.cleanup() testStore := env.store - assert := assert.New(t) + require := require.New(t) var txids []string var endorsersResults []*EndorserPvtSimulationResults @@ -278,12 +277,12 @@ func TestTransientStorePurgeByTxids(t *testing.T) { for i := 0; i < len(txids); i++ { err = testStore.Persist(txids[i], endorsersResults[i].ReceivedAtBlockHeight, endorsersResults[i].PvtSimulationResultsWithConfig) - assert.NoError(err) + require.NoError(err) } // Retrieve simulation results of txid-2 from store iter, err := testStore.GetTxPvtRWSetByTxid("txid-2", nil) - assert.NoError(err) + require.NoError(err) // Expected results for txid-2 var expectedEndorsersResults []*EndorserPvtSimulationResults @@ -293,7 +292,7 @@ func TestTransientStorePurgeByTxids(t *testing.T) { var actualEndorsersResults []*EndorserPvtSimulationResults for { result, err := iter.Next() - assert.NoError(err) + require.NoError(err) if result == nil { break } @@ -306,32 +305,32 @@ func TestTransientStorePurgeByTxids(t *testing.T) { sortResults(expectedEndorsersResults) sortResults(actualEndorsersResults) - assert.Equal(len(expectedEndorsersResults), len(actualEndorsersResults)) + require.Equal(len(expectedEndorsersResults), len(actualEndorsersResults)) for i, expected := range expectedEndorsersResults { - assert.Equal(expected.ReceivedAtBlockHeight, actualEndorsersResults[i].ReceivedAtBlockHeight) - assert.True(proto.Equal(expected.PvtSimulationResultsWithConfig, actualEndorsersResults[i].PvtSimulationResultsWithConfig)) + require.Equal(expected.ReceivedAtBlockHeight, actualEndorsersResults[i].ReceivedAtBlockHeight) + require.True(proto.Equal(expected.PvtSimulationResultsWithConfig, actualEndorsersResults[i].PvtSimulationResultsWithConfig)) } // Remove all private write set of txid-2 and txid-3 toRemoveTxids := []string{"txid-2", "txid-3"} err = testStore.PurgeByTxids(toRemoveTxids) - assert.NoError(err) + require.NoError(err) for _, txid := range toRemoveTxids { // Check whether private write sets of txid-2 are removed var expectedEndorsersResults *EndorserPvtSimulationResults = nil iter, err = testStore.GetTxPvtRWSetByTxid(txid, nil) - assert.NoError(err) + require.NoError(err) // Should return nil, nil result, err := iter.Next() - assert.NoError(err) - assert.Equal(expectedEndorsersResults, result) + require.NoError(err) + require.Equal(expectedEndorsersResults, result) } // Retrieve simulation results of txid-1 from store iter, err = testStore.GetTxPvtRWSetByTxid("txid-1", nil) - assert.NoError(err) + require.NoError(err) // Expected results for txid-1 expectedEndorsersResults = nil @@ -342,7 +341,7 @@ func TestTransientStorePurgeByTxids(t *testing.T) { actualEndorsersResults = nil for { result, err := iter.Next() - assert.NoError(err) + require.NoError(err) if result == nil { break } @@ -355,38 +354,38 @@ func TestTransientStorePurgeByTxids(t *testing.T) { sortResults(expectedEndorsersResults) sortResults(actualEndorsersResults) - assert.Equal(len(expectedEndorsersResults), len(actualEndorsersResults)) + require.Equal(len(expectedEndorsersResults), len(actualEndorsersResults)) for i, expected := range expectedEndorsersResults { - assert.Equal(expected.ReceivedAtBlockHeight, actualEndorsersResults[i].ReceivedAtBlockHeight) - assert.True(proto.Equal(expected.PvtSimulationResultsWithConfig, actualEndorsersResults[i].PvtSimulationResultsWithConfig)) + require.Equal(expected.ReceivedAtBlockHeight, actualEndorsersResults[i].ReceivedAtBlockHeight) + require.True(proto.Equal(expected.PvtSimulationResultsWithConfig, actualEndorsersResults[i].PvtSimulationResultsWithConfig)) } toRemoveTxids = []string{"txid-1"} err = testStore.PurgeByTxids(toRemoveTxids) - assert.NoError(err) + require.NoError(err) for _, txid := range toRemoveTxids { // Check whether private write sets of txid-1 are removed var expectedEndorsersResults *EndorserPvtSimulationResults = nil iter, err = testStore.GetTxPvtRWSetByTxid(txid, nil) - assert.NoError(err) + require.NoError(err) // Should return nil, nil result, err := iter.Next() - assert.NoError(err) - assert.Equal(expectedEndorsersResults, result) + require.NoError(err) + require.Equal(expectedEndorsersResults, result) } // There should be no entries in the store _, err = testStore.GetMinTransientBlkHt() - assert.Equal(err, ErrStoreEmpty) + require.Equal(err, ErrStoreEmpty) } func TestTransientStorePurgeBelowHeight(t *testing.T) { env.initTestEnv(t) defer env.cleanup() testStore := env.store - assert := assert.New(t) + require := require.New(t) txid := "txid-1" samplePvtRWSetWithConfig := samplePvtDataWithConfigInfo(t) @@ -434,17 +433,17 @@ func TestTransientStorePurgeBelowHeight(t *testing.T) { for i := 0; i < 5; i++ { err = testStore.Persist(txid, endorsersResults[i].ReceivedAtBlockHeight, endorsersResults[i].PvtSimulationResultsWithConfig) - assert.NoError(err) + require.NoError(err) } // Retain results generate at block height greater than or equal to 12 minTransientBlkHtToRetain := uint64(12) err = testStore.PurgeBelowHeight(minTransientBlkHtToRetain) - assert.NoError(err) + require.NoError(err) // Retrieve simulation results of txid-1 from store iter, err := testStore.GetTxPvtRWSetByTxid(txid, nil) - assert.NoError(err) + require.NoError(err) // Expected results for txid-1 var expectedEndorsersResults []*EndorserPvtSimulationResults @@ -456,7 +455,7 @@ func TestTransientStorePurgeBelowHeight(t *testing.T) { var actualEndorsersResults []*EndorserPvtSimulationResults for { result, err := iter.Next() - assert.NoError(err) + require.NoError(err) if result == nil { break } @@ -469,33 +468,33 @@ func TestTransientStorePurgeBelowHeight(t *testing.T) { sortResults(expectedEndorsersResults) sortResults(actualEndorsersResults) - assert.Equal(len(expectedEndorsersResults), len(actualEndorsersResults)) + require.Equal(len(expectedEndorsersResults), len(actualEndorsersResults)) for i, expected := range expectedEndorsersResults { - assert.Equal(expected.ReceivedAtBlockHeight, actualEndorsersResults[i].ReceivedAtBlockHeight) - assert.True(proto.Equal(expected.PvtSimulationResultsWithConfig, actualEndorsersResults[i].PvtSimulationResultsWithConfig)) + require.Equal(expected.ReceivedAtBlockHeight, actualEndorsersResults[i].ReceivedAtBlockHeight) + require.True(proto.Equal(expected.PvtSimulationResultsWithConfig, actualEndorsersResults[i].PvtSimulationResultsWithConfig)) } // Get the minimum block height remaining in transient store var actualMinTransientBlkHt uint64 actualMinTransientBlkHt, err = testStore.GetMinTransientBlkHt() - assert.NoError(err) - assert.Equal(minTransientBlkHtToRetain, actualMinTransientBlkHt) + require.NoError(err) + require.Equal(minTransientBlkHtToRetain, actualMinTransientBlkHt) // Retain results at block height greater than or equal to 15 minTransientBlkHtToRetain = uint64(15) err = testStore.PurgeBelowHeight(minTransientBlkHtToRetain) - assert.NoError(err) + require.NoError(err) // There should be no entries in the store actualMinTransientBlkHt, err = testStore.GetMinTransientBlkHt() - assert.Equal(err, ErrStoreEmpty) - assert.Equal(uint64(0), actualMinTransientBlkHt) + require.Equal(err, ErrStoreEmpty) + require.Equal(uint64(0), actualMinTransientBlkHt) // Retain results at block height greater than or equal to 15 minTransientBlkHtToRetain = uint64(15) err = testStore.PurgeBelowHeight(minTransientBlkHtToRetain) // Should not return any error - assert.NoError(err) + require.NoError(err) } func TestTransientStoreRetrievalWithFilter(t *testing.T) { @@ -516,13 +515,13 @@ func TestTransientStoreRetrievalWithFilter(t *testing.T) { filter.Add("ns-2", "coll-2") itr, err := testStore.GetTxPvtRWSetByTxid(testTxid, filter) - assert.NoError(t, err) + require.NoError(t, err) var actualRes []*EndorserPvtSimulationResults for { res, err := itr.Next() if res == nil || err != nil { - assert.NoError(t, err) + require.NoError(t, err) break } actualRes = append(actualRes, res) @@ -533,14 +532,14 @@ func TestTransientStoreRetrievalWithFilter(t *testing.T) { expectedSimulationRes.GetPvtRwset().NsPvtRwset[0].CollectionPvtRwset = expectedSimulationRes.GetPvtRwset().NsPvtRwset[0].CollectionPvtRwset[0:1] expectedSimulationRes.GetPvtRwset().NsPvtRwset[1].CollectionPvtRwset = expectedSimulationRes.GetPvtRwset().NsPvtRwset[1].CollectionPvtRwset[1:] expectedSimulationRes.CollectionConfigs, err = trimPvtCollectionConfigs(expectedSimulationRes.CollectionConfigs, filter) - assert.NoError(t, err) + require.NoError(t, err) for ns, colName := range map[string]string{"ns-1": "coll-1", "ns-2": "coll-2"} { config := expectedSimulationRes.CollectionConfigs[ns] - assert.NotNil(t, config) + require.NotNil(t, config) ns1Config := config.Config - assert.Equal(t, len(ns1Config), 1) + require.Equal(t, len(ns1Config), 1) ns1ColConfig := ns1Config[0].GetStaticCollectionConfig() - assert.NotNil(t, ns1ColConfig.Name, colName) + require.NotNil(t, ns1ColConfig.Name, colName) } var expectedRes []*EndorserPvtSimulationResults @@ -552,10 +551,10 @@ func TestTransientStoreRetrievalWithFilter(t *testing.T) { // expectedRes and actualRes. sortResults(expectedRes) sortResults(actualRes) - assert.Equal(t, len(expectedRes), len(actualRes)) + require.Equal(t, len(expectedRes), len(actualRes)) for i, expected := range expectedRes { - assert.Equal(t, expected.ReceivedAtBlockHeight, actualRes[i].ReceivedAtBlockHeight) - assert.True(t, proto.Equal(expected.PvtSimulationResultsWithConfig, actualRes[i].PvtSimulationResultsWithConfig)) + require.Equal(t, expected.ReceivedAtBlockHeight, actualRes[i].ReceivedAtBlockHeight) + require.True(t, proto.Equal(expected.PvtSimulationResultsWithConfig, actualRes[i].PvtSimulationResultsWithConfig)) } } diff --git a/core/tx/processor_factory_test.go b/core/tx/processor_factory_test.go index 15911135962..327846d01f0 100644 --- a/core/tx/processor_factory_test.go +++ b/core/tx/processor_factory_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCreateProcessor(t *testing.T) { @@ -27,7 +27,7 @@ func TestCreateProcessor(t *testing.T) { env := protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: protoutil.MarshalOrPanic(&common.ChannelHeader{ChannelId: "myc", TxId: "tid", Type: invalidType}), SignatureHeader: protoutil.MarshalOrPanic(&common.SignatureHeader{Creator: []byte("creator"), Nonce: []byte("nonce")})}}), Signature: []byte("signature")}) _, _, err := f.CreateProcessor(env) - assert.Equal(t, err.Error(), "ValidationCode = UNKNOWN_TX_TYPE, ActualErr = invalid transaction type -1") + require.Equal(t, err.Error(), "ValidationCode = UNKNOWN_TX_TYPE, ActualErr = invalid transaction type -1") } func TestBasicTxValidity(t *testing.T) { @@ -77,12 +77,12 @@ func TestBasicTxValidity(t *testing.T) { for _, ic := range invalidConfigs { _, _, err := f.CreateProcessor(ic.env) - assert.Equal(t, err.Error(), ic.expectedErr.Error()) + require.Equal(t, err.Error(), ic.expectedErr.Error()) } // NOTE: common.HeaderType_CONFIG is a valid type and this should succeed when we populate ProcessorFactory (and signifies successful validation). Till then, a negative test env := protoutil.MarshalOrPanic(&common.Envelope{Payload: protoutil.MarshalOrPanic(&common.Payload{Header: &common.Header{ChannelHeader: protoutil.MarshalOrPanic(&common.ChannelHeader{ChannelId: "myc", TxId: "tid", Type: int32(common.HeaderType_CONFIG)}), SignatureHeader: protoutil.MarshalOrPanic(&common.SignatureHeader{Creator: []byte("creator"), Nonce: []byte("nonce")})}}), Signature: []byte("signature")}) _, _, err := f.CreateProcessor(env) - assert.Equal(t, err.Error(), "ValidationCode = UNKNOWN_TX_TYPE, ActualErr = invalid transaction type 1") + require.Equal(t, err.Error(), "ValidationCode = UNKNOWN_TX_TYPE, ActualErr = invalid transaction type 1") } diff --git a/discovery/authcache_test.go b/discovery/authcache_test.go index 59a22484a20..4c2b6a87bcb 100644 --- a/discovery/authcache_test.go +++ b/discovery/authcache_test.go @@ -13,8 +13,8 @@ import ( "testing" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestSignedDataToKey(t *testing.T) { @@ -28,9 +28,9 @@ func TestSignedDataToKey(t *testing.T) { Identity: []byte{4, 5, 6}, Signature: []byte{7, 8, 9}, }) - assert.NoError(t, err1) - assert.NoError(t, err2) - assert.NotEqual(t, key1, key2) + require.NoError(t, err1) + require.NoError(t, err2) + require.NotEqual(t, key1, key2) } type mockAcSupport struct { @@ -116,11 +116,11 @@ func TestCacheUsage(t *testing.T) { t.Run("Not cached test", func(t *testing.T) { err := cache.EligibleForService(tst.channel, tst.sd) if tst.expectedErr == nil { - assert.NoError(t, err) + require.NoError(t, err) } else { - assert.Equal(t, tst.expectedErr.Error(), err.Error()) + require.Equal(t, tst.expectedErr.Error(), err.Error()) } - assert.True(t, invoked) + require.True(t, invoked) // Reset invoked to false for next test invoked = false }) @@ -131,11 +131,11 @@ func TestCacheUsage(t *testing.T) { t.Run("Cached test", func(t *testing.T) { err := cache.EligibleForService(tst.channel, tst.sd) if tst.expectedErr == nil { - assert.NoError(t, err) + require.NoError(t, err) } else { - assert.Equal(t, tst.expectedErr.Error(), err.Error()) + require.Equal(t, tst.expectedErr.Error(), err.Error()) } - assert.False(t, invoked) + require.False(t, invoked) }) } } @@ -150,7 +150,7 @@ func TestCacheMarshalFailure(t *testing.T) { asBytes = asn1.Marshal }() err := cache.EligibleForService("mychannel", protoutil.SignedData{}) - assert.Contains(t, err.Error(), "failed marshaling ASN1") + require.Contains(t, err.Error(), "failed marshaling ASN1") } func TestCacheConfigChange(t *testing.T) { @@ -167,19 +167,19 @@ func TestCacheConfigChange(t *testing.T) { as.On("EligibleForService", "mychannel", sd).Return(nil).Once() as.On("ConfigSequence", "mychannel").Return(uint64(0)).Times(2) err := cache.EligibleForService("mychannel", sd) - assert.NoError(t, err) + require.NoError(t, err) // Scenario II: The identity is still authorized, and config hasn't changed yet. // Result should be cached as.On("ConfigSequence", "mychannel").Return(uint64(0)).Once() err = cache.EligibleForService("mychannel", sd) - assert.NoError(t, err) + require.NoError(t, err) // Scenario III: A config change occurred, cache should be disregarded as.On("ConfigSequence", "mychannel").Return(uint64(1)).Times(2) as.On("EligibleForService", "mychannel", sd).Return(errors.New("unauthorized")).Once() err = cache.EligibleForService("mychannel", sd) - assert.Contains(t, err.Error(), "unauthorized") + require.Contains(t, err.Error(), "unauthorized") } func TestCachePurgeCache(t *testing.T) { @@ -197,7 +197,7 @@ func TestCachePurgeCache(t *testing.T) { // At first, all identities are eligible of the service as.On("EligibleForService", "mychannel", sd).Return(nil).Once() err := cache.EligibleForService("mychannel", sd) - assert.NoError(t, err) + require.NoError(t, err) } // Now, ensure that at least 1 of the identities was evicted from the cache, but not all @@ -214,7 +214,7 @@ func TestCachePurgeCache(t *testing.T) { evicted++ } } - assert.True(t, evicted > 0 && evicted < 4, "evicted: %d, but expected between 1 and 3 evictions", evicted) + require.True(t, evicted > 0 && evicted < 4, "evicted: %d, but expected between 1 and 3 evictions", evicted) } func TestCacheConcurrentConfigUpdate(t *testing.T) { @@ -257,7 +257,7 @@ func TestCacheConcurrentConfigUpdate(t *testing.T) { go func() { defer firstRequestFinished.Done() firstResult := cache.EligibleForService("mychannel", sd) - assert.NoError(t, firstResult) + require.NoError(t, firstResult) }() firstRequestInvoked.Wait() // Second request returns that the identity isn't authorized @@ -266,13 +266,13 @@ func TestCacheConcurrentConfigUpdate(t *testing.T) { secondRequestFinished.Done() // Wait for first request to return firstRequestFinished.Wait() - assert.Contains(t, secondResult.Error(), "unauthorized") + require.Contains(t, secondResult.Error(), "unauthorized") // Now make another request and ensure that the second request's result (an-authorized) was cached, // even though it finished before the first request. as.On("ConfigSequence", "mychannel").Return(uint64(1)).Once() cachedResult := cache.EligibleForService("mychannel", sd) - assert.Contains(t, cachedResult.Error(), "unauthorized") + require.Contains(t, cachedResult.Error(), "unauthorized") } func defaultConfig() authCacheConfig { diff --git a/discovery/client/client_test.go b/discovery/client/client_test.go index 8dceb03565b..0a241f07b94 100644 --- a/discovery/client/client_test.go +++ b/discovery/client/client_test.go @@ -37,8 +37,8 @@ import ( "github.com/hyperledger/fabric/internal/pkg/comm" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) @@ -288,7 +288,7 @@ func createGRPCServer(t *testing.T) *comm.GRPCServer { Key: serverKey, }, }) - assert.NoError(t, err) + require.NoError(t, err) return s } @@ -303,7 +303,7 @@ func createConnector(t *testing.T, certificate tls.Certificate, targetPort int) addr := fmt.Sprintf("localhost:%d", targetPort) return func() (*grpc.ClientConn, error) { conn, err := grpc.Dial(addr, grpc.WithBlock(), grpc.WithTransportCredentials(credentials.NewTLS(tlsConf))) - assert.NoError(t, err) + require.NoError(t, err) if err != nil { panic(err) } @@ -370,7 +370,7 @@ func TestClient(t *testing.T) { clientCert := loadFileOrPanic(filepath.Join("testdata", "client", "cert.pem")) clientKey := loadFileOrPanic(filepath.Join("testdata", "client", "key.pem")) clientTLSCert, err := tls.X509KeyPair(clientCert, clientKey) - assert.NoError(t, err) + require.NoError(t, err) server := createGRPCServer(t) sup := &mockSupport{} service := createDiscoveryService(sup) @@ -394,39 +394,39 @@ func TestClient(t *testing.T) { req := NewRequest() req.OfChannel("mychannel").AddPeersQuery().AddConfigQuery().AddLocalPeersQuery().AddEndorsersQuery(interest("mycc")) r, err := cl.Send(ctx, req, authInfo) - assert.NoError(t, err) + require.NoError(t, err) t.Run("Channel mismatch", func(t *testing.T) { // Check behavior for channels that we didn't query for. fakeChannel := r.ForChannel("fakeChannel") peers, err := fakeChannel.Peers() - assert.Equal(t, ErrNotFound, err) - assert.Nil(t, peers) + require.Equal(t, ErrNotFound, err) + require.Nil(t, peers) endorsers, err := fakeChannel.Endorsers(ccCall("mycc"), NoFilter) - assert.Equal(t, ErrNotFound, err) - assert.Nil(t, endorsers) + require.Equal(t, ErrNotFound, err) + require.Nil(t, endorsers) conf, err := fakeChannel.Config() - assert.Equal(t, ErrNotFound, err) - assert.Nil(t, conf) + require.Equal(t, ErrNotFound, err) + require.Nil(t, conf) }) t.Run("Peer membership query", func(t *testing.T) { // Check response for the correct channel mychannel := r.ForChannel("mychannel") conf, err := mychannel.Config() - assert.NoError(t, err) - assert.Equal(t, expectedConf.Msps, conf.Msps) - assert.Equal(t, expectedConf.Orderers, conf.Orderers) + require.NoError(t, err) + require.Equal(t, expectedConf.Msps, conf.Msps) + require.Equal(t, expectedConf.Orderers, conf.Orderers) peers, err := mychannel.Peers() - assert.NoError(t, err) + require.NoError(t, err) // We should see all peers as provided above - assert.Len(t, peers, 8) + require.Len(t, peers, 8) // Check response for peers when doing a local query peers, err = r.ForLocal().Peers() - assert.NoError(t, err) - assert.Len(t, peers, len(peerIdentities)) + require.NoError(t, err) + require.Len(t, peers, len(peerIdentities)) }) t.Run("Endorser query without chaincode installed", func(t *testing.T) { @@ -435,8 +435,8 @@ func TestClient(t *testing.T) { // However, since we didn't provide any chaincodes to these peers - the server shouldn't // be able to construct the descriptor. // Just check that the appropriate error is returned, and nothing crashes. - assert.Contains(t, err.Error(), "failed constructing descriptor for chaincode") - assert.Nil(t, endorsers) + require.Contains(t, err.Error(), "failed constructing descriptor for chaincode") + require.Nil(t, endorsers) }) t.Run("Endorser query with chaincodes installed", func(t *testing.T) { @@ -445,18 +445,18 @@ func TestClient(t *testing.T) { req = NewRequest() req.OfChannel("mychannel").AddPeersQuery().AddEndorsersQuery(interest("mycc")) r, err = cl.Send(ctx, req, authInfo) - assert.NoError(t, err) + require.NoError(t, err) mychannel := r.ForChannel("mychannel") peers, err := mychannel.Peers() - assert.NoError(t, err) - assert.Len(t, peers, 8) + require.NoError(t, err) + require.Len(t, peers, 8) // We should get a valid endorsement descriptor from the service endorsers, err := mychannel.Endorsers(ccCall("mycc"), NoFilter) - assert.NoError(t, err) + require.NoError(t, err) // The combinations of endorsers should be in the expected combinations - assert.Contains(t, expectedOrgCombinations, getMSPs(endorsers)) + require.Contains(t, expectedOrgCombinations, getMSPs(endorsers)) }) t.Run("Endorser query with cc2cc and collections", func(t *testing.T) { @@ -467,19 +467,19 @@ func TestClient(t *testing.T) { myccAndmycc2[1].CollectionNames = append(myccAndmycc2[1].CollectionNames, "col") req.OfChannel("mychannel").AddEndorsersQuery(cc2ccInterests(myccAndmycc2, myccOnly)...) r, err = cl.Send(ctx, req, authInfo) - assert.NoError(t, err) + require.NoError(t, err) mychannel := r.ForChannel("mychannel") // Check the endorsers for the non cc2cc call endorsers, err := mychannel.Endorsers(ccCall("mycc"), NoFilter) - assert.NoError(t, err) - assert.Contains(t, expectedOrgCombinations, getMSPs(endorsers)) + require.NoError(t, err) + require.Contains(t, expectedOrgCombinations, getMSPs(endorsers)) // Check the endorsers for the cc2cc call with collections call := ccCall("mycc", "mycc2") call[1].CollectionNames = append(call[1].CollectionNames, "col") endorsers, err = mychannel.Endorsers(call, NoFilter) - assert.NoError(t, err) - assert.Contains(t, expectedOrgCombinations2, getMSPs(endorsers)) + require.NoError(t, err) + require.Contains(t, expectedOrgCombinations2, getMSPs(endorsers)) }) t.Run("Peer membership query with collections and chaincodes", func(t *testing.T) { @@ -488,15 +488,15 @@ func TestClient(t *testing.T) { interest[0].CollectionNames = append(interest[0].CollectionNames, "col") req = NewRequest().OfChannel("mychannel").AddPeersQuery(interest...) r, err = cl.Send(ctx, req, authInfo) - assert.NoError(t, err) + require.NoError(t, err) mychannel := r.ForChannel("mychannel") peers, err := mychannel.Peers(interest...) - assert.NoError(t, err) + require.NoError(t, err) // We should see all peers that aren't in ORG A since it's not part of the collection for _, p := range peers { - assert.NotEqual(t, "A", p.MSPID) + require.NotEqual(t, "A", p.MSPID) } - assert.Len(t, peers, 6) + require.Len(t, peers, 6) }) t.Run("Endorser query with PrioritiesByHeight selector", func(t *testing.T) { @@ -504,20 +504,20 @@ func TestClient(t *testing.T) { req = NewRequest() req.OfChannel("mychannel").AddEndorsersQuery(interest("mycc3")) r, err = cl.Send(ctx, req, authInfo) - assert.NoError(t, err) + require.NoError(t, err) mychannel := r.ForChannel("mychannel") // acceptablePeers are the ones at the highest ledger height for each org acceptablePeers := []string{"p5", "p9", "p11", "p15"} used := make(map[string]struct{}) endorsers, err := mychannel.Endorsers(ccCall("mycc3"), NewFilter(PrioritiesByHeight, NoExclusion)) - assert.NoError(t, err) + require.NoError(t, err) names := getNames(endorsers) - assert.Subset(t, acceptablePeers, names) + require.Subset(t, acceptablePeers, names) for _, name := range names { used[name] = struct{}{} } - assert.Equalf(t, len(acceptablePeers), len(used), "expecting each endorser to be returned at least once") + require.Equalf(t, len(acceptablePeers), len(used), "expecting each endorser to be returned at least once") }) t.Run("Endorser query with custom filter", func(t *testing.T) { @@ -525,7 +525,7 @@ func TestClient(t *testing.T) { req = NewRequest() req.OfChannel("mychannel").AddEndorsersQuery(interest("mycc3")) r, err = cl.Send(ctx, req, authInfo) - assert.NoError(t, err) + require.NoError(t, err) mychannel := r.ForChannel("mychannel") threshold := uint64(3) // Use peers within 3 of the max height of the org peers @@ -534,27 +534,27 @@ func TestClient(t *testing.T) { for i := 0; i < 90; i++ { endorsers, err := mychannel.Endorsers(ccCall("mycc3"), &ledgerHeightFilter{threshold: threshold}) - assert.NoError(t, err) + require.NoError(t, err) names := getNames(endorsers) - assert.Subset(t, acceptablePeers, names) + require.Subset(t, acceptablePeers, names) for _, name := range names { used[name] = struct{}{} } } - assert.Equalf(t, len(acceptablePeers), len(used), "expecting each endorser to be returned at least once") + require.Equalf(t, len(acceptablePeers), len(used), "expecting each endorser to be returned at least once") threshold = 0 // only use the peers at the highest ledger height (same as using the PrioritiesByHeight selector) acceptablePeers = []string{"p5", "p9", "p11", "p15"} used = make(map[string]struct{}) endorsers, err := mychannel.Endorsers(ccCall("mycc3"), &ledgerHeightFilter{threshold: threshold}) - assert.NoError(t, err) + require.NoError(t, err) names := getNames(endorsers) - assert.Subset(t, acceptablePeers, names) + require.Subset(t, acceptablePeers, names) for _, name := range names { used[name] = struct{}{} } t.Logf("Used peers: %#v\n", used) - assert.Equalf(t, len(acceptablePeers), len(used), "expecting each endorser to be returned at least once") + require.Equalf(t, len(acceptablePeers), len(used), "expecting each endorser to be returned at least once") }) } @@ -572,8 +572,8 @@ func TestUnableToSign(t *testing.T) { req := NewRequest() req = req.OfChannel("mychannel") resp, err := cl.Send(ctx, req, authInfo) - assert.Nil(t, resp) - assert.Contains(t, err.Error(), "not enough entropy") + require.Nil(t, resp) + require.Contains(t, err.Error(), "not enough entropy") } func TestUnableToConnect(t *testing.T) { @@ -590,8 +590,8 @@ func TestUnableToConnect(t *testing.T) { req := NewRequest() req = req.OfChannel("mychannel") resp, err := cl.Send(ctx, req, auth) - assert.Nil(t, resp) - assert.Contains(t, err.Error(), "unable to connect") + require.Nil(t, resp) + require.Contains(t, err.Error(), "unable to connect") } func TestBadResponses(t *testing.T) { @@ -616,16 +616,16 @@ func TestBadResponses(t *testing.T) { req := NewRequest() req.OfChannel("mychannel").AddPeersQuery().AddConfigQuery().AddEndorsersQuery(interest("mycc")) r, err := cl.Send(ctx, req, auth) - assert.Contains(t, err.Error(), "foo") - assert.Nil(t, r) + require.Contains(t, err.Error(), "foo") + require.Nil(t, r) // Scenario II: discovery service sends back an empty response svc.On("Discover").Return(&discovery.Response{}, nil).Once() req = NewRequest() req.OfChannel("mychannel").AddPeersQuery().AddConfigQuery().AddEndorsersQuery(interest("mycc")) r, err = cl.Send(ctx, req, auth) - assert.Equal(t, "Sent 3 queries but received 0 responses back", err.Error()) - assert.Nil(t, r) + require.Equal(t, "Sent 3 queries but received 0 responses back", err.Error()) + require.Nil(t, r) // Scenario III: discovery service sends back a layout for the wrong chaincode svc.On("Discover").Return(&discovery.Response{ @@ -646,8 +646,8 @@ func TestBadResponses(t *testing.T) { req = NewRequest() req.OfChannel("mychannel").AddEndorsersQuery(interest("mycc")) r, err = cl.Send(ctx, req, auth) - assert.Nil(t, r) - assert.Contains(t, err.Error(), "expected chaincode mycc but got endorsement descriptor for notmycc") + require.Nil(t, r) + require.Contains(t, err.Error(), "expected chaincode mycc but got endorsement descriptor for notmycc") // Scenario IV: discovery service sends back a layout that has empty envelopes svc.On("Discover").Return(&discovery.Response{ @@ -660,8 +660,8 @@ func TestBadResponses(t *testing.T) { req = NewRequest() req.OfChannel("mychannel").AddEndorsersQuery(interest("mycc")) r, err = cl.Send(ctx, req, auth) - assert.Contains(t, err.Error(), "received empty envelope(s) for endorsers for chaincode mycc") - assert.Nil(t, r) + require.Contains(t, err.Error(), "received empty envelope(s) for endorsers for chaincode mycc") + require.Nil(t, r) // Scenario V: discovery service sends back a layout that has a group that requires more // members than are present. @@ -675,11 +675,11 @@ func TestBadResponses(t *testing.T) { req = NewRequest() req.OfChannel("mychannel").AddEndorsersQuery(interest("mycc")) r, err = cl.Send(ctx, req, auth) - assert.NoError(t, err) + require.NoError(t, err) mychannel := r.ForChannel("mychannel") endorsers, err := mychannel.Endorsers(ccCall("mycc"), NoFilter) - assert.Nil(t, endorsers) - assert.Contains(t, err.Error(), "no endorsement combination can be satisfied") + require.Nil(t, endorsers) + require.Contains(t, err.Error(), "no endorsement combination can be satisfied") // Scenario VI: discovery service sends back a layout that has a group that doesn't have a matching peer set svc.On("Discover").Return(&discovery.Response{ @@ -692,24 +692,24 @@ func TestBadResponses(t *testing.T) { req = NewRequest() req.OfChannel("mychannel").AddEndorsersQuery(interest("mycc")) r, err = cl.Send(ctx, req, auth) - assert.Contains(t, err.Error(), "group B isn't mapped to endorsers, but exists in a layout") - assert.Empty(t, r) + require.Contains(t, err.Error(), "group B isn't mapped to endorsers, but exists in a layout") + require.Empty(t, r) } func TestAddEndorsersQueryInvalidInput(t *testing.T) { _, err := NewRequest().AddEndorsersQuery() - assert.Contains(t, err.Error(), "no chaincode interests given") + require.Contains(t, err.Error(), "no chaincode interests given") _, err = NewRequest().AddEndorsersQuery(nil) - assert.Contains(t, err.Error(), "chaincode interest is nil") + require.Contains(t, err.Error(), "chaincode interest is nil") _, err = NewRequest().AddEndorsersQuery(&discovery.ChaincodeInterest{}) - assert.Contains(t, err.Error(), "invocation chain should not be empty") + require.Contains(t, err.Error(), "invocation chain should not be empty") _, err = NewRequest().AddEndorsersQuery(&discovery.ChaincodeInterest{ Chaincodes: []*discovery.ChaincodeCall{{}}, }) - assert.Contains(t, err.Error(), "chaincode name should not be empty") + require.Contains(t, err.Error(), "chaincode name should not be empty") } func TestValidateAliveMessage(t *testing.T) { @@ -717,44 +717,44 @@ func TestValidateAliveMessage(t *testing.T) { msg, _ := protoext.EnvelopeToGossipMessage(am) // Scenario I: Valid alive message - assert.NoError(t, validateAliveMessage(msg)) + require.NoError(t, validateAliveMessage(msg)) // Scenario II: Nullify timestamp msg.GetAliveMsg().Timestamp = nil err := validateAliveMessage(msg) - assert.Equal(t, "timestamp is nil", err.Error()) + require.Equal(t, "timestamp is nil", err.Error()) // Scenario III: Nullify membership msg.GetAliveMsg().Membership = nil err = validateAliveMessage(msg) - assert.Equal(t, "membership is empty", err.Error()) + require.Equal(t, "membership is empty", err.Error()) // Scenario IV: Nullify the entire alive message part msg.Content = nil err = validateAliveMessage(msg) - assert.Equal(t, "message isn't an alive message", err.Error()) + require.Equal(t, "message isn't an alive message", err.Error()) } func TestValidateStateInfoMessage(t *testing.T) { si := stateInfoWithHeight(100) // Scenario I: Valid state info message - assert.NoError(t, validateStateInfoMessage(si)) + require.NoError(t, validateStateInfoMessage(si)) // Scenario II: Nullify properties si.GetStateInfo().Properties = nil err := validateStateInfoMessage(si) - assert.Equal(t, "properties is nil", err.Error()) + require.Equal(t, "properties is nil", err.Error()) // Scenario III: Nullify timestamp si.GetStateInfo().Timestamp = nil err = validateStateInfoMessage(si) - assert.Equal(t, "timestamp is nil", err.Error()) + require.Equal(t, "timestamp is nil", err.Error()) // Scenario IV: Nullify the state info message part si.Content = nil err = validateStateInfoMessage(si) - assert.Equal(t, "message isn't a stateInfo message", err.Error()) + require.Equal(t, "message isn't a stateInfo message", err.Error()) } func TestString(t *testing.T) { @@ -768,7 +768,7 @@ func TestString(t *testing.T) { CollectionNames: []string{"c3", "c4"}, }) expected := `[{"name":"foo","collection_names":["c1","c2"]},{"name":"bar","collection_names":["c3","c4"]}]` - assert.Equal(t, expected, ic.String()) + require.Equal(t, expected, ic.String()) } func getMSP(peer *Peer) string { diff --git a/discovery/client/selection_test.go b/discovery/client/selection_test.go index 32d73759e96..6be7816279e 100644 --- a/discovery/client/selection_test.go +++ b/discovery/client/selection_test.go @@ -12,7 +12,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-protos-go/gossip" "github.com/hyperledger/fabric/gossip/protoext" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestShuffle(t *testing.T) { @@ -34,8 +34,8 @@ func TestShuffle(t *testing.T) { return true } - assert.True(t, isHeightAscending(endorsers)) - assert.False(t, isHeightAscending(endorsers.Shuffle())) + require.True(t, isHeightAscending(endorsers)) + require.False(t, isHeightAscending(endorsers.Shuffle())) } func TestExclusionAndPriority(t *testing.T) { @@ -53,7 +53,7 @@ func TestExclusionAndPriority(t *testing.T) { }) givenPeers := Endorsers{newPeer(3), newPeer(5), newPeer(1), newPeer(4), newPeer(2), newPeer(3)} - assert.Equal(t, []int{5, 4, 3, 3, 2}, heights(givenPeers.Filter(excludeFirst).Sort(PrioritiesByHeight))) + require.Equal(t, []int{5, 4, 3, 3, 2}, heights(givenPeers.Filter(excludeFirst).Sort(PrioritiesByHeight))) } func TestExcludeEndpoints(t *testing.T) { @@ -83,14 +83,14 @@ func TestExcludeEndpoints(t *testing.T) { } s := ExcludeHosts("p1", "s2") - assert.True(t, s.Exclude(p1)) - assert.True(t, s.Exclude(p2)) - assert.False(t, s.Exclude(p3)) + require.True(t, s.Exclude(p1)) + require.True(t, s.Exclude(p2)) + require.False(t, s.Exclude(p3)) s = NoExclusion - assert.False(t, s.Exclude(p1)) - assert.False(t, s.Exclude(p2)) - assert.False(t, s.Exclude(p3)) + require.False(t, s.Exclude(p1)) + require.False(t, s.Exclude(p2)) + require.False(t, s.Exclude(p3)) } func TestNoPriorities(t *testing.T) { @@ -102,7 +102,7 @@ func TestNoPriorities(t *testing.T) { p2 := Peer{ StateInfoMessage: s2, } - assert.Equal(t, Priority(0), NoPriorities.Compare(p1, p2)) + require.Equal(t, Priority(0), NoPriorities.Compare(p1, p2)) } func TestPrioritiesByHeight(t *testing.T) { @@ -144,7 +144,7 @@ func TestPrioritiesByHeight(t *testing.T) { StateInfoMessage: s2, } p := PrioritiesByHeight.Compare(p1, p2) - assert.Equal(t, test.expected, p) + require.Equal(t, test.expected, p) }) } diff --git a/discovery/client/signer_test.go b/discovery/client/signer_test.go index fb55d24b0b4..94b49758784 100644 --- a/discovery/client/signer_test.go +++ b/discovery/client/signer_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/bccsp/factory" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func init() { @@ -32,9 +32,9 @@ func TestSameMessage(t *testing.T) { ms := NewMemoizeSigner(sign, 10) for i := 0; i < 5; i++ { sig, err := ms.Sign([]byte{1, 2, 3}) - assert.NoError(t, err) - assert.Equal(t, []byte{1, 2, 3}, sig) - assert.Equal(t, 1, signedInvokedCount) + require.NoError(t, err) + require.Equal(t, []byte{1, 2, 3}, sig) + require.Equal(t, 1, signedInvokedCount) } } @@ -55,8 +55,8 @@ func TestDifferentMessages(t *testing.T) { go func() { defer wg.Done() sig, err := ms.Sign([]byte{byte(i)}) - assert.NoError(t, err) - assert.Equal(t, []byte{byte(i)}, sig) + require.NoError(t, err) + require.Equal(t, []byte{byte(i)}, sig) }() } wg.Wait() @@ -64,11 +64,11 @@ func TestDifferentMessages(t *testing.T) { // Query once parallelSignRange(0, n) - assert.Equal(t, uint32(n), atomic.LoadUint32(&signedInvokedCount)) + require.Equal(t, uint32(n), atomic.LoadUint32(&signedInvokedCount)) // Query twice parallelSignRange(0, n) - assert.Equal(t, uint32(n), atomic.LoadUint32(&signedInvokedCount)) + require.Equal(t, uint32(n), atomic.LoadUint32(&signedInvokedCount)) // Query thrice on a disjoint range for i := n + 1; i < 2*n; i++ { @@ -78,7 +78,7 @@ func TestDifferentMessages(t *testing.T) { // Ensure that some of the early messages 0-n were purged from memory parallelSignRange(0, n) - assert.True(t, oldSignedInvokedCount < atomic.LoadUint32(&signedInvokedCount)) + require.True(t, oldSignedInvokedCount < atomic.LoadUint32(&signedInvokedCount)) } func TestFailure(t *testing.T) { @@ -88,19 +88,19 @@ func TestFailure(t *testing.T) { ms := NewMemoizeSigner(sign, 1) _, err := ms.Sign([]byte{1, 2, 3}) - assert.Equal(t, "something went wrong", err.Error()) + require.Equal(t, "something went wrong", err.Error()) } func TestNotSavingInMem(t *testing.T) { sign := func(_ []byte) ([]byte, error) { b := make([]byte, 30) _, err := io.ReadFull(rand.Reader, b) - assert.NoError(t, err) + require.NoError(t, err) return b, nil } ms := NewMemoizeSigner(sign, 0) sig1, _ := ms.sign(([]byte)("aa")) sig2, _ := ms.sign(([]byte)("aa")) - assert.NotEqual(t, sig1, sig2) + require.NotEqual(t, sig1, sig2) } diff --git a/discovery/cmd/cmd_test.go b/discovery/cmd/cmd_test.go index de771b5043a..7a4b56afb3b 100644 --- a/discovery/cmd/cmd_test.go +++ b/discovery/cmd/cmd_test.go @@ -11,8 +11,8 @@ import ( discovery "github.com/hyperledger/fabric/discovery/cmd" "github.com/hyperledger/fabric/discovery/cmd/mocks" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "gopkg.in/alecthomas/kingpin.v2" ) @@ -26,10 +26,10 @@ func TestAddCommands(t *testing.T) { discovery.AddCommands(cli) // Ensure that serve and channel flags are were configured for the sub-commands for _, cmd := range []string{discovery.PeersCommand, discovery.ConfigCommand, discovery.EndorsersCommand} { - assert.NotNil(t, app.GetCommand(cmd).GetFlag("server")) - assert.NotNil(t, app.GetCommand(cmd).GetFlag("channel")) + require.NotNil(t, app.GetCommand(cmd).GetFlag("server")) + require.NotNil(t, app.GetCommand(cmd).GetFlag("channel")) } // Ensure that chaincode and collection flags were called for the endorsers - assert.NotNil(t, app.GetCommand(discovery.EndorsersCommand).GetFlag("chaincode")) - assert.NotNil(t, app.GetCommand(discovery.EndorsersCommand).GetFlag("collection")) + require.NotNil(t, app.GetCommand(discovery.EndorsersCommand).GetFlag("chaincode")) + require.NotNil(t, app.GetCommand(discovery.EndorsersCommand).GetFlag("collection")) } diff --git a/discovery/cmd/config_test.go b/discovery/cmd/config_test.go index c58d5bbeb5a..19d7faeff0c 100644 --- a/discovery/cmd/config_test.go +++ b/discovery/cmd/config_test.go @@ -17,8 +17,8 @@ import ( discovery "github.com/hyperledger/fabric/discovery/cmd" "github.com/hyperledger/fabric/discovery/cmd/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestConfigCmd(t *testing.T) { @@ -33,7 +33,7 @@ func TestConfigCmd(t *testing.T) { cmd.SetServer(nil) err := cmd.Execute(common.Config{}) - assert.Equal(t, err.Error(), "no server specified") + require.Equal(t, err.Error(), "no server specified") }) t.Run("no channel supplied", func(t *testing.T) { @@ -41,7 +41,7 @@ func TestConfigCmd(t *testing.T) { cmd.SetServer(&server) err := cmd.Execute(common.Config{}) - assert.Equal(t, err.Error(), "no channel specified") + require.Equal(t, err.Error(), "no channel specified") }) t.Run("Server return error", func(t *testing.T) { @@ -50,7 +50,7 @@ func TestConfigCmd(t *testing.T) { stub.On("Send", server, mock.Anything, mock.Anything).Return(nil, errors.New("deadline exceeded")).Once() err := cmd.Execute(common.Config{}) - assert.Contains(t, err.Error(), "deadline exceeded") + require.Contains(t, err.Error(), "deadline exceeded") }) t.Run("Config query", func(t *testing.T) { @@ -61,7 +61,7 @@ func TestConfigCmd(t *testing.T) { parser.On("ParseResponse", channel, mock.Anything).Return(nil) err := cmd.Execute(common.Config{}) - assert.NoError(t, err) + require.NoError(t, err) }) } @@ -76,7 +76,7 @@ func TestParseConfigResponse(t *testing.T) { chanRes.On("Config").Return(nil, errors.New("not found")).Once() res.On("ForChannel", "mychannel").Return(chanRes) err := parser.ParseResponse("mychannel", res) - assert.Contains(t, err.Error(), "not found") + require.Contains(t, err.Error(), "not found") }) t.Run("Success", func(t *testing.T) { @@ -94,8 +94,8 @@ func TestParseConfigResponse(t *testing.T) { res.On("ForChannel", "mychannel").Return(chanRes) err := parser.ParseResponse("mychannel", res) - assert.NoError(t, err) + require.NoError(t, err) expected := "{\n\t\"msps\": {\n\t\t\"Org1MSP\": null,\n\t\t\"Org2MSP\": null\n\t},\n\t\"orderers\": {\n\t\t\"OrdererMSP\": {\n\t\t\t\"endpoint\": [\n\t\t\t\t{\n\t\t\t\t\t\"host\": \"orderer1\",\n\t\t\t\t\t\"port\": 7050\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n}" - assert.Equal(t, fmt.Sprintf("%s\n", expected), buff.String()) + require.Equal(t, fmt.Sprintf("%s\n", expected), buff.String()) }) } diff --git a/discovery/cmd/endorsers_test.go b/discovery/cmd/endorsers_test.go index ca062cb6727..a133595bae0 100644 --- a/discovery/cmd/endorsers_test.go +++ b/discovery/cmd/endorsers_test.go @@ -18,8 +18,8 @@ import ( "github.com/hyperledger/fabric/discovery/cmd/mocks" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestEndorserCmd(t *testing.T) { @@ -33,7 +33,7 @@ func TestEndorserCmd(t *testing.T) { cmd.SetChannel(&channel) err := cmd.Execute(common.Config{}) - assert.Equal(t, err.Error(), "no server specified") + require.Equal(t, err.Error(), "no server specified") }) t.Run("no channel supplied", func(t *testing.T) { @@ -41,7 +41,7 @@ func TestEndorserCmd(t *testing.T) { cmd.SetServer(&server) err := cmd.Execute(common.Config{}) - assert.Equal(t, err.Error(), "no channel specified") + require.Equal(t, err.Error(), "no channel specified") }) t.Run("Endorsement query with no chaincodes", func(t *testing.T) { @@ -50,7 +50,7 @@ func TestEndorserCmd(t *testing.T) { cmd.SetChannel(&channel) err := cmd.Execute(common.Config{}) - assert.Contains(t, err.Error(), "invocation chain should not be empty") + require.Contains(t, err.Error(), "invocation chain should not be empty") }) t.Run("Server return error", func(t *testing.T) { @@ -62,7 +62,7 @@ func TestEndorserCmd(t *testing.T) { stub.On("Send", server, mock.Anything, mock.Anything).Return(nil, errors.New("deadline exceeded")).Once() err := cmd.Execute(common.Config{}) - assert.Contains(t, err.Error(), "deadline exceeded") + require.Contains(t, err.Error(), "deadline exceeded") }) t.Run("Endorsement query with no collections succeeds", func(t *testing.T) { @@ -75,7 +75,7 @@ func TestEndorserCmd(t *testing.T) { stub.On("Send", server, mock.Anything, mock.Anything).Return(nil, nil).Once() err := cmd.Execute(common.Config{}) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Endorsement query with collections succeeds", func(t *testing.T) { @@ -95,13 +95,13 @@ func TestEndorserCmd(t *testing.T) { // Ensure the stub got the request that corresponds to what the CLI passed in req := arg.Get(2).(*Request) // Ensure chaincode names in the invocation chain match - assert.Equal(t, "mycc", req.Queries[0].GetCcQuery().Interests[0].Chaincodes[0].Name) + require.Equal(t, "mycc", req.Queries[0].GetCcQuery().Interests[0].Chaincodes[0].Name) // Ensure collection names in the invocation chain match - assert.Equal(t, []string{"col1", "col2"}, req.Queries[0].GetCcQuery().Interests[0].Chaincodes[0].CollectionNames) + require.Equal(t, []string{"col1", "col2"}, req.Queries[0].GetCcQuery().Interests[0].Chaincodes[0].CollectionNames) }) err := cmd.Execute(common.Config{}) - assert.NoError(t, err) + require.NoError(t, err) stub.AssertNumberOfCalls(t, "Send", 1) }) @@ -121,7 +121,7 @@ func TestEndorserCmd(t *testing.T) { stub.On("Send", server, mock.Anything, mock.Anything).Return(nil, nil).Once() err := cmd.Execute(common.Config{}) - assert.Contains(t, err.Error(), "a collection specified chaincode ourcc but it wasn't specified with a chaincode flag") + require.Contains(t, err.Error(), "a collection specified chaincode ourcc but it wasn't specified with a chaincode flag") }) t.Run("Endorsement query with collections that aren't mapped to any chaincode(s)", func(t *testing.T) { @@ -140,7 +140,7 @@ func TestEndorserCmd(t *testing.T) { stub.On("Send", server, mock.Anything, mock.Anything).Return(nil, nil).Once() err := cmd.Execute(common.Config{}) - assert.Contains(t, err.Error(), "a collection specified chaincode ourcc but it wasn't specified with a chaincode flag") + require.Contains(t, err.Error(), "a collection specified chaincode ourcc but it wasn't specified with a chaincode flag") }) t.Run("Endorsement query with noPrivateReads that aren't mapped to any chaincode(s)", func(t *testing.T) { @@ -156,7 +156,7 @@ func TestEndorserCmd(t *testing.T) { stub.On("Send", server, mock.Anything, mock.Anything).Return(nil, nil).Once() err := cmd.Execute(common.Config{}) - assert.Contains(t, err.Error(), "chaincode yourcc is specified as not containing private data reads but should be explicitly defined via a chaincode flag") + require.Contains(t, err.Error(), "chaincode yourcc is specified as not containing private data reads but should be explicitly defined via a chaincode flag") }) } @@ -169,7 +169,7 @@ func TestParseEndorsementResponse(t *testing.T) { defer buff.Reset() res.On("Raw").Return(&discprotos.Response{}).Once() err := parser.ParseResponse("mychannel", res) - assert.Contains(t, err.Error(), "empty results") + require.Contains(t, err.Error(), "empty results") }) t.Run("Server returns an error", func(t *testing.T) { @@ -186,7 +186,7 @@ func TestParseEndorsementResponse(t *testing.T) { }, }).Once() err := parser.ParseResponse("mychannel", res) - assert.Contains(t, err.Error(), "internal error") + require.Contains(t, err.Error(), "internal error") }) t.Run("Server returns a response with the wrong type", func(t *testing.T) { @@ -203,7 +203,7 @@ func TestParseEndorsementResponse(t *testing.T) { }, }).Once() err := parser.ParseResponse("mychannel", res) - assert.Contains(t, err.Error(), "server returned response of unexpected type: *discovery.QueryResult") + require.Contains(t, err.Error(), "server returned response of unexpected type: *discovery.QueryResult") }) t.Run("Server returns a proper response", func(t *testing.T) { @@ -216,8 +216,8 @@ func TestParseEndorsementResponse(t *testing.T) { }, }).Once() err := parser.ParseResponse("mychannel", res) - assert.NoError(t, err) - assert.Equal(t, expectedEndorsersOutput, buff.String()) + require.NoError(t, err) + require.Equal(t, expectedEndorsersOutput, buff.String()) }) } diff --git a/discovery/cmd/peers_test.go b/discovery/cmd/peers_test.go index 7395cb89329..3e3a6add5c9 100644 --- a/discovery/cmd/peers_test.go +++ b/discovery/cmd/peers_test.go @@ -21,8 +21,8 @@ import ( "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestPeerCmd(t *testing.T) { @@ -34,14 +34,14 @@ func TestPeerCmd(t *testing.T) { t.Run("no server supplied", func(t *testing.T) { cmd.SetServer(nil) err := cmd.Execute(common.Config{}) - assert.Equal(t, err.Error(), "no server specified") + require.Equal(t, err.Error(), "no server specified") }) t.Run("Server return error", func(t *testing.T) { cmd.SetServer(&server) stub.On("Send", server, mock.Anything, mock.Anything).Return(nil, errors.New("deadline exceeded")).Once() err := cmd.Execute(common.Config{}) - assert.Contains(t, err.Error(), "deadline exceeded") + require.Contains(t, err.Error(), "deadline exceeded") }) t.Run("Channel(less) peer query", func(t *testing.T) { @@ -52,13 +52,13 @@ func TestPeerCmd(t *testing.T) { var emptyChannel string parser.On("ParseResponse", emptyChannel, mock.Anything).Return(nil) err := cmd.Execute(common.Config{}) - assert.NoError(t, err) + require.NoError(t, err) channel := "mychannel" cmd.SetChannel(&channel) parser.On("ParseResponse", channel, mock.Anything).Return(nil) err = cmd.Execute(common.Config{}) - assert.NoError(t, err) + require.NoError(t, err) }) } @@ -100,8 +100,8 @@ func TestParsePeers(t *testing.T) { for channel, expected := range channel2expected { buff.Reset() err := parser.ParseResponse(channel, res) - assert.NoError(t, err) - assert.Equal(t, fmt.Sprintf("%s\n", expected), buff.String()) + require.NoError(t, err) + require.Equal(t, fmt.Sprintf("%s\n", expected), buff.String()) } } diff --git a/discovery/cmd/stub_test.go b/discovery/cmd/stub_test.go index 7ca563c1e5b..77489bc0443 100644 --- a/discovery/cmd/stub_test.go +++ b/discovery/cmd/stub_test.go @@ -17,14 +17,14 @@ import ( "github.com/hyperledger/fabric/cmd/common/signer" discovery "github.com/hyperledger/fabric/discovery/client" corecomm "github.com/hyperledger/fabric/internal/pkg/comm" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestClientStub(t *testing.T) { srv, err := corecomm.NewGRPCServer("127.0.0.1:", corecomm.ServerConfig{ SecOpts: corecomm.SecureOptions{}, }) - assert.NoError(t, err) + require.NoError(t, err) go srv.Start() defer srv.Stop() @@ -42,14 +42,14 @@ func TestClientStub(t *testing.T) { }, TLSConfig: comm.Config{}, }, req) - assert.Contains(t, err.Error(), "Unimplemented desc = unknown service discovery.Discovery") + require.Contains(t, err.Error(), "Unimplemented desc = unknown service discovery.Discovery") } func TestRawStub(t *testing.T) { srv, err := corecomm.NewGRPCServer("127.0.0.1:", corecomm.ServerConfig{ SecOpts: corecomm.SecureOptions{}, }) - assert.NoError(t, err) + require.NoError(t, err) go srv.Start() defer srv.Stop() @@ -67,5 +67,5 @@ func TestRawStub(t *testing.T) { }, TLSConfig: comm.Config{}, }, req) - assert.Contains(t, err.Error(), "Unimplemented desc = unknown service discovery.Discovery") + require.Contains(t, err.Error(), "Unimplemented desc = unknown service discovery.Discovery") } diff --git a/discovery/endorsement/collection_test.go b/discovery/endorsement/collection_test.go index 712625453a2..30d2a7068ae 100644 --- a/discovery/endorsement/collection_test.go +++ b/discovery/endorsement/collection_test.go @@ -20,14 +20,14 @@ import ( gcommon "github.com/hyperledger/fabric/gossip/common" disc "github.com/hyperledger/fabric/gossip/discovery" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestPrincipalsFromCollectionConfig(t *testing.T) { t.Run("Empty config", func(t *testing.T) { res, err := principalsFromCollectionConfig(nil) - assert.NoError(t, err) - assert.Empty(t, res) + require.NoError(t, err) + require.Empty(t, res) }) t.Run("Not empty config", func(t *testing.T) { @@ -39,10 +39,10 @@ func TestPrincipalsFromCollectionConfig(t *testing.T) { } config := buildCollectionConfig(col2principals) res, err := principalsFromCollectionConfig(config) - assert.NoError(t, err) + require.NoError(t, err) assertEqualPrincipalSets(t, policies.PrincipalSet(org1AndOrg2), res["foo"]) assertEqualPrincipalSets(t, policies.PrincipalSet(org3AndOrg4), res["bar"]) - assert.Empty(t, res["baz"]) + require.Empty(t, res["baz"]) }) } @@ -55,8 +55,8 @@ func TestNewCollectionFilterInvalidInput(t *testing.T) { }, } filter, err := principalsFromCollectionConfig(collections) - assert.Nil(t, filter) - assert.Contains(t, err.Error(), "expected a static collection") + require.Nil(t, filter) + require.Contains(t, err.Error(), "expected a static collection") }) t.Run("Invalid membership policy", func(t *testing.T) { @@ -71,8 +71,8 @@ func TestNewCollectionFilterInvalidInput(t *testing.T) { }, } filter, err := principalsFromCollectionConfig(collections) - assert.Nil(t, filter) - assert.Contains(t, err.Error(), "MemberOrgsPolicy of foo is nil") + require.Nil(t, filter) + require.Contains(t, err.Error(), "MemberOrgsPolicy of foo is nil") }) t.Run("Missing policy", func(t *testing.T) { @@ -88,8 +88,8 @@ func TestNewCollectionFilterInvalidInput(t *testing.T) { }, } filter, err := principalsFromCollectionConfig(collections) - assert.Nil(t, filter) - assert.Contains(t, err.Error(), "policy of foo is nil") + require.Nil(t, filter) + require.Contains(t, err.Error(), "policy of foo is nil") }) } @@ -102,8 +102,8 @@ func TestToIdentityFilter(t *testing.T) { Name: "mycc", CollectionNames: []string{"bar"}, }) - assert.Nil(t, filter) - assert.Equal(t, "collection bar doesn't exist in collection config for chaincode mycc", err.Error()) + require.Nil(t, filter) + require.Equal(t, "collection bar doesn't exist in collection config for chaincode mycc", err.Error()) }) t.Run("collection exists in mapping", func(t *testing.T) { @@ -111,15 +111,15 @@ func TestToIdentityFilter(t *testing.T) { Name: "mycc", CollectionNames: []string{"foo"}, }) - assert.NoError(t, err) + require.NoError(t, err) identity := protoutil.MarshalOrPanic(&msp.SerializedIdentity{ Mspid: "Org2MSP", }) - assert.True(t, filter(identity)) + require.True(t, filter(identity)) identity = protoutil.MarshalOrPanic(&msp.SerializedIdentity{ Mspid: "Org3MSP", }) - assert.False(t, filter(identity)) + require.False(t, filter(identity)) }) } @@ -133,10 +133,10 @@ func TestCombine(t *testing.T) { }) filter := identityFilters{filter1, filter2}.combine() - assert.False(t, filter(api.PeerIdentityType("p1"))) - assert.True(t, filter(api.PeerIdentityType("p2"))) - assert.False(t, filter(api.PeerIdentityType("p3"))) - assert.False(t, filter(api.PeerIdentityType("p4"))) + require.False(t, filter(api.PeerIdentityType("p1"))) + require.True(t, filter(api.PeerIdentityType("p2"))) + require.False(t, filter(api.PeerIdentityType("p3"))) + require.False(t, filter(api.PeerIdentityType("p4"))) } func TestToMemberFilter(t *testing.T) { @@ -157,21 +157,21 @@ func TestToMemberFilter(t *testing.T) { authorized := memberFilter(disc.NetworkMember{ PKIid: gcommon.PKIidType(authorizedIdentity), }) - assert.True(t, authorized) + require.True(t, authorized) }) t.Run("Member is unauthorized", func(t *testing.T) { authorized := memberFilter(disc.NetworkMember{ PKIid: gcommon.PKIidType(unauthorizedIdentity), }) - assert.False(t, authorized) + require.False(t, authorized) }) t.Run("Member is not found in mapping", func(t *testing.T) { authorized := memberFilter(disc.NetworkMember{ PKIid: gcommon.PKIidType(notPresentIdentity), }) - assert.False(t, authorized) + require.False(t, authorized) }) } @@ -183,7 +183,7 @@ func TestIsIdentityAuthorizedByPrincipalSet(t *testing.T) { Mspid: "Org1MSP", }) authorized := isIdentityAuthorizedByPrincipalSet("mychannel", &principalEvaluatorMock{}, principals, identity) - assert.True(t, authorized) + require.True(t, authorized) }) t.Run("Unauthorized", func(t *testing.T) { @@ -191,7 +191,7 @@ func TestIsIdentityAuthorizedByPrincipalSet(t *testing.T) { Mspid: "Org3MSP", }) authorized := isIdentityAuthorizedByPrincipalSet("mychannel", &principalEvaluatorMock{}, principals, identity) - assert.False(t, authorized) + require.False(t, authorized) }) } @@ -206,12 +206,12 @@ func TestFilterForPrincipalSets(t *testing.T) { t.Run("Identity is authorized by all principals", func(t *testing.T) { filter := filterForPrincipalSets("mychannel", &principalEvaluatorMock{}, policies.PrincipalSets{org1AndOrg2, org2AndOrg3}) - assert.True(t, filter(identity)) + require.True(t, filter(identity)) }) t.Run("Identity is not authorized by all principals", func(t *testing.T) { filter := filterForPrincipalSets("mychannel", &principalEvaluatorMock{}, policies.PrincipalSets{org1AndOrg2, org3AndOrg4}) - assert.False(t, filter(identity)) + require.False(t, filter(identity)) }) } @@ -250,5 +250,5 @@ func orgPrincipal(mspID string) *msp.MSPPrincipal { func assertEqualPrincipalSets(t *testing.T, ps1, ps2 policies.PrincipalSet) { ps1s := fmt.Sprintf("%v", ps1) ps2s := fmt.Sprintf("%v", ps2) - assert.Equal(t, ps1s, ps2s) + require.Equal(t, ps1s, ps2s) } diff --git a/discovery/endorsement/endorsement_test.go b/discovery/endorsement/endorsement_test.go index 1241cb688a8..1ab0c84808d 100644 --- a/discovery/endorsement/endorsement_test.go +++ b/discovery/endorsement/endorsement_test.go @@ -23,8 +23,8 @@ import ( "github.com/hyperledger/fabric/gossip/discovery" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) var pkiID2MSPID = map[string]string{ @@ -52,8 +52,8 @@ func TestPeersForEndorsement(t *testing.T) { for _, endorsers := range desc.EndorsersByGroups { for _, p := range endorsers.Peers { res[string(p.Identity)] = struct{}{} - assert.Equal(t, string(p.Identity), string(p.MembershipInfo.Payload)) - assert.Equal(t, string(p.Identity), string(p.StateInfo.Payload)) + require.Equal(t, string(p.Identity), string(p.MembershipInfo.Payload)) + require.Equal(t, string(p.Identity), string(p.StateInfo.Payload)) } } return res @@ -104,8 +104,8 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.Nil(t, desc) - assert.Equal(t, "policy not found", err.Error()) + require.Nil(t, desc) + require.Equal(t, "policy not found", err.Error()) }) t.Run("NotEnoughPeers", func(t *testing.T) { @@ -128,8 +128,8 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.Nil(t, desc) - assert.Equal(t, err.Error(), "no peer combination can satisfy the endorsement policy") + require.Nil(t, desc) + require.Equal(t, err.Error(), "no peer combination can satisfy the endorsement policy") }) t.Run("DisjointViews", func(t *testing.T) { @@ -155,11 +155,11 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.NoError(t, err) - assert.NotNil(t, desc) - assert.Len(t, desc.Layouts, 1) - assert.Len(t, desc.Layouts[0].QuantitiesByGroup, 2) - assert.Equal(t, map[string]struct{}{ + require.NoError(t, err) + require.NotNil(t, desc) + require.Len(t, desc.Layouts, 1) + require.Len(t, desc.Layouts[0].QuantitiesByGroup, 2) + require.Equal(t, map[string]struct{}{ peerIdentityString("p0"): {}, peerIdentityString("p6"): {}, }, extractPeers(desc)) @@ -188,12 +188,12 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.NoError(t, err) - assert.NotNil(t, desc) - assert.Len(t, desc.Layouts, 2) - assert.Len(t, desc.Layouts[0].QuantitiesByGroup, 2) - assert.Len(t, desc.Layouts[1].QuantitiesByGroup, 1) - assert.Equal(t, map[string]struct{}{ + require.NoError(t, err) + require.NotNil(t, desc) + require.Len(t, desc.Layouts, 2) + require.Len(t, desc.Layouts[0].QuantitiesByGroup, 2) + require.Len(t, desc.Layouts[1].QuantitiesByGroup, 1) + require.Equal(t, map[string]struct{}{ peerIdentityString("p0"): {}, peerIdentityString("p6"): {}, peerIdentityString("p12"): {}, @@ -221,8 +221,8 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.Nil(t, desc) - assert.Equal(t, "required chaincodes are not installed on sufficient peers", err.Error()) + require.Nil(t, desc) + require.Equal(t, "required chaincodes are not installed on sufficient peers", err.Error()) // Scenario VI: Policy is found, there are enough peers to satisfy policy combinations, // but some peers have the wrong chaincode version, and some don't even have it installed. @@ -246,8 +246,8 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.Nil(t, desc) - assert.Equal(t, "required chaincodes are not installed on sufficient peers", err.Error()) + require.Nil(t, desc) + require.Equal(t, "required chaincodes are not installed on sufficient peers", err.Error()) }) t.Run("NoChaincodeMetadataFromLedger", func(t *testing.T) { @@ -268,8 +268,8 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.Nil(t, desc) - assert.Equal(t, "No metadata was found for chaincode chaincode in channel test", err.Error()) + require.Nil(t, desc) + require.Equal(t, "No metadata was found for chaincode chaincode in channel test", err.Error()) }) t.Run("Collections", func(t *testing.T) { @@ -305,11 +305,11 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.NoError(t, err) - assert.NotNil(t, desc) - assert.Len(t, desc.Layouts, 1) - assert.Len(t, desc.Layouts[0].QuantitiesByGroup, 1) - assert.Equal(t, map[string]struct{}{ + require.NoError(t, err) + require.NotNil(t, desc) + require.Len(t, desc.Layouts, 1) + require.Len(t, desc.Layouts[0].QuantitiesByGroup, 1) + require.Equal(t, map[string]struct{}{ peerIdentityString("p12"): {}, }, extractPeers(desc)) }) @@ -373,11 +373,11 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.NoError(t, err) - assert.NotNil(t, desc) - assert.Len(t, desc.Layouts, 1) - assert.Len(t, desc.Layouts[0].QuantitiesByGroup, 4) - assert.Equal(t, map[string]struct{}{ + require.NoError(t, err) + require.NotNil(t, desc) + require.Len(t, desc.Layouts, 1) + require.Len(t, desc.Layouts[0].QuantitiesByGroup, 4) + require.Equal(t, map[string]struct{}{ peerIdentityString("p4"): {}, peerIdentityString("p6"): {}, peerIdentityString("p10"): {}, @@ -439,11 +439,11 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.NoError(t, err) - assert.NotNil(t, desc) - assert.Len(t, desc.Layouts, 1) - assert.Len(t, desc.Layouts[0].QuantitiesByGroup, 2) - assert.Equal(t, map[string]struct{}{ + require.NoError(t, err) + require.NotNil(t, desc) + require.Len(t, desc.Layouts, 1) + require.Len(t, desc.Layouts[0].QuantitiesByGroup, 2) + require.Equal(t, map[string]struct{}{ peerIdentityString("p0"): {}, peerIdentityString("p1"): {}, }, extractPeers(desc)) @@ -489,11 +489,11 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.NoError(t, err) - assert.NotNil(t, desc) - assert.Len(t, desc.Layouts, 1) - assert.Len(t, desc.Layouts[0].QuantitiesByGroup, 2) - assert.Equal(t, map[string]struct{}{ + require.NoError(t, err) + require.NotNil(t, desc) + require.Len(t, desc.Layouts, 1) + require.Len(t, desc.Layouts[0].QuantitiesByGroup, 2) + require.Equal(t, map[string]struct{}{ peerIdentityString("p6"): {}, peerIdentityString("p12"): {}, }, extractPeers(desc)) @@ -542,11 +542,11 @@ func TestPeersForEndorsement(t *testing.T) { }, }, }) - assert.NoError(t, err) - assert.NotNil(t, desc) - assert.Len(t, desc.Layouts, 1) - assert.Len(t, desc.Layouts[0].QuantitiesByGroup, 2) - assert.Equal(t, map[string]struct{}{ + require.NoError(t, err) + require.NotNil(t, desc) + require.Len(t, desc.Layouts, 1) + require.Len(t, desc.Layouts[0].QuantitiesByGroup, 2) + require.Equal(t, map[string]struct{}{ peerIdentityString("p0"): {}, peerIdentityString("p6"): {}, }, extractPeers(desc)) @@ -673,30 +673,30 @@ func TestPeersAuthorizedByCriteria(t *testing.T) { analyzer := NewEndorsementAnalyzer(g, pf, &principalEvaluatorMock{}, mf) actualMembers, err := analyzer.PeersAuthorizedByCriteria(common.ChannelID("mychannel"), tst.arguments) - assert.NoError(t, err) - assert.Equal(t, tst.expected, actualMembers) + require.NoError(t, err) + require.Equal(t, tst.expected, actualMembers) }) } } func TestPop(t *testing.T) { slice := []inquire.ComparablePrincipalSets{{}, {}} - assert.Len(t, slice, 2) + require.Len(t, slice, 2) _, slice, err := popComparablePrincipalSets(slice) - assert.NoError(t, err) - assert.Len(t, slice, 1) + require.NoError(t, err) + require.Len(t, slice, 1) _, slice, err = popComparablePrincipalSets(slice) - assert.NoError(t, err) - assert.Len(t, slice, 0) + require.NoError(t, err) + require.Len(t, slice, 0) _, _, err = popComparablePrincipalSets(slice) - assert.Error(t, err) - assert.Equal(t, "no principal sets remained after filtering", err.Error()) + require.Error(t, err) + require.Equal(t, "no principal sets remained after filtering", err.Error()) } func TestMergePrincipalSetsNilInput(t *testing.T) { _, err := mergePrincipalSets(nil) - assert.Error(t, err) - assert.Equal(t, "no principal sets remained after filtering", err.Error()) + require.Error(t, err) + require.Equal(t, "no principal sets remained after filtering", err.Error()) } func TestComputePrincipalSetsNoPolicies(t *testing.T) { @@ -707,8 +707,8 @@ func TestComputePrincipalSetsNoPolicies(t *testing.T) { } ea := &endorsementAnalyzer{} _, err := ea.computePrincipalSets(common.ChannelID("mychannel"), interest) - assert.Error(t, err) - assert.Contains(t, err.Error(), "no principal sets remained after filtering") + require.Error(t, err) + require.Contains(t, err.Error(), "no principal sets remained after filtering") } func TestLoadMetadataAndFiltersCollectionNotPresentInConfig(t *testing.T) { @@ -745,7 +745,7 @@ func TestLoadMetadataAndFiltersCollectionNotPresentInConfig(t *testing.T) { interest: interest, }) - assert.Equal(t, "collection bar doesn't exist in collection config for chaincode mycc", err.Error()) + require.Equal(t, "collection bar doesn't exist in collection config for chaincode mycc", err.Error()) } func TestLoadMetadataAndFiltersInvalidCollectionData(t *testing.T) { @@ -771,8 +771,8 @@ func TestLoadMetadataAndFiltersInvalidCollectionData(t *testing.T) { fetch: mdf, interest: interest, }) - assert.Error(t, err) - assert.Contains(t, err.Error(), "collection col1 doesn't exist in collection config for chaincode mycc") + require.Error(t, err) + require.Contains(t, err.Error(), "collection col1 doesn't exist in collection config for chaincode mycc") } type peerSet []*peerInfo diff --git a/discovery/protoext/querytype_test.go b/discovery/protoext/querytype_test.go index d03045eb5db..21062219514 100644 --- a/discovery/protoext/querytype_test.go +++ b/discovery/protoext/querytype_test.go @@ -12,7 +12,7 @@ import ( "github.com/hyperledger/fabric-protos-go/discovery" "github.com/hyperledger/fabric/discovery/protoext" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetQueryType(t *testing.T) { @@ -30,7 +30,7 @@ func TestGetQueryType(t *testing.T) { for i, tt := range tests { t.Run(strconv.Itoa(i), func(t *testing.T) { - assert.Equal(t, tt.expected, protoext.GetQueryType(tt.q)) + require.Equal(t, tt.expected, protoext.GetQueryType(tt.q)) }) } } diff --git a/discovery/protoext/signedreq_test.go b/discovery/protoext/signedreq_test.go index e5d6594aa4b..d02c7b11744 100644 --- a/discovery/protoext/signedreq_test.go +++ b/discovery/protoext/signedreq_test.go @@ -12,7 +12,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-protos-go/discovery" "github.com/hyperledger/fabric/discovery/protoext" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSignedRequestToRequest(t *testing.T) { @@ -20,12 +20,12 @@ func TestSignedRequestToRequest(t *testing.T) { Payload: []byte{0}, } _, err := protoext.SignedRequestToRequest(sr) - assert.Error(t, err) + require.Error(t, err) req := &discovery.Request{} b, _ := proto.Marshal(req) sr.Payload = b r, err := protoext.SignedRequestToRequest(sr) - assert.NoError(t, err) - assert.NotNil(t, r) + require.NoError(t, err) + require.NotNil(t, r) } diff --git a/discovery/service_test.go b/discovery/service_test.go index bab23d1fa79..ebe73ff51ce 100644 --- a/discovery/service_test.go +++ b/discovery/service_test.go @@ -21,8 +21,8 @@ import ( gdisc "github.com/hyperledger/fabric/gossip/discovery" "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestConfig(t *testing.T) { @@ -33,9 +33,9 @@ func TestConfig(t *testing.T) { AuthCacheMaxSize: 42, } service := NewService(conf, &mockSupport{}) - assert.Equal(t, trueOfFalse, service.auth.conf.enabled) - assert.Equal(t, 42, service.auth.conf.maxCacheSize) - assert.Equal(t, 0.5, service.auth.conf.purgeRetentionRatio) + require.Equal(t, trueOfFalse, service.auth.conf.enabled) + require.Equal(t, 42, service.auth.conf.maxCacheSize) + require.Equal(t, 0.5, service.auth.conf.purgeRetentionRatio) } } @@ -80,29 +80,29 @@ func TestService(t *testing.T) { // Scenario I: Channel does not exist resp, err := service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) - assert.Equal(t, wrapResult(&discovery.Error{Content: "access denied"}), resp) + require.NoError(t, err) + require.Equal(t, wrapResult(&discovery.Error{Content: "access denied"}), resp) // Scenario II: Channel does not exist req.Queries[0].Channel = "channelWithAccessDenied" resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) - assert.Equal(t, wrapResult(&discovery.Error{Content: "access denied"}), resp) + require.NoError(t, err) + require.Equal(t, wrapResult(&discovery.Error{Content: "access denied"}), resp) // Scenario III: Request with nil query req.Queries[0].Channel = "channelWithAccessGranted" req.Queries[0].Query = nil resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) - assert.Contains(t, resp.Results[0].GetError().Content, "unknown or missing request type") + require.NoError(t, err) + require.Contains(t, resp.Results[0].GetError().Content, "unknown or missing request type") // Scenario IV: Request payload is invalid signedRequest := toSignedRequest(req) // Corrupt the payload by appending a zero byte at its end signedRequest.Payload = append(signedRequest.Payload, 0) resp, err = service.Discover(ctx, signedRequest) - assert.Nil(t, resp) - assert.Contains(t, err.Error(), "failed parsing request") + require.Nil(t, resp) + require.Contains(t, err.Error(), "failed parsing request") // Scenario V: Request a CC query with no chaincodes at all req.Queries[0].Query = &discovery.Query_CcQuery{ @@ -113,8 +113,8 @@ func TestService(t *testing.T) { }, } resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) - assert.Contains(t, resp.Results[0].GetError().Content, "chaincode interest must contain at least one chaincode") + require.NoError(t, err) + require.Contains(t, resp.Results[0].GetError().Content, "chaincode interest must contain at least one chaincode") // Scenario VI: Request a CC query with no interests at all req.Queries[0].Query = &discovery.Query_CcQuery{ @@ -122,8 +122,8 @@ func TestService(t *testing.T) { Interests: []*discovery.ChaincodeInterest{}}, } resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) - assert.Contains(t, resp.Results[0].GetError().Content, "chaincode query must have at least one chaincode interest") + require.NoError(t, err) + require.Contains(t, resp.Results[0].GetError().Content, "chaincode query must have at least one chaincode interest") // Scenario VII: Request a CC query with a chaincode name that is empty req.Queries[0].Query = &discovery.Query_CcQuery{ @@ -135,8 +135,8 @@ func TestService(t *testing.T) { }}}, } resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) - assert.Contains(t, resp.Results[0].GetError().Content, "chaincode name in interest cannot be empty") + require.NoError(t, err) + require.Contains(t, resp.Results[0].GetError().Content, "chaincode name in interest cannot be empty") // Scenario VIII: Request with a CC query where one chaincode is unavailable req.Queries[0].Query = &discovery.Query_CcQuery{ @@ -153,9 +153,9 @@ func TestService(t *testing.T) { } resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) - assert.Contains(t, resp.Results[0].GetError().Content, "failed constructing descriptor") - assert.Contains(t, resp.Results[0].GetError().Content, "unknownCC") + require.NoError(t, err) + require.Contains(t, resp.Results[0].GetError().Content, "failed constructing descriptor") + require.Contains(t, resp.Results[0].GetError().Content, "unknownCC") // Scenario IX: Request with a CC query where all are available req.Queries[0].Query = &discovery.Query_CcQuery{ @@ -174,11 +174,11 @@ func TestService(t *testing.T) { }, } resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) + require.NoError(t, err) expected := wrapResult(&discovery.ChaincodeQueryResult{ Content: []*discovery.EndorsementDescriptor{ed1, ed2, ed3}, }) - assert.Equal(t, expected, resp) + require.Equal(t, expected, resp) // Scenario X: Request with a config query mockSup.On("Config", mock.Anything).Return(nil, errors.New("failed fetching config")).Once() @@ -186,8 +186,8 @@ func TestService(t *testing.T) { ConfigQuery: &discovery.ConfigQuery{}, } resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) - assert.Contains(t, resp.Results[0].GetError().Content, "failed fetching config for channel channelWithAccessGranted") + require.NoError(t, err) + require.Contains(t, resp.Results[0].GetError().Content, "failed fetching config for channel channelWithAccessGranted") // Scenario XI: Request with a config query mockSup.On("Config", mock.Anything).Return(&discovery.ConfigResult{}, nil).Once() @@ -195,8 +195,8 @@ func TestService(t *testing.T) { ConfigQuery: &discovery.ConfigQuery{}, } resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) - assert.NotNil(t, resp.Results[0].GetConfigResult()) + require.NoError(t, err) + require.NotNil(t, resp.Results[0].GetConfigResult()) // Scenario XII: Request with a membership query // Peers in membership view: { p0, p1, p2, p3} @@ -242,7 +242,7 @@ func TestService(t *testing.T) { }, } resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) + require.NoError(t, err) expectedChannelResponse := &discovery.PeerMembershipResult{ PeersByOrg: map[string]*discovery.Peers{ "O2": { @@ -294,18 +294,18 @@ func TestService(t *testing.T) { }, } - assert.Len(t, resp.Results, 3) - assert.Len(t, resp.Results[0].GetMembers().PeersByOrg, 2) - assert.Len(t, resp.Results[1].GetMembers().PeersByOrg, 2) - assert.Equal(t, "an error occurred", resp.Results[2].GetError().Content) + require.Len(t, resp.Results, 3) + require.Len(t, resp.Results[0].GetMembers().PeersByOrg, 2) + require.Len(t, resp.Results[1].GetMembers().PeersByOrg, 2) + require.Equal(t, "an error occurred", resp.Results[2].GetError().Content) for org, responsePeers := range resp.Results[0].GetMembers().PeersByOrg { err := peers(expectedChannelResponse.PeersByOrg[org].Peers).compare(peers(responsePeers.Peers)) - assert.NoError(t, err) + require.NoError(t, err) } for org, responsePeers := range resp.Results[1].GetMembers().PeersByOrg { err := peers(expectedLocalResponse.PeersByOrg[org].Peers).compare(peers(responsePeers.Peers)) - assert.NoError(t, err) + require.NoError(t, err) } // Scenario XIII: The client is eligible for channel queries but not for channel-less @@ -320,8 +320,8 @@ func TestService(t *testing.T) { }, } resp, err = service.Discover(ctx, toSignedRequest(req)) - assert.NoError(t, err) - assert.Contains(t, resp.Results[0].GetError().Content, "unknown or missing request type") + require.NoError(t, err) + require.Contains(t, resp.Results[0].GetError().Content, "unknown or missing request type") } func TestValidateStructure(t *testing.T) { @@ -332,20 +332,20 @@ func TestValidateStructure(t *testing.T) { // Scenario I: Nil request res, err := validateStructure(context.Background(), nil, false, extractHash) - assert.Nil(t, res) - assert.Equal(t, "nil request", err.Error()) + require.Nil(t, res) + require.Equal(t, "nil request", err.Error()) // Scenario II: Malformed envelope res, err = validateStructure(context.Background(), &discovery.SignedRequest{ Payload: []byte{1, 2, 3}, }, false, extractHash) - assert.Nil(t, res) - assert.Contains(t, err.Error(), "failed parsing request") + require.Nil(t, res) + require.Contains(t, err.Error(), "failed parsing request") // Scenario III: Empty request res, err = validateStructure(context.Background(), &discovery.SignedRequest{}, false, extractHash) - assert.Nil(t, res) - assert.Equal(t, "access denied, no authentication info in request", err.Error()) + require.Nil(t, res) + require.Equal(t, "access denied, no authentication info in request", err.Error()) // Scenario IV: request without a client identity req := &discovery.Request{ @@ -355,8 +355,8 @@ func TestValidateStructure(t *testing.T) { res, err = validateStructure(context.Background(), &discovery.SignedRequest{ Payload: b, }, false, extractHash) - assert.Nil(t, res) - assert.Equal(t, "access denied, client identity wasn't supplied", err.Error()) + require.Nil(t, res) + require.Equal(t, "access denied, client identity wasn't supplied", err.Error()) // Scenario V: request with a client identity, should succeed because no TLS is used req = &discovery.Request{ @@ -368,9 +368,9 @@ func TestValidateStructure(t *testing.T) { res, err = validateStructure(context.Background(), &discovery.SignedRequest{ Payload: b, }, false, extractHash) - assert.NoError(t, err) + require.NoError(t, err) // Ensure returned request is as before serialization to bytes - assert.True(t, proto.Equal(req, res)) + require.True(t, proto.Equal(req, res)) // Scenario VI: request with a client identity but with TLS enabled but client doesn't send a TLS cert req = &discovery.Request{ @@ -382,8 +382,8 @@ func TestValidateStructure(t *testing.T) { res, err = validateStructure(context.Background(), &discovery.SignedRequest{ Payload: b, }, true, extractHash) - assert.Nil(t, res) - assert.Equal(t, "client didn't send a TLS certificate", err.Error()) + require.Nil(t, res) + require.Equal(t, "client didn't send a TLS certificate", err.Error()) // Scenario VII: request with a client identity and with TLS enabled but the TLS cert hash doesn't match // the computed one @@ -400,8 +400,8 @@ func TestValidateStructure(t *testing.T) { res, err = validateStructure(context.Background(), &discovery.SignedRequest{ Payload: b, }, true, extractHash) - assert.Nil(t, res) - assert.Equal(t, "client claimed TLS hash doesn't match computed TLS hash from gRPC stream", err.Error()) + require.Nil(t, res) + require.Equal(t, "client claimed TLS hash doesn't match computed TLS hash from gRPC stream", err.Error()) // Scenario VIII: request with a client identity and with TLS enabled and the TLS cert hash doesn't match // the computed one @@ -418,8 +418,8 @@ func TestValidateStructure(t *testing.T) { res, err = validateStructure(context.Background(), &discovery.SignedRequest{ Payload: b, }, true, extractHash) - assert.NoError(t, err) - assert.NotNil(t, res) + require.NoError(t, err) + require.NotNil(t, res) } func TestValidateCCQuery(t *testing.T) { @@ -428,7 +428,7 @@ func TestValidateCCQuery(t *testing.T) { nil, }, }) - assert.Equal(t, "chaincode interest is nil", err.Error()) + require.Equal(t, "chaincode interest is nil", err.Error()) } func wrapResult(responses ...interface{}) *discovery.Response { diff --git a/discovery/support/acl/support_test.go b/discovery/support/acl/support_test.go index cc92d11eea6..f39586f4033 100644 --- a/discovery/support/acl/support_test.go +++ b/discovery/support/acl/support_test.go @@ -16,7 +16,7 @@ import ( gmocks "github.com/hyperledger/fabric/internal/peer/gossip/mocks" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetChannelConfigFunc(t *testing.T) { @@ -24,14 +24,14 @@ func TestGetChannelConfigFunc(t *testing.T) { f := func(cid string) channelconfig.Resources { return r } - assert.Equal(t, r, acl.ChannelConfigGetterFunc(f).GetChannelConfig("mychannel")) + require.Equal(t, r, acl.ChannelConfigGetterFunc(f).GetChannelConfig("mychannel")) } func TestConfigSequenceEmptyChannelName(t *testing.T) { // If the channel name is empty, there is no config sequence, // and we return 0 sup := acl.NewDiscoverySupport(nil, nil, nil) - assert.Equal(t, uint64(0), sup.ConfigSequence("")) + require.Equal(t, uint64(0), sup.ConfigSequence("")) } func TestConfigSequence(t *testing.T) { @@ -75,12 +75,12 @@ func TestConfigSequence(t *testing.T) { sup := acl.NewDiscoverySupport(&mocks.Verifier{}, &mocks.Evaluator{}, chConfig) if test.shouldPanic { - assert.Panics(t, func() { + require.Panics(t, func() { sup.ConfigSequence("mychannel") }) return } - assert.Equal(t, test.sequence, sup.ConfigSequence("mychannel")) + require.Equal(t, test.sequence, sup.ConfigSequence("mychannel")) }) } } @@ -95,13 +95,13 @@ func TestEligibleForService(t *testing.T) { chConfig := &mocks.ChannelConfigGetter{} sup := acl.NewDiscoverySupport(v, e, chConfig) err := sup.EligibleForService("mychannel", protoutil.SignedData{}) - assert.Equal(t, "verification failed", err.Error()) + require.Equal(t, "verification failed", err.Error()) err = sup.EligibleForService("mychannel", protoutil.SignedData{}) - assert.NoError(t, err) + require.NoError(t, err) err = sup.EligibleForService("", protoutil.SignedData{}) - assert.Equal(t, "verification failed for local msp", err.Error()) + require.Equal(t, "verification failed for local msp", err.Error()) err = sup.EligibleForService("", protoutil.SignedData{}) - assert.NoError(t, err) + require.NoError(t, err) } func TestSatisfiesPrincipal(t *testing.T) { @@ -166,9 +166,9 @@ func TestSatisfiesPrincipal(t *testing.T) { test.before() err := sup.SatisfiesPrincipal("mychannel", nil, nil) if test.expectedErr != "" { - assert.Equal(t, test.expectedErr, err.Error()) + require.Equal(t, test.expectedErr, err.Error()) } else { - assert.NoError(t, err) + require.NoError(t, err) } }) @@ -199,7 +199,7 @@ func TestChannelVerifier(t *testing.T) { Identity: []byte("Bob"), Signature: []byte("msg"), }) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Invalid channel", func(t *testing.T) { @@ -208,8 +208,8 @@ func TestChannelVerifier(t *testing.T) { Identity: []byte("Bob"), Signature: []byte("msg"), }) - assert.Error(t, err) - assert.Contains(t, err.Error(), "policy manager for channel notmychannel doesn't exist") + require.Error(t, err) + require.Contains(t, err.Error(), "policy manager for channel notmychannel doesn't exist") }) t.Run("Writers policy cannot be retrieved", func(t *testing.T) { @@ -219,8 +219,8 @@ func TestChannelVerifier(t *testing.T) { Identity: []byte("Bob"), Signature: []byte("msg"), }) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed obtaining channel application writers policy") + require.Error(t, err) + require.Contains(t, err.Error(), "failed obtaining channel application writers policy") }) } diff --git a/discovery/support/chaincode/support_test.go b/discovery/support/chaincode/support_test.go index e843bbd2e44..cff2948bb22 100644 --- a/discovery/support/chaincode/support_test.go +++ b/discovery/support/chaincode/support_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/common/policies" "github.com/hyperledger/fabric/common/policies/inquire" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type mockMetadataRetriever struct { @@ -84,9 +84,9 @@ func TestSupport(t *testing.T) { t.Run(test.name, func(t *testing.T) { sup := NewDiscoverySupport(&mockMetadataRetriever{res: test.input}) res := sup.PoliciesByChaincode("", "", test.collNames...) - assert.Equal(t, len(res), len(test.expectedReturn)) + require.Equal(t, len(res), len(test.expectedReturn)) for i := 0; i < len(test.expectedReturn); i++ { - assert.Equal(t, res[i].SatisfiedBy(), test.expectedReturn[i].SatisfiedBy()) + require.Equal(t, res[i].SatisfiedBy(), test.expectedReturn[i].SatisfiedBy()) } }) } diff --git a/discovery/support/config/support_test.go b/discovery/support/config/support_test.go index a9387e6b8d7..beb3ddd006c 100644 --- a/discovery/support/config/support_test.go +++ b/discovery/support/config/support_test.go @@ -28,7 +28,7 @@ import ( "github.com/hyperledger/fabric/internal/configtxgen/genesisconfig" "github.com/hyperledger/fabric/protoutil" "github.com/onsi/gomega/gexec" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func blockWithPayload() *common.Block { @@ -71,20 +71,20 @@ func TestMSPIDMapping(t *testing.T) { defer os.RemoveAll(dir) cryptogen, err := gexec.Build("github.com/hyperledger/fabric/cmd/cryptogen") - assert.NoError(t, err) + require.NoError(t, err) defer os.Remove(cryptogen) idemixgen, err := gexec.Build("github.com/hyperledger/fabric/cmd/idemixgen") - assert.NoError(t, err) + require.NoError(t, err) defer os.Remove(idemixgen) cryptoConfigDir := filepath.Join(dir, "crypto-config") b, err := exec.Command(cryptogen, "generate", fmt.Sprintf("--output=%s", cryptoConfigDir)).CombinedOutput() - assert.NoError(t, err, string(b)) + require.NoError(t, err, string(b)) idemixConfigDir := filepath.Join(dir, "crypto-config", "idemix") b, err = exec.Command(idemixgen, "ca-keygen", fmt.Sprintf("--output=%s", idemixConfigDir)).CombinedOutput() - assert.NoError(t, err, string(b)) + require.NoError(t, err, string(b)) profileConfig := genesisconfig.Load("TwoOrgsChannel", "testdata/") ordererConfig := genesisconfig.Load("TwoOrgsOrdererGenesis", "testdata/") @@ -116,7 +116,7 @@ func TestMSPIDMapping(t *testing.T) { cs := config.NewDiscoverySupport(fakeBlockGetter) res, err := cs.Config("mychannel") - assert.NoError(t, err) + require.NoError(t, err) actualKeys := make(map[string]struct{}) for key := range res.Orderers { @@ -134,7 +134,7 @@ func TestMSPIDMapping(t *testing.T) { "Org1MSP": {}, "Org2MSP": {}, } - assert.Equal(t, expected, actualKeys) + require.Equal(t, expected, actualKeys) } func TestSupportGreenPath(t *testing.T) { @@ -143,17 +143,17 @@ func TestSupportGreenPath(t *testing.T) { cs := config.NewDiscoverySupport(fakeBlockGetter) res, err := cs.Config("test") - assert.Nil(t, res) - assert.Equal(t, "could not get last config block for channel test", err.Error()) + require.Nil(t, res) + require.Equal(t, "could not get last config block for channel test", err.Error()) block, err := test.MakeGenesisBlock("test") - assert.NoError(t, err) - assert.NotNil(t, block) + require.NoError(t, err) + require.NotNil(t, block) fakeBlockGetter.GetCurrConfigBlockReturnsOnCall(1, block) res, err = cs.Config("test") - assert.NoError(t, err) - assert.NotNil(t, res) + require.NoError(t, err) + require.NotNil(t, res) } func TestSupportBadConfig(t *testing.T) { @@ -164,8 +164,8 @@ func TestSupportBadConfig(t *testing.T) { Data: &common.BlockData{}, }) res, err := cs.Config("test") - assert.Contains(t, err.Error(), "no transactions in block") - assert.Nil(t, res) + require.Contains(t, err.Error(), "no transactions in block") + require.Nil(t, res) fakeBlockGetter.GetCurrConfigBlockReturnsOnCall(1, &common.Block{ Data: &common.BlockData{ @@ -173,18 +173,18 @@ func TestSupportBadConfig(t *testing.T) { }, }) res, err = cs.Config("test") - assert.Contains(t, err.Error(), "failed unmarshaling envelope") - assert.Nil(t, res) + require.Contains(t, err.Error(), "failed unmarshaling envelope") + require.Nil(t, res) fakeBlockGetter.GetCurrConfigBlockReturnsOnCall(2, blockWithPayload()) res, err = cs.Config("test") - assert.Contains(t, err.Error(), "failed unmarshaling payload") - assert.Nil(t, res) + require.Contains(t, err.Error(), "failed unmarshaling payload") + require.Nil(t, res) fakeBlockGetter.GetCurrConfigBlockReturnsOnCall(3, blockWithConfigEnvelope()) res, err = cs.Config("test") - assert.Contains(t, err.Error(), "failed unmarshaling config envelope") - assert.Nil(t, res) + require.Contains(t, err.Error(), "failed unmarshaling config envelope") + require.Nil(t, res) } func TestValidateConfigEnvelope(t *testing.T) { @@ -298,7 +298,7 @@ func TestValidateConfigEnvelope(t *testing.T) { test := test t.Run(test.name, func(t *testing.T) { err := config.ValidateConfigEnvelope(test.ce) - assert.Contains(t, test.containsError, err.Error()) + require.Contains(t, test.containsError, err.Error()) }) } @@ -307,7 +307,7 @@ func TestValidateConfigEnvelope(t *testing.T) { func TestOrdererEndpoints(t *testing.T) { t.Run("Global endpoints", func(t *testing.T) { block, err := test.MakeGenesisBlock("mychannel") - assert.NoError(t, err) + require.NoError(t, err) fakeBlockGetter := &mocks.ConfigBlockGetter{} cs := config.NewDiscoverySupport(fakeBlockGetter) @@ -317,15 +317,15 @@ func TestOrdererEndpoints(t *testing.T) { injectGlobalOrdererEndpoint(t, block, "globalEndpoint:7050") res, err := cs.Config("test") - assert.NoError(t, err) - assert.Equal(t, map[string]*discovery.Endpoints{ + require.NoError(t, err) + require.Equal(t, map[string]*discovery.Endpoints{ "SampleOrg": {Endpoint: []*discovery.Endpoint{{Host: "globalEndpoint", Port: 7050}}}, }, res.Orderers) }) t.Run("Per org endpoints alongside global endpoints", func(t *testing.T) { block, err := test.MakeGenesisBlock("mychannel") - assert.NoError(t, err) + require.NoError(t, err) fakeBlockGetter := &mocks.ConfigBlockGetter{} cs := config.NewDiscoverySupport(fakeBlockGetter) @@ -336,8 +336,8 @@ func TestOrdererEndpoints(t *testing.T) { injectAdditionalEndpointPair(t, block, "endpointWithoutAPortName", "aBadOrg") res, err := cs.Config("test") - assert.NoError(t, err) - assert.Equal(t, map[string]*discovery.Endpoints{ + require.NoError(t, err) + require.Equal(t, map[string]*discovery.Endpoints{ "SampleOrg": {Endpoint: []*discovery.Endpoint{{Host: "127.0.0.1", Port: 7050}}}, "anotherOrg": {Endpoint: []*discovery.Endpoint{{Host: "perOrgEndpoint", Port: 7050}}}, "aBadOrg": {}, @@ -346,7 +346,7 @@ func TestOrdererEndpoints(t *testing.T) { t.Run("Per org endpoints without global endpoints", func(t *testing.T) { block, err := test.MakeGenesisBlock("mychannel") - assert.NoError(t, err) + require.NoError(t, err) fakeBlockGetter := &mocks.ConfigBlockGetter{} cs := config.NewDiscoverySupport(fakeBlockGetter) @@ -358,8 +358,8 @@ func TestOrdererEndpoints(t *testing.T) { injectAdditionalEndpointPair(t, block, "endpointWithoutAPortName", "aBadOrg") res, err := cs.Config("test") - assert.NoError(t, err) - assert.Equal(t, map[string]*discovery.Endpoints{ + require.NoError(t, err) + require.Equal(t, map[string]*discovery.Endpoints{ "SampleOrg": {Endpoint: []*discovery.Endpoint{{Host: "perOrgEndpoint", Port: 7050}}}, "aBadOrg": {}, }, res.Orderers) @@ -369,10 +369,10 @@ func TestOrdererEndpoints(t *testing.T) { func removeGlobalEndpoints(t *testing.T, block *common.Block) { // Unwrap the layers until we reach the orderer addresses env, err := protoutil.ExtractEnvelope(block, 0) - assert.NoError(t, err) + require.NoError(t, err) payload := protoutil.UnmarshalPayloadOrPanic(env.Payload) confEnv, err := configtx.UnmarshalConfigEnvelope(payload.Data) - assert.NoError(t, err) + require.NoError(t, err) // Remove the orderer addresses delete(confEnv.Config.ChannelGroup.Values, channelconfig.OrdererAddressesKey) // And put it back into the block @@ -385,11 +385,11 @@ func injectGlobalOrdererEndpoint(t *testing.T, block *common.Block, endpoint str ordererAddresses := channelconfig.OrdererAddressesValue([]string{endpoint}) // Unwrap the layers until we reach the orderer addresses env, err := protoutil.ExtractEnvelope(block, 0) - assert.NoError(t, err) + require.NoError(t, err) payload, err := protoutil.UnmarshalPayload(env.Payload) - assert.NoError(t, err) + require.NoError(t, err) confEnv, err := configtx.UnmarshalConfigEnvelope(payload.Data) - assert.NoError(t, err) + require.NoError(t, err) // Replace the orderer addresses confEnv.Config.ChannelGroup.Values[ordererAddresses.Key()] = &common.ConfigValue{ Value: protoutil.MarshalOrPanic(ordererAddresses.Value()), @@ -412,11 +412,11 @@ func injectGlobalOrdererEndpoint(t *testing.T, block *common.Block, endpoint str func injectAdditionalEndpointPair(t *testing.T, block *common.Block, endpoint string, orgName string) { // Unwrap the layers until we reach the orderer addresses env, err := protoutil.ExtractEnvelope(block, 0) - assert.NoError(t, err) + require.NoError(t, err) payload, err := protoutil.UnmarshalPayload(env.Payload) - assert.NoError(t, err) + require.NoError(t, err) confEnv, err := configtx.UnmarshalConfigEnvelope(payload.Data) - assert.NoError(t, err) + require.NoError(t, err) ordererGrp := confEnv.Config.ChannelGroup.Groups[channelconfig.OrdererGroupKey].Groups // Get the first orderer org config var firstOrdererConfig *common.ConfigGroup @@ -430,11 +430,11 @@ func injectAdditionalEndpointPair(t *testing.T, block *common.Block, endpoint st // Reach the FabricMSPConfig buried in it. mspConfig := &msp.MSPConfig{} err = proto.Unmarshal(secondOrdererConfig.Values[channelconfig.MSPKey].Value, mspConfig) - assert.NoError(t, err) + require.NoError(t, err) fabricConfig := &msp.FabricMSPConfig{} err = proto.Unmarshal(mspConfig.Config, fabricConfig) - assert.NoError(t, err) + require.NoError(t, err) // Rename it. fabricConfig.Name = orgName diff --git a/discovery/support/gossip/support_test.go b/discovery/support/gossip/support_test.go index 37a8c548165..5877c473000 100644 --- a/discovery/support/gossip/support_test.go +++ b/discovery/support/gossip/support_test.go @@ -15,13 +15,13 @@ import ( "github.com/hyperledger/fabric/gossip/common" "github.com/hyperledger/fabric/gossip/discovery" "github.com/hyperledger/fabric/gossip/protoext" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestChannelExists(t *testing.T) { g := &mocks.Gossip{} sup := gossipSupport.NewDiscoverySupport(g) - assert.False(t, sup.ChannelExists("")) + require.False(t, sup.ChannelExists("")) } func TestPeers(t *testing.T) { @@ -44,7 +44,7 @@ func TestPeers(t *testing.T) { } expected := discovery.Members{{PKIid: common.PKIidType("p1"), Endpoint: "p1", Envelope: p1ExpectedEnvelope}, {PKIid: common.PKIidType("p0"), Endpoint: "p0"}} actual := sup.Peers() - assert.Equal(t, expected, actual) + require.Equal(t, expected, actual) } func TestPeersOfChannel(t *testing.T) { @@ -61,7 +61,7 @@ func TestPeersOfChannel(t *testing.T) { g.SelfChannelInfoReturnsOnCall(1, sMsg) g.PeersOfChannelReturnsOnCall(0, []discovery.NetworkMember{{PKIid: common.PKIidType("p1")}, {PKIid: common.PKIidType("p2")}}) sup := gossipSupport.NewDiscoverySupport(g) - assert.Empty(t, sup.PeersOfChannel(common.ChannelID(""))) + require.Empty(t, sup.PeersOfChannel(common.ChannelID(""))) expected := discovery.Members{{PKIid: common.PKIidType("p1")}, {PKIid: common.PKIidType("p2")}, {PKIid: common.PKIidType("px"), Envelope: sMsg.Envelope}} - assert.Equal(t, expected, sup.PeersOfChannel(common.ChannelID(""))) + require.Equal(t, expected, sup.PeersOfChannel(common.ChannelID(""))) } diff --git a/discovery/test/integration_test.go b/discovery/test/integration_test.go index 3c1d85ddbcc..8c1b6f23a13 100644 --- a/discovery/test/integration_test.go +++ b/discovery/test/integration_test.go @@ -59,7 +59,7 @@ import ( "github.com/hyperledger/fabric/protoutil" "github.com/onsi/gomega/gexec" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -147,84 +147,84 @@ func TestGreenPath(t *testing.T) { req, err := req.AddPeersQuery().AddPeersQuery(col1).AddPeersQuery(nonExistentCollection).AddConfigQuery().AddEndorsersQuery(cc2cc, ccWithCollection) t.Run("Local peer query", func(t *testing.T) { - assert.NoError(t, err) + require.NoError(t, err) res, err := admin.Send(context.Background(), req, admin.AuthInfo) - assert.NoError(t, err) + require.NoError(t, err) returnedPeers, err := res.ForLocal().Peers() - assert.NoError(t, err) - assert.True(t, peersToTestPeers(returnedPeers).Equal(testPeers.withoutStateInfo())) + require.NoError(t, err) + require.True(t, peersToTestPeers(returnedPeers).Equal(testPeers.withoutStateInfo())) }) t.Run("Channel peer queries", func(t *testing.T) { - assert.NoError(t, err) + require.NoError(t, err) res, err := client.Send(context.Background(), req, client.AuthInfo) - assert.NoError(t, err) + require.NoError(t, err) returnedPeers, err := res.ForChannel("mychannel").Peers() - assert.NoError(t, err) - assert.True(t, peersToTestPeers(returnedPeers).Equal(testPeers)) + require.NoError(t, err) + require.True(t, peersToTestPeers(returnedPeers).Equal(testPeers)) returnedPeers, err = res.ForChannel("mychannel").Peers(col1) - assert.NoError(t, err) + require.NoError(t, err) // Ensure only peers from Org1 are returned for _, p := range returnedPeers { - assert.Equal(t, "Org1MSP", p.MSPID) + require.Equal(t, "Org1MSP", p.MSPID) } // Ensure that the client handles correctly errors returned from the server // in case of a bad request _, err = res.ForChannel("mychannel").Peers(nonExistentCollection) - assert.EqualError(t, err, "collection col3 doesn't exist in collection config for chaincode cc2") + require.EqualError(t, err, "collection col3 doesn't exist in collection config for chaincode cc2") }) t.Run("Endorser chaincode to chaincode", func(t *testing.T) { - assert.NoError(t, err) + require.NoError(t, err) res, err := client.Send(context.Background(), req, client.AuthInfo) - assert.NoError(t, err) + require.NoError(t, err) endorsers, err := res.ForChannel("mychannel").Endorsers(cc2cc.Chaincodes, disc.NoFilter) - assert.NoError(t, err) + require.NoError(t, err) endorsersByMSP := map[string][]string{} for _, endorser := range endorsers { endorsersByMSP[endorser.MSPID] = append(endorsersByMSP[endorser.MSPID], string(endorser.Identity)) } // For cc2cc we expect 2 peers from Org1MSP and 1 from Org2MSP - assert.Equal(t, 2, len(endorsersByMSP["Org1MSP"])) - assert.Equal(t, 1, len(endorsersByMSP["Org2MSP"])) + require.Equal(t, 2, len(endorsersByMSP["Org1MSP"])) + require.Equal(t, 1, len(endorsersByMSP["Org2MSP"])) }) t.Run("Endorser chaincode with collection", func(t *testing.T) { - assert.NoError(t, err) + require.NoError(t, err) res, err := client.Send(context.Background(), req, client.AuthInfo) - assert.NoError(t, err) + require.NoError(t, err) endorsers, err := res.ForChannel("mychannel").Endorsers(ccWithCollection.Chaincodes, disc.NoFilter) - assert.NoError(t, err) + require.NoError(t, err) endorsersByMSP := map[string][]string{} for _, endorser := range endorsers { endorsersByMSP[endorser.MSPID] = append(endorsersByMSP[endorser.MSPID], string(endorser.Identity)) } - assert.Equal(t, 1, len(endorsersByMSP["Org1MSP"])) - assert.Equal(t, 1, len(endorsersByMSP["Org2MSP"])) + require.Equal(t, 1, len(endorsersByMSP["Org1MSP"])) + require.Equal(t, 1, len(endorsersByMSP["Org2MSP"])) }) t.Run("Config query", func(t *testing.T) { - assert.NoError(t, err) + require.NoError(t, err) res, err := client.Send(context.Background(), req, client.AuthInfo) - assert.NoError(t, err) + require.NoError(t, err) conf, err := res.ForChannel("mychannel").Config() - assert.NoError(t, err) + require.NoError(t, err) // Ensure MSP Configs are exactly as they appear in the config block for mspID, mspConfig := range conf.Msps { expectedConfig := service.sup.mspConfigs[mspID] - assert.Equal(t, expectedConfig, mspConfig) + require.Equal(t, expectedConfig, mspConfig) } // Ensure orderer endpoints are as they appear in the config block for mspID, endpoints := range conf.Orderers { - assert.Equal(t, "OrdererMSP", mspID) + require.Equal(t, "OrdererMSP", mspID) endpoints := endpoints.Endpoint - assert.Len(t, endpoints, 1) - assert.Equal(t, "orderer.example.com", endpoints[0].Host) - assert.Equal(t, uint32(7050), endpoints[0].Port) + require.Len(t, endpoints, 1) + require.Equal(t, "orderer.example.com", endpoints[0].Host) + require.Equal(t, uint32(7050), endpoints[0].Port) } }) } @@ -247,13 +247,13 @@ func TestEndorsementComputationFailure(t *testing.T) { }, } req, err := disc.NewRequest().OfChannel("mychannel").AddEndorsersQuery(ccWithCollection) - assert.NoError(t, err) + require.NoError(t, err) res, err := client.Send(context.Background(), req, client.AuthInfo) - assert.NoError(t, err) + require.NoError(t, err) endorsers, err := res.ForChannel("mychannel").Endorsers(ccWithCollection.Chaincodes, disc.NoFilter) - assert.Empty(t, endorsers) - assert.Contains(t, err.Error(), "failed constructing descriptor") + require.Empty(t, endorsers) + require.Contains(t, err.Error(), "failed constructing descriptor") } func TestLedgerFailure(t *testing.T) { @@ -273,13 +273,13 @@ func TestLedgerFailure(t *testing.T) { }, } req, err := disc.NewRequest().OfChannel("mychannel").AddEndorsersQuery(ccWithCollection) - assert.NoError(t, err) + require.NoError(t, err) res, err := client.Send(context.Background(), req, client.AuthInfo) - assert.NoError(t, err) + require.NoError(t, err) endorsers, err := res.ForChannel("mychannel").Endorsers(ccWithCollection.Chaincodes, disc.NoFilter) - assert.Empty(t, endorsers) - assert.Contains(t, err.Error(), "failed constructing descriptor") + require.Empty(t, endorsers) + require.Contains(t, err.Error(), "failed constructing descriptor") } func TestRevocation(t *testing.T) { @@ -290,21 +290,21 @@ func TestRevocation(t *testing.T) { req := disc.NewRequest().OfChannel("mychannel").AddPeersQuery() res, err := client.Send(context.Background(), req, client.AuthInfo) - assert.NoError(t, err) + require.NoError(t, err) // Record number of times we deserialized the identity firstCount := atomic.LoadUint32(&service.sup.deserializeIdentityCount) // Do the same query again peers, err := res.ForChannel("mychannel").Peers() - assert.NotEmpty(t, peers) - assert.NoError(t, err) + require.NotEmpty(t, peers) + require.NoError(t, err) _, err = client.Send(context.Background(), req, client.AuthInfo) - assert.NoError(t, err) + require.NoError(t, err) // The amount of times deserializeIdentity was called should not have changed // because requests should have hit the cache secondCount := atomic.LoadUint32(&service.sup.deserializeIdentityCount) - assert.Equal(t, firstCount, secondCount) + require.Equal(t, firstCount, secondCount) // Now, increment the config sequence oldSeq := service.sup.sequenceWrapper.Sequence() @@ -317,16 +317,16 @@ func TestRevocation(t *testing.T) { // Send the query for the third time res, err = client.Send(context.Background(), req, client.AuthInfo) - assert.NoError(t, err) + require.NoError(t, err) // The cache should have been purged, thus deserializeIdentity should have been // called an additional time thirdCount := atomic.LoadUint32(&service.sup.deserializeIdentityCount) - assert.NotEqual(t, thirdCount, secondCount) + require.NotEqual(t, thirdCount, secondCount) // We should be denied access peers, err = res.ForChannel("mychannel").Peers() - assert.Empty(t, peers) - assert.Contains(t, err.Error(), "access denied") + require.Empty(t, peers) + require.Contains(t, err.Error(), "access denied") } type client struct { @@ -426,9 +426,9 @@ func createSupport(t *testing.T, dir string, lsccMetadataManager *lsccMetadataMa channelVerifier := discacl.NewChannelVerifier(policies.ChannelApplicationWriters, polMgr) org1Admin, err := policydsl.FromString("OR('Org1MSP.admin')") - assert.NoError(t, err) + require.NoError(t, err) org1AdminPolicy, _, err := cauthdsl.NewPolicyProvider(org1MSP).NewPolicy(protoutil.MarshalOrPanic(org1Admin)) - assert.NoError(t, err) + require.NoError(t, err) acl := discacl.NewDiscoverySupport(channelVerifier, org1AdminPolicy, chConfig) gSup := &mocks.GossipSupport{} @@ -459,10 +459,10 @@ func createSupport(t *testing.T, dir string, lsccMetadataManager *lsccMetadataMa func createClientAndService(t *testing.T, testdir string) (*client, *client, *service) { ca, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) serverKeyPair, err := ca.NewServerCertKeyPair("127.0.0.1") - assert.NoError(t, err) + require.NoError(t, err) // Create a server on an ephemeral port gRPCServer, err := comm.NewGRPCServer("127.0.0.1:", comm.ServerConfig{ @@ -484,11 +484,11 @@ func createClientAndService(t *testing.T, testdir string) (*client, *client, *se RegisterDiscoveryServer(gRPCServer.Server(), svc) - assert.NoError(t, err) + require.NoError(t, err) go gRPCServer.Start() clientKeyPair, err := ca.NewClientCertKeyPair() - assert.NoError(t, err) + require.NoError(t, err) dialer, err := comm.NewGRPCClient(comm.ClientConfig{ Timeout: time.Second * 3, @@ -499,10 +499,10 @@ func createClientAndService(t *testing.T, testdir string) (*client, *client, *se ServerRootCAs: [][]byte{ca.CertBytes()}, }, }) - assert.NoError(t, err) + require.NoError(t, err) conn, err := dialer.NewConnection(gRPCServer.Address()) - assert.NoError(t, err) + require.NoError(t, err) userSigner := createUserSigner(t) wrapperUserClient := &client{AuthInfo: &AuthInfo{ @@ -528,11 +528,11 @@ func createUserSigner(t *testing.T) *signer { certPath := filepath.Join(identityDir, "signcerts", "User1@org1.example.com-cert.pem") keyPath := filepath.Join(identityDir, "keystore") keys, err := ioutil.ReadDir(keyPath) - assert.NoError(t, err) - assert.Len(t, keys, 1) + require.NoError(t, err) + require.Len(t, keys, 1) keyPath = filepath.Join(keyPath, keys[0].Name()) signer, err := newSigner("Org1MSP", certPath, keyPath) - assert.NoError(t, err) + require.NoError(t, err) return signer } @@ -541,25 +541,25 @@ func createAdminSigner(t *testing.T) *signer { certPath := filepath.Join(identityDir, "signcerts", "Admin@org1.example.com-cert.pem") keyPath := filepath.Join(identityDir, "keystore") keys, err := ioutil.ReadDir(keyPath) - assert.NoError(t, err) - assert.Len(t, keys, 1) + require.NoError(t, err) + require.Len(t, keys, 1) keyPath = filepath.Join(keyPath, keys[0].Name()) signer, err := newSigner("Org1MSP", certPath, keyPath) - assert.NoError(t, err) + require.NoError(t, err) return signer } func createMSP(t *testing.T, dir, mspID string) (msp.MSP, *msprotos.FabricMSPConfig) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) channelMSP, err := msp.New( &msp.BCCSPNewOpts{NewBaseOpts: msp.NewBaseOpts{Version: msp.MSPv1_4_3}}, cryptoProvider, ) - assert.NoError(t, err) + require.NoError(t, err) mspConf, err := msp.GetVerifyingMspConfig(dir, mspID, "bccsp") - assert.NoError(t, err) + require.NoError(t, err) fabConf := &msprotos.FabricMSPConfig{} proto.Unmarshal(mspConf.Config, fabConf) @@ -608,9 +608,9 @@ func createChannelConfigGetter(s *sequenceWrapper, mspMgr msp.MSPManager) discac func createPolicyManagerGetter(t *testing.T, mspMgr msp.MSPManager) *mocks.ChannelPolicyManagerGetter { org1Org2Members, err := policydsl.FromString("OR('Org1MSP.client', 'Org2MSP.client')") - assert.NoError(t, err) + require.NoError(t, err) org1Org2MembersPolicy, _, err := cauthdsl.NewPolicyProvider(mspMgr).NewPolicy(protoutil.MarshalOrPanic(org1Org2Members)) - assert.NoError(t, err) + require.NoError(t, err) polMgr := &mocks.ChannelPolicyManagerGetter{} policyMgr := &mocks.PolicyManager{} diff --git a/docs/source/style-guides/go-style.rst b/docs/source/style-guides/go-style.rst index c6d06aba4aa..ed71d088898 100644 --- a/docs/source/style-guides/go-style.rst +++ b/docs/source/style-guides/go-style.rst @@ -33,7 +33,7 @@ Two matching libraries are commonly used in our tests. When modifying code, please use the matching library that has already been chosen for the package. - `gomega `__ - - `testify/assert `__ + - `testify/require `__ Any fixtures or data required by tests should generated or placed under version control. When fixtures are generated, they must be placed in a temporary diff --git a/gossip/api/api_test.go b/gossip/api/api_test.go index 4285a3ca9a0..fa7b8ddcdaf 100644 --- a/gossip/api/api_test.go +++ b/gossip/api/api_test.go @@ -11,7 +11,7 @@ import ( "testing" "github.com/hyperledger/fabric/gossip/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestPeerIdentitySetByOrg(t *testing.T) { @@ -27,9 +27,9 @@ func TestPeerIdentitySetByOrg(t *testing.T) { p1, p2, } m := is.ByOrg() - assert.Len(t, m, 2) - assert.Equal(t, PeerIdentitySet{p1}, m["ORG1"]) - assert.Equal(t, PeerIdentitySet{p2}, m["ORG2"]) + require.Len(t, m, 2) + require.Equal(t, PeerIdentitySet{p1}, m["ORG1"]) + require.Equal(t, PeerIdentitySet{p2}, m["ORG2"]) } func TestPeerIdentitySetByID(t *testing.T) { @@ -44,7 +44,7 @@ func TestPeerIdentitySetByID(t *testing.T) { is := PeerIdentitySet{ p1, p2, } - assert.Equal(t, map[string]PeerIdentityInfo{ + require.Equal(t, map[string]PeerIdentityInfo{ "p1": p1, "p2": p2, }, is.ByID()) @@ -66,14 +66,14 @@ func TestPeerIdentitySetFilter(t *testing.T) { is := PeerIdentitySet{ p1, p2, p3, } - assert.Equal(t, PeerIdentitySet{p1}, is.Filter(func(info PeerIdentityInfo) bool { + require.Equal(t, PeerIdentitySet{p1}, is.Filter(func(info PeerIdentityInfo) bool { return bytes.Equal(info.Organization, OrgIdentityType("ORG1")) })) var emptySet PeerIdentitySet - assert.Equal(t, emptySet, is.Filter(func(_ PeerIdentityInfo) bool { + require.Equal(t, emptySet, is.Filter(func(_ PeerIdentityInfo) bool { return false })) - assert.Equal(t, PeerIdentitySet{p3}, is.Filter(func(info PeerIdentityInfo) bool { + 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")) diff --git a/gossip/api/crypto_test.go b/gossip/api/crypto_test.go index af05a61d5ab..4873252f9b0 100644 --- a/gossip/api/crypto_test.go +++ b/gossip/api/crypto_test.go @@ -14,12 +14,12 @@ import ( "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestPeerIdentityTypeString(t *testing.T) { certBytes, err := ioutil.ReadFile(filepath.Join("testdata", "peer.pem")) - assert.NoError(t, err) + require.NoError(t, err) for _, testCase := range []struct { description string @@ -60,7 +60,7 @@ func TestPeerIdentityTypeString(t *testing.T) { }, } { t.Run(testCase.description, func(t *testing.T) { - assert.Equal(t, testCase.identity.String(), testCase.expectedOut) + require.Equal(t, testCase.identity.String(), testCase.expectedOut) }) } diff --git a/gossip/comm/ack_test.go b/gossip/comm/ack_test.go index 8487ae35655..5bcbf845030 100644 --- a/gossip/comm/ack_test.go +++ b/gossip/comm/ack_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/gossip/common" "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInterceptAcks(t *testing.T) { @@ -37,10 +37,10 @@ func TestInterceptAcks(t *testing.T) { sub := pubsub.Subscribe(topicForAck(1, pkiID), time.Second) wrappedHandler(ack) // Ensure ack was consumed and not passed onwards to the wrapped hander - assert.Len(t, msgs, 0) + require.Len(t, msgs, 0) _, err := sub.Listen() // Ensure ack was published - assert.NoError(t, err) + require.NoError(t, err) // Test none acks are just forwarded notAck := &protoext.SignedGossipMessage{ @@ -54,10 +54,10 @@ func TestInterceptAcks(t *testing.T) { sub = pubsub.Subscribe(topicForAck(2, pkiID), time.Second) wrappedHandler(notAck) // Ensure message was passed to the wrapped handler - assert.Len(t, msgs, 1) + require.Len(t, msgs, 1) _, err = sub.Listen() // Ensure ack was not published - assert.Error(t, err) + require.Error(t, err) } func TestAck(t *testing.T) { @@ -92,9 +92,9 @@ func TestAck(t *testing.T) { go ack(inc2) go ack(inc3) res := comm1.SendWithAck(createGossipMsg(), time.Second*3, 2, remotePeer(port2), remotePeer(port3)) - assert.Len(t, res, 2) - assert.Empty(t, res[0].Error()) - assert.Empty(t, res[1].Error()) + require.Len(t, res, 2) + require.Empty(t, res[0].Error()) + require.Empty(t, res[1].Error()) // Collect 2 out of 3 acks - should succeed t1 := time.Now() @@ -102,25 +102,25 @@ func TestAck(t *testing.T) { go ack(inc3) res = comm1.SendWithAck(createGossipMsg(), time.Second*10, 2, remotePeer(port2), remotePeer(port3), remotePeer(port4)) elapsed := time.Since(t1) - assert.Len(t, res, 2) - assert.Empty(t, res[0].Error()) - assert.Empty(t, res[1].Error()) + require.Len(t, res, 2) + require.Empty(t, res[0].Error()) + require.Empty(t, res[1].Error()) // Collection of 2 out of 3 acks should have taken much less than the timeout (10 seconds) - assert.True(t, elapsed < time.Second*5) + require.True(t, elapsed < time.Second*5) // Collect 2 out of 3 acks - should fail, because peer3 now have sent an error along with the ack go ack(inc2) go nack(inc3) res = comm1.SendWithAck(createGossipMsg(), time.Second*10, 2, remotePeer(port2), remotePeer(port3), remotePeer(port4)) - assert.Len(t, res, 3) - assert.Contains(t, []string{res[0].Error(), res[1].Error(), res[2].Error()}, "Failed processing message because reasons") - assert.Contains(t, []string{res[0].Error(), res[1].Error(), res[2].Error()}, "timed out") + require.Len(t, res, 3) + require.Contains(t, []string{res[0].Error(), res[1].Error(), res[2].Error()}, "Failed processing message because reasons") + require.Contains(t, []string{res[0].Error(), res[1].Error(), res[2].Error()}, "timed out") // Collect 2 out of 2 acks - should fail because comm2 and comm3 now don't acknowledge messages res = comm1.SendWithAck(createGossipMsg(), time.Second*3, 2, remotePeer(port2), remotePeer(port3)) - assert.Len(t, res, 2) - assert.Contains(t, res[0].Error(), "timed out") - assert.Contains(t, res[1].Error(), "timed out") + require.Len(t, res, 2) + require.Contains(t, res[0].Error(), "timed out") + require.Contains(t, res[1].Error(), "timed out") // Drain ack messages to prepare for next salvo <-inc2 <-inc3 @@ -129,25 +129,25 @@ func TestAck(t *testing.T) { go ack(inc2) go nack(inc3) res = comm1.SendWithAck(createGossipMsg(), time.Second*3, 2, remotePeer(port2), remotePeer(port3), remotePeer(port4)) - assert.Len(t, res, 3) - assert.Contains(t, []string{res[0].Error(), res[1].Error(), res[2].Error()}, "") // This is the "successful ack" - assert.Contains(t, []string{res[0].Error(), res[1].Error(), res[2].Error()}, "Failed processing message because reasons") - assert.Contains(t, []string{res[0].Error(), res[1].Error(), res[2].Error()}, "timed out") - assert.Contains(t, res.String(), "\"Failed processing message because reasons\":1") - assert.Contains(t, res.String(), "\"timed out\":1") - assert.Contains(t, res.String(), "\"successes\":1") - assert.Equal(t, 2, res.NackCount()) - assert.Equal(t, 1, res.AckCount()) + require.Len(t, res, 3) + require.Contains(t, []string{res[0].Error(), res[1].Error(), res[2].Error()}, "") // This is the "successful ack" + require.Contains(t, []string{res[0].Error(), res[1].Error(), res[2].Error()}, "Failed processing message because reasons") + require.Contains(t, []string{res[0].Error(), res[1].Error(), res[2].Error()}, "timed out") + require.Contains(t, res.String(), "\"Failed processing message because reasons\":1") + require.Contains(t, res.String(), "\"timed out\":1") + require.Contains(t, res.String(), "\"successes\":1") + require.Equal(t, 2, res.NackCount()) + require.Equal(t, 1, res.AckCount()) // Send a message to no one res = comm1.SendWithAck(createGossipMsg(), time.Second*3, 1) - assert.Len(t, res, 0) + require.Len(t, res, 0) // Send a message while stopping comm1.Stop() res = comm1.SendWithAck(createGossipMsg(), time.Second*3, 1, remotePeer(port2), remotePeer(port3), remotePeer(port4)) - assert.Len(t, res, 3) - assert.Contains(t, res[0].Error(), "comm is stopping") - assert.Contains(t, res[1].Error(), "comm is stopping") - assert.Contains(t, res[2].Error(), "comm is stopping") + require.Len(t, res, 3) + require.Contains(t, res[0].Error(), "comm is stopping") + require.Contains(t, res[1].Error(), "comm is stopping") + require.Contains(t, res[2].Error(), "comm is stopping") } diff --git a/gossip/comm/comm_test.go b/gossip/comm/comm_test.go index a5ee73e0253..45f2a81558d 100644 --- a/gossip/comm/comm_test.go +++ b/gossip/comm/comm_test.go @@ -37,8 +37,8 @@ import ( "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/util" "github.com/hyperledger/fabric/internal/pkg/comm" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) @@ -130,7 +130,7 @@ func newCommInstanceOnlyWithMetrics(t *testing.T, commMetrics *metrics.CommMetri secureDialOpts api.PeerSecureDialOpts, dialOpts ...grpc.DialOption) Comm { _, portString, err := net.SplitHostPort(gRPCServer.Address()) - assert.NoError(t, err) + require.NoError(t, err) endpoint := fmt.Sprintf("127.0.0.1:%s", portString) id := []byte(endpoint) @@ -138,11 +138,11 @@ func newCommInstanceOnlyWithMetrics(t *testing.T, commMetrics *metrics.CommMetri commInst, err := NewCommInstance(gRPCServer.Server(), certs, identityMapper, id, secureDialOpts, sec, commMetrics, testCommConfig, dialOpts...) - assert.NoError(t, err) + require.NoError(t, err) go func() { err := gRPCServer.Start() - assert.NoError(t, err) + require.NoError(t, err) }() return &commGRPC{commInst.(*commImpl), gRPCServer} @@ -200,13 +200,13 @@ func handshaker(port int, endpoint string, comm Comm, t *testing.T, connMutator defer cancel() target := fmt.Sprintf("127.0.0.1:%d", port) conn, err := grpc.DialContext(ctx, target, secureOpts, grpc.WithBlock()) - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) if err != nil { return nil } cl := proto.NewGossipClient(conn) stream, err := cl.GossipStream(context.Background()) - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) if err != nil { return nil } @@ -217,7 +217,7 @@ func handshaker(port int, endpoint string, comm Comm, t *testing.T, connMutator } pkiID := common.PKIidType(endpoint) - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) msg, _ := c.createConnectionMsg(pkiID, clientCertHash, []byte(endpoint), func(msg []byte) ([]byte, error) { mac := hmac.New(sha256.New, hmacKey) mac.Write(msg) @@ -232,11 +232,11 @@ func handshaker(port int, endpoint string, comm Comm, t *testing.T, connMutator if err != nil { return acceptChan } - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) msg, err = protoext.EnvelopeToGossipMessage(envelope) - assert.NoError(t, err, "%v", err) - assert.Equal(t, []byte(target), msg.GetConn().PkiId) - assert.Equal(t, extractCertificateHashFromContext(stream.Context()), msg.GetConn().TlsCertHash) + require.NoError(t, err, "%v", err) + require.Equal(t, []byte(target), msg.GetConn().PkiId) + require.Equal(t, extractCertificateHashFromContext(stream.Context()), msg.GetConn().TlsCertHash) msg2Send := createGossipMsg() nonce := uint64(rand.Int()) msg2Send.Nonce = nonce @@ -289,12 +289,12 @@ func TestMutualParallelSendWithAck(t *testing.T) { func getAvailablePort(t *testing.T) (port int, endpoint string, ll net.Listener) { ll, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err) + require.NoError(t, err) endpoint = ll.Addr().String() _, portS, err := net.SplitHostPort(endpoint) - assert.NoError(t, err) + require.NoError(t, err) portInt, err := strconv.Atoi(portS) - assert.NoError(t, err) + require.NoError(t, err) return portInt, endpoint, ll } @@ -309,11 +309,11 @@ func TestHandshake(t *testing.T) { } assertPositivePath := func(msg protoext.ReceivedMessage, endpoint string) { expectedPKIID := common.PKIidType(endpoint) - assert.Equal(t, expectedPKIID, msg.GetConnectionInfo().ID) - assert.Equal(t, api.PeerIdentityType(endpoint), msg.GetConnectionInfo().Identity) - assert.NotNil(t, msg.GetConnectionInfo().Auth) + require.Equal(t, expectedPKIID, msg.GetConnectionInfo().ID) + require.Equal(t, api.PeerIdentityType(endpoint), msg.GetConnectionInfo().Identity) + require.NotNil(t, msg.GetConnectionInfo().Auth) sig, _ := (&naiveSecProvider{}).Sign(msg.GetConnectionInfo().Auth.SignedData) - assert.Equal(t, sig, msg.GetConnectionInfo().Auth.Signature) + require.Equal(t, sig, msg.GetConnectionInfo().Auth.Signature) } // Positive path 1 - check authentication without TLS @@ -325,20 +325,20 @@ func TestHandshake(t *testing.T) { return []grpc.DialOption{grpc.WithInsecure()} }, naiveSec, disabledMetrics, testCommConfig) go s.Serve(ll) - assert.NoError(t, err) + require.NoError(t, err) var msg protoext.ReceivedMessage _, tempEndpoint, tempL := getAvailablePort(t) acceptChan := handshaker(port, tempEndpoint, inst, t, mutator, none) select { case <-time.After(time.Duration(time.Second * 4)): - assert.FailNow(t, "Didn't receive a message, seems like handshake failed") + require.FailNow(t, "Didn't receive a message, seems like handshake failed") case msg = <-acceptChan: } - assert.Equal(t, common.PKIidType(tempEndpoint), msg.GetConnectionInfo().ID) - assert.Equal(t, api.PeerIdentityType(tempEndpoint), msg.GetConnectionInfo().Identity) + require.Equal(t, common.PKIidType(tempEndpoint), msg.GetConnectionInfo().ID) + require.Equal(t, api.PeerIdentityType(tempEndpoint), msg.GetConnectionInfo().Identity) sig, _ := (&naiveSecProvider{}).Sign(msg.GetConnectionInfo().Auth.SignedData) - assert.Equal(t, sig, msg.GetConnectionInfo().Auth.Signature) + require.Equal(t, sig, msg.GetConnectionInfo().Auth.Signature) inst.Stop() s.Stop() @@ -354,7 +354,7 @@ func TestHandshake(t *testing.T) { select { case <-time.After(time.Second * 2): - assert.FailNow(t, "Didn't receive a message, seems like handshake failed") + require.FailNow(t, "Didn't receive a message, seems like handshake failed") case msg = <-acceptChan: } assertPositivePath(msg, tempEndpoint) @@ -364,7 +364,7 @@ func TestHandshake(t *testing.T) { _, tempEndpoint, tempL = getAvailablePort(t) acceptChan = handshaker(port, tempEndpoint, comm, t, mutator, oneWayTLS) time.Sleep(time.Second) - assert.Equal(t, 0, len(acceptChan)) + require.Equal(t, 0, len(acceptChan)) tempL.Close() // Negative path, signature is wrong @@ -375,7 +375,7 @@ func TestHandshake(t *testing.T) { } acceptChan = handshaker(port, tempEndpoint, comm, t, mutator, mutualTLS) time.Sleep(time.Second) - assert.Equal(t, 0, len(acceptChan)) + require.Equal(t, 0, len(acceptChan)) tempL.Close() // Negative path, the PKIid doesn't match the identity @@ -389,7 +389,7 @@ func TestHandshake(t *testing.T) { _, tempEndpoint2, tempL2 := getAvailablePort(t) acceptChan = handshaker(port, tempEndpoint2, comm, t, mutator, mutualTLS) time.Sleep(time.Second) - assert.Equal(t, 0, len(acceptChan)) + require.Equal(t, 0, len(acceptChan)) tempL.Close() tempL2.Close() @@ -402,7 +402,7 @@ func TestHandshake(t *testing.T) { } acceptChan = handshaker(port, tempEndpoint, comm, t, mutator, mutualTLS) time.Sleep(time.Second) - assert.Equal(t, 0, len(acceptChan)) + require.Equal(t, 0, len(acceptChan)) tempL.Close() // Negative path, no PKI-ID was sent @@ -414,7 +414,7 @@ func TestHandshake(t *testing.T) { } acceptChan = handshaker(port, tempEndpoint, comm, t, mutator, mutualTLS) time.Sleep(time.Second) - assert.Equal(t, 0, len(acceptChan)) + require.Equal(t, 0, len(acceptChan)) tempL.Close() // Negative path, connection message is of a different type @@ -428,7 +428,7 @@ func TestHandshake(t *testing.T) { } acceptChan = handshaker(port, tempEndpoint, comm, t, mutator, mutualTLS) time.Sleep(time.Second) - assert.Equal(t, 0, len(acceptChan)) + require.Equal(t, 0, len(acceptChan)) tempL.Close() // Negative path, the peer didn't respond to the handshake in due time @@ -439,7 +439,7 @@ func TestHandshake(t *testing.T) { } acceptChan = handshaker(port, tempEndpoint, comm, t, mutator, mutualTLS) time.Sleep(time.Second) - assert.Equal(t, 0, len(acceptChan)) + require.Equal(t, 0, len(acceptChan)) tempL.Close() } @@ -494,7 +494,7 @@ func TestConnectUnexpectedPeer(t *testing.T) { select { case <-messagesForComm2: case <-time.After(time.Second * 5): - assert.Fail(t, "Didn't receive a message within a timely manner") + require.Fail(t, "Didn't receive a message within a timely manner") util.PrintStackTrace() } }) @@ -505,7 +505,7 @@ func TestConnectUnexpectedPeer(t *testing.T) { comm1.Send(createGossipMsg(), unexpectedRemotePeer) select { case <-messagesForComm3: - assert.Fail(t, "Message shouldn't have been received") + require.Fail(t, "Message shouldn't have been received") case <-time.After(time.Second * 5): } }) @@ -522,8 +522,8 @@ func TestGetConnectionInfo(t *testing.T) { case <-time.After(time.Second * 10): t.Fatal("Didn't receive a message in time") case msg := <-m1: - assert.Equal(t, comm2.GetPKIid(), msg.GetConnectionInfo().ID) - assert.NotNil(t, msg.GetSourceEnvelope()) + require.Equal(t, comm2.GetPKIid(), msg.GetConnectionInfo().ID) + require.NotNil(t, msg.GetSourceEnvelope()) } } @@ -543,10 +543,10 @@ func TestCloseConn(t *testing.T) { defer cancel() target := fmt.Sprintf("127.0.0.1:%d", port1) conn, err := grpc.DialContext(ctx, target, grpc.WithTransportCredentials(ta), grpc.WithBlock()) - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) cl := proto.NewGossipClient(conn) stream, err := cl.GossipStream(context.Background()) - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) c := &commImpl{} tlsCertHash := certHashFromRawCert(tlsCfg.Certificates[0].Certificate[0]) connMsg, _ := c.createConnectionMsg(common.PKIidType("pkiID"), tlsCertHash, api.PeerIdentityType("pkiID"), func(msg []byte) ([]byte, error) { @@ -554,12 +554,12 @@ func TestCloseConn(t *testing.T) { mac.Write(msg) return mac.Sum(nil), nil }, false) - assert.NoError(t, stream.Send(connMsg.Envelope)) + require.NoError(t, stream.Send(connMsg.Envelope)) stream.Send(createGossipMsg().Envelope) select { case <-acceptChan: case <-time.After(time.Second): - assert.Fail(t, "Didn't receive a message within a timely period") + require.Fail(t, "Didn't receive a message within a timely period") } comm1.CloseConn(&RemotePeer{PKIID: common.PKIidType("pkiID")}) time.Sleep(time.Second * 10) @@ -576,7 +576,7 @@ func TestCloseConn(t *testing.T) { break } } - assert.True(t, gotErr, "Should have failed because connection is closed") + require.True(t, gotErr, "Should have failed because connection is closed") } // TestCommSend makes sure that enough messages get through @@ -687,7 +687,7 @@ func TestNonResponsivePing(t *testing.T) { }() select { case <-time.After(time.Second * 10): - assert.Fail(t, "Request wasn't cancelled on time") + require.Fail(t, "Request wasn't cancelled on time") case <-s: } @@ -722,11 +722,11 @@ func TestResponses(t *testing.T) { select { case <-ticker.C: - assert.Fail(t, "Haven't got response from comm1 within a timely manner") + require.Fail(t, "Haven't got response from comm1 within a timely manner") break case resp := <-responsesFromComm1: ticker.Stop() - assert.Equal(t, expectedNOnce, resp.GetGossipMessage().Nonce) + require.Equal(t, expectedNOnce, resp.GetGossipMessage().Nonce) break } } @@ -792,12 +792,12 @@ func TestAccept(t *testing.T) { t.Logf("%d even nonces received", len(evenResults)) t.Logf("%d odd nonces received", len(oddResults)) - assert.NotEmpty(t, evenResults) - assert.NotEmpty(t, oddResults) + require.NotEmpty(t, evenResults) + require.NotEmpty(t, oddResults) remainderPredicate := func(a []uint64, rem uint64) { for _, n := range a { - assert.Equal(t, n%2, rem) + require.Equal(t, n%2, rem) } } @@ -847,28 +847,28 @@ func TestProbe(t *testing.T) { defer comm1.Stop() comm2, port2 := newCommInstance(t, naiveSec) time.Sleep(time.Duration(1) * time.Second) - assert.NoError(t, comm1.Probe(remotePeer(port2))) + require.NoError(t, comm1.Probe(remotePeer(port2))) _, err := comm1.Handshake(remotePeer(port2)) - assert.NoError(t, err) + require.NoError(t, err) tempPort, _, ll := getAvailablePort(t) defer ll.Close() - assert.Error(t, comm1.Probe(remotePeer(tempPort))) + require.Error(t, comm1.Probe(remotePeer(tempPort))) _, err = comm1.Handshake(remotePeer(tempPort)) - assert.Error(t, err) + require.Error(t, err) comm2.Stop() time.Sleep(time.Duration(1) * time.Second) - assert.Error(t, comm1.Probe(remotePeer(port2))) + require.Error(t, comm1.Probe(remotePeer(port2))) _, err = comm1.Handshake(remotePeer(port2)) - assert.Error(t, err) + require.Error(t, err) comm2, port2 = newCommInstance(t, naiveSec) defer comm2.Stop() time.Sleep(time.Duration(1) * time.Second) - assert.NoError(t, comm2.Probe(remotePeer(port1))) + require.NoError(t, comm2.Probe(remotePeer(port1))) _, err = comm2.Handshake(remotePeer(port1)) - assert.NoError(t, err) - assert.NoError(t, comm1.Probe(remotePeer(port2))) + require.NoError(t, err) + require.NoError(t, comm1.Probe(remotePeer(port2))) _, err = comm1.Handshake(remotePeer(port2)) - assert.NoError(t, err) + require.NoError(t, err) // Now try a deep probe with an expected PKI-ID that doesn't match wrongRemotePeer := remotePeer(port2) if wrongRemotePeer.PKIID[0] == 0 { @@ -877,12 +877,12 @@ func TestProbe(t *testing.T) { wrongRemotePeer.PKIID[0] = 0 } _, err = comm1.Handshake(wrongRemotePeer) - assert.Error(t, err) + require.Error(t, err) // Try a deep probe with a nil PKI-ID endpoint := fmt.Sprintf("127.0.0.1:%d", port2) id, err := comm1.Handshake(&RemotePeer{Endpoint: endpoint}) - assert.NoError(t, err) - assert.Equal(t, api.PeerIdentityType(endpoint), id) + require.NoError(t, err) + require.Equal(t, api.PeerIdentityType(endpoint), id) } func TestPresumedDead(t *testing.T) { @@ -903,7 +903,7 @@ func TestPresumedDead(t *testing.T) { case <-acceptCh: ticker.Stop() case <-ticker.C: - assert.Fail(t, "Didn't get first message") + require.Fail(t, "Didn't get first message") } comm2.Stop() @@ -917,7 +917,7 @@ func TestPresumedDead(t *testing.T) { ticker = time.NewTicker(time.Second * time.Duration(3)) select { case <-ticker.C: - assert.Fail(t, "Didn't get a presumed dead message within a timely manner") + require.Fail(t, "Didn't get a presumed dead message within a timely manner") break case <-comm1.PresumedDead(): ticker.Stop() @@ -945,9 +945,9 @@ func TestReadFromStream(t *testing.T) { select { case <-msgChan: - assert.Fail(t, "malformed message shouldn't have been received") + require.Fail(t, "malformed message shouldn't have been received") case <-time.After(time.Millisecond * 100): - assert.Len(t, errChan, 1) + require.Len(t, errChan, 1) } conn.close() @@ -959,19 +959,19 @@ func TestSendBadEnvelope(t *testing.T) { defer comm1.Stop() stream, err := establishSession(t, port) - assert.NoError(t, err) + require.NoError(t, err) inc := comm1.Accept(acceptAll) goodMsg := createGossipMsg() err = stream.Send(goodMsg.Envelope) - assert.NoError(t, err) + require.NoError(t, err) select { case goodMsgReceived := <-inc: - assert.Equal(t, goodMsg.Envelope.Payload, goodMsgReceived.GetSourceEnvelope().Payload) + require.Equal(t, goodMsg.Envelope.Payload, goodMsgReceived.GetSourceEnvelope().Payload) case <-time.After(time.Minute): - assert.Fail(t, "Didn't receive message within a timely manner") + require.Fail(t, "Didn't receive message within a timely manner") return } @@ -982,11 +982,11 @@ func TestSendBadEnvelope(t *testing.T) { badMsg.Envelope.Payload = []byte{1} err = stream.Send(badMsg.Envelope) if err != nil { - assert.Equal(t, io.EOF, err) + require.Equal(t, io.EOF, err) break } if time.Now().After(start.Add(time.Second * 30)) { - assert.Fail(t, "Didn't close stream within a timely manner") + require.Fail(t, "Didn't close stream within a timely manner") return } } @@ -1004,13 +1004,13 @@ func establishSession(t *testing.T, port int) (proto.Gossip_GossipStreamClient, endpoint := fmt.Sprintf("127.0.0.1:%d", port) conn, err := grpc.DialContext(ctx, endpoint, secureOpts, grpc.WithBlock()) - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) if err != nil { return nil, err } cl := proto.NewGossipClient(conn) stream, err := cl.GossipStream(context.Background()) - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) if err != nil { return nil, err } @@ -1018,7 +1018,7 @@ func establishSession(t *testing.T, port int) (proto.Gossip_GossipStreamClient, clientCertHash := certHashFromRawCert(cert.Certificate[0]) pkiID := common.PKIidType([]byte{1, 2, 3}) c := &commImpl{} - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) msg, _ := c.createConnectionMsg(pkiID, clientCertHash, []byte{1, 2, 3}, func(msg []byte) ([]byte, error) { mac := hmac.New(sha256.New, hmacKey) mac.Write(msg) @@ -1031,7 +1031,7 @@ func establishSession(t *testing.T, port int) (proto.Gossip_GossipStreamClient, if err != nil { return nil, err } - assert.NotNil(t, envelope) + require.NotNil(t, envelope) return stream, nil } @@ -1066,7 +1066,7 @@ func waitForMessages(t *testing.T, msgChan chan uint64, count int, errMsg string waiting = false } } - assert.Equal(t, count, c, errMsg) + require.Equal(t, count, c, errMsg) } func TestConcurrentCloseSend(t *testing.T) { diff --git a/gossip/comm/crypto_test.go b/gossip/comm/crypto_test.go index 5ecdbfc6a7d..57bbfab0964 100644 --- a/gossip/comm/crypto_test.go +++ b/gossip/comm/crypto_test.go @@ -22,7 +22,7 @@ import ( proto "github.com/hyperledger/fabric-protos-go/gossip" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) @@ -47,7 +47,7 @@ func createTestServer(t *testing.T, cert *tls.Certificate) (srv *gossipTestServe } s := grpc.NewServer(grpc.Creds(credentials.NewTLS(tlsConf))) ll, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) srv = &gossipTestServer{s: s, ll: ll, selfCertHash: certHashFromRawCert(cert.Certificate[0])} proto.RegisterGossipServer(s, srv) @@ -91,11 +91,11 @@ func TestCertificateExtraction(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() conn, err := grpc.DialContext(ctx, ll.Addr().String(), grpc.WithTransportCredentials(ta), grpc.WithBlock()) - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) cl := proto.NewGossipClient(conn) stream, err := cl.GossipStream(context.Background()) - assert.NoError(t, err, "%v", err) + require.NoError(t, err, "%v", err) if err != nil { return } @@ -104,14 +104,14 @@ func TestCertificateExtraction(t *testing.T) { clientSideCertHash := extractCertificateHashFromContext(stream.Context()) serverSideCertHash := srv.getClientCertHash() - assert.NotNil(t, clientSideCertHash) - assert.NotNil(t, serverSideCertHash) + require.NotNil(t, clientSideCertHash) + require.NotNil(t, serverSideCertHash) - assert.Equal(t, 32, len(clientSideCertHash), "client side cert hash is %v", clientSideCertHash) - assert.Equal(t, 32, len(serverSideCertHash), "server side cert hash is %v", serverSideCertHash) + require.Equal(t, 32, len(clientSideCertHash), "client side cert hash is %v", clientSideCertHash) + require.Equal(t, 32, len(serverSideCertHash), "server side cert hash is %v", serverSideCertHash) - assert.Equal(t, clientSideCertHash, srv.selfCertHash, "Server self hash isn't equal to client side hash") - assert.Equal(t, clientCertHash, srv.remoteCertHash, "Server side and client hash aren't equal") + require.Equal(t, clientSideCertHash, srv.selfCertHash, "Server self hash isn't equal to client side hash") + require.Equal(t, clientCertHash, srv.remoteCertHash, "Server side and client hash aren't equal") } // GenerateCertificatesOrPanic generates a a random pair of public and private keys diff --git a/gossip/comm/metrics_test.go b/gossip/comm/metrics_test.go index 3c2bbad5e53..6835943f3cd 100644 --- a/gossip/comm/metrics_test.go +++ b/gossip/comm/metrics_test.go @@ -14,7 +14,7 @@ import ( "github.com/hyperledger/fabric/gossip/metrics" "github.com/hyperledger/fabric/gossip/metrics/mocks" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func newCommInstanceWithMetrics(t *testing.T, sec *naiveSecProvider, metrics *metrics.CommMetrics) (c Comm, port int) { @@ -65,20 +65,20 @@ func TestMetrics(t *testing.T) { } } - assert.EqualValues(t, + require.EqualValues(t, 1, testMetricProvider.FakeSentMessages.AddArgsForCall(0), ) - assert.EqualValues(t, + require.EqualValues(t, 1, testMetricProvider.FakeReceivedMessages.AddArgsForCall(0), ) - assert.EqualValues(t, + require.EqualValues(t, 1, testMetricProvider.FakeBufferOverflow.AddArgsForCall(0), ) - assert.Equal(t, uint32(1), atomic.LoadUint32(&overflown)) + require.Equal(t, uint32(1), atomic.LoadUint32(&overflown)) } diff --git a/gossip/comm/mock/mock_comm_test.go b/gossip/comm/mock/mock_comm_test.go index 3966709bba0..8335e7fd7f3 100644 --- a/gossip/comm/mock/mock_comm_test.go +++ b/gossip/comm/mock/mock_comm_test.go @@ -13,7 +13,7 @@ import ( "github.com/hyperledger/fabric/gossip/comm" "github.com/hyperledger/fabric/gossip/common" "github.com/hyperledger/fabric/gossip/protoext" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestMockComm(t *testing.T) { @@ -45,8 +45,8 @@ func TestMockComm(t *testing.T) { msg := <-msgCh - assert.NotNil(t, msg.GetGossipMessage().GetStateRequest()) - assert.Equal(t, "first", string(comm1.GetPKIid())) + require.NotNil(t, msg.GetGossipMessage().GetStateRequest()) + require.Equal(t, "first", string(comm1.GetPKIid())) } func TestMockComm_PingPong(t *testing.T) { @@ -79,7 +79,7 @@ func TestMockComm_PingPong(t *testing.T) { msg := <-rcvChB dataMsg := msg.GetGossipMessage().GetDataMsg() data := string(dataMsg.Payload.Data) - assert.Equal(t, "Ping", data) + require.Equal(t, "Ping", data) msg.Respond(&proto.GossipMessage{ Content: &proto.GossipMessage_DataMsg{ @@ -94,6 +94,6 @@ func TestMockComm_PingPong(t *testing.T) { msg = <-rcvChA dataMsg = msg.GetGossipMessage().GetDataMsg() data = string(dataMsg.Payload.Data) - assert.Equal(t, "Pong", data) + require.Equal(t, "Pong", data) } diff --git a/gossip/common/common_test.go b/gossip/common/common_test.go index e48ced88285..d9038bfa9a2 100644 --- a/gossip/common/common_test.go +++ b/gossip/common/common_test.go @@ -9,14 +9,14 @@ package common import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestIsNotSame(t *testing.T) { id := PKIidType("1") - assert.True(t, id.IsNotSameFilter(PKIidType("2"))) - assert.False(t, id.IsNotSameFilter(PKIidType("1"))) - assert.False(t, id.IsNotSameFilter(id)) + require.True(t, id.IsNotSameFilter(PKIidType("2"))) + require.False(t, id.IsNotSameFilter(PKIidType("1"))) + require.False(t, id.IsNotSameFilter(id)) } func TestPKIidTypeStringer(t *testing.T) { @@ -29,6 +29,6 @@ func TestPKIidTypeStringer(t *testing.T) { {PKIidType{0, 1, 2, 3}, "00010203"}, } for _, tt := range tests { - assert.Equal(t, tt.expected, tt.input.String()) + require.Equal(t, tt.expected, tt.input.String()) } } diff --git a/gossip/discovery/discovery_test.go b/gossip/discovery/discovery_test.go index 908adb37910..2cf729e17c3 100644 --- a/gossip/discovery/discovery_test.go +++ b/gossip/discovery/discovery_test.go @@ -28,8 +28,8 @@ import ( "github.com/hyperledger/fabric/gossip/gossip/msgstore" "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" "google.golang.org/grpc" @@ -463,17 +463,17 @@ func TestClone(t *testing.T) { } nm2 := nm.Clone() - assert.Equal(t, *nm, nm2, "Clones are different") - assert.False(t, nm.Properties == nm2.Properties, "Cloning should be deep and not shallow") - assert.False(t, nm.Envelope == nm2.Envelope, "Cloning should be deep and not shallow") + require.Equal(t, *nm, nm2, "Clones are different") + require.False(t, nm.Properties == nm2.Properties, "Cloning should be deep and not shallow") + require.False(t, nm.Envelope == nm2.Envelope, "Cloning should be deep and not shallow") } func TestHasExternalEndpoints(t *testing.T) { memberWithEndpoint := NetworkMember{Endpoint: "foo"} memberWithoutEndpoint := NetworkMember{} - assert.True(t, HasExternalEndpoint(memberWithEndpoint)) - assert.False(t, HasExternalEndpoint(memberWithoutEndpoint)) + require.True(t, HasExternalEndpoint(memberWithEndpoint)) + require.False(t, HasExternalEndpoint(memberWithoutEndpoint)) } func TestToString(t *testing.T) { @@ -481,18 +481,18 @@ func TestToString(t *testing.T) { Endpoint: "a", InternalEndpoint: "b", } - assert.Equal(t, "b", nm.PreferredEndpoint()) + require.Equal(t, "b", nm.PreferredEndpoint()) nm = NetworkMember{ Endpoint: "a", } - assert.Equal(t, "a", nm.PreferredEndpoint()) + require.Equal(t, "a", nm.PreferredEndpoint()) now := time.Now() ts := ×tamp{ incTime: now, seqNum: uint64(42), } - assert.Equal(t, fmt.Sprintf("%d, %d", now.UnixNano(), 42), fmt.Sprint(ts)) + require.Equal(t, fmt.Sprintf("%d, %d", now.UnixNano(), 42), fmt.Sprint(ts)) } func TestNetworkMemberString(t *testing.T) { @@ -510,7 +510,7 @@ func TestNetworkMemberString(t *testing.T) { }, } for _, tt := range tests { - assert.Equal(t, tt.expected, tt.input.String()) + require.Equal(t, tt.expected, tt.input.String()) } } @@ -570,15 +570,15 @@ func TestConnect(t *testing.T) { discInst := instances[rand.Intn(len(instances))].Discovery.(*gossipDiscoveryImpl) mr, _ := discInst.createMembershipRequest(true) am, _ := protoext.EnvelopeToGossipMessage(mr.GetMemReq().SelfInformation) - assert.NotNil(t, am.SecretEnvelope) + require.NotNil(t, am.SecretEnvelope) mr2, _ := discInst.createMembershipRequest(false) am, _ = protoext.EnvelopeToGossipMessage(mr2.GetMemReq().SelfInformation) - assert.Nil(t, am.SecretEnvelope) + require.Nil(t, am.SecretEnvelope) stopInstances(t, instances) - assert.Len(t, firstSentMemReqMsgs, 10) + require.Len(t, firstSentMemReqMsgs, 10) close(firstSentMemReqMsgs) for firstSentSelfMsg := range firstSentMemReqMsgs { - assert.Nil(t, firstSentSelfMsg.Envelope.SecretEnvelope) + require.Nil(t, firstSentSelfMsg.Envelope.SecretEnvelope) } } @@ -671,8 +671,8 @@ func TestValidation(t *testing.T) { t.Log("Recorded", len(responseMessagesReceived), "response messages") // Ensure we got alive messages from membership requests and from membership responses - assert.NotNil(t, membershipResponseWithAlivePeers.Load()) - assert.NotNil(t, membershipRequest.Load()) + require.NotNil(t, membershipResponseWithAlivePeers.Load()) + require.NotNil(t, membershipRequest.Load()) t.Run("alive message", func(t *testing.T) { // Spawn a new peer - p4 @@ -696,18 +696,18 @@ func TestValidation(t *testing.T) { if msgStore.Add(msg) { // Ensure the message was verified if it can be added into the message store expectedMessage := <-validatedMessages - assert.Equal(t, expectedMessage, msg) + require.Equal(t, expectedMessage, msg) } } // Ensure we didn't validate any other messages. - assert.Empty(t, validatedMessages) + require.Empty(t, validatedMessages) }) req := membershipRequest.Load().(*protoext.SignedGossipMessage) res := membershipResponseWithDeadPeers.Load().(*protoext.SignedGossipMessage) // Ensure the membership response contains both alive and dead peers - assert.Len(t, res.GetMemRes().GetAlive(), 2) - assert.Len(t, res.GetMemRes().GetDead(), 1) + require.Len(t, res.GetMemRes().GetAlive(), 2) + require.Len(t, res.GetMemRes().GetDead(), 1) for _, testCase := range []struct { name string @@ -750,7 +750,7 @@ func TestValidation(t *testing.T) { <-validatedMessages } // Not more than testCase.expectedAliveMessages should have been validated - assert.Empty(t, validatedMessages) + require.Empty(t, validatedMessages) if !testCase.shouldBeReValidated { // Re-submit the message twice and ensure it wasn't validated. @@ -848,13 +848,13 @@ func TestSelf(t *testing.T) { defer inst.Stop() env := inst.Self().Envelope sMsg, err := protoext.EnvelopeToGossipMessage(env) - assert.NoError(t, err) + require.NoError(t, err) member := sMsg.GetAliveMsg().Membership - assert.Equal(t, "localhost:13463", member.Endpoint) - assert.Equal(t, []byte("localhost:13463"), member.PkiId) + require.Equal(t, "localhost:13463", member.Endpoint) + require.Equal(t, []byte("localhost:13463"), member.PkiId) - assert.Equal(t, "localhost:13463", inst.Self().Endpoint) - assert.Equal(t, common.PKIidType("localhost:13463"), inst.Self().PKIid) + require.Equal(t, "localhost:13463", inst.Self().Endpoint) + require.Equal(t, common.PKIidType("localhost:13463"), inst.Self().PKIid) } func TestExpiration(t *testing.T) { @@ -921,16 +921,16 @@ func TestGetFullMembership(t *testing.T) { // Ensure that internal endpoint was propagated to everyone for _, inst := range instances { for _, member := range inst.GetMembership() { - assert.NotEmpty(t, member.InternalEndpoint) - assert.NotEmpty(t, member.Endpoint) + require.NotEmpty(t, member.InternalEndpoint) + require.NotEmpty(t, member.Endpoint) } } // Check that Lookup() is valid for _, inst := range instances { for _, member := range inst.GetMembership() { - assert.Equal(t, string(member.PKIid), inst.Lookup(member.PKIid).Endpoint) - assert.Equal(t, member.PKIid, inst.Lookup(member.PKIid).PKIid) + require.Equal(t, string(member.PKIid), inst.Lookup(member.PKIid).Endpoint) + require.Equal(t, member.PKIid, inst.Lookup(member.PKIid).PKIid) } } @@ -1050,7 +1050,7 @@ func TestDisclosurePolicyWithPull(t *testing.T) { portsOfKnownMembers := portsOfMembers(inst.GetMembership()) // Ensure the expected membership is equal to the actual membership // of each peer. the portsOfMembers returns a sorted slice so assert.Equal does the job. - assert.Equal(t, peersThatShouldBeKnownToPeers[inst.port], portsOfKnownMembers) + require.Equal(t, peersThatShouldBeKnownToPeers[inst.port], portsOfKnownMembers) // Next, check that internal endpoints aren't leaked across groups, for _, knownPeer := range inst.GetMembership() { // If internal endpoint is known, ensure the peers are in the same group @@ -1059,7 +1059,7 @@ func TestDisclosurePolicyWithPull(t *testing.T) { if len(knownPeer.InternalEndpoint) > 0 && inst.port%2 != 0 { bothInGroup1 := portOfEndpoint(knownPeer.Endpoint) < 8615 && inst.port < 8615 bothInGroup2 := portOfEndpoint(knownPeer.Endpoint) >= 8615 && inst.port >= 8615 - assert.True(t, bothInGroup1 || bothInGroup2, "%v knows about %v's internal endpoint", inst.port, knownPeer.InternalEndpoint) + require.True(t, bothInGroup1 || bothInGroup2, "%v knows about %v's internal endpoint", inst.port, knownPeer.InternalEndpoint) } } } @@ -1071,9 +1071,9 @@ func TestDisclosurePolicyWithPull(t *testing.T) { time.Sleep(time.Second * 6) for _, inst := range append(instances1[1:], instances2...) { if peersThatShouldBeKnownToPeers[inst.port][0] == 8610 { - assert.Equal(t, 1, inst.Discovery.(*gossipDiscoveryImpl).deadMembership.Size()) + require.Equal(t, 1, inst.Discovery.(*gossipDiscoveryImpl).deadMembership.Size()) } else { - assert.Equal(t, 0, inst.Discovery.(*gossipDiscoveryImpl).deadMembership.Size()) + require.Equal(t, 0, inst.Discovery.(*gossipDiscoveryImpl).deadMembership.Size()) } } stopInstances(t, instances1[1:]) @@ -1193,7 +1193,7 @@ func TestCertificateChange(t *testing.T) { }, timeout) // Ensure the first peer ceases from trying - assert.Equal(t, c1, pingCount1()) + require.Equal(t, c1, pingCount1()) waitUntilOrFailBlocking(t, p1.Stop) waitUntilOrFailBlocking(t, p3.Stop) @@ -1273,7 +1273,7 @@ func TestMsgStoreExpiration(t *testing.T) { func TestExpirationNoSecretEnvelope(t *testing.T) { l, err := zap.NewDevelopment() - assert.NoError(t, err) + require.NoError(t, err) removed := make(chan struct{}) logger := flogging.NewFabricLogger(l, zap.Hooks(func(entry zapcore.Entry) error { @@ -1302,7 +1302,7 @@ func TestExpirationNoSecretEnvelope(t *testing.T) { } sMsg, err := protoext.NoopSign(msg) - assert.NoError(t, err) + require.NoError(t, err) msgStore.Add(sMsg) select { @@ -1374,14 +1374,14 @@ func TestMsgStoreExpirationWithMembershipMessages(t *testing.T) { checkExistence := func(instances []*gossipInstance, msgs []*protoext.SignedGossipMessage, index int, i int, step string) { _, exist := instances[index].discoveryImpl().aliveLastTS[string(instances[i].discoveryImpl().self.PKIid)] - assert.True(t, exist, fmt.Sprint(step, " Data from alive msg ", i, " doesn't exist in aliveLastTS of discovery inst ", index)) + require.True(t, exist, fmt.Sprint(step, " Data from alive msg ", i, " doesn't exist in aliveLastTS of discovery inst ", index)) _, exist = instances[index].discoveryImpl().id2Member[string(string(instances[i].discoveryImpl().self.PKIid))] - assert.True(t, exist, fmt.Sprint(step, " id2Member mapping doesn't exist for alive msg ", i, " of discovery inst ", index)) + require.True(t, exist, fmt.Sprint(step, " id2Member mapping doesn't exist for alive msg ", i, " of discovery inst ", index)) - assert.NotNil(t, instances[index].discoveryImpl().aliveMembership.MsgByID(instances[i].discoveryImpl().self.PKIid), fmt.Sprint(step, " Alive msg", i, " not exist in aliveMembership of discovery inst ", index)) + require.NotNil(t, instances[index].discoveryImpl().aliveMembership.MsgByID(instances[i].discoveryImpl().self.PKIid), fmt.Sprint(step, " Alive msg", i, " not exist in aliveMembership of discovery inst ", index)) - assert.Contains(t, instances[index].discoveryImpl().msgStore.Get(), msgs[i], fmt.Sprint(step, " Alive msg ", i, "not stored in store of discovery inst ", index)) + require.Contains(t, instances[index].discoveryImpl().msgStore.Get(), msgs[i], fmt.Sprint(step, " Alive msg ", i, "not stored in store of discovery inst ", index)) } checkAliveMsgExist := func(instances []*gossipInstance, msgs []*protoext.SignedGossipMessage, index int, step string) { @@ -1447,12 +1447,12 @@ func TestMsgStoreExpirationWithMembershipMessages(t *testing.T) { checkAliveMsgNotExist := func(instances []*gossipInstance, msgs []*protoext.SignedGossipMessage, index int, step string) { instances[index].discoveryImpl().lock.RLock() defer instances[index].discoveryImpl().lock.RUnlock() - assert.Empty(t, instances[index].discoveryImpl().aliveLastTS, fmt.Sprint(step, " Data from alive msg still exists in aliveLastTS of discovery inst ", index)) - assert.Empty(t, instances[index].discoveryImpl().deadLastTS, fmt.Sprint(step, " Data from alive msg still exists in deadLastTS of discovery inst ", index)) - assert.Empty(t, instances[index].discoveryImpl().id2Member, fmt.Sprint(step, " id2Member mapping still still contains data related to Alive msg: discovery inst ", index)) - assert.Empty(t, instances[index].discoveryImpl().msgStore.Get(), fmt.Sprint(step, " Expired Alive msg still stored in store of discovery inst ", index)) - assert.Zero(t, instances[index].discoveryImpl().aliveMembership.Size(), fmt.Sprint(step, " Alive membership list is not empty, discovery instance", index)) - assert.Zero(t, instances[index].discoveryImpl().deadMembership.Size(), fmt.Sprint(step, " Dead membership list is not empty, discovery instance", index)) + require.Empty(t, instances[index].discoveryImpl().aliveLastTS, fmt.Sprint(step, " Data from alive msg still exists in aliveLastTS of discovery inst ", index)) + require.Empty(t, instances[index].discoveryImpl().deadLastTS, fmt.Sprint(step, " Data from alive msg still exists in deadLastTS of discovery inst ", index)) + require.Empty(t, instances[index].discoveryImpl().id2Member, fmt.Sprint(step, " id2Member mapping still still contains data related to Alive msg: discovery inst ", index)) + require.Empty(t, instances[index].discoveryImpl().msgStore.Get(), fmt.Sprint(step, " Expired Alive msg still stored in store of discovery inst ", index)) + require.Zero(t, instances[index].discoveryImpl().aliveMembership.Size(), fmt.Sprint(step, " Alive membership list is not empty, discovery instance", index)) + require.Zero(t, instances[index].discoveryImpl().deadMembership.Size(), fmt.Sprint(step, " Dead membership list is not empty, discovery instance", index)) } // Sleep until expire @@ -1560,23 +1560,23 @@ func TestAliveMsgStore(t *testing.T) { //Check new alive msgs for _, msg := range aliveMsgs { - assert.True(t, instances[0].discoveryImpl().msgStore.CheckValid(msg), "aliveMsgStore CheckValid returns false on new AliveMsg") + require.True(t, instances[0].discoveryImpl().msgStore.CheckValid(msg), "aliveMsgStore CheckValid returns false on new AliveMsg") } // Add new alive msgs for _, msg := range aliveMsgs { - assert.True(t, instances[0].discoveryImpl().msgStore.Add(msg), "aliveMsgStore Add returns false on new AliveMsg") + require.True(t, instances[0].discoveryImpl().msgStore.Add(msg), "aliveMsgStore Add returns false on new AliveMsg") } // Check exist alive msgs for _, msg := range aliveMsgs { - assert.False(t, instances[0].discoveryImpl().msgStore.CheckValid(msg), "aliveMsgStore CheckValid returns true on existing AliveMsg") + require.False(t, instances[0].discoveryImpl().msgStore.CheckValid(msg), "aliveMsgStore CheckValid returns true on existing AliveMsg") } // Check non-alive msgs for _, msg := range memReqMsgs { - assert.Panics(t, func() { instances[1].discoveryImpl().msgStore.CheckValid(msg) }, "aliveMsgStore CheckValid should panic on new MembershipRequest msg") - assert.Panics(t, func() { instances[1].discoveryImpl().msgStore.Add(msg) }, "aliveMsgStore Add should panic on new MembershipRequest msg") + require.Panics(t, func() { instances[1].discoveryImpl().msgStore.CheckValid(msg) }, "aliveMsgStore CheckValid should panic on new MembershipRequest msg") + require.Panics(t, func() { instances[1].discoveryImpl().msgStore.Add(msg) }, "aliveMsgStore Add should panic on new MembershipRequest msg") } } @@ -1598,8 +1598,8 @@ func TestMemRespDisclosurePol(t *testing.T) { assertMembership(t, []*gossipInstance{d1, d3}, 2) // d2 doesn't know about any one because the bootstrap peer is ignoring it due to custom policy assertMembership(t, []*gossipInstance{d2}, 0) - assert.Zero(t, d2.receivedMsgCount()) - assert.NotZero(t, d2.sentMsgCount()) + require.Zero(t, d2.receivedMsgCount()) + require.NotZero(t, d2.sentMsgCount()) } func TestMembersByID(t *testing.T) { @@ -1608,9 +1608,9 @@ func TestMembersByID(t *testing.T) { {PKIid: common.PKIidType("p1"), Endpoint: "p1"}, } byID := members.ByID() - assert.Len(t, byID, 2) - assert.Equal(t, "p0", byID["p0"].Endpoint) - assert.Equal(t, "p1", byID["p1"].Endpoint) + require.Len(t, byID, 2) + require.Equal(t, "p0", byID["p0"].Endpoint) + require.Equal(t, "p1", byID["p1"].Endpoint) } func TestFilter(t *testing.T) { @@ -1626,7 +1626,7 @@ func TestFilter(t *testing.T) { cc := member.Properties.Chaincodes[0] return cc.Version == "2.0" && cc.Name == "cc" }) - assert.Equal(t, Members{members[1]}, res) + require.Equal(t, Members{members[1]}, res) } func TestMap(t *testing.T) { @@ -1646,10 +1646,10 @@ func TestMap(t *testing.T) { return member } - assert.Equal(t, expectedMembers, members.Map(addProperty)) + require.Equal(t, expectedMembers, members.Map(addProperty)) // Ensure original members didn't change - assert.Nil(t, members[0].Properties) - assert.Nil(t, members[1].Properties) + require.Nil(t, members[0].Properties) + require.Nil(t, members[1].Properties) } func TestMembersIntersect(t *testing.T) { @@ -1661,7 +1661,7 @@ func TestMembersIntersect(t *testing.T) { {PKIid: common.PKIidType("p1"), Endpoint: "p1"}, {PKIid: common.PKIidType("p2"), Endpoint: "p2"}, } - assert.Equal(t, Members{{PKIid: common.PKIidType("p1"), Endpoint: "p1"}}, members1.Intersect(members2)) + require.Equal(t, Members{{PKIid: common.PKIidType("p1"), Endpoint: "p1"}}, members1.Intersect(members2)) } func TestPeerIsolation(t *testing.T) { @@ -1730,7 +1730,7 @@ func TestMembershipAfterExpiration(t *testing.T) { } numMsgsFound := 0 l, err := zap.NewDevelopment() - assert.NoError(t, err) + require.NoError(t, err) expired := make(chan struct{}) logger := flogging.NewFabricLogger(l, zap.Hooks(func(entry zapcore.Entry) error { // do nothing if we already found all the expectedMsgs @@ -1774,7 +1774,7 @@ func TestMembershipAfterExpiration(t *testing.T) { } // peer2's deadMembership should contain the anchor peer deadMemeberShip := instances[peersNum-1].discoveryImpl().deadMembership - assert.Equal(t, 1, deadMemeberShip.Size()) + require.Equal(t, 1, deadMemeberShip.Size()) assertMembership(t, instances[peersNum-1:], 0) // Start again peer0 and peer1 and wait for all the peers to get full membership. @@ -1821,7 +1821,7 @@ func waitUntilTimeoutOrFail(t *testing.T, pred func() bool, timeout time.Duratio } time.Sleep(timeout / 10) } - assert.Fail(t, "Timeout expired!") + require.Fail(t, "Timeout expired!") } func waitUntilOrFailBlocking(t *testing.T, f func()) { @@ -1836,7 +1836,7 @@ func waitUntilOrFailBlocking(t *testing.T, f func()) { case <-successChan: return } - assert.Fail(t, "Timeout expired!") + require.Fail(t, "Timeout expired!") } func stopInstances(t *testing.T, instances []*gossipInstance) { @@ -1876,7 +1876,7 @@ func assertMembership(t *testing.T, instances []*gossipInstance, expectedNum int } wg.Wait() - assert.NoError(t, ctx.Err(), "Timeout expired!") + require.NoError(t, ctx.Err(), "Timeout expired!") } func portsOfMembers(members []NetworkMember) []int { diff --git a/gossip/election/adapter_test.go b/gossip/election/adapter_test.go index 4f7ed526a07..7cdf33fbc22 100644 --- a/gossip/election/adapter_test.go +++ b/gossip/election/adapter_test.go @@ -22,7 +22,7 @@ import ( "github.com/hyperledger/fabric/gossip/metrics/mocks" "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func init() { @@ -341,22 +341,22 @@ func TestReportMetrics(t *testing.T) { adapter.ReportMetrics(true) - assert.Equal(t, + require.Equal(t, []string{"channel", "channel0"}, testMetricProvider.FakeDeclarationGauge.WithArgsForCall(0), ) - assert.EqualValues(t, + require.EqualValues(t, 1, testMetricProvider.FakeDeclarationGauge.SetArgsForCall(0), ) adapter.ReportMetrics(false) - assert.Equal(t, + require.Equal(t, []string{"channel", "channel0"}, testMetricProvider.FakeDeclarationGauge.WithArgsForCall(1), ) - assert.EqualValues(t, + require.EqualValues(t, 0, testMetricProvider.FakeDeclarationGauge.SetArgsForCall(1), ) diff --git a/gossip/election/election_test.go b/gossip/election/election_test.go index 9e8987e18a9..db896e71289 100644 --- a/gossip/election/election_test.go +++ b/gossip/election/election_test.go @@ -14,8 +14,8 @@ import ( "time" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) const ( @@ -232,7 +232,7 @@ func TestMetrics(t *testing.T) { p.AssertCalled(t, "ReportMetrics", true) p.Yield() - assert.False(t, p.IsLeader()) + require.False(t, p.IsLeader()) // Ensure declaration for not being a leader was sent wgFollower.Wait() @@ -248,8 +248,8 @@ func TestInitPeersAtSameTime(t *testing.T) { time.Sleep(testStartupGracePeriod + testLeaderElectionDuration) leaders := waitForLeaderElection(t, peers) isP0leader := peers[len(peers)-1].IsLeader() - assert.True(t, isP0leader, "p0 isn't a leader. Leaders are: %v", leaders) - assert.Len(t, leaders, 1, "More than 1 leader elected") + require.True(t, isP0leader, "p0 isn't a leader. Leaders are: %v", leaders) + require.Len(t, leaders, 1, "More than 1 leader elected") waitForBoolFunc(t, peers[len(peers)-1].isLeaderFromCallback, true, "Leadership callback result is wrong for ", peers[len(peers)-1].id) } @@ -258,7 +258,7 @@ func TestInitPeersStartAtIntervals(t *testing.T) { // expected outcome: the first peer is the leader although its ID is highest peers := createPeers(testStartupGracePeriod+testLeadershipDeclarationInterval, 3, 2, 1, 0) waitForLeaderElection(t, peers) - assert.True(t, peers[0].IsLeader()) + require.True(t, peers[0].IsLeader()) } func TestStop(t *testing.T) { @@ -286,7 +286,7 @@ func TestStop(t *testing.T) { time.Sleep(testLeaderAliveThreshold) gossipCounterAfterStop := atomic.LoadInt32(&gossipCounter) time.Sleep(testLeaderAliveThreshold * 5) - assert.Equal(t, gossipCounterAfterStop, atomic.LoadInt32(&gossipCounter)) + require.Equal(t, gossipCounterAfterStop, atomic.LoadInt32(&gossipCounter)) } func TestConvergence(t *testing.T) { @@ -297,8 +297,8 @@ func TestConvergence(t *testing.T) { peers2 := createPeers(0, 4, 5, 6, 7) leaders1 := waitForLeaderElection(t, peers1) leaders2 := waitForLeaderElection(t, peers2) - assert.Len(t, leaders1, 1, "Peer group 1 was suppose to have 1 leader exactly") - assert.Len(t, leaders2, 1, "Peer group 2 was suppose to have 1 leader exactly") + require.Len(t, leaders1, 1, "Peer group 1 was suppose to have 1 leader exactly") + require.Len(t, leaders2, 1, "Peer group 2 was suppose to have 1 leader exactly") combinedPeers := append(peers1, peers2...) var allPeerIds []Peer @@ -323,8 +323,8 @@ func TestConvergence(t *testing.T) { time.Sleep(testLeaderAliveThreshold * 5) finalLeaders := waitForLeaderElection(t, combinedPeers) - assert.Len(t, finalLeaders, 1, "Combined peer group was suppose to have 1 leader exactly") - assert.Equal(t, leaders1[0], finalLeaders[0], "Combined peer group has different leader than expected:") + require.Len(t, finalLeaders, 1, "Combined peer group was suppose to have 1 leader exactly") + require.Equal(t, leaders1[0], finalLeaders[0], "Combined peer group has different leader than expected:") for _, p := range combinedPeers { if p.id == finalLeaders[0] { @@ -345,13 +345,13 @@ func TestLeadershipTakeover(t *testing.T) { // expected outcome: the peer that takes over is the peer with lowest ID peers := createPeers(testStartupGracePeriod+testLeadershipDeclarationInterval, 5, 4, 3, 2) leaders := waitForLeaderElection(t, peers) - assert.Len(t, leaders, 1, "Only 1 leader should have been elected") - assert.Equal(t, "p5", leaders[0]) + require.Len(t, leaders, 1, "Only 1 leader should have been elected") + require.Equal(t, "p5", leaders[0]) peers[0].Stop() time.Sleep(testLeadershipDeclarationInterval + testLeaderAliveThreshold*3) leaders = waitForLeaderElection(t, peers[1:]) - assert.Len(t, leaders, 1, "Only 1 leader should have been elected") - assert.Equal(t, "p2", leaders[0]) + require.Len(t, leaders, 1, "Only 1 leader should have been elected") + require.Equal(t, "p2", leaders[0]) } func TestYield(t *testing.T) { @@ -363,19 +363,19 @@ func TestYield(t *testing.T) { // (2) The old leader doesn't take back its leadership peers := createPeers(0, 0, 1, 2, 3, 4, 5) leaders := waitForLeaderElection(t, peers) - assert.Len(t, leaders, 1, "Only 1 leader should have been elected") - assert.Equal(t, "p0", leaders[0]) + require.Len(t, leaders, 1, "Only 1 leader should have been elected") + require.Equal(t, "p0", leaders[0]) peers[0].Yield() // Ensure the callback was called with 'false' - assert.True(t, peers[0].isCallbackInvoked()) - assert.False(t, peers[0].isLeaderFromCallback()) + require.True(t, peers[0].isCallbackInvoked()) + require.False(t, peers[0].isLeaderFromCallback()) // Clear the callback invoked flag peers[0].lock.Lock() peers[0].callbackInvoked = false peers[0].lock.Unlock() // Yield again and ensure it isn't called again peers[0].Yield() - assert.False(t, peers[0].isCallbackInvoked()) + require.False(t, peers[0].isCallbackInvoked()) ensureP0isNotAleader := func() bool { leaders := waitForLeaderElection(t, peers) @@ -394,7 +394,7 @@ func TestYieldSinglePeer(t *testing.T) { peers := createPeers(0, 0) waitForLeaderElection(t, peers) peers[0].Yield() - assert.False(t, peers[0].IsLeader()) + require.False(t, peers[0].IsLeader()) waitForLeaderElection(t, peers) } @@ -403,16 +403,16 @@ func TestYieldAllPeers(t *testing.T) { // Ensure the first peer is the leader in the end after both peers yield peers := createPeers(0, 0, 1) leaders := waitForLeaderElection(t, peers) - assert.Len(t, leaders, 1, "Only 1 leader should have been elected") - assert.Equal(t, "p0", leaders[0]) + require.Len(t, leaders, 1, "Only 1 leader should have been elected") + require.Equal(t, "p0", leaders[0]) peers[0].Yield() leaders = waitForLeaderElection(t, peers) - assert.Len(t, leaders, 1, "Only 1 leader should have been elected") - assert.Equal(t, "p1", leaders[0]) + require.Len(t, leaders, 1, "Only 1 leader should have been elected") + require.Equal(t, "p1", leaders[0]) peers[1].Yield() leaders = waitForLeaderElection(t, peers) - assert.Len(t, leaders, 1, "Only 1 leader should have been elected") - assert.Equal(t, "p0", leaders[0]) + require.Len(t, leaders, 1, "Only 1 leader should have been elected") + require.Equal(t, "p0", leaders[0]) } func TestPartition(t *testing.T) { @@ -423,8 +423,8 @@ func TestPartition(t *testing.T) { // Expected outcome 2: p0 is the leader once again peers := createPeers(0, 5, 4, 3, 2, 1, 0) leaders := waitForLeaderElection(t, peers) - assert.Len(t, leaders, 1, "Only 1 leader should have been elected") - assert.Equal(t, "p0", leaders[0]) + require.Len(t, leaders, 1, "Only 1 leader should have been elected") + require.Equal(t, "p0", leaders[0]) waitForBoolFunc(t, peers[len(peers)-1].isLeaderFromCallback, true, "Leadership callback result is wrong for %s", peers[len(peers)-1].id) for _, p := range peers { @@ -433,7 +433,7 @@ func TestPartition(t *testing.T) { } time.Sleep(testLeadershipDeclarationInterval + testLeaderAliveThreshold*2) leaders = waitForMultipleLeadersElection(t, peers, 6) - assert.Len(t, leaders, 6) + require.Len(t, leaders, 6) for _, p := range peers { waitForBoolFunc(t, p.isLeaderFromCallback, true, "Leadership callback result is wrong for %s", p.id) } @@ -446,8 +446,8 @@ func TestPartition(t *testing.T) { } time.Sleep(testLeadershipDeclarationInterval + testLeaderAliveThreshold*2) leaders = waitForLeaderElection(t, peers) - assert.Len(t, leaders, 1, "Only 1 leader should have been elected") - assert.Equal(t, "p0", leaders[0]) + require.Len(t, leaders, 1, "Only 1 leader should have been elected") + require.Equal(t, "p0", leaders[0]) for _, p := range peers { if p.id == leaders[0] { waitForBoolFunc(t, p.isLeaderFromCallback, true, "Leadership callback result is wrong for %s", p.id) @@ -468,7 +468,7 @@ func Test_peerIDString(t *testing.T) { {peerID{0, 1, 2, 3}, "00010203"}, } for _, tt := range tests { - assert.Equal(t, tt.expected, tt.input.String()) + require.Equal(t, tt.expected, tt.input.String()) } } @@ -480,5 +480,5 @@ func waitForBoolFunc(t *testing.T, f func() bool, expectedValue bool, msgAndArgs } time.Sleep(testPollInterval) } - assert.Fail(t, fmt.Sprintf("Should be %t", expectedValue), msgAndArgs...) + require.Fail(t, fmt.Sprintf("Should be %t", expectedValue), msgAndArgs...) } diff --git a/gossip/filter/filter_test.go b/gossip/filter/filter_test.go index 5bb3ba8cbbb..d49ed5bd420 100644 --- a/gossip/filter/filter_test.go +++ b/gossip/filter/filter_test.go @@ -12,12 +12,12 @@ import ( "github.com/hyperledger/fabric/gossip/comm" "github.com/hyperledger/fabric/gossip/common" "github.com/hyperledger/fabric/gossip/discovery" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSelectPolicies(t *testing.T) { - assert.True(t, SelectAllPolicy(discovery.NetworkMember{})) - assert.False(t, SelectNonePolicy(discovery.NetworkMember{})) + require.True(t, SelectAllPolicy(discovery.NetworkMember{})) + require.False(t, SelectNonePolicy(discovery.NetworkMember{})) } func TestCombineRoutingFilters(t *testing.T) { @@ -32,9 +32,9 @@ func TestCombineRoutingFilters(t *testing.T) { b := func(nm discovery.NetworkMember) bool { return nm.InternalEndpoint == "b" } - assert.True(t, CombineRoutingFilters(a, b)(nm)) - assert.False(t, CombineRoutingFilters(CombineRoutingFilters(a, b), SelectNonePolicy)(nm)) - assert.False(t, CombineRoutingFilters(a, b)(discovery.NetworkMember{InternalEndpoint: "b"})) + require.True(t, CombineRoutingFilters(a, b)(nm)) + require.False(t, CombineRoutingFilters(CombineRoutingFilters(a, b), SelectNonePolicy)(nm)) + require.False(t, CombineRoutingFilters(a, b)(discovery.NetworkMember{InternalEndpoint: "b"})) } func TestAnyMatch(t *testing.T) { @@ -53,28 +53,28 @@ func TestAnyMatch(t *testing.T) { } matched := AnyMatch(peers, matchB, matchC) - assert.Len(t, matched, 2) - assert.Contains(t, matched, peerB) - assert.Contains(t, matched, peerC) + require.Len(t, matched, 2) + require.Contains(t, matched, peerB) + require.Contains(t, matched, peerC) } func TestFirst(t *testing.T) { var peers []discovery.NetworkMember // nil slice - assert.Nil(t, First(nil, SelectAllPolicy)) + require.Nil(t, First(nil, SelectAllPolicy)) // empty slice peers = []discovery.NetworkMember{} - assert.Nil(t, First(peers, SelectAllPolicy)) + require.Nil(t, First(peers, SelectAllPolicy)) // first in slice with any marcher peerA := discovery.NetworkMember{Endpoint: "a"} peerB := discovery.NetworkMember{Endpoint: "b"} peers = []discovery.NetworkMember{peerA, peerB} - assert.Equal(t, &comm.RemotePeer{Endpoint: "a"}, First(peers, SelectAllPolicy)) + require.Equal(t, &comm.RemotePeer{Endpoint: "a"}, First(peers, SelectAllPolicy)) // second in slice with matcher that checks for a specific peer - assert.Equal(t, &comm.RemotePeer{Endpoint: "b"}, First(peers, func(nm discovery.NetworkMember) bool { + require.Equal(t, &comm.RemotePeer{Endpoint: "b"}, First(peers, func(nm discovery.NetworkMember) bool { return nm.PreferredEndpoint() == "b" })) } @@ -103,12 +103,12 @@ func TestSelectPeers(t *testing.T) { } // individual filters - assert.Len(t, SelectPeers(3, []discovery.NetworkMember{nm1, nm2, nm3}, a), 2) - assert.Len(t, SelectPeers(3, []discovery.NetworkMember{nm1, nm2, nm3}, b), 3) + require.Len(t, SelectPeers(3, []discovery.NetworkMember{nm1, nm2, nm3}, a), 2) + require.Len(t, SelectPeers(3, []discovery.NetworkMember{nm1, nm2, nm3}, b), 3) // combined filters crf := CombineRoutingFilters(a, b) - assert.Len(t, SelectPeers(3, []discovery.NetworkMember{nm1, nm2, nm3}, crf), 2) - assert.Len(t, SelectPeers(1, []discovery.NetworkMember{nm1, nm2, nm3}, crf), 1) + require.Len(t, SelectPeers(3, []discovery.NetworkMember{nm1, nm2, nm3}, crf), 2) + require.Len(t, SelectPeers(1, []discovery.NetworkMember{nm1, nm2, nm3}, crf), 1) } func BenchmarkSelectPeers(t *testing.B) { @@ -148,8 +148,8 @@ func BenchmarkSelectPeers(t *testing.B) { } t.StopTimer() - assert.Equal(t, l1, 2) - assert.Equal(t, l2, 3) - assert.Equal(t, l3, 2) - assert.Equal(t, l4, 1) + require.Equal(t, l1, 2) + require.Equal(t, l2, 3) + require.Equal(t, l3, 2) + require.Equal(t, l4, 1) } diff --git a/gossip/gossip/algo/pull_test.go b/gossip/gossip/algo/pull_test.go index 51131d1f59b..c1468de0c28 100644 --- a/gossip/gossip/algo/pull_test.go +++ b/gossip/gossip/algo/pull_test.go @@ -15,7 +15,7 @@ import ( "time" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func init() { @@ -164,7 +164,7 @@ func TestPullEngine_Add(t *testing.T) { defer inst1.Stop() inst1.Add("0") inst1.Add("0") - assert.True(t, inst1.PullEngine.state.Exists("0")) + require.True(t, inst1.PullEngine.state.Exists("0")) } func TestPullEngine_Remove(t *testing.T) { @@ -172,11 +172,11 @@ func TestPullEngine_Remove(t *testing.T) { inst1 := newPushPullTestInstance("p1", peers) defer inst1.Stop() inst1.Add("0") - assert.True(t, inst1.PullEngine.state.Exists("0")) + require.True(t, inst1.PullEngine.state.Exists("0")) inst1.Remove("0") - assert.False(t, inst1.PullEngine.state.Exists("0")) + require.False(t, inst1.PullEngine.state.Exists("0")) inst1.Remove("0") // remove twice - assert.False(t, inst1.PullEngine.state.Exists("0")) + require.False(t, inst1.PullEngine.state.Exists("0")) } func TestPullEngine_Stop(t *testing.T) { @@ -197,7 +197,7 @@ func TestPullEngine_Stop(t *testing.T) { inst1.stop() time.Sleep(time.Duration(800) * time.Millisecond) len2 := len(inst2.state.ToArray()) - assert.Equal(t, len1, len2, "PullEngine was still active after Stop() was invoked!") + require.Equal(t, len1, len2, "PullEngine was still active after Stop() was invoked!") } func TestPullEngineAll2AllWithIncrementalSpawning(t *testing.T) { @@ -221,7 +221,7 @@ func TestPullEngineAll2AllWithIncrementalSpawning(t *testing.T) { for i := 0; i < instanceCount; i++ { pID := fmt.Sprintf("p%d", i+1) - assert.Equal(t, instanceCount, len(peers[pID].state.ToArray())) + require.Equal(t, instanceCount, len(peers[pID].state.ToArray())) } } @@ -241,39 +241,39 @@ func TestPullEngineSelectiveUpdates(t *testing.T) { // Ensure inst2 sent a proper digest to inst1 inst1.hook(func(m interface{}) { if dig, isDig := m.(*digestMsg); isDig { - assert.True(t, util.IndexInSlice(dig.digest, "0", Strcmp) != -1) - assert.True(t, util.IndexInSlice(dig.digest, "1", Strcmp) != -1) - assert.True(t, util.IndexInSlice(dig.digest, "2", Strcmp) != -1) - assert.True(t, util.IndexInSlice(dig.digest, "3", Strcmp) != -1) + require.True(t, util.IndexInSlice(dig.digest, "0", Strcmp) != -1) + require.True(t, util.IndexInSlice(dig.digest, "1", Strcmp) != -1) + require.True(t, util.IndexInSlice(dig.digest, "2", Strcmp) != -1) + require.True(t, util.IndexInSlice(dig.digest, "3", Strcmp) != -1) } }) // Ensure inst1 requested only needed updates from inst2 inst2.hook(func(m interface{}) { if req, isReq := m.(*reqMsg); isReq { - assert.True(t, util.IndexInSlice(req.items, "1", Strcmp) == -1) - assert.True(t, util.IndexInSlice(req.items, "3", Strcmp) == -1) + require.True(t, util.IndexInSlice(req.items, "1", Strcmp) == -1) + require.True(t, util.IndexInSlice(req.items, "3", Strcmp) == -1) - assert.True(t, util.IndexInSlice(req.items, "0", Strcmp) != -1) - assert.True(t, util.IndexInSlice(req.items, "2", Strcmp) != -1) + require.True(t, util.IndexInSlice(req.items, "0", Strcmp) != -1) + require.True(t, util.IndexInSlice(req.items, "2", Strcmp) != -1) } }) // Ensure inst1 received only needed updates from inst2 inst1.hook(func(m interface{}) { if res, isRes := m.(*resMsg); isRes { - assert.True(t, util.IndexInSlice(res.items, "1", Strcmp) == -1) - assert.True(t, util.IndexInSlice(res.items, "3", Strcmp) == -1) + require.True(t, util.IndexInSlice(res.items, "1", Strcmp) == -1) + require.True(t, util.IndexInSlice(res.items, "3", Strcmp) == -1) - assert.True(t, util.IndexInSlice(res.items, "0", Strcmp) != -1) - assert.True(t, util.IndexInSlice(res.items, "2", Strcmp) != -1) + require.True(t, util.IndexInSlice(res.items, "0", Strcmp) != -1) + require.True(t, util.IndexInSlice(res.items, "2", Strcmp) != -1) } }) inst1.setNextPeerSelection([]string{"p2"}) time.Sleep(time.Duration(2000) * time.Millisecond) - assert.Equal(t, len(inst2.state.ToArray()), len(inst1.state.ToArray())) + require.Equal(t, len(inst2.state.ToArray()), len(inst1.state.ToArray())) } func TestByzantineResponder(t *testing.T) { @@ -312,7 +312,7 @@ func TestByzantineResponder(t *testing.T) { // the response is from p3 if util.IndexInSlice(res.items, "6", Strcmp) != -1 { // inst1 is currently accepting responses - assert.Equal(t, int32(1), atomic.LoadInt32(&(inst1.acceptingResponses)), "inst1 is not accepting digests") + require.Equal(t, int32(1), atomic.LoadInt32(&(inst1.acceptingResponses)), "inst1 is not accepting digests") } } }) @@ -321,15 +321,15 @@ func TestByzantineResponder(t *testing.T) { time.Sleep(time.Duration(1000) * time.Millisecond) - assert.Equal(t, int32(1), atomic.LoadInt32(&receivedDigestFromInst3), "inst1 hasn't received a digest from inst3") + require.Equal(t, int32(1), atomic.LoadInt32(&receivedDigestFromInst3), "inst1 hasn't received a digest from inst3") - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "1", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "2", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "3", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "1", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "2", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "3", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "5", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "6", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "7", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "5", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "6", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "7", Strcmp) == -1) } @@ -354,10 +354,10 @@ func TestMultipleInitiators(t *testing.T) { time.Sleep(time.Duration(2000) * time.Millisecond) for _, inst := range []*pullTestInstance{inst1, inst2, inst3} { - assert.True(t, util.IndexInSlice(inst.state.ToArray(), "1", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst.state.ToArray(), "2", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst.state.ToArray(), "3", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst.state.ToArray(), "4", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst.state.ToArray(), "1", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst.state.ToArray(), "2", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst.state.ToArray(), "3", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst.state.ToArray(), "4", Strcmp) != -1) } } @@ -382,15 +382,15 @@ func TestLatePeers(t *testing.T) { time.Sleep(time.Duration(2000) * time.Millisecond) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "1", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "2", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "3", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "4", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "1", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "2", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "3", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "4", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "5", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "6", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "7", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "8", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "5", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "6", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "7", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "8", Strcmp) != -1) } @@ -411,15 +411,15 @@ func TestBiDiUpdates(t *testing.T) { time.Sleep(time.Duration(2000) * time.Millisecond) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "0", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "1", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "2", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst1.state.ToArray(), "3", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "0", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "1", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "2", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst1.state.ToArray(), "3", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst2.state.ToArray(), "0", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst2.state.ToArray(), "1", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst2.state.ToArray(), "2", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst2.state.ToArray(), "3", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst2.state.ToArray(), "0", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst2.state.ToArray(), "1", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst2.state.ToArray(), "2", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst2.state.ToArray(), "3", Strcmp) != -1) } @@ -476,9 +476,9 @@ func TestSpread(t *testing.T) { lock.Lock() for pI, counter := range chooseCounters { if pI == "p5" { - assert.Equal(t, 0, counter) + require.Equal(t, 0, counter) } else { - assert.True(t, counter > 0, "%s was not selected!", pI) + require.True(t, counter > 0, "%s was not selected!", pI) } } lock.Unlock() @@ -513,19 +513,19 @@ func TestFilter(t *testing.T) { time.Sleep(time.Second * 2) - assert.True(t, util.IndexInSlice(inst2.state.ToArray(), "0", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst2.state.ToArray(), "1", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst2.state.ToArray(), "2", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst2.state.ToArray(), "3", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst2.state.ToArray(), "4", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst2.state.ToArray(), "5", Strcmp) == -1) - - assert.True(t, util.IndexInSlice(inst3.state.ToArray(), "0", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst3.state.ToArray(), "1", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst3.state.ToArray(), "2", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst3.state.ToArray(), "3", Strcmp) != -1) - assert.True(t, util.IndexInSlice(inst3.state.ToArray(), "4", Strcmp) == -1) - assert.True(t, util.IndexInSlice(inst3.state.ToArray(), "5", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst2.state.ToArray(), "0", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst2.state.ToArray(), "1", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst2.state.ToArray(), "2", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst2.state.ToArray(), "3", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst2.state.ToArray(), "4", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst2.state.ToArray(), "5", Strcmp) == -1) + + require.True(t, util.IndexInSlice(inst3.state.ToArray(), "0", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst3.state.ToArray(), "1", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst3.state.ToArray(), "2", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst3.state.ToArray(), "3", Strcmp) != -1) + require.True(t, util.IndexInSlice(inst3.state.ToArray(), "4", Strcmp) == -1) + require.True(t, util.IndexInSlice(inst3.state.ToArray(), "5", Strcmp) != -1) } diff --git a/gossip/gossip/anchor_test.go b/gossip/gossip/anchor_test.go index 6995e2d926b..da2ac60340a 100644 --- a/gossip/gossip/anchor_test.go +++ b/gossip/gossip/anchor_test.go @@ -23,7 +23,7 @@ import ( "github.com/hyperledger/fabric/gossip/protoext" utilgossip "github.com/hyperledger/fabric/gossip/util" "github.com/hyperledger/fabric/internal/pkg/comm" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -200,18 +200,18 @@ func TestAnchorPeer(t *testing.T) { if index != 0 { return } - assert.NotNil(t, m.GetConn()) + require.NotNil(t, m.GetConn()) } memReqWithInternalEndpoint := func(t *testing.T, index int, m *receivedMsg) { if m.GetMemReq() == nil { return } - assert.True(t, index > 0) + require.True(t, index > 0) req := m.GetMemReq() am, err := protoext.EnvelopeToGossipMessage(req.SelfInformation) - assert.NoError(t, err) - assert.NotEmpty(t, protoext.InternalEndpoint(am.GetSecretEnvelope())) + require.NoError(t, err) + require.NotEmpty(t, protoext.InternalEndpoint(am.GetSecretEnvelope())) m.respond(memResp(m.Nonce, fmt.Sprintf("127.0.0.1:%d", port3))) } @@ -219,11 +219,11 @@ func TestAnchorPeer(t *testing.T) { if m.GetMemReq() == nil { return } - assert.True(t, index > 0) + require.True(t, index > 0) req := m.GetMemReq() am, err := protoext.EnvelopeToGossipMessage(req.SelfInformation) - assert.NoError(t, err) - assert.Nil(t, am.GetSecretEnvelope()) + require.NoError(t, err) + require.Nil(t, am.GetSecretEnvelope()) m.respond(memResp(m.Nonce, fmt.Sprintf("127.0.0.1:%d", port4))) } @@ -293,11 +293,11 @@ func TestBootstrapPeerMisConfiguration(t *testing.T) { onlyHandshakes := func(t *testing.T, index int, m *receivedMsg) { // Ensure all messages sent are connection establishment messages // that are probing attempts - assert.NotNil(t, m.GetConn()) + require.NotNil(t, m.GetConn()) // If the logic we test in this test- fails, // the first message would be a membership request, // so this assertion would capture it and print a corresponding failure - assert.Nil(t, m.GetMemReq()) + require.Nil(t, m.GetMemReq()) } // Initialize a peer mock that would wait for 3 messages sent to it bs1 := newPeerMockWithGRPC(port1, grpc1, cert1, 3, t, onlyHandshakes) @@ -328,12 +328,12 @@ func TestBootstrapPeerMisConfiguration(t *testing.T) { select { case <-got3Handshakes: case <-time.After(time.Second * 15): - assert.Fail(t, "Didn't detect 3 handshake attempts to the bootstrap peer from orgB") + require.Fail(t, "Didn't detect 3 handshake attempts to the bootstrap peer from orgB") } select { case <-membershipRequestsSent: case <-time.After(time.Second * 15): - assert.Fail(t, "Bootstrap peer didn't receive a membership request from the peer within a timely manner") + require.Fail(t, "Bootstrap peer didn't receive a membership request from the peer within a timely manner") } } diff --git a/gossip/gossip/batcher_test.go b/gossip/gossip/batcher_test.go index d4365c02bfe..8ed3113933f 100644 --- a/gossip/gossip/batcher_test.go +++ b/gossip/gossip/batcher_test.go @@ -13,7 +13,7 @@ import ( "time" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func init() { @@ -26,7 +26,7 @@ func TestBatchingEmitterAddAndSize(t *testing.T) { emitter.Add(1) emitter.Add(2) emitter.Add(3) - assert.Equal(t, 3, emitter.Size()) + require.Equal(t, 3, emitter.Size()) } func TestBatchingEmitterStop(t *testing.T) { @@ -41,7 +41,7 @@ func TestBatchingEmitterStop(t *testing.T) { time.Sleep(time.Duration(100) * time.Millisecond) emitter.Stop() time.Sleep(time.Duration(1000) * time.Millisecond) - assert.True(t, atomic.LoadInt32(&disseminationAttempts) < int32(5)) + require.True(t, atomic.LoadInt32(&disseminationAttempts) < int32(5)) } func TestBatchingEmitterExpiration(t *testing.T) { @@ -57,8 +57,8 @@ func TestBatchingEmitterExpiration(t *testing.T) { emitter.Add(1) time.Sleep(time.Duration(500) * time.Millisecond) - assert.Equal(t, int32(10), atomic.LoadInt32(&disseminationAttempts), "Inadequate amount of dissemination attempts detected") - assert.Equal(t, 0, emitter.Size()) + require.Equal(t, int32(10), atomic.LoadInt32(&disseminationAttempts), "Inadequate amount of dissemination attempts detected") + require.Equal(t, 0, emitter.Size()) } func TestBatchingEmitterCounter(t *testing.T) { @@ -91,10 +91,10 @@ func TestBatchingEmitterCounter(t *testing.T) { emitter.Stop() lock.Lock() - assert.Equal(t, 0, counters[4]) - assert.Equal(t, 1, counters[3]) - assert.Equal(t, 2, counters[2]) - assert.Equal(t, 3, counters[1]) + require.Equal(t, 0, counters[4]) + require.Equal(t, 1, counters[3]) + require.Equal(t, 2, counters[2]) + require.Equal(t, 3, counters[1]) lock.Unlock() } @@ -110,5 +110,5 @@ func TestBatchingEmitterBurstSizeCap(t *testing.T) { for i := 0; i < 50; i++ { emitter.Add(i) } - assert.Equal(t, int32(5), atomic.LoadInt32(&disseminationAttempts)) + require.Equal(t, int32(5), atomic.LoadInt32(&disseminationAttempts)) } diff --git a/gossip/gossip/certstore_test.go b/gossip/gossip/certstore_test.go index 8dbf91499d4..9ff547cb481 100644 --- a/gossip/gossip/certstore_test.go +++ b/gossip/gossip/certstore_test.go @@ -23,8 +23,8 @@ import ( "github.com/hyperledger/fabric/gossip/identity" "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func init() { @@ -140,11 +140,11 @@ func TestCertRevocation(t *testing.T) { defer pm.Stop() testCertificateUpdate(t, true, cStore) // Should have asked for an identity for the first time - assert.Len(t, askedForIdentity, 1) + require.Len(t, askedForIdentity, 1) // Drain channel <-askedForIdentity // Now it's 0 - assert.Len(t, askedForIdentity, 0) + require.Len(t, askedForIdentity, 0) sentHello := false l := sync.Mutex{} @@ -181,9 +181,9 @@ func TestCertRevocation(t *testing.T) { select { case <-time.After(time.Second * 5): case <-askedForIdentity: - assert.Fail(t, "Shouldn't have asked for an identity, because we already have it") + require.Fail(t, "Shouldn't have asked for an identity, because we already have it") } - assert.Len(t, askedForIdentity, 0) + require.Len(t, askedForIdentity, 0) // Revoke the identity cs.revoke(common.PKIidType("B")) cStore.suspectPeers(func(id api.PeerIdentityType) bool { @@ -196,7 +196,7 @@ func TestCertRevocation(t *testing.T) { select { case <-time.After(time.Second * 5): - assert.Fail(t, "Didn't ask for identity, but should have. Looks like identity hasn't expired") + require.Fail(t, "Didn't ask for identity, but should have. Looks like identity hasn't expired") case <-askedForIdentity: } } @@ -250,7 +250,7 @@ func TestCertExpiration(t *testing.T) { select { case <-identitiesGotViaPull: case <-time.After(time.Second * 15): - assert.Fail(t, "Didn't detect an identity gossiped via pull in a timely manner") + require.Fail(t, "Didn't detect an identity gossiped via pull in a timely manner") return } } @@ -274,16 +274,16 @@ func testCertificateUpdate(t *testing.T, shouldSucceed bool, certStore *certStor responseChan := make(chan *proto.GossipMessage, 1) hello.On("Respond", mock.Anything).Run(func(arg mock.Arguments) { msg := arg.Get(0).(*proto.GossipMessage) - assert.NotNil(t, msg.GetDataDig()) + require.NotNil(t, msg.GetDataDig()) responseChan <- msg }) certStore.handleMessage(hello) select { case msg := <-responseChan: if shouldSucceed { - assert.Len(t, msg.GetDataDig().Digests, 2, "Valid identity hasn't entered the certStore") + require.Len(t, msg.GetDataDig().Digests, 2, "Valid identity hasn't entered the certStore") } else { - assert.Len(t, msg.GetDataDig().Digests, 1, "Mismatched identity has been injected into certStore") + require.Len(t, msg.GetDataDig().Digests, 1, "Mismatched identity has been injected into certStore") } case <-time.After(time.Second): t.Fatal("Didn't respond with a digest message in a timely manner") diff --git a/gossip/gossip/channel/channel_test.go b/gossip/gossip/channel/channel_test.go index 3e656532ea0..45c502c517c 100644 --- a/gossip/gossip/channel/channel_test.go +++ b/gossip/gossip/channel/channel_test.go @@ -30,8 +30,8 @@ import ( "github.com/hyperledger/fabric/gossip/metrics/mocks" "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -302,8 +302,8 @@ func TestBadInput(t *testing.T) { adapter.On("DeMultiplex", mock.Anything) gc := NewGossipChannel(pkiIDInOrg1, orgInChannelA, cs, channelA, adapter, &joinChanMsg{}, disabledMetrics, nil).(*gossipChannel) - assert.False(t, gc.verifyMsg(nil)) - assert.False(t, gc.verifyMsg(&receivedMsg{msg: nil, PKIID: nil})) + require.False(t, gc.verifyMsg(nil)) + require.False(t, gc.verifyMsg(&receivedMsg{msg: nil, PKIID: nil})) } func TestSelf(t *testing.T) { @@ -322,9 +322,9 @@ func TestSelf(t *testing.T) { gMsg := gc.Self().GossipMessage env := gc.Self().Envelope sMsg, _ := protoext.EnvelopeToGossipMessage(env) - assert.True(t, gproto.Equal(gMsg, sMsg.GossipMessage)) - assert.Equal(t, gMsg.GetStateInfo().Properties.LedgerHeight, uint64(1)) - assert.Equal(t, gMsg.GetStateInfo().PkiId, []byte("1")) + require.True(t, gproto.Equal(gMsg, sMsg.GossipMessage)) + require.Equal(t, gMsg.GetStateInfo().Properties.LedgerHeight, uint64(1)) + require.Equal(t, gMsg.GetStateInfo().PkiId, []byte("1")) } func TestMsgStoreNotExpire(t *testing.T) { @@ -388,7 +388,7 @@ func TestMsgStoreNotExpire(t *testing.T) { case msg := <-sentMessages: for _, el := range msg.GetStateSnapshot().Elements { sMsg, err := protoext.EnvelopeToGossipMessage(el) - assert.NoError(t, err) + require.NoError(t, err) outChan <- sMsg } } @@ -396,11 +396,11 @@ func TestMsgStoreNotExpire(t *testing.T) { c := make(chan *protoext.SignedGossipMessage, 3) simulateStateInfoRequest(pkiID2, c) - assert.Len(t, c, 3) + require.Len(t, c, 3) c = make(chan *protoext.SignedGossipMessage, 3) simulateStateInfoRequest(pkiID3, c) - assert.Len(t, c, 3) + require.Len(t, c, 3) // Now simulate an expiration of peer 3 in the membership view adapter.On("Lookup", pkiID1).Return(&peer1) @@ -412,11 +412,11 @@ func TestMsgStoreNotExpire(t *testing.T) { c = make(chan *protoext.SignedGossipMessage, 3) simulateStateInfoRequest(pkiID2, c) - assert.Len(t, c, 2) + require.Len(t, c, 2) c = make(chan *protoext.SignedGossipMessage, 3) simulateStateInfoRequest(pkiID3, c) - assert.Len(t, c, 2) + require.Len(t, c, 2) } func TestLeaveChannel(t *testing.T) { @@ -452,21 +452,21 @@ func TestLeaveChannel(t *testing.T) { msg := arguments.Get(0).(*protoext.SignedGossipMessage) if protoext.IsPullMsg(msg.GossipMessage) { helloPullWG.Done() - assert.False(t, gc.(*gossipChannel).hasLeftChannel()) + require.False(t, gc.(*gossipChannel).hasLeftChannel()) } }) gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1, msg: createStateInfoMsg(1, pkiIDInOrg1, channelA)}) gc.HandleMessage(&receivedMsg{PKIID: pkiIDinOrg2, msg: createStateInfoMsg(1, pkiIDinOrg2, channelA)}) // Have some peer send a block to us, so we can send some peer a digest when hello is sent to us gc.HandleMessage(&receivedMsg{msg: createDataMsg(2, channelA), PKIID: pkiIDInOrg1}) - assert.Len(t, gc.GetPeers(), 2) + require.Len(t, gc.GetPeers(), 2) // Now, have peer in org2 "leave the channel" by publishing is an update stateInfoMsg := &receivedMsg{PKIID: pkiIDinOrg2, msg: createStateInfoMsg(0, pkiIDinOrg2, channelA)} stateInfoMsg.GetGossipMessage().GetStateInfo().Properties.LeftChannel = true gc.HandleMessage(stateInfoMsg) - assert.Len(t, gc.GetPeers(), 1) + require.Len(t, gc.GetPeers(), 1) // Ensure peer in org1 remained and peer in org2 is skipped - assert.Equal(t, pkiIDInOrg1, gc.GetPeers()[0].PKIid) + require.Equal(t, pkiIDInOrg1, gc.GetPeers()[0].PKIid) var digestSendTime int32 var DigestSentWg sync.WaitGroup DigestSentWg.Add(1) @@ -474,7 +474,7 @@ func TestLeaveChannel(t *testing.T) { hello.On("Respond", mock.Anything).Run(func(arguments mock.Arguments) { atomic.AddInt32(&digestSendTime, 1) // Ensure we only respond with digest before we leave the channel - assert.Equal(t, int32(1), atomic.LoadInt32(&digestSendTime)) + require.Equal(t, int32(1), atomic.LoadInt32(&digestSendTime)) DigestSentWg.Done() }) // Wait until we send a hello pull message @@ -486,7 +486,7 @@ func TestLeaveChannel(t *testing.T) { // Send another hello. Shouldn't respond go gc.HandleMessage(hello) // Ensure it doesn't know now any other peer - assert.Len(t, gc.GetPeers(), 0) + require.Len(t, gc.GetPeers(), 0) // Sleep 3 times the pull interval. // we're not supposed to send a pull during this time. time.Sleep(conf.PullInterval * 3) @@ -526,7 +526,7 @@ func TestChannelPeriodicalPublishStateInfo(t *testing.T) { msg = m } - assert.Equal(t, ledgerHeight, int(msg.GetStateInfo().Properties.LedgerHeight)) + require.Equal(t, ledgerHeight, int(msg.GetStateInfo().Properties.LedgerHeight)) } func TestChannelMsgStoreEviction(t *testing.T) { @@ -613,16 +613,16 @@ func TestChannelMsgStoreEviction(t *testing.T) { t.Fatal("Didn't reply with a digest on time") } // Only 1 digest sent - assert.Len(t, msgSentFromPullMediator, 1) + require.Len(t, msgSentFromPullMediator, 1) msg := <-msgSentFromPullMediator // It's a digest and not anything else, like an update - assert.True(t, protoext.IsDigestMsg(msg)) - assert.Len(t, msg.GetDataDig().Digests, adapter.GetConf().MaxBlockCountToStore+1) + require.True(t, protoext.IsDigestMsg(msg)) + require.Len(t, msg.GetDataDig().Digests, adapter.GetConf().MaxBlockCountToStore+1) // Check that the last sequences are kept. // Since we checked the length, it proves that the old blocks were discarded, since we had much more // total blocks overall than our capacity for seq := range lastPullPhase { - assert.Contains(t, msg.GetDataDig().Digests, []byte(fmt.Sprintf("%d", seq))) + require.Contains(t, msg.GetDataDig().Digests, []byte(fmt.Sprintf("%d", seq))) } } @@ -640,7 +640,7 @@ func TestChannelPull(t *testing.T) { return } // The peer is supposed to de-multiplex 2 ledger blocks - assert.True(t, protoext.IsDataMsg(msg.GossipMessage)) + require.True(t, protoext.IsDataMsg(msg.GossipMessage)) receivedBlocksChan <- msg }) gc := NewGossipChannel(pkiIDInOrg1, orgInChannelA, cs, channelA, adapter, &joinChanMsg{}, disabledMetrics, nil) @@ -657,7 +657,7 @@ func TestChannelPull(t *testing.T) { case <-time.After(time.Second * 5): t.Fatal("Haven't received blocks on time") case msg := <-receivedBlocksChan: - assert.Equal(t, uint64(expectedSeq), msg.GetDataMsg().Payload.SeqNum) + require.Equal(t, uint64(expectedSeq), msg.GetDataMsg().Payload.SeqNum) } } } @@ -704,9 +704,9 @@ func TestChannelPullAccessControl(t *testing.T) { } atomic.StoreInt32(&sentHello, int32(1)) peerID := string(arg.Get(1).([]*comm.RemotePeer)[0].PKIID) - assert.Equal(t, "1", peerID) - assert.NotEqual(t, "2", peerID, "Sent hello to peer 2 but it's in a different org") - assert.NotEqual(t, "3", peerID, "Sent hello to peer 3 but it's in a different org") + require.Equal(t, "1", peerID) + require.NotEqual(t, "2", peerID, "Sent hello to peer 2 but it's in a different org") + require.NotEqual(t, "3", peerID, "Sent hello to peer 3 but it's in a different org") }) jcm := &joinChanMsg{ @@ -735,7 +735,7 @@ func TestChannelPullAccessControl(t *testing.T) { select { case <-respondedChan: case <-time.After(time.Second): - assert.Fail(t, "Didn't reply to a hello within a timely manner") + require.Fail(t, "Didn't reply to a hello within a timely manner") } helloMsg = createHelloMsg(pkiID2) @@ -743,14 +743,14 @@ func TestChannelPullAccessControl(t *testing.T) { go gc.HandleMessage(helloMsg) select { case <-respondedChan: - assert.Fail(t, "Shouldn't have replied to a hello, because the peer is from a foreign org") + require.Fail(t, "Shouldn't have replied to a hello, because the peer is from a foreign org") case <-time.After(time.Second): } // Sleep a bit to let the gossip channel send out its hello messages time.Sleep(time.Second * 3) // Make sure we sent at least 1 hello message, otherwise the test passed vacuously - assert.Equal(t, int32(1), atomic.LoadInt32(&sentHello)) + require.Equal(t, int32(1), atomic.LoadInt32(&sentHello)) } func TestChannelPeerNotInChannel(t *testing.T) { @@ -768,14 +768,14 @@ func TestChannelPeerNotInChannel(t *testing.T) { // First thing, we test that blocks can only be received from peers that are in an org that's in the channel // Empty PKI-ID, should drop the block gc.HandleMessage(&receivedMsg{msg: dataMsgOfChannel(5, channelA)}) - assert.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) + require.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) // Known PKI-ID but not in channel, should drop the block gc.HandleMessage(&receivedMsg{msg: dataMsgOfChannel(5, channelA), PKIID: pkiIDinOrg2}) - assert.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) + require.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) // Known PKI-ID, and in channel, should add the block gc.HandleMessage(&receivedMsg{msg: dataMsgOfChannel(5, channelA), PKIID: pkiIDInOrg1}) - assert.Equal(t, 1, gc.(*gossipChannel).blockMsgStore.Size()) + require.Equal(t, 1, gc.(*gossipChannel).blockMsgStore.Size()) // Next, we make sure that the channel doesn't respond to pull messages (hello or requests) from peers that're not in the channel messageRelayer := func(arg mock.Arguments) { @@ -875,11 +875,11 @@ func TestChannelIsInChannel(t *testing.T) { adapter.On("Send", mock.Anything, mock.Anything) adapter.On("DeMultiplex", mock.Anything) - assert.False(t, gc.IsOrgInChannel(nil)) - assert.True(t, gc.IsOrgInChannel(orgInChannelA)) - assert.False(t, gc.IsOrgInChannel(orgNotInChannelA)) - assert.True(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDInOrg1})) - assert.False(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDinOrg2})) + require.False(t, gc.IsOrgInChannel(nil)) + require.True(t, gc.IsOrgInChannel(orgInChannelA)) + require.False(t, gc.IsOrgInChannel(orgNotInChannelA)) + require.True(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.False(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDinOrg2})) } func TestChannelIsSubscribed(t *testing.T) { @@ -893,7 +893,7 @@ func TestChannelIsSubscribed(t *testing.T) { adapter.On("Send", mock.Anything, mock.Anything) adapter.On("DeMultiplex", mock.Anything) gc.HandleMessage(&receivedMsg{msg: createStateInfoMsg(10, pkiIDInOrg1, channelA), PKIID: pkiIDInOrg1}) - assert.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) } func TestChannelAddToMessageStore(t *testing.T) { @@ -944,7 +944,7 @@ func TestChannelAddToMessageStore(t *testing.T) { } gc.HandleMessage(&receivedMsg{msg: createStateInfoMsg(10, pkiIDInOrg1, channelA), PKIID: pkiIDInOrg1}) - assert.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) } func TestChannelBlockExpiration(t *testing.T) { @@ -985,7 +985,7 @@ func TestChannelBlockExpiration(t *testing.T) { t.Fatal("Haven't responded to hello message within a time period") case msg := <-respondedChan: if protoext.IsDigestMsg(msg) { - assert.Equal(t, 1, len(msg.GetDataDig().Digests), "Number of digests returned by channel blockPuller incorrect") + require.Equal(t, 1, len(msg.GetDataDig().Digests), "Number of digests returned by channel blockPuller incorrect") } else { t.Fatal("Not correct pull msg type in response - expect digest") } @@ -1029,7 +1029,7 @@ func TestChannelBlockExpiration(t *testing.T) { t.Fatal("Haven't responded to hello message within a time period") case msg := <-respondedChan: if protoext.IsDigestMsg(msg) { - assert.Equal(t, 1, len(msg.GetDataDig().Digests), "Number of digests returned by channel blockPuller incorrect") + require.Equal(t, 1, len(msg.GetDataDig().Digests), "Number of digests returned by channel blockPuller incorrect") } else { t.Fatal("Not correct pull msg type in response - expect digest") } @@ -1054,24 +1054,24 @@ func TestChannelBadBlocks(t *testing.T) { // Send a valid block gc.HandleMessage(&receivedMsg{msg: createDataMsg(1, channelA), PKIID: pkiIDInOrg1}) - assert.Len(t, receivedMessages, 1) + require.Len(t, receivedMessages, 1) <-receivedMessages // drain // Send a block with wrong channel gc.HandleMessage(&receivedMsg{msg: createDataMsg(2, common.ChannelID("B")), PKIID: pkiIDInOrg1}) - assert.Len(t, receivedMessages, 0) + require.Len(t, receivedMessages, 0) // Send a block with empty payload dataMsg := createDataMsg(3, channelA) dataMsg.GetDataMsg().Payload = nil gc.HandleMessage(&receivedMsg{msg: dataMsg, PKIID: pkiIDInOrg1}) - assert.Len(t, receivedMessages, 0) + require.Len(t, receivedMessages, 0) // Send a block with a bad signature cs.Mock = mock.Mock{} cs.On("VerifyBlock", mock.Anything).Return(errors.New("Bad signature")) gc.HandleMessage(&receivedMsg{msg: createDataMsg(4, channelA), PKIID: pkiIDInOrg1}) - assert.Len(t, receivedMessages, 0) + require.Len(t, receivedMessages, 0) } func TestChannelPulledBadBlocks(t *testing.T) { @@ -1101,7 +1101,7 @@ func TestChannelPulledBadBlocks(t *testing.T) { adapter.On("DeMultiplex", mock.Anything) wg.Wait() gc.Stop() - assert.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) + require.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) // Test a pull with a badly signed block cs = &cryptoService{} @@ -1122,7 +1122,7 @@ func TestChannelPulledBadBlocks(t *testing.T) { pullPhase2 := simulatePullPhase(gc, t, &wg2, noop, 10, 11) adapter.On("Send", mock.Anything, mock.Anything).Run(pullPhase2) wg2.Wait() - assert.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) + require.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) // Test a pull with an empty block cs = &cryptoService{} @@ -1146,7 +1146,7 @@ func TestChannelPulledBadBlocks(t *testing.T) { pullPhase3 := simulatePullPhase(gc, t, &wg3, emptyBlock, 10, 11) adapter.On("Send", mock.Anything, mock.Anything).Run(pullPhase3) wg3.Wait() - assert.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) + require.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) // Test a pull with a non-block message cs = &cryptoService{} @@ -1171,7 +1171,7 @@ func TestChannelPulledBadBlocks(t *testing.T) { pullPhase4 := simulatePullPhase(gc, t, &wg4, nonBlockMsg, 10, 11) adapter.On("Send", mock.Anything, mock.Anything).Run(pullPhase4) wg4.Wait() - assert.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) + require.Equal(t, 0, gc.(*gossipChannel).blockMsgStore.Size()) } func TestChannelStateInfoSnapshot(t *testing.T) { @@ -1189,25 +1189,25 @@ func TestChannelStateInfoSnapshot(t *testing.T) { // Ensure we ignore stateInfo snapshots from peers not in the channel gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1, msg: stateInfoSnapshotForChannel(common.ChannelID("B"), createStateInfoMsg(4, pkiIDInOrg1, channelA))}) - assert.Empty(t, gc.GetPeers()) + require.Empty(t, gc.GetPeers()) // Ensure we ignore invalid stateInfo snapshots gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1, msg: stateInfoSnapshotForChannel(channelA, createStateInfoMsg(4, pkiIDInOrg1, common.ChannelID("B")))}) - assert.Empty(t, gc.GetPeers()) + require.Empty(t, gc.GetPeers()) // Ensure we ignore stateInfo messages from peers not in the channel gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1, msg: stateInfoSnapshotForChannel(channelA, createStateInfoMsg(4, pkiIDinOrg2, channelA))}) - assert.Empty(t, gc.GetPeers()) + require.Empty(t, gc.GetPeers()) // Ensure we ignore stateInfo snapshots from peers not in the org gc.HandleMessage(&receivedMsg{PKIID: pkiIDinOrg2, msg: stateInfoSnapshotForChannel(channelA, createStateInfoMsg(4, pkiIDInOrg1, channelA))}) - assert.Empty(t, gc.GetPeers()) + require.Empty(t, gc.GetPeers()) // Ensure we ignore stateInfo snapshots with StateInfo messages with wrong MACs sim := createStateInfoMsg(4, pkiIDInOrg1, channelA) sim.GetStateInfo().Channel_MAC = append(sim.GetStateInfo().Channel_MAC, 1) sim, _ = protoext.NoopSign(sim.GossipMessage) gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1, msg: stateInfoSnapshotForChannel(channelA, sim)}) - assert.Empty(t, gc.GetPeers()) + require.Empty(t, gc.GetPeers()) // Ensure we ignore stateInfo snapshots with correct StateInfo messages, BUT with wrong MACs gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1, msg: stateInfoSnapshotForChannel(channelA, createStateInfoMsg(4, pkiIDInOrg1, channelA))}) @@ -1215,8 +1215,8 @@ func TestChannelStateInfoSnapshot(t *testing.T) { // Ensure we process stateInfo snapshots that are OK stateInfoMsg := &receivedMsg{PKIID: pkiIDInOrg1, msg: stateInfoSnapshotForChannel(channelA, createStateInfoMsg(4, pkiIDInOrg1, channelA))} gc.HandleMessage(stateInfoMsg) - assert.NotEmpty(t, gc.GetPeers()) - assert.Equal(t, 4, int(gc.GetPeers()[0].Properties.LedgerHeight)) + require.NotEmpty(t, gc.GetPeers()) + require.Equal(t, 4, int(gc.GetPeers()[0].Properties.LedgerHeight)) // Check we don't respond to stateInfoSnapshot requests with wrong MAC sMsg, _ := protoext.NoopSign(&proto.GossipMessage{ @@ -1239,7 +1239,7 @@ func TestChannelStateInfoSnapshot(t *testing.T) { select { case <-time.After(time.Second): case <-sentMessages: - assert.Fail(t, "Shouldn't have responded to this StateInfoSnapshot request because of bad MAC") + require.Fail(t, "Shouldn't have responded to this StateInfoSnapshot request because of bad MAC") } // Ensure we respond to stateInfoSnapshot requests with valid MAC @@ -1265,10 +1265,10 @@ func TestChannelStateInfoSnapshot(t *testing.T) { t.Fatal("Haven't received a state info snapshot on time") case msg := <-sentMessages: elements := msg.GetStateSnapshot().Elements - assert.Len(t, elements, 1) + require.Len(t, elements, 1) sMsg, err := protoext.EnvelopeToGossipMessage(elements[0]) - assert.NoError(t, err) - assert.Equal(t, 4, int(sMsg.GetStateInfo().Properties.LedgerHeight)) + require.NoError(t, err) + require.Equal(t, 4, int(sMsg.GetStateInfo().Properties.LedgerHeight)) } // Ensure we don't crash if we got an invalid state info message @@ -1331,15 +1331,15 @@ func TestInterOrgExternalEndpointDisclosure(t *testing.T) { go gc.HandleMessage(snapshotReq) select { case <-time.After(time.Second): - assert.Fail(t, "Should have responded to this StateInfoSnapshot, but didn't") + require.Fail(t, "Should have responded to this StateInfoSnapshot, but didn't") case msg := <-sentMessages: elements := msg.GetStateSnapshot().Elements - assert.Len(t, elements, 2) + require.Len(t, elements, 2) m1, _ := protoext.EnvelopeToGossipMessage(elements[0]) m2, _ := protoext.EnvelopeToGossipMessage(elements[1]) pkiIDs := [][]byte{m1.GetStateInfo().PkiId, m2.GetStateInfo().PkiId} - assert.Contains(t, pkiIDs, []byte(pkiID1)) - assert.Contains(t, pkiIDs, []byte(pkiID3)) + require.Contains(t, pkiIDs, []byte(pkiID1)) + require.Contains(t, pkiIDs, []byte(pkiID3)) } // Check that we return all StateInfo messages to peers in our organization, regardless @@ -1363,17 +1363,17 @@ func TestInterOrgExternalEndpointDisclosure(t *testing.T) { go gc.HandleMessage(snapshotReq) select { case <-time.After(time.Second): - assert.Fail(t, "Should have responded to this StateInfoSnapshot, but didn't") + require.Fail(t, "Should have responded to this StateInfoSnapshot, but didn't") case msg := <-sentMessages: elements := msg.GetStateSnapshot().Elements - assert.Len(t, elements, 3) + require.Len(t, elements, 3) m1, _ := protoext.EnvelopeToGossipMessage(elements[0]) m2, _ := protoext.EnvelopeToGossipMessage(elements[1]) m3, _ := protoext.EnvelopeToGossipMessage(elements[2]) pkiIDs := [][]byte{m1.GetStateInfo().PkiId, m2.GetStateInfo().PkiId, m3.GetStateInfo().PkiId} - assert.Contains(t, pkiIDs, []byte(pkiID1)) - assert.Contains(t, pkiIDs, []byte(pkiID2)) - assert.Contains(t, pkiIDs, []byte(pkiID3)) + require.Contains(t, pkiIDs, []byte(pkiID1)) + require.Contains(t, pkiIDs, []byte(pkiID2)) + require.Contains(t, pkiIDs, []byte(pkiID3)) } } @@ -1461,23 +1461,23 @@ func TestChannelReconfigureChannel(t *testing.T) { adapter.On("Send", mock.Anything, mock.Anything) adapter.On("DeMultiplex", mock.Anything) - assert.True(t, gc.IsOrgInChannel(orgInChannelA)) - assert.False(t, gc.IsOrgInChannel(orgNotInChannelA)) - assert.True(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDInOrg1})) - assert.False(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDinOrg2})) + require.True(t, gc.IsOrgInChannel(orgInChannelA)) + require.False(t, gc.IsOrgInChannel(orgNotInChannelA)) + require.True(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.False(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDinOrg2})) gc.ConfigureChannel(outdatedJoinChanMsg) - assert.True(t, gc.IsOrgInChannel(orgInChannelA)) - assert.False(t, gc.IsOrgInChannel(orgNotInChannelA)) - assert.True(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDInOrg1})) - assert.False(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDinOrg2})) + require.True(t, gc.IsOrgInChannel(orgInChannelA)) + require.False(t, gc.IsOrgInChannel(orgNotInChannelA)) + require.True(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.False(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDinOrg2})) gc.ConfigureChannel(updatedJoinChanMsg) gc.ConfigureChannel(updatedJoinChanMsg) - assert.False(t, gc.IsOrgInChannel(orgInChannelA)) - assert.True(t, gc.IsOrgInChannel(orgNotInChannelA)) - assert.False(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDInOrg1})) - assert.True(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDinOrg2})) + require.False(t, gc.IsOrgInChannel(orgInChannelA)) + require.True(t, gc.IsOrgInChannel(orgNotInChannelA)) + require.False(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.True(t, gc.IsMemberInChan(discovery.NetworkMember{PKIid: pkiIDinOrg2})) // Ensure we don't respond to a StateInfoRequest from a peer in the wrong org sMsg, _ := gc.(*gossipChannel).createStateInfoRequest() @@ -1521,7 +1521,7 @@ func TestChannelNoAnchorPeers(t *testing.T) { gc := NewGossipChannel(pkiIDInOrg1, orgInChannelA, cs, channelA, adapter, api.JoinChannelMessage(jcm), disabledMetrics, nil) - assert.True(t, gc.IsOrgInChannel(orgInChannelA)) + require.True(t, gc.IsOrgInChannel(orgInChannelA)) } func TestGossipChannelEligibility(t *testing.T) { @@ -1571,29 +1571,29 @@ func TestGossipChannelEligibility(t *testing.T) { gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1ButNotEligible, msg: createStateInfoMsg(1, pkiIDInOrg1ButNotEligible, channelA)}) gc.HandleMessage(&receivedMsg{PKIID: pkiIDinOrg3, msg: createStateInfoMsg(1, pkiIDinOrg3, channelA)}) - assert.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) - assert.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg2})) - assert.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1ButNotEligible})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg3})) + require.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg2})) + require.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1ButNotEligible})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg3})) // Ensure peers from the channel are returned - assert.True(t, gc.PeerFilter(func(signature api.PeerSignature) bool { + require.True(t, gc.PeerFilter(func(signature api.PeerSignature) bool { return true })(discovery.NetworkMember{PKIid: pkiIDInOrg1})) - assert.True(t, gc.PeerFilter(func(signature api.PeerSignature) bool { + require.True(t, gc.PeerFilter(func(signature api.PeerSignature) bool { return true })(discovery.NetworkMember{PKIid: pkiIDinOrg2})) // But not peers which aren't in the channel - assert.False(t, gc.PeerFilter(func(signature api.PeerSignature) bool { + require.False(t, gc.PeerFilter(func(signature api.PeerSignature) bool { return true })(discovery.NetworkMember{PKIid: pkiIDinOrg3})) // Ensure the given predicate is considered - assert.True(t, gc.PeerFilter(func(signature api.PeerSignature) bool { + require.True(t, gc.PeerFilter(func(signature api.PeerSignature) bool { return bytes.Equal(signature.PeerIdentity, []byte("pkiIDinOrg2")) })(discovery.NetworkMember{PKIid: pkiIDinOrg2})) - assert.False(t, gc.PeerFilter(func(signature api.PeerSignature) bool { + require.False(t, gc.PeerFilter(func(signature api.PeerSignature) bool { return bytes.Equal(signature.PeerIdentity, []byte("pkiIDinOrg2")) })(discovery.NetworkMember{PKIid: pkiIDInOrg1})) @@ -1604,10 +1604,10 @@ func TestGossipChannelEligibility(t *testing.T) { }, }) - assert.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg2})) - assert.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1ButNotEligible})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg3})) + require.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg2})) + require.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1ButNotEligible})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg3})) // Now simulate a config update that removed pkiIDInOrg1ButNotEligible from the channel readers cs.mocked = true @@ -1618,10 +1618,10 @@ func TestGossipChannelEligibility(t *testing.T) { string(org1): {}, }, }) - assert.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg2})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1ButNotEligible})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg3})) + require.True(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg2})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1ButNotEligible})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg3})) // Now Simulate a certificate expiration of pkiIDInOrg1. // This is done by asking the adapter to lookup the identity by PKI-ID, but if the certificate @@ -1631,10 +1631,10 @@ func TestGossipChannelEligibility(t *testing.T) { adapter.On("GetIdentityByPKIID", pkiIDInOrg1ButNotEligible).Return(api.PeerIdentityType(pkiIDInOrg1ButNotEligible)) adapter.On("GetIdentityByPKIID", pkiIDinOrg3).Return(api.PeerIdentityType(pkiIDinOrg3)) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg2})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1ButNotEligible})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg3})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg2})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1ButNotEligible})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg3})) // Now make another update of StateInfo messages, this time with updated ledger height (to overwrite earlier messages) gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1, msg: createStateInfoMsg(2, pkiIDInOrg1, channelA)}) @@ -1643,10 +1643,10 @@ func TestGossipChannelEligibility(t *testing.T) { gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1, msg: createStateInfoMsg(2, pkiIDinOrg3, channelA)}) // Ensure the access control resolution hasn't changed - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg2})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1ButNotEligible})) - assert.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg3})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg2})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDInOrg1ButNotEligible})) + require.False(t, gc.EligibleForChannel(discovery.NetworkMember{PKIid: pkiIDinOrg3})) } func TestChannelGetPeers(t *testing.T) { @@ -1672,19 +1672,19 @@ func TestChannelGetPeers(t *testing.T) { disabledMetrics, nil) gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1, msg: createStateInfoMsg(1, pkiIDInOrg1, channelA)}) gc.HandleMessage(&receivedMsg{PKIID: pkiIDInOrg1, msg: createStateInfoMsg(1, pkiIDinOrg2, channelA)}) - assert.Len(t, gc.GetPeers(), 1) - assert.Equal(t, pkiIDInOrg1, gc.GetPeers()[0].PKIid) + require.Len(t, gc.GetPeers(), 1) + require.Equal(t, pkiIDInOrg1, gc.GetPeers()[0].PKIid) // Ensure envelope from GetPeers is valid gMsg, _ := protoext.EnvelopeToGossipMessage(gc.GetPeers()[0].Envelope) - assert.Equal(t, []byte(pkiIDInOrg1), gMsg.GetStateInfo().PkiId) + require.Equal(t, []byte(pkiIDInOrg1), gMsg.GetStateInfo().PkiId) gc.HandleMessage(&receivedMsg{msg: createStateInfoMsg(10, pkiIDInOrg1ButNotEligible, channelA), PKIID: pkiIDInOrg1ButNotEligible}) cs.On("VerifyByChannel", mock.Anything).Return(errors.New("Not eligible")) cs.mocked = true // Simulate a config update gc.ConfigureChannel(&joinChanMsg{}) - assert.Len(t, gc.GetPeers(), 0) + require.Len(t, gc.GetPeers(), 0) // Now recreate gc and corrupt the MAC // and ensure that the StateInfo message doesn't count @@ -1692,7 +1692,7 @@ func TestChannelGetPeers(t *testing.T) { msg := &receivedMsg{PKIID: pkiIDInOrg1, msg: createStateInfoMsg(1, pkiIDInOrg1, channelA)} msg.GetGossipMessage().GetStateInfo().Channel_MAC = GenerateMAC(pkiIDinOrg2, channelA) gc.HandleMessage(msg) - assert.Len(t, gc.GetPeers(), 0) + require.Len(t, gc.GetPeers(), 0) } func TestOnDemandGossip(t *testing.T) { @@ -1733,19 +1733,19 @@ func TestOnDemandGossip(t *testing.T) { defer gc.Stop() select { case <-gossipedEvents: - assert.Fail(t, "Should not have gossiped because metadata has not been updated yet") + require.Fail(t, "Should not have gossiped because metadata has not been updated yet") case <-time.After(time.Millisecond * 500): } gc.UpdateLedgerHeight(0) select { case <-gossipedEvents: case <-time.After(time.Second): - assert.Fail(t, "Didn't gossip within a timely manner") + require.Fail(t, "Didn't gossip within a timely manner") } select { case <-gossipedEvents: case <-time.After(time.Second): - assert.Fail(t, "Should have gossiped a second time, because membership is empty") + require.Fail(t, "Should have gossiped a second time, because membership is empty") } lock.Lock() @@ -1755,18 +1755,18 @@ func TestOnDemandGossip(t *testing.T) { select { case <-gossipedEvents: case <-time.After(time.Second): - assert.Fail(t, "Should have gossiped a third time") + require.Fail(t, "Should have gossiped a third time") } select { case <-gossipedEvents: - assert.Fail(t, "Should not have gossiped a fourth time, because dirty flag should have been turned off") + require.Fail(t, "Should not have gossiped a fourth time, because dirty flag should have been turned off") case <-time.After(time.Millisecond * 500): } gc.UpdateLedgerHeight(1) select { case <-gossipedEvents: case <-time.After(time.Second): - assert.Fail(t, "Should have gossiped a block now, because got a new StateInfo message") + require.Fail(t, "Should have gossiped a block now, because got a new StateInfo message") } } @@ -1784,7 +1784,7 @@ func TestChannelPullWithDigestsFilter(t *testing.T) { return } // The peer is supposed to de-multiplex 1 ledger block - assert.True(t, protoext.IsDataMsg(msg.GossipMessage)) + require.True(t, protoext.IsDataMsg(msg.GossipMessage)) receivedBlocksChan <- msg }) gc := NewGossipChannel(pkiIDInOrg1, orgInChannelA, cs, channelA, adapter, &joinChanMsg{}, disabledMetrics, nil) @@ -1803,7 +1803,7 @@ func TestChannelPullWithDigestsFilter(t *testing.T) { case <-time.After(time.Second * 5): t.Fatal("Haven't received blocks on time") case msg := <-receivedBlocksChan: - assert.Equal(t, uint64(11), msg.GetDataMsg().Payload.SeqNum) + require.Equal(t, uint64(11), msg.GetDataMsg().Payload.SeqNum) } } @@ -1842,9 +1842,9 @@ func TestFilterForeignOrgLeadershipMessages(t *testing.T) { return nil })) assertLogged := func(s string) { - assert.Len(t, loggedEntries, 1) + require.Len(t, loggedEntries, 1) loggedEntry := <-loggedEntries - assert.Contains(t, loggedEntry, s) + require.Contains(t, loggedEntry, s) } gc := NewGossipChannel(pkiIDInOrg1, org1, cs, channelA, adapter, joinMsg, disabledMetrics, logger) @@ -1865,15 +1865,15 @@ func TestFilterForeignOrgLeadershipMessages(t *testing.T) { } gc.HandleMessage(leadershipMsg(p1, p1)) - assert.Len(t, relayedLeadershipMsgs, 1, "should have relayed a message from p1 (same org)") - assert.Len(t, loggedEntries, 0) + require.Len(t, relayedLeadershipMsgs, 1, "should have relayed a message from p1 (same org)") + require.Len(t, loggedEntries, 0) gc.HandleMessage(leadershipMsg(p2, p1)) - assert.Len(t, relayedLeadershipMsgs, 1, "should not have relayed a message from p2 (foreign org)") + require.Len(t, relayedLeadershipMsgs, 1, "should not have relayed a message from p2 (foreign org)") assertLogged("Received leadership message from that belongs to a foreign organization org2") gc.HandleMessage(leadershipMsg(p1, p2)) - assert.Len(t, relayedLeadershipMsgs, 1, "should not have relayed a message from p2 (foreign org)") + require.Len(t, relayedLeadershipMsgs, 1, "should not have relayed a message from p2 (foreign org)") assertLogged("Received leadership message created by a foreign organization org2") } @@ -2018,9 +2018,9 @@ func simulatePullPhaseWithVariableDigest(gc GossipChannel, t *testing.T, wg *syn sentReq = true dataReq := msg.GetDataReq() for _, expectedDigest := range util.StringsToBytes(resultDigestSeqs) { - assert.Contains(t, dataReq.Digests, expectedDigest) + require.Contains(t, dataReq.Digests, expectedDigest) } - assert.Equal(t, len(resultDigestSeqs), len(dataReq.Digests)) + require.Equal(t, len(resultDigestSeqs), len(dataReq.Digests)) // When we send a data request, simulate a response of a data update // from the imaginary peer that got the request dataUpdateMsg := new(receivedMsg) @@ -2195,7 +2195,7 @@ func TestChangesInPeers(t *testing.T) { actual := <-chForString // setup complete, start testing - assert.Contains(t, test.expected, actual) + require.Contains(t, test.expected, actual) // mt needs to have received a tick before it was closed wgMT.Wait() @@ -2205,8 +2205,8 @@ func TestChangesInPeers(t *testing.T) { if testMetricProvider.FakeTotalGauge.SetCallCount() < 1 { t.Fatal("did not get Set() call") } - assert.Equal(t, []string{"channel", "test"}, testMetricProvider.FakeTotalGauge.WithArgsForCall(0)) - assert.EqualValues(t, test.expectedTotal, testMetricProvider.FakeTotalGauge.SetArgsForCall(0)) + require.Equal(t, []string{"channel", "test"}, testMetricProvider.FakeTotalGauge.WithArgsForCall(0)) + require.EqualValues(t, test.expectedTotal, testMetricProvider.FakeTotalGauge.SetArgsForCall(0)) }) } } diff --git a/gossip/gossip/config_test.go b/gossip/gossip/config_test.go index 8b6a2069df9..8b8a79b9a46 100644 --- a/gossip/gossip/config_test.go +++ b/gossip/gossip/config_test.go @@ -18,10 +18,9 @@ import ( "github.com/hyperledger/fabric/gossip/comm" "github.com/hyperledger/fabric/gossip/gossip/algo" - "github.com/stretchr/testify/assert" - "github.com/hyperledger/fabric/gossip/gossip" "github.com/spf13/viper" + "github.com/stretchr/testify/require" ) func TestGlobalConfig(t *testing.T) { @@ -59,12 +58,12 @@ func TestGlobalConfig(t *testing.T) { viper.Set("peer.gossip.msgExpirationFactor", "10") coreConfig, err := gossip.GlobalConfig(endpoint, nil, bootstrap...) - assert.NoError(t, err) + require.NoError(t, err) _, p, err := net.SplitHostPort(endpoint) - assert.NoError(t, err) + require.NoError(t, err) port, err := strconv.ParseInt(p, 10, 64) - assert.NoError(t, err) + require.NoError(t, err) expectedConfig := &gossip.Config{ BindPort: int(port), @@ -101,7 +100,7 @@ func TestGlobalConfig(t *testing.T) { MsgExpirationFactor: 10, } - assert.Equal(t, expectedConfig, coreConfig) + require.Equal(t, expectedConfig, coreConfig) } @@ -114,12 +113,12 @@ func TestGlobalConfigDefaults(t *testing.T) { viper.Set("peer.gossip.externalEndpoint", externalEndpoint) coreConfig, err := gossip.GlobalConfig(endpoint, nil, bootstrap...) - assert.NoError(t, err) + require.NoError(t, err) _, p, err := net.SplitHostPort(endpoint) - assert.NoError(t, err) + require.NoError(t, err) port, err := strconv.ParseInt(p, 10, 64) - assert.NoError(t, err) + require.NoError(t, err) expectedConfig := &gossip.Config{ BindPort: int(port), @@ -156,5 +155,5 @@ func TestGlobalConfigDefaults(t *testing.T) { MsgExpirationFactor: 20, } - assert.Equal(t, expectedConfig, coreConfig) + require.Equal(t, expectedConfig, coreConfig) } diff --git a/gossip/gossip/gossip_test.go b/gossip/gossip/gossip_test.go index c81e95f39ca..8f1e2dbee5b 100644 --- a/gossip/gossip/gossip_test.go +++ b/gossip/gossip/gossip_test.go @@ -33,7 +33,7 @@ import ( "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/util" corecomm "github.com/hyperledger/fabric/internal/pkg/comm" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var timeout = time.Second * time.Duration(180) @@ -786,7 +786,7 @@ func TestDissemination(t *testing.T) { t.Log("Metadata dissemination took", time.Since(t2)) for i := 0; i < n; i++ { - assert.Equal(t, msgsCount2Send, receivedMessages[i]) + require.Equal(t, msgsCount2Send, receivedMessages[i]) } // Sending leadership messages @@ -815,7 +815,7 @@ func TestDissemination(t *testing.T) { t.Log("Leadership message dissemination took", time.Since(t3)) for i := 0; i < n; i++ { - assert.Equal(t, 1, receivedLeadershipMessages[i]) + require.Equal(t, 1, receivedLeadershipMessages[i]) } t.Log("Stopping peers") @@ -997,14 +997,14 @@ func TestMembershipRequestSpoofing(t *testing.T) { case <-time.After(time.Second): break case <-g1ToG2: - assert.Fail(t, "Received response from g1 but shouldn't have") + require.Fail(t, "Received response from g1 but shouldn't have") } // Now send the same message from g3 to g1 g3.Send(spoofedMemReq.GossipMessage, &comm.RemotePeer{Endpoint: endpoint0, PKIID: common.PKIidType(endpoint0)}) select { case <-time.After(time.Second): - assert.Fail(t, "Didn't receive a message back from g1 on time") + require.Fail(t, "Didn't receive a message back from g1 on time") case <-g1ToG3: break } @@ -1106,11 +1106,11 @@ func TestDataLeakage(t *testing.T) { for i, channel := range channels { for j := 0; j < 3; j++ { instanceIndex := (n/2)*i + j - assert.Len(t, peers[instanceIndex].PeersOfChannel(channel), 2) + require.Len(t, peers[instanceIndex].PeersOfChannel(channel), 2) if i == 0 { - assert.Equal(t, uint64(1), peers[instanceIndex].PeersOfChannel(channel)[0].Properties.LedgerHeight) + require.Equal(t, uint64(1), peers[instanceIndex].PeersOfChannel(channel)[0].Properties.LedgerHeight) } else { - assert.Equal(t, uint64(2), peers[instanceIndex].PeersOfChannel(channel)[0].Properties.LedgerHeight) + require.Equal(t, uint64(2), peers[instanceIndex].PeersOfChannel(channel)[0].Properties.LedgerHeight) } } } @@ -1124,7 +1124,7 @@ func TestDataLeakage(t *testing.T) { go func(instanceIndex int, channel common.ChannelID) { incMsgChan, _ := peers[instanceIndex].Accept(acceptData, false) msg := <-incMsgChan - assert.Equal(t, []byte(channel), []byte(msg.Channel)) + require.Equal(t, []byte(channel), []byte(msg.Channel)) wg.Done() }(instanceIndex, channel) } @@ -1258,35 +1258,35 @@ func TestSendByCriteria(t *testing.T) { Timeout: time.Second * 1, MinAck: 1, } - assert.NoError(t, g1.SendByCriteria(msg, criteria)) + require.NoError(t, g1.SendByCriteria(msg, criteria)) // We send without specifying a timeout criteria = SendCriteria{ MaxPeers: 100, } err := g1.SendByCriteria(msg, criteria) - assert.Error(t, err) - assert.Equal(t, "Timeout should be specified", err.Error()) + require.Error(t, err) + require.Equal(t, "Timeout should be specified", err.Error()) // We send without specifying a minimum acknowledge threshold criteria.Timeout = time.Second * 3 err = g1.SendByCriteria(msg, criteria) // Should work, because minAck is 0 (not specified) - assert.NoError(t, err) + require.NoError(t, err) // We send without specifying a channel criteria.Channel = common.ChannelID("B") err = g1.SendByCriteria(msg, criteria) - assert.Error(t, err) - assert.Contains(t, err.Error(), "but no such channel exists") + require.Error(t, err) + require.Contains(t, err.Error(), "but no such channel exists") // We send to peers from the channel, but we expect 10 acknowledgements. // It should immediately return because we don't know about 10 peers so no point in even trying criteria.Channel = common.ChannelID("A") criteria.MinAck = 10 err = g1.SendByCriteria(msg, criteria) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Requested to send to at least 10 peers, but know only of") + require.Error(t, err) + require.Contains(t, err.Error(), "Requested to send to at least 10 peers, but know only of") // We send to a minimum of 3 peers with acknowledgement, while no peer acknowledges the messages. // Wait until g1 sees the rest of the peers in the channel @@ -1295,9 +1295,9 @@ func TestSendByCriteria(t *testing.T) { }, "waiting until g1 sees the rest of the peers in the channel") criteria.MinAck = 3 err = g1.SendByCriteria(msg, criteria) - assert.Error(t, err) - assert.Contains(t, err.Error(), "timed out") - assert.Contains(t, err.Error(), "3") + require.Error(t, err) + require.Contains(t, err.Error(), "timed out") + require.Contains(t, err.Error(), "3") // We retry the test above, but this time the peers acknowledge // Peers now ack @@ -1316,7 +1316,7 @@ func TestSendByCriteria(t *testing.T) { go ack(ackChan3) go ack(ackChan4) err = g1.SendByCriteria(msg, criteria) - assert.NoError(t, err) + require.NoError(t, err) // We send to 3 peers, but 2 out of 3 peers acknowledge with an error nack := func(c <-chan protoext.ReceivedMessage) { @@ -1327,8 +1327,8 @@ func TestSendByCriteria(t *testing.T) { go nack(ackChan3) go nack(ackChan4) err = g1.SendByCriteria(msg, criteria) - assert.Error(t, err) - assert.Contains(t, err.Error(), "uh oh") + require.Error(t, err) + require.Contains(t, err.Error(), "uh oh") // We try to send to either g2 or g3, but neither would ack us, so we would fail. // However - what we actually check in this test is that we send to peers according to the @@ -1348,9 +1348,9 @@ func TestSendByCriteria(t *testing.T) { criteria.MinAck = 1 go failOnAckRequest(ackChan4, 3) err = g1.SendByCriteria(msg, criteria) - assert.Error(t, err) - assert.Contains(t, err.Error(), "timed out") - assert.Contains(t, err.Error(), "2") + require.Error(t, err) + require.Contains(t, err.Error(), "timed out") + require.Contains(t, err.Error(), "2") // Finally, ack the lost messages, to cleanup for the next test ack(ackChan2) ack(ackChan3) @@ -1378,11 +1378,11 @@ func TestSendByCriteria(t *testing.T) { atomic.AddUint32(&messagesSent, 1) }) err = g1.SendByCriteria(msg, criteria) - assert.Error(t, err) - assert.Contains(t, err.Error(), "timed out") + require.Error(t, err) + require.Contains(t, err.Error(), "timed out") // Check how many messages were sent. // Only 1 should have been sent - assert.Equal(t, uint32(1), atomic.LoadUint32(&messagesSent)) + require.Equal(t, uint32(1), atomic.LoadUint32(&messagesSent)) } func TestIdentityExpiration(t *testing.T) { @@ -1532,7 +1532,7 @@ func waitForTestCompletion(stopFlag *int32, t *testing.T) { return } util.PrintStackTrace() - assert.Fail(t, "Didn't stop within a timely manner") + require.Fail(t, "Didn't stop within a timely manner") } func stopPeers(peers []*gossipGRPC) { @@ -1557,7 +1557,7 @@ func waitUntilOrFail(t *testing.T, pred func() bool, context string) { time.Sleep(timeout / 1000) } util.PrintStackTrace() - assert.Failf(t, "Timeout expired, while %s", context) + require.Failf(t, "Timeout expired, while %s", context) } func waitUntilOrFailBlocking(t *testing.T, f func(), context string) { @@ -1573,7 +1573,7 @@ func waitUntilOrFailBlocking(t *testing.T, f func(), context string) { return } util.PrintStackTrace() - assert.Failf(t, "Timeout expired, while %s", context) + require.Failf(t, "Timeout expired, while %s", context) } func checkPeersMembership(t *testing.T, peers []*gossipGRPC, n int) func() bool { @@ -1583,8 +1583,8 @@ func checkPeersMembership(t *testing.T, peers []*gossipGRPC, n int) func() bool return false } for _, p := range peer.Peers() { - assert.NotNil(t, p.InternalEndpoint) - assert.NotEmpty(t, p.Endpoint) + require.NotNil(t, p.InternalEndpoint) + require.NotEmpty(t, p.Endpoint) } } return true @@ -1623,11 +1623,11 @@ func TestMembershipMetrics(t *testing.T) { // assert channel membership metrics reported with 0 as value wg0.Wait() - assert.Equal(t, + require.Equal(t, []string{"channel", "A"}, testMetricProvider.FakeTotalGauge.WithArgsForCall(0), ) - assert.EqualValues(t, 0, + require.EqualValues(t, 0, testMetricProvider.FakeTotalGauge.SetArgsForCall(0), ) diff --git a/gossip/gossip/msgstore/msgs_test.go b/gossip/gossip/msgstore/msgs_test.go index d48a2850415..21802a36282 100644 --- a/gossip/gossip/msgstore/msgs_test.go +++ b/gossip/gossip/msgstore/msgs_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/gossip/common" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func init() { @@ -55,7 +55,7 @@ func TestSize(t *testing.T) { msgStore.Add(0) msgStore.Add(1) msgStore.Add(2) - assert.Equal(t, 3, msgStore.Size()) + require.Equal(t, 3, msgStore.Size()) } func TestNewMessagesInvalidates(t *testing.T) { @@ -63,12 +63,12 @@ func TestNewMessagesInvalidates(t *testing.T) { msgStore := NewMessageStore(compareInts, func(m interface{}) { invalidated = append(invalidated, m.(int)) }) - assert.True(t, msgStore.Add(0)) + require.True(t, msgStore.Add(0)) for i := 1; i < 10; i++ { - assert.True(t, msgStore.Add(i)) - assert.Equal(t, i-1, invalidated[len(invalidated)-1]) - assert.Equal(t, 1, msgStore.Size()) - assert.Equal(t, i, msgStore.Get()[0].(int)) + require.True(t, msgStore.Add(i)) + require.Equal(t, i-1, invalidated[len(invalidated)-1]) + require.Equal(t, 1, msgStore.Size()) + require.Equal(t, i, msgStore.Get()[0].(int)) } } @@ -91,18 +91,18 @@ func TestMessagesGet(t *testing.T) { } for _, num2Search := range expected { - assert.True(t, contains(msgStore.Get(), num2Search), "Value %v not found in array", num2Search) + require.True(t, contains(msgStore.Get(), num2Search), "Value %v not found in array", num2Search) } } func TestNewMessagesInvalidated(t *testing.T) { msgStore := NewMessageStore(compareInts, Noop) - assert.True(t, msgStore.Add(10)) + require.True(t, msgStore.Add(10)) for i := 9; i >= 0; i-- { - assert.False(t, msgStore.Add(i)) - assert.Equal(t, 1, msgStore.Size()) - assert.Equal(t, 10, msgStore.Get()[0].(int)) + require.False(t, msgStore.Add(i)) + require.Equal(t, 1, msgStore.Size()) + require.Equal(t, 10, msgStore.Get()[0].(int)) } } @@ -150,46 +150,46 @@ func TestExpiration(t *testing.T) { }) for i := 0; i < 10; i++ { - assert.True(t, msgStore.Add(i), "Adding", i) + require.True(t, msgStore.Add(i), "Adding", i) } - assert.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - first batch") + require.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - first batch") time.Sleep(time.Second * 2) for i := 0; i < 10; i++ { - assert.False(t, msgStore.CheckValid(i)) - assert.False(t, msgStore.Add(i)) + require.False(t, msgStore.CheckValid(i)) + require.False(t, msgStore.Add(i)) } for i := 10; i < 20; i++ { - assert.True(t, msgStore.CheckValid(i)) - assert.True(t, msgStore.Add(i)) - assert.False(t, msgStore.CheckValid(i)) + require.True(t, msgStore.CheckValid(i)) + require.True(t, msgStore.Add(i)) + require.False(t, msgStore.CheckValid(i)) } - assert.Equal(t, 20, msgStore.Size(), "Wrong number of items in store - second batch") + require.Equal(t, 20, msgStore.Size(), "Wrong number of items in store - second batch") time.Sleep(time.Second * 2) for i := 0; i < 20; i++ { - assert.False(t, msgStore.Add(i)) + require.False(t, msgStore.Add(i)) } - assert.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - after first batch expiration") - assert.Equal(t, 10, len(expired), "Wrong number of expired msgs - after first batch expiration") + require.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - after first batch expiration") + require.Equal(t, 10, len(expired), "Wrong number of expired msgs - after first batch expiration") time.Sleep(time.Second * 4) - assert.Equal(t, 0, msgStore.Size(), "Wrong number of items in store - after second batch expiration") - assert.Equal(t, 20, len(expired), "Wrong number of expired msgs - after second batch expiration") + require.Equal(t, 0, msgStore.Size(), "Wrong number of items in store - after second batch expiration") + require.Equal(t, 20, len(expired), "Wrong number of expired msgs - after second batch expiration") for i := 0; i < 10; i++ { - assert.True(t, msgStore.CheckValid(i)) - assert.True(t, msgStore.Add(i)) - assert.False(t, msgStore.CheckValid(i)) + require.True(t, msgStore.CheckValid(i)) + require.True(t, msgStore.Add(i)) + require.False(t, msgStore.CheckValid(i)) } - assert.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - after second batch expiration and first banch re-added") + require.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - after second batch expiration and first banch re-added") } @@ -211,9 +211,9 @@ func TestExpirationConcurrency(t *testing.T) { lock.Lock() for i := 0; i < 10; i++ { - assert.True(t, msgStore.Add(i), "Adding", i) + require.True(t, msgStore.Add(i), "Adding", i) } - assert.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - first batch") + require.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - first batch") lock.Unlock() time.Sleep(time.Second * 2) @@ -222,22 +222,22 @@ func TestExpirationConcurrency(t *testing.T) { time.Sleep(time.Second * 2) for i := 0; i < 10; i++ { - assert.False(t, msgStore.Add(i)) + require.False(t, msgStore.Add(i)) } - assert.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - after first batch expiration, external lock taken") - assert.Equal(t, 0, len(expired), "Wrong number of expired msgs - after first batch expiration, external lock taken") + require.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - after first batch expiration, external lock taken") + require.Equal(t, 0, len(expired), "Wrong number of expired msgs - after first batch expiration, external lock taken") lock.Unlock() time.Sleep(time.Second * 1) lock.Lock() for i := 0; i < 10; i++ { - assert.False(t, msgStore.Add(i)) + require.False(t, msgStore.Add(i)) } - assert.Equal(t, 0, msgStore.Size(), "Wrong number of items in store - after first batch expiration, expiration should run") - assert.Equal(t, 10, len(expired), "Wrong number of expired msgs - after first batch expiration, expiration should run") + require.Equal(t, 0, msgStore.Size(), "Wrong number of items in store - after first batch expiration, expiration should run") + require.Equal(t, 10, len(expired), "Wrong number of expired msgs - after first batch expiration, expiration should run") lock.Unlock() } @@ -251,17 +251,17 @@ func TestStop(t *testing.T) { }) for i := 0; i < 10; i++ { - assert.True(t, msgStore.Add(i), "Adding", i) + require.True(t, msgStore.Add(i), "Adding", i) } - assert.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - first batch") + require.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - first batch") msgStore.Stop() time.Sleep(time.Second * 4) - assert.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - after first batch expiration, but store was stopped, so no expiration") - assert.Equal(t, 0, len(expired), "Wrong number of expired msgs - after first batch expiration, but store was stopped, so no expiration") + require.Equal(t, 10, msgStore.Size(), "Wrong number of items in store - after first batch expiration, but store was stopped, so no expiration") + require.Equal(t, 0, len(expired), "Wrong number of expired msgs - after first batch expiration, but store was stopped, so no expiration") msgStore.Stop() } @@ -272,26 +272,26 @@ func TestPurge(t *testing.T) { purged <- o.(int) }) for i := 0; i < 10; i++ { - assert.True(t, msgStore.Add(i)) + require.True(t, msgStore.Add(i)) } // Purge all numbers greater than 9 - shouldn't do anything msgStore.Purge(func(o interface{}) bool { return o.(int) > 9 }) - assert.Len(t, msgStore.Get(), 10) + require.Len(t, msgStore.Get(), 10) // Purge all even numbers msgStore.Purge(func(o interface{}) bool { return o.(int)%2 == 0 }) // Ensure only odd numbers are left - assert.Len(t, msgStore.Get(), 5) + require.Len(t, msgStore.Get(), 5) for _, o := range msgStore.Get() { - assert.Equal(t, 1, o.(int)%2) + require.Equal(t, 1, o.(int)%2) } close(purged) i := 0 for n := range purged { - assert.Equal(t, i, n) + require.Equal(t, i, n) i += 2 } } diff --git a/gossip/gossip/orgs_test.go b/gossip/gossip/orgs_test.go index 67b99c5a969..6258591baef 100644 --- a/gossip/gossip/orgs_test.go +++ b/gossip/gossip/orgs_test.go @@ -27,7 +27,7 @@ import ( "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/util" "github.com/hyperledger/fabric/internal/pkg/comm" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func init() { @@ -244,7 +244,7 @@ func TestMultipleOrgEndpointLeakage(t *testing.T) { } for _, knownPeer := range peersKnown { if !shouldAKnowB(pkiID, knownPeer.PKIid) { - assert.Fail(t, fmt.Sprintf("peer %#v doesn't know %#v", peerNetMember.Endpoint, knownPeer.Endpoint)) + require.Fail(t, fmt.Sprintf("peer %#v doesn't know %#v", peerNetMember.Endpoint, knownPeer.Endpoint)) return false } internalEndpointLen := len(knownPeer.InternalEndpoint) @@ -255,7 +255,7 @@ func TestMultipleOrgEndpointLeakage(t *testing.T) { } } else { if internalEndpointLen != 0 { - assert.Fail(t, fmt.Sprintf("peer: %v knows internal endpoint of %v (%#v)", peerNetMember.InternalEndpoint, string(knownPeer.PKIid), knownPeer.InternalEndpoint)) + require.Fail(t, fmt.Sprintf("peer: %v knows internal endpoint of %v (%#v)", peerNetMember.InternalEndpoint, string(knownPeer.PKIid), knownPeer.InternalEndpoint)) return false } } @@ -453,7 +453,7 @@ func TestConfidentiality(t *testing.T) { return false } // Make sure no one knows too much - assert.True(t, membersCount <= expMemberSize, "%s knows too much (%d > %d) peers: %v", + require.True(t, membersCount <= expMemberSize, "%s knows too much (%d > %d) peers: %v", membersCount, expMemberSize, peerNetMember.PKIid, members) } } @@ -565,16 +565,16 @@ func inspectMsgs(t *testing.T, msgChan chan *msg, sec api.SecurityAdvisor, peers // The total organizations of the message must be a subset of s U d. orgs := extractOrgsFromMsg(msg.GossipMessage, sec) s := []string{msg.src, msg.dst} - assert.True(t, isSubset(orgs, s), "%v isn't a subset of %v", orgs, s) + require.True(t, isSubset(orgs, s), "%v isn't a subset of %v", orgs, s) // Ensure no one but B knows about D and vice versa if msg.dst == "D" { - assert.NotContains(t, "A", orgs) - assert.NotContains(t, "C", orgs) + require.NotContains(t, "A", orgs) + require.NotContains(t, "C", orgs) } if msg.dst == "A" || msg.dst == "C" { - assert.NotContains(t, "D", orgs) + require.NotContains(t, "D", orgs) } // If this is an identity snapshot, make sure that only identities of peers @@ -587,7 +587,7 @@ func inspectMsgs(t *testing.T, msgChan chan *msg, sec api.SecurityAdvisor, peers identityMsg, _ := protoext.EnvelopeToGossipMessage(envp) pkiID := identityMsg.GetPeerIdentity().PkiId _, hasExternalEndpoint := peersWithExternalEndpoints[string(pkiID)] - assert.True(t, hasExternalEndpoint, + require.True(t, hasExternalEndpoint, "Peer %s doesn't have an external endpoint but its identity was gossiped", string(pkiID)) } } @@ -597,7 +597,7 @@ func inspectStateInfoMsg(t *testing.T, m *msg, peersWithExternalEndpoints map[st if protoext.IsStateInfoMsg(m.GossipMessage) { pkiID := m.GetStateInfo().PkiId _, hasExternalEndpoint := peersWithExternalEndpoints[string(pkiID)] - assert.True(t, hasExternalEndpoint, "peer %s has no external endpoint but crossed an org", string(pkiID)) + require.True(t, hasExternalEndpoint, "peer %s has no external endpoint but crossed an org", string(pkiID)) return } @@ -605,7 +605,7 @@ func inspectStateInfoMsg(t *testing.T, m *msg, peersWithExternalEndpoints map[st msg, _ := protoext.EnvelopeToGossipMessage(envp) pkiID := msg.GetStateInfo().PkiId _, hasExternalEndpoint := peersWithExternalEndpoints[string(pkiID)] - assert.True(t, hasExternalEndpoint, "peer %s has no external endpoint but crossed an org", string(pkiID)) + require.True(t, hasExternalEndpoint, "peer %s has no external endpoint but crossed an org", string(pkiID)) } } diff --git a/gossip/gossip/pull/pullstore_test.go b/gossip/gossip/pull/pullstore_test.go index d4657580fe6..bf5f46b3bb7 100644 --- a/gossip/gossip/pull/pullstore_test.go +++ b/gossip/gossip/pull/pullstore_test.go @@ -22,7 +22,7 @@ import ( "github.com/hyperledger/fabric/gossip/gossip/algo" "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var pullInterval time.Duration @@ -242,8 +242,8 @@ func TestFilter(t *testing.T) { waitUntilOrFail(t, func() bool { return inst2.items.Exists(uint64(0)) }) waitUntilOrFail(t, func() bool { return inst2.items.Exists(uint64(2)) }) - assert.False(t, inst2.items.Exists(uint64(1))) - assert.False(t, inst2.items.Exists(uint64(3))) + require.False(t, inst2.items.Exists(uint64(1))) + require.False(t, inst2.items.Exists(uint64(3))) } func TestAddAndRemove(t *testing.T) { @@ -309,10 +309,10 @@ func TestAddAndRemove(t *testing.T) { wg.Wait() // Ensure instance 2 got new message - assert.True(t, inst2.items.Exists(uint64(10)), "Instance 2 should have receive message 10 but didn't") + require.True(t, inst2.items.Exists(uint64(10)), "Instance 2 should have receive message 10 but didn't") // Ensure instance 2 doesn't have message 0 - assert.False(t, inst2.items.Exists(uint64(0)), "Instance 2 has message 0 but shouldn't have") + require.False(t, inst2.items.Exists(uint64(0)), "Instance 2 has message 0 but shouldn't have") } func TestDigestsFilters(t *testing.T) { @@ -332,10 +332,10 @@ func TestDigestsFilters(t *testing.T) { } for i := range itemIds { seqNum, err := strconv.ParseUint(itemIds[i], 10, 64) - assert.NoError(t, err, "Can't parse seq number") - assert.True(t, seqNum >= 2, "Digest with wrong ( ", seqNum, " ) seqNum passed") + require.NoError(t, err, "Can't parse seq number") + require.True(t, seqNum >= 2, "Digest with wrong ( ", seqNum, " ) seqNum passed") } - assert.Len(t, itemIds, 2, "Not correct number of seqNum passed") + require.Len(t, itemIds, 2, "Not correct number of seqNum passed") atomic.StoreInt32(&inst1ReceivedDigest, int32(1)) }) @@ -373,7 +373,7 @@ func TestHandleMessage(t *testing.T) { return } atomic.StoreInt32(&inst1ReceivedDigest, int32(1)) - assert.True(t, len(itemIds) == 3) + require.True(t, len(itemIds) == 3) }) inst1.mediator.RegisterMsgHook(ResponseMsgType, func(_ []string, items []*protoext.SignedGossipMessage, msg protoext.ReceivedMessage) { @@ -381,7 +381,7 @@ func TestHandleMessage(t *testing.T) { return } atomic.StoreInt32(&inst1ReceivedResponse, int32(1)) - assert.True(t, len(items) == 3) + require.True(t, len(items) == 3) }) // inst1 sends hello to inst2 @@ -397,9 +397,9 @@ func TestHandleMessage(t *testing.T) { // inst2 is expected to send response to inst1 waitUntilOrFail(t, func() bool { return atomic.LoadInt32(&inst1ReceivedResponse) == int32(1) }) - assert.True(t, inst1.items.Exists(uint64(0))) - assert.True(t, inst1.items.Exists(uint64(1))) - assert.True(t, inst1.items.Exists(uint64(2))) + require.True(t, inst1.items.Exists(uint64(0))) + require.True(t, inst1.items.Exists(uint64(1))) + require.True(t, inst1.items.Exists(uint64(2))) } func waitUntilOrFail(t *testing.T, pred func() bool) { @@ -412,7 +412,7 @@ func waitUntilOrFail(t *testing.T, pred func() bool) { time.Sleep(timeoutInterval / 1000) } util.PrintStackTrace() - assert.Fail(t, "Timeout expired!") + require.Fail(t, "Timeout expired!") } func dataMsg(seqNum int) *protoext.SignedGossipMessage { @@ -505,7 +505,7 @@ func TestFormattedDigests(t *testing.T) { for i, tt := range tests { t.Run(strconv.Itoa(i), func(t *testing.T) { - assert.Equal(t, tt.expected, formattedDigests(tt.dataRequest)) + require.Equal(t, tt.expected, formattedDigests(tt.dataRequest)) }) } } diff --git a/gossip/identity/identity_test.go b/gossip/identity/identity_test.go index 69aa9df3cb9..39b3a47c6a8 100644 --- a/gossip/identity/identity_test.go +++ b/gossip/identity/identity_test.go @@ -18,8 +18,8 @@ import ( "github.com/hyperledger/fabric/gossip/api" "github.com/hyperledger/fabric/gossip/common" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) var ( @@ -114,13 +114,13 @@ func TestPut(t *testing.T) { pkiID := msgCryptoService.GetPKIidOfCert(api.PeerIdentityType(identity)) pkiID2 := msgCryptoService.GetPKIidOfCert(api.PeerIdentityType(identity2)) pkiID3 := msgCryptoService.GetPKIidOfCert(api.PeerIdentityType(identity3)) - assert.NoError(t, idStore.Put(pkiID, identity)) - assert.NoError(t, idStore.Put(pkiID, identity)) - assert.Error(t, idStore.Put(nil, identity)) - assert.Error(t, idStore.Put(pkiID2, nil)) - assert.Error(t, idStore.Put(pkiID2, identity)) - assert.Error(t, idStore.Put(pkiID, identity2)) - assert.Error(t, idStore.Put(pkiID3, identity3)) + require.NoError(t, idStore.Put(pkiID, identity)) + require.NoError(t, idStore.Put(pkiID, identity)) + require.Error(t, idStore.Put(nil, identity)) + require.Error(t, idStore.Put(pkiID2, nil)) + require.Error(t, idStore.Put(pkiID2, identity)) + require.Error(t, idStore.Put(pkiID, identity2)) + require.Error(t, idStore.Put(pkiID3, identity3)) } func TestGet(t *testing.T) { @@ -129,13 +129,13 @@ func TestGet(t *testing.T) { identity2 := []byte("not-yacovm") pkiID := msgCryptoService.GetPKIidOfCert(api.PeerIdentityType(identity)) pkiID2 := msgCryptoService.GetPKIidOfCert(api.PeerIdentityType(identity2)) - assert.NoError(t, idStore.Put(pkiID, identity)) + require.NoError(t, idStore.Put(pkiID, identity)) cert, err := idStore.Get(pkiID) - assert.NoError(t, err) - assert.Equal(t, api.PeerIdentityType(identity), cert) + require.NoError(t, err) + require.Equal(t, api.PeerIdentityType(identity), cert) cert, err = idStore.Get(pkiID2) - assert.Nil(t, cert) - assert.Error(t, err) + require.Nil(t, cert) + require.Error(t, err) } func TestVerify(t *testing.T) { @@ -146,9 +146,9 @@ func TestVerify(t *testing.T) { pkiID2 := msgCryptoService.GetPKIidOfCert(api.PeerIdentityType(identity2)) idStore.Put(pkiID, api.PeerIdentityType(identity)) signed, err := idStore.Sign([]byte("bla bla")) - assert.NoError(t, err) - assert.NoError(t, idStore.Verify(pkiID, signed, []byte("bla bla"))) - assert.Error(t, idStore.Verify(pkiID2, signed, []byte("bla bla"))) + require.NoError(t, err) + require.NoError(t, idStore.Verify(pkiID, signed, []byte("bla bla"))) + require.Error(t, idStore.Verify(pkiID2, signed, []byte("bla bla"))) } func TestListInvalidIdentities(t *testing.T) { @@ -158,12 +158,12 @@ func TestListInvalidIdentities(t *testing.T) { case <-time.After(time.Second * 10): t.Fatalf("Didn't detect a deleted identity, expected %s to be deleted", expected) case actual := <-deletedIdentities: - assert.Equal(t, expected, actual) + require.Equal(t, expected, actual) } } // set the time-based expiration time limit to something small SetIdentityUsageThreshold(time.Millisecond * 500) - assert.Equal(t, time.Millisecond*500, GetIdentityUsageThreshold()) + require.Equal(t, time.Millisecond*500, GetIdentityUsageThreshold()) selfPKIID := msgCryptoService.GetPKIidOfCert(dummyID) idStore := NewIdentityMapper(msgCryptoService, dummyID, func(_ common.PKIidType, identity api.PeerIdentityType) { deletedIdentities <- string(identity) @@ -171,10 +171,10 @@ func TestListInvalidIdentities(t *testing.T) { identity := []byte("yacovm") // Test for a revoked identity pkiID := msgCryptoService.GetPKIidOfCert(api.PeerIdentityType(identity)) - assert.NoError(t, idStore.Put(pkiID, api.PeerIdentityType(identity))) + require.NoError(t, idStore.Put(pkiID, api.PeerIdentityType(identity))) cert, err := idStore.Get(pkiID) - assert.NoError(t, err) - assert.NotNil(t, cert) + require.NoError(t, err) + require.NotNil(t, cert) // Revoke the certificate msgCryptoService.revokedIdentities[string(pkiID)] = struct{}{} idStore.SuspectPeers(func(_ api.PeerIdentityType) bool { @@ -182,8 +182,8 @@ func TestListInvalidIdentities(t *testing.T) { }) // Make sure it is not found anymore cert, err = idStore.Get(pkiID) - assert.Error(t, err) - assert.Nil(t, cert) + require.Error(t, err) + require.Nil(t, cert) assertDeletedIdentity("yacovm") // Clean the MCS revocation mock @@ -192,25 +192,25 @@ func TestListInvalidIdentities(t *testing.T) { // for a long time // Add back the identity pkiID = msgCryptoService.GetPKIidOfCert(api.PeerIdentityType(identity)) - assert.NoError(t, idStore.Put(pkiID, api.PeerIdentityType(identity))) + require.NoError(t, idStore.Put(pkiID, api.PeerIdentityType(identity))) // Check it exists in the meantime cert, err = idStore.Get(pkiID) - assert.NoError(t, err) - assert.NotNil(t, cert) + require.NoError(t, err) + require.NotNil(t, cert) time.Sleep(time.Second * 3) // Make sure it has expired cert, err = idStore.Get(pkiID) - assert.Error(t, err) - assert.Nil(t, cert) + require.Error(t, err) + require.Nil(t, cert) assertDeletedIdentity("yacovm") // Make sure our own identity hasn't been expired _, err = idStore.Get(selfPKIID) - assert.NoError(t, err) + require.NoError(t, err) // Now test that an identity that is frequently used doesn't expire // Add back the identity pkiID = msgCryptoService.GetPKIidOfCert(api.PeerIdentityType(identity)) - assert.NoError(t, idStore.Put(pkiID, api.PeerIdentityType(identity))) + require.NoError(t, idStore.Put(pkiID, api.PeerIdentityType(identity))) stopChan := make(chan struct{}) go func() { for { @@ -225,8 +225,8 @@ func TestListInvalidIdentities(t *testing.T) { time.Sleep(time.Second * 3) // Ensure it hasn't expired even though time has passed cert, err = idStore.Get(pkiID) - assert.NoError(t, err) - assert.NotNil(t, cert) + require.NoError(t, err) + require.NotNil(t, cert) stopChan <- struct{}{} // Stop the identity store - this would make periodical un-usage // expiration stop @@ -234,8 +234,8 @@ func TestListInvalidIdentities(t *testing.T) { time.Sleep(time.Second * 3) // Ensure it hasn't expired even though time has passed cert, err = idStore.Get(pkiID) - assert.NoError(t, err) - assert.NotNil(t, cert) + require.NoError(t, err) + require.NotNil(t, cert) } func TestExpiration(t *testing.T) { @@ -249,7 +249,7 @@ func TestExpiration(t *testing.T) { case <-time.After(time.Second * 10): t.Fatalf("Didn't detect a deleted identity, expected %s to be deleted", expected) case actual := <-deletedIdentities: - assert.Equal(t, expected, actual) + require.Equal(t, expected, actual) } } x509Identity := api.PeerIdentityType("x509Identity") @@ -266,37 +266,37 @@ func TestExpiration(t *testing.T) { msgCryptoService.On("Expiration", notSupportedIdentity).Return(time.Time{}, errors.New("no MSP supports given identity")) // Add all identities err := idStore.Put(x509PkiID, x509Identity) - assert.NoError(t, err) + require.NoError(t, err) err = idStore.Put(expiredX509PkiID, expiredX509Identity) - assert.Equal(t, "identity expired", err.Error()) + require.Equal(t, "identity expired", err.Error()) err = idStore.Put(nonX509PkiID, nonX509Identity) - assert.NoError(t, err) + require.NoError(t, err) err = idStore.Put(notSupportedPkiID, notSupportedIdentity) - assert.Error(t, err) - assert.Contains(t, err.Error(), "no MSP supports given identity") + require.Error(t, err) + require.Contains(t, err.Error(), "no MSP supports given identity") // Make sure the x509 cert and the non x509 cert exist in the store returnedIdentity, err := idStore.Get(x509PkiID) - assert.NoError(t, err) - assert.NotEmpty(t, returnedIdentity) + require.NoError(t, err) + require.NotEmpty(t, returnedIdentity) returnedIdentity, err = idStore.Get(nonX509PkiID) - assert.NoError(t, err) - assert.NotEmpty(t, returnedIdentity) + require.NoError(t, err) + require.NotEmpty(t, returnedIdentity) // Wait for the x509 identity to expire time.Sleep(time.Second * 3) // Ensure only the non x509 identity exists now returnedIdentity, err = idStore.Get(x509PkiID) - assert.Error(t, err) - assert.Contains(t, err.Error(), "PKIID wasn't found") - assert.Empty(t, returnedIdentity) + require.Error(t, err) + require.Contains(t, err.Error(), "PKIID wasn't found") + require.Empty(t, returnedIdentity) assertDeletedIdentity("x509Identity") returnedIdentity, err = idStore.Get(nonX509PkiID) - assert.NoError(t, err) - assert.NotEmpty(t, returnedIdentity) + require.NoError(t, err) + require.NotEmpty(t, returnedIdentity) // Ensure that when it is revoked, an expiration timer isn't cancelled for it msgCryptoService.revokedIdentities[string(nonX509PkiID)] = struct{}{} @@ -310,7 +310,7 @@ func TestExpiration(t *testing.T) { func TestExpirationPanic(t *testing.T) { identity3 := []byte("invalidIdentity") msgCryptoService.revokedIdentities[string(identity3)] = struct{}{} - assert.Panics(t, func() { + require.Panics(t, func() { NewIdentityMapper(msgCryptoService, identity3, noopPurgeTrigger, msgCryptoService) }) } @@ -332,8 +332,8 @@ func TestIdentityInfo(t *testing.T) { identity := string(id[0].Identity) pkiID := string(id[0].PKIId) orgId := string(id[0].Organization) - assert.Equal(t, org, orgId) - assert.Equal(t, strings.ToLower(org), string(identity[0])) - assert.Equal(t, strings.ToLower(org), string(pkiID[0])) + require.Equal(t, org, orgId) + require.Equal(t, strings.ToLower(org), string(identity[0])) + require.Equal(t, strings.ToLower(org), string(pkiID[0])) } } diff --git a/gossip/metrics/metrics_test.go b/gossip/metrics/metrics_test.go index 8429021fece..57fd7089d5c 100644 --- a/gossip/metrics/metrics_test.go +++ b/gossip/metrics/metrics_test.go @@ -10,7 +10,7 @@ import ( "testing" "github.com/hyperledger/fabric/common/metrics/metricsfakes" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestMetrics(t *testing.T) { @@ -28,32 +28,32 @@ func TestMetrics(t *testing.T) { gossipMetrics := NewGossipMetrics(provider) // make sure all metrics were created - assert.NotNil(t, gossipMetrics) - - assert.NotNil(t, gossipMetrics.StateMetrics) - assert.NotNil(t, gossipMetrics.StateMetrics.Height) - assert.NotNil(t, gossipMetrics.StateMetrics.CommitDuration) - assert.NotNil(t, gossipMetrics.StateMetrics.PayloadBufferSize) - - assert.NotNil(t, gossipMetrics.ElectionMetrics) - assert.NotNil(t, gossipMetrics.ElectionMetrics.Declaration) - - assert.NotNil(t, gossipMetrics.CommMetrics) - assert.NotNil(t, gossipMetrics.CommMetrics.SentMessages) - assert.NotNil(t, gossipMetrics.CommMetrics.ReceivedMessages) - assert.NotNil(t, gossipMetrics.CommMetrics.BufferOverflow) - - assert.NotNil(t, gossipMetrics.MembershipMetrics) - assert.NotNil(t, gossipMetrics.MembershipMetrics.Total) - - assert.NotNil(t, gossipMetrics.PrivdataMetrics) - assert.NotNil(t, gossipMetrics.PrivdataMetrics.CommitPrivateDataDuration) - assert.NotNil(t, gossipMetrics.PrivdataMetrics.FetchDuration) - assert.NotNil(t, gossipMetrics.PrivdataMetrics.ListMissingPrivateDataDuration) - assert.NotNil(t, gossipMetrics.PrivdataMetrics.PurgeDuration) - assert.NotNil(t, gossipMetrics.PrivdataMetrics.ValidationDuration) - assert.NotNil(t, gossipMetrics.PrivdataMetrics.SendDuration) - assert.NotNil(t, gossipMetrics.PrivdataMetrics.ReconciliationDuration) - assert.NotNil(t, gossipMetrics.PrivdataMetrics.PullDuration) - assert.NotNil(t, gossipMetrics.PrivdataMetrics.RetrieveDuration) + require.NotNil(t, gossipMetrics) + + require.NotNil(t, gossipMetrics.StateMetrics) + require.NotNil(t, gossipMetrics.StateMetrics.Height) + require.NotNil(t, gossipMetrics.StateMetrics.CommitDuration) + require.NotNil(t, gossipMetrics.StateMetrics.PayloadBufferSize) + + require.NotNil(t, gossipMetrics.ElectionMetrics) + require.NotNil(t, gossipMetrics.ElectionMetrics.Declaration) + + require.NotNil(t, gossipMetrics.CommMetrics) + require.NotNil(t, gossipMetrics.CommMetrics.SentMessages) + require.NotNil(t, gossipMetrics.CommMetrics.ReceivedMessages) + require.NotNil(t, gossipMetrics.CommMetrics.BufferOverflow) + + require.NotNil(t, gossipMetrics.MembershipMetrics) + require.NotNil(t, gossipMetrics.MembershipMetrics.Total) + + require.NotNil(t, gossipMetrics.PrivdataMetrics) + require.NotNil(t, gossipMetrics.PrivdataMetrics.CommitPrivateDataDuration) + require.NotNil(t, gossipMetrics.PrivdataMetrics.FetchDuration) + require.NotNil(t, gossipMetrics.PrivdataMetrics.ListMissingPrivateDataDuration) + require.NotNil(t, gossipMetrics.PrivdataMetrics.PurgeDuration) + require.NotNil(t, gossipMetrics.PrivdataMetrics.ValidationDuration) + require.NotNil(t, gossipMetrics.PrivdataMetrics.SendDuration) + require.NotNil(t, gossipMetrics.PrivdataMetrics.ReconciliationDuration) + require.NotNil(t, gossipMetrics.PrivdataMetrics.PullDuration) + require.NotNil(t, gossipMetrics.PrivdataMetrics.RetrieveDuration) } diff --git a/gossip/privdata/config_test.go b/gossip/privdata/config_test.go index 7efde8ebeef..e5eae43cfd1 100644 --- a/gossip/privdata/config_test.go +++ b/gossip/privdata/config_test.go @@ -12,7 +12,7 @@ import ( "github.com/hyperledger/fabric/gossip/privdata" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGlobalConfig(t *testing.T) { @@ -36,7 +36,7 @@ func TestGlobalConfig(t *testing.T) { }, } - assert.Equal(t, coreConfig, expectedConfig) + require.Equal(t, coreConfig, expectedConfig) } func TestGlobalConfigDefaults(t *testing.T) { @@ -54,7 +54,7 @@ func TestGlobalConfigDefaults(t *testing.T) { }, } - assert.Equal(t, coreConfig, expectedConfig) + require.Equal(t, coreConfig, expectedConfig) } func TestGlobalConfigPanic(t *testing.T) { @@ -65,7 +65,7 @@ func TestGlobalConfigPanic(t *testing.T) { viper.Set("peer.gossip.pvtData.reconciliationEnabled", true) viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount", 2) viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.maxPeerCount", 1) - assert.PanicsWithValue( + require.PanicsWithValue( t, "peer.gossip.pvtData.implicitCollectionDisseminationPolicy.maxPeerCount (1) cannot be less than requiredPeerCount (2)", func() { privdata.GlobalConfig() }, @@ -73,7 +73,7 @@ func TestGlobalConfigPanic(t *testing.T) { ) viper.Set("peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount", -1) - assert.PanicsWithValue( + require.PanicsWithValue( t, "peer.gossip.pvtData.implicitCollectionDisseminationPolicy.requiredPeerCount (-1) cannot be less than zero", func() { privdata.GlobalConfig() }, diff --git a/gossip/privdata/coordinator_test.go b/gossip/privdata/coordinator_test.go index 27e3796a608..251ad82186a 100644 --- a/gossip/privdata/coordinator_test.go +++ b/gossip/privdata/coordinator_test.go @@ -43,7 +43,6 @@ import ( mspmgmt "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" ) @@ -147,8 +146,8 @@ func (f *fetcherMock) fetch(dig2src dig2sources) (*privdatacommon.FetchedPvtData uniqueEndorsements[string(endorsement.Endorser)] = struct{}{} } } - assert.True(f.t, digests(f.expectedDigests).Equal(digests(dig2src.keys()))) - assert.Equal(f.t, len(f.expectedEndorsers), len(uniqueEndorsements)) + require.True(f.t, digests(f.expectedDigests).Equal(digests(dig2src.keys()))) + require.Equal(f.t, len(f.expectedEndorsers), len(uniqueEndorsements)) args := f.Called(dig2src) if args.Get(1) == nil { return args.Get(0).(*privdatacommon.FetchedPvtDataContainer), nil @@ -387,7 +386,7 @@ func TestPvtDataCollections_FailOnEmptyPayload(t *testing.T) { } _, err := collection.Marshal() - assertion := assert.New(t) + assertion := require.New(t) assertion.Error(err, "Expected to fail since second item has nil payload") assertion.Equal("Mallformed private data payload, rwset index 1 is nil", fmt.Sprintf("%s", err)) } @@ -401,7 +400,7 @@ func TestPvtDataCollections_FailMarshalingWriteSet(t *testing.T) { } _, err := collection.Marshal() - assertion := assert.New(t) + assertion := require.New(t) assertion.Error(err, "Expected to fail since first item has nil writeset") assertion.Contains(fmt.Sprintf("%s", err), "Could not marshal private rwset index 0") } @@ -456,7 +455,7 @@ func TestPvtDataCollections_Marshal(t *testing.T) { bytes, err := collection.Marshal() - assertion := assert.New(t) + assertion := require.New(t) assertion.NoError(err) assertion.NotNil(bytes) assertion.Equal(2, len(bytes)) @@ -485,7 +484,7 @@ func TestPvtDataCollections_Unmarshal(t *testing.T) { bytes, err := collection.Marshal() - assertion := assert.New(t) + assertion := require.New(t) assertion.NoError(err) assertion.NotNil(bytes) assertion.Equal(1, len(bytes)) @@ -619,7 +618,7 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { iterator.Close() return } - assert.Nil(t, res) + require.Nil(t, res) iterator.Close() } } @@ -649,8 +648,8 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, pvtData) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Block.Metadata is nil or Block.Metadata lacks a Tx filter bitmap") + require.Error(t, err) + require.Contains(t, err.Error(), "Block.Metadata is nil or Block.Metadata lacks a Tx filter bitmap") // Scenario II: Validator has an error while validating the block block = bf.create() @@ -664,8 +663,8 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, pvtData) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed validating block") + require.Error(t, err) + require.Contains(t, err.Error(), "failed validating block") // Scenario III: Block we got contains an inadequate length of Tx filter in the metadata block = bf.withMetadataSize(100).create() @@ -679,9 +678,9 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, pvtData) - assert.Error(t, err) - assert.Contains(t, err.Error(), "block data size") - assert.Contains(t, err.Error(), "is different from Tx filter size") + require.Error(t, err) + require.Contains(t, err.Error(), "block data size") + require.Contains(t, err.Error(), "is different from Tx filter size") // Scenario IV: The second transaction in the block we got is invalid, and we have no private data for that. // As the StorePvtDataOfInvalidTx is set of false, if the coordinator would try to fetch private data, the @@ -689,7 +688,7 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { // in this test. var commitHappened bool assertCommitHappened := func() { - assert.True(t, commitHappened) + require.True(t, commitHappened) commitHappened = false } digKeys := []privdatacommon.DigKey{ @@ -710,12 +709,12 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { privateDataPassed2Ledger := args.Get(0).(*ledger.BlockAndPvtData).PvtData commitHappened = true // Only the first transaction's private data is passed to the ledger - assert.Len(t, privateDataPassed2Ledger, 1) - assert.Equal(t, 0, int(privateDataPassed2Ledger[0].SeqInBlock)) + require.Len(t, privateDataPassed2Ledger, 1) + require.Equal(t, 0, int(privateDataPassed2Ledger[0].SeqInBlock)) // The private data passed to the ledger contains "ns1" and has 2 collections in it - assert.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset, 1) - assert.Equal(t, "ns1", privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].Namespace) - assert.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].CollectionPvtRwset, 2) + require.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset, 1) + require.Equal(t, "ns1", privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].Namespace) + require.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].CollectionPvtRwset, 2) }).Return(nil) block = bf.withInvalidTxns(1).AddTxn("tx1", "ns1", hash, "c1", "c2").AddTxn("tx2", "ns2", hash, "c1").create() pvtData = pdFactory.addRWSet().addNSRWSet("ns1", "c1", "c2").create() @@ -734,7 +733,7 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() // Ensure the 2nd transaction which is invalid and wasn't committed - is still purged. // This is so that if we get a transaction via dissemination from an endorser, we purge it @@ -747,7 +746,7 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { // it should not store the pvtData of invalid transaction in the ledger instead a missing entry. testConfig.SkipPullingInvalidTransactions = true assertCommitHappened = func() { - assert.True(t, commitHappened) + require.True(t, commitHappened) commitHappened = false } committer = &mocks.Committer{} @@ -756,23 +755,23 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { commitHappened = true // Only the first transaction's private data is passed to the ledger privateDataPassed2Ledger := blockAndPvtData.PvtData - assert.Len(t, privateDataPassed2Ledger, 1) - assert.Equal(t, 0, int(privateDataPassed2Ledger[0].SeqInBlock)) + require.Len(t, privateDataPassed2Ledger, 1) + require.Equal(t, 0, int(privateDataPassed2Ledger[0].SeqInBlock)) // The private data passed to the ledger contains "ns1" and has 2 collections in it - assert.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset, 1) - assert.Equal(t, "ns1", privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].Namespace) - assert.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].CollectionPvtRwset, 2) + require.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset, 1) + require.Equal(t, "ns1", privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].Namespace) + require.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].CollectionPvtRwset, 2) missingPrivateDataPassed2Ledger := blockAndPvtData.MissingPvtData - assert.Len(t, missingPrivateDataPassed2Ledger, 1) - assert.Len(t, missingPrivateDataPassed2Ledger[1], 1) - assert.Equal(t, missingPrivateDataPassed2Ledger[1][0].Namespace, "ns2") - assert.Equal(t, missingPrivateDataPassed2Ledger[1][0].Collection, "c1") - assert.Equal(t, missingPrivateDataPassed2Ledger[1][0].IsEligible, true) + require.Len(t, missingPrivateDataPassed2Ledger, 1) + require.Len(t, missingPrivateDataPassed2Ledger[1], 1) + require.Equal(t, missingPrivateDataPassed2Ledger[1][0].Namespace, "ns2") + require.Equal(t, missingPrivateDataPassed2Ledger[1][0].Collection, "c1") + require.Equal(t, missingPrivateDataPassed2Ledger[1][0].IsEligible, true) commitOpts := args.Get(1).(*ledger.CommitOptions) expectedCommitOpts := &ledger.CommitOptions{FetchPvtDataFromLedger: false} - assert.Equal(t, expectedCommitOpts, commitOpts) + require.Equal(t, expectedCommitOpts, commitOpts) }).Return(nil) block = bf.withInvalidTxns(1).AddTxn("tx1", "ns1", hash, "c1", "c2").AddTxn("tx2", "ns2", hash, "c1").create() @@ -796,7 +795,7 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() assertPurged("tx1", "tx2") @@ -811,24 +810,24 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { // pvtData of both transactions must be present though the second transaction // is invalid. privateDataPassed2Ledger := blockAndPvtData.PvtData - assert.Len(t, privateDataPassed2Ledger, 2) - assert.Equal(t, 0, int(privateDataPassed2Ledger[0].SeqInBlock)) - assert.Equal(t, 1, int(privateDataPassed2Ledger[1].SeqInBlock)) + require.Len(t, privateDataPassed2Ledger, 2) + require.Equal(t, 0, int(privateDataPassed2Ledger[0].SeqInBlock)) + require.Equal(t, 1, int(privateDataPassed2Ledger[1].SeqInBlock)) // The private data passed to the ledger for tx1 contains "ns1" and has 2 collections in it - assert.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset, 1) - assert.Equal(t, "ns1", privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].Namespace) - assert.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].CollectionPvtRwset, 2) + require.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset, 1) + require.Equal(t, "ns1", privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].Namespace) + require.Len(t, privateDataPassed2Ledger[0].WriteSet.NsPvtRwset[0].CollectionPvtRwset, 2) // The private data passed to the ledger for tx2 contains "ns2" and has 1 collection in it - assert.Len(t, privateDataPassed2Ledger[1].WriteSet.NsPvtRwset, 1) - assert.Equal(t, "ns2", privateDataPassed2Ledger[1].WriteSet.NsPvtRwset[0].Namespace) - assert.Len(t, privateDataPassed2Ledger[1].WriteSet.NsPvtRwset[0].CollectionPvtRwset, 1) + require.Len(t, privateDataPassed2Ledger[1].WriteSet.NsPvtRwset, 1) + require.Equal(t, "ns2", privateDataPassed2Ledger[1].WriteSet.NsPvtRwset[0].Namespace) + require.Len(t, privateDataPassed2Ledger[1].WriteSet.NsPvtRwset[0].CollectionPvtRwset, 1) missingPrivateDataPassed2Ledger := blockAndPvtData.MissingPvtData - assert.Len(t, missingPrivateDataPassed2Ledger, 0) + require.Len(t, missingPrivateDataPassed2Ledger, 0) commitOpts := args.Get(1).(*ledger.CommitOptions) expectedCommitOpts := &ledger.CommitOptions{FetchPvtDataFromLedger: false} - assert.Equal(t, expectedCommitOpts, commitOpts) + require.Equal(t, expectedCommitOpts, commitOpts) }).Return(nil) fetcher = &fetcherMock{t: t} @@ -864,21 +863,21 @@ func TestCoordinatorStoreInvalidBlock(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() assertPurged("tx1", "tx2") // Scenario VII: Block doesn't contain a header block.Header = nil err = coordinator.StoreBlock(block, pvtData) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Block header is nil") + require.Error(t, err) + require.Contains(t, err.Error(), "Block header is nil") // Scenario VIII: Block doesn't contain Data block.Data = nil err = coordinator.StoreBlock(block, pvtData) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Block data is empty") + require.Error(t, err) + require.Contains(t, err.Error(), "Block data is empty") } func TestCoordinatorToFilterOutPvtRWSetsWithWrongHash(t *testing.T) { @@ -939,7 +938,7 @@ func TestCoordinatorToFilterOutPvtRWSetsWithWrongHash(t *testing.T) { iterator.Close() return } - assert.Nil(t, res) + require.Nil(t, res) iterator.Close() } } @@ -950,13 +949,13 @@ func TestCoordinatorToFilterOutPvtRWSetsWithWrongHash(t *testing.T) { committer.On("CommitLegacy", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { privateDataPassed2Ledger := args.Get(0).(*ledger.BlockAndPvtData).PvtData - assert.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), + require.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), flattenTxPvtDataMap(expectedPvtData))) commitHappened = true commitOpts := args.Get(1).(*ledger.CommitOptions) expectedCommitOpts := &ledger.CommitOptions{FetchPvtDataFromLedger: false} - assert.Equal(t, expectedCommitOpts, commitOpts) + require.Equal(t, expectedCommitOpts, commitOpts) }).Return(nil) hash := util2.ComputeSHA256([]byte("rws-original")) @@ -1006,7 +1005,7 @@ func TestCoordinatorToFilterOutPvtRWSetsWithWrongHash(t *testing.T) { coordinator.StoreBlock(block, nil) // Assert blocks was eventually committed - assert.True(t, commitHappened) + require.True(t, commitHappened) // Assert transaction has been purged assertPurged("tx1") @@ -1033,19 +1032,19 @@ func TestCoordinatorStoreBlock(t *testing.T) { var commitHappened bool assertCommitHappened := func() { - assert.True(t, commitHappened) + require.True(t, commitHappened) commitHappened = false } committer := &mocks.Committer{} committer.On("CommitLegacy", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { privateDataPassed2Ledger := args.Get(0).(*ledger.BlockAndPvtData).PvtData - assert.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), + require.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), flattenTxPvtDataMap(expectedCommittedPrivateData1))) commitHappened = true commitOpts := args.Get(1).(*ledger.CommitOptions) expectedCommitOpts := &ledger.CommitOptions{FetchPvtDataFromLedger: false} - assert.Equal(t, expectedCommitOpts, commitOpts) + require.Equal(t, expectedCommitOpts, commitOpts) }).Return(nil) store := newTransientStore(t) @@ -1107,7 +1106,7 @@ func TestCoordinatorStoreBlock(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() assertPurgeTxs := func() bool { return assertPurged("tx1", "tx2") @@ -1135,7 +1134,7 @@ func TestCoordinatorStoreBlock(t *testing.T) { }) pvtData = pdFactory.addRWSet().addNSRWSet("ns1", "c1").addRWSet().addNSRWSet("ns2", "c1").create() err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() assertPurgeTxs = func() bool { return assertPurged("tx1", "tx2") @@ -1180,7 +1179,7 @@ func TestCoordinatorStoreBlock(t *testing.T) { }, nil) pvtData = pdFactory.addRWSet().addNSRWSet("ns1", "c1").create() err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() assertPurgeTxs = func() bool { return assertPurged("tx1", "tx2") @@ -1192,7 +1191,7 @@ func TestCoordinatorStoreBlock(t *testing.T) { pvtData = pdFactory.addRWSet().addNSRWSet("ns1", "c1", "c2", "c3"). addRWSet().addNSRWSet("ns2", "c1", "c3").addRWSet().addNSRWSet("ns1", "c4").create() err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() assertPurgeTxs = func() bool { return assertPurged("tx1", "tx2") @@ -1214,8 +1213,8 @@ func TestCoordinatorStoreBlock(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, nil) - assert.Error(t, err) - assert.Equal(t, "test error", err.Error()) + require.Error(t, err) + require.Equal(t, "test error", err.Error()) fmt.Println("Scenario VI") // Scenario VI: Block didn't get with any private data alongside it, and the transient store @@ -1243,13 +1242,13 @@ func TestCoordinatorStoreBlock(t *testing.T) { committer = &mocks.Committer{} committer.On("CommitLegacy", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { privateDataPassed2Ledger := args.Get(0).(*ledger.BlockAndPvtData).PvtData - assert.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), + require.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), flattenTxPvtDataMap(expectedCommittedPrivateData2))) commitHappened = true commitOpts := args.Get(1).(*ledger.CommitOptions) expectedCommitOpts := &ledger.CommitOptions{FetchPvtDataFromLedger: false} - assert.Equal(t, expectedCommitOpts, commitOpts) + require.Equal(t, expectedCommitOpts, commitOpts) }).Return(nil) committer.On("DoesPvtDataInfoExistInLedger", mock.Anything).Return(false, nil) coordinator = NewCoordinator(mspID, Support{ @@ -1261,7 +1260,7 @@ func TestCoordinatorStoreBlock(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, nil) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() assertPurgeTxs = func() bool { return assertPurged("tx3") @@ -1283,13 +1282,13 @@ func TestCoordinatorStoreBlock(t *testing.T) { committer = &mocks.Committer{} committer.On("CommitLegacy", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { privateDataPassed2Ledger := args.Get(0).(*ledger.BlockAndPvtData).PvtData - assert.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), + require.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), flattenTxPvtDataMap(expectedCommittedPrivateData2))) commitHappened = true commitOpts := args.Get(1).(*ledger.CommitOptions) expectedCommitOpts := &ledger.CommitOptions{FetchPvtDataFromLedger: false} - assert.Equal(t, expectedCommitOpts, commitOpts) + require.Equal(t, expectedCommitOpts, commitOpts) }).Return(nil) committer.On("DoesPvtDataInfoExistInLedger", mock.Anything).Return(false, nil) coordinator = NewCoordinator(mspID, Support{ @@ -1303,7 +1302,7 @@ func TestCoordinatorStoreBlock(t *testing.T) { pvtData = pdFactory.addRWSet().addNSRWSet("ns3", "c3").create() err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() // In any case, all transactions in the block are purged from the transient store assertPurgeTxs = func() bool { @@ -1330,16 +1329,16 @@ func TestCoordinatorStoreBlockWhenPvtDataExistInLedger(t *testing.T) { var commitHappened bool assertCommitHappened := func() { - assert.True(t, commitHappened) + require.True(t, commitHappened) commitHappened = false } committer := &mocks.Committer{} committer.On("CommitLegacy", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { privateDataPassed2Ledger := args.Get(0).(*ledger.BlockAndPvtData).PvtData - assert.Equal(t, ledger.TxPvtDataMap{}, privateDataPassed2Ledger) + require.Equal(t, ledger.TxPvtDataMap{}, privateDataPassed2Ledger) commitOpts := args.Get(1).(*ledger.CommitOptions) expectedCommitOpts := &ledger.CommitOptions{FetchPvtDataFromLedger: true} - assert.Equal(t, expectedCommitOpts, commitOpts) + require.Equal(t, expectedCommitOpts, commitOpts) commitHappened = true }).Return(nil) @@ -1380,7 +1379,7 @@ func TestCoordinatorStoreBlockWhenPvtDataExistInLedger(t *testing.T) { CapabilityProvider: capabilityProvider, }, nil, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() } @@ -1404,24 +1403,24 @@ func TestProceedWithoutPrivateData(t *testing.T) { cs := createcollectionStore(peerSelfSignedData).thatAcceptsAll().withMSPIdentity(identity.GetMSPIdentifier()) var commitHappened bool assertCommitHappened := func() { - assert.True(t, commitHappened) + require.True(t, commitHappened) commitHappened = false } committer := &mocks.Committer{} committer.On("CommitLegacy", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { blockAndPrivateData := args.Get(0).(*ledger.BlockAndPvtData) privateDataPassed2Ledger := blockAndPrivateData.PvtData - assert.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), + require.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), flattenTxPvtDataMap(expectedCommittedPrivateData2))) missingPrivateData := blockAndPrivateData.MissingPvtData expectedMissingPvtData := make(ledger.TxMissingPvtDataMap) expectedMissingPvtData.Add(0, "ns3", "c2", true) - assert.Equal(t, expectedMissingPvtData, missingPrivateData) + require.Equal(t, expectedMissingPvtData, missingPrivateData) commitHappened = true commitOpts := args.Get(1).(*ledger.CommitOptions) expectedCommitOpts := &ledger.CommitOptions{FetchPvtDataFromLedger: false} - assert.Equal(t, expectedCommitOpts, commitOpts) + require.Equal(t, expectedCommitOpts, commitOpts) }).Return(nil) store := newTransientStore(t) @@ -1441,7 +1440,7 @@ func TestProceedWithoutPrivateData(t *testing.T) { iterator.Close() return } - assert.Nil(t, res) + require.Nil(t, res) iterator.Close() } } @@ -1495,7 +1494,7 @@ func TestProceedWithoutPrivateData(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() assertPurged("tx1") } @@ -1522,24 +1521,24 @@ func TestProceedWithInEligiblePrivateData(t *testing.T) { var commitHappened bool assertCommitHappened := func() { - assert.True(t, commitHappened) + require.True(t, commitHappened) commitHappened = false } committer := &mocks.Committer{} committer.On("CommitLegacy", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { blockAndPrivateData := args.Get(0).(*ledger.BlockAndPvtData) privateDataPassed2Ledger := blockAndPrivateData.PvtData - assert.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), + require.True(t, reflect.DeepEqual(flattenTxPvtDataMap(privateDataPassed2Ledger), flattenTxPvtDataMap(expectedCommittedPrivateData3))) missingPrivateData := blockAndPrivateData.MissingPvtData expectedMissingPvtData := make(ledger.TxMissingPvtDataMap) expectedMissingPvtData.Add(0, "ns3", "c2", false) - assert.Equal(t, expectedMissingPvtData, missingPrivateData) + require.Equal(t, expectedMissingPvtData, missingPrivateData) commitHappened = true commitOpts := args.Get(1).(*ledger.CommitOptions) expectedCommitOpts := &ledger.CommitOptions{FetchPvtDataFromLedger: false} - assert.Equal(t, expectedCommitOpts, commitOpts) + require.Equal(t, expectedCommitOpts, commitOpts) }).Return(nil) hash := util2.ComputeSHA256([]byte("rws-pre-image")) @@ -1569,7 +1568,7 @@ func TestProceedWithInEligiblePrivateData(t *testing.T) { CapabilityProvider: capabilityProvider, }, nil, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, nil) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() } @@ -1636,17 +1635,17 @@ func TestCoordinatorGetBlocks(t *testing.T) { }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) expectedPrivData := (&pvtDataFactory{}).addRWSet().addNSRWSet("ns1", "c2").create() block2, returnedPrivateData, err := coordinator.GetPvtDataAndBlockByNum(1, peerSelfSignedData) - assert.NoError(t, err) - assert.Equal(t, block, block2) - assert.Equal(t, expectedPrivData, []*ledger.TxPvtData(returnedPrivateData)) + require.NoError(t, err) + require.Equal(t, block, block2) + require.Equal(t, expectedPrivData, []*ledger.TxPvtData(returnedPrivateData)) // Bad path - error occurs when trying to retrieve the block and private data committer.Mock = mock.Mock{} committer.On("GetPvtDataAndBlockByNum", mock.Anything).Return(nil, errors.New("uh oh")) block2, returnedPrivateData, err = coordinator.GetPvtDataAndBlockByNum(1, peerSelfSignedData) - assert.Nil(t, block2) - assert.Empty(t, returnedPrivateData) - assert.Error(t, err) + require.Nil(t, block2) + require.Empty(t, returnedPrivateData) + require.Error(t, err) } func TestPurgeBelowHeight(t *testing.T) { @@ -1751,7 +1750,7 @@ func TestPurgeBelowHeight(t *testing.T) { } require.Eventually(t, assertPurgedBlocks, 2*time.Second, 100*time.Millisecond) err := coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) // test first 6 blocks were purged assertPurgedBlocks = func() bool { return assertPurged(true) @@ -1793,7 +1792,7 @@ func TestCoordinatorStorePvtData(t *testing.T) { PvtRwset: pvtData[0].WriteSet, CollectionConfigs: make(map[string]*peer.CollectionConfigPackage), }, uint64(5)) - assert.NoError(t, err) + require.NoError(t, err) } func TestContainsWrites(t *testing.T) { @@ -1801,15 +1800,15 @@ func TestContainsWrites(t *testing.T) { col := &rwsetutil.CollHashedRwSet{ CollectionName: "col1", } - assert.False(t, containsWrites("tx", "ns", col)) + require.False(t, containsWrites("tx", "ns", col)) // Scenario II: No writes in collection col.HashedRwSet = &kvrwset.HashedRWSet{} - assert.False(t, containsWrites("tx", "ns", col)) + require.False(t, containsWrites("tx", "ns", col)) // Scenario III: Some writes in collection col.HashedRwSet.HashedWrites = append(col.HashedRwSet.HashedWrites, &kvrwset.KVWriteHash{}) - assert.True(t, containsWrites("tx", "ns", col)) + require.True(t, containsWrites("tx", "ns", col)) } func TestIgnoreReadOnlyColRWSets(t *testing.T) { @@ -1838,21 +1837,21 @@ func TestIgnoreReadOnlyColRWSets(t *testing.T) { cs := createcollectionStore(peerSelfSignedData).thatAcceptsAll().withMSPIdentity(identity.GetMSPIdentifier()) var commitHappened bool assertCommitHappened := func() { - assert.True(t, commitHappened) + require.True(t, commitHappened) commitHappened = false } committer := &mocks.Committer{} committer.On("CommitLegacy", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { blockAndPrivateData := args.Get(0).(*ledger.BlockAndPvtData) // Ensure there is no private data to commit - assert.Empty(t, blockAndPrivateData.PvtData) + require.Empty(t, blockAndPrivateData.PvtData) // Ensure there is no missing private data - assert.Empty(t, blockAndPrivateData.MissingPvtData) + require.Empty(t, blockAndPrivateData.MissingPvtData) commitHappened = true commitOpts := args.Get(1).(*ledger.CommitOptions) expectedCommitOpts := &ledger.CommitOptions{FetchPvtDataFromLedger: false} - assert.Equal(t, expectedCommitOpts, commitOpts) + require.Equal(t, expectedCommitOpts, commitOpts) }).Return(nil) store := newTransientStore(t) @@ -1888,7 +1887,7 @@ func TestIgnoreReadOnlyColRWSets(t *testing.T) { // We pass a nil private data slice to indicate no pre-images though the block contains // private data reads. err = coordinator.StoreBlock(block, nil) - assert.NoError(t, err) + require.NoError(t, err) assertCommitHappened() } @@ -1970,32 +1969,32 @@ func TestCoordinatorMetrics(t *testing.T) { CapabilityProvider: capabilityProvider, }, store.store, peerSelfSignedData, metrics, testConfig, idDeserializerFactory) err = coordinator.StoreBlock(block, pvtData) - assert.NoError(t, err) + require.NoError(t, err) // make sure all coordinator metrics were reported - assert.Equal(t, + require.Equal(t, []string{"channel", "testchannelid"}, testMetricProvider.FakeValidationDuration.WithArgsForCall(0), ) - assert.True(t, testMetricProvider.FakeValidationDuration.ObserveArgsForCall(0) > 0) - assert.Equal(t, + require.True(t, testMetricProvider.FakeValidationDuration.ObserveArgsForCall(0) > 0) + require.Equal(t, []string{"channel", "testchannelid"}, testMetricProvider.FakeListMissingPrivateDataDuration.WithArgsForCall(0), ) - assert.True(t, testMetricProvider.FakeListMissingPrivateDataDuration.ObserveArgsForCall(0) > 0) - assert.Equal(t, + require.True(t, testMetricProvider.FakeListMissingPrivateDataDuration.ObserveArgsForCall(0) > 0) + require.Equal(t, []string{"channel", "testchannelid"}, testMetricProvider.FakeFetchDuration.WithArgsForCall(0), ) // fetch duration metric only reported when fetching from remote peer - assert.True(t, testMetricProvider.FakeFetchDuration.ObserveArgsForCall(0) > 0) - assert.Equal(t, + require.True(t, testMetricProvider.FakeFetchDuration.ObserveArgsForCall(0) > 0) + require.Equal(t, []string{"channel", "testchannelid"}, testMetricProvider.FakeCommitPrivateDataDuration.WithArgsForCall(0), ) - assert.True(t, testMetricProvider.FakeCommitPrivateDataDuration.ObserveArgsForCall(0) > 0) - assert.Equal(t, + require.True(t, testMetricProvider.FakeCommitPrivateDataDuration.ObserveArgsForCall(0) > 0) + require.Equal(t, []string{"channel", "testchannelid"}, testMetricProvider.FakePurgeDuration.WithArgsForCall(0), ) @@ -2003,5 +2002,5 @@ func TestCoordinatorMetrics(t *testing.T) { purgeDuration := func() bool { return testMetricProvider.FakePurgeDuration.ObserveArgsForCall(0) > 0 } - assert.Eventually(t, purgeDuration, 2*time.Second, 100*time.Millisecond) + require.Eventually(t, purgeDuration, 2*time.Second, 100*time.Millisecond) } diff --git a/gossip/privdata/dataretriever_test.go b/gossip/privdata/dataretriever_test.go index 1ed10a88c30..10333232139 100644 --- a/gossip/privdata/dataretriever_test.go +++ b/gossip/privdata/dataretriever_test.go @@ -17,8 +17,8 @@ import ( "github.com/hyperledger/fabric/core/ledger" privdatacommon "github.com/hyperledger/fabric/gossip/privdata/common" "github.com/hyperledger/fabric/gossip/privdata/mocks" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) /* @@ -73,7 +73,7 @@ func TestNewDataRetriever_GetDataFromTransientStore(t *testing.T) { SeqInBlock: 1, }}, 2) - assertion := assert.New(t) + assertion := require.New(t) assertion.NoError(err) assertion.NotEmpty(rwSets) dig2pvtRWSet := rwSets[privdatacommon.DigKey{ @@ -139,7 +139,7 @@ func TestNewDataRetriever_GetDataFromLedger(t *testing.T) { SeqInBlock: 1, }}, uint64(5)) - assertion := assert.New(t) + assertion := require.New(t) assertion.NoError(err) assertion.NotEmpty(rwSets) pvtRWSet := rwSets[privdatacommon.DigKey{ @@ -185,7 +185,7 @@ func TestNewDataRetriever_FailGetPvtDataFromLedger(t *testing.T) { SeqInBlock: 1, }}, uint64(5)) - assertion := assert.New(t) + assertion := require.New(t) assertion.Error(err) assertion.Empty(rwSets) } @@ -230,7 +230,7 @@ func TestNewDataRetriever_GetOnlyRelevantPvtData(t *testing.T) { SeqInBlock: 1, }}, 5) - assertion := assert.New(t) + assertion := require.New(t) assertion.NoError(err) assertion.NotEmpty(rwSets) pvtRWSet := rwSets[privdatacommon.DigKey{ @@ -324,7 +324,7 @@ func TestNewDataRetriever_GetMultipleDigests(t *testing.T) { SeqInBlock: 2, }}, 5) - assertion := assert.New(t) + assertion := require.New(t) assertion.NoError(err) assertion.NotEmpty(rwSets) assertion.Equal(2, len(rwSets)) @@ -391,7 +391,7 @@ func TestNewDataRetriever_EmptyWriteSet(t *testing.T) { SeqInBlock: 1, }}, 5) - assertion := assert.New(t) + assertion := require.New(t) assertion.NoError(err) assertion.NotEmpty(rwSets) @@ -443,7 +443,7 @@ func TestNewDataRetriever_FailedObtainConfigHistoryRetriever(t *testing.T) { SeqInBlock: 1, }}, 5) - assertion := assert.New(t) + assertion := require.New(t) assertion.Contains(err.Error(), "failed to obtain ConfigHistoryRetriever") } @@ -489,7 +489,7 @@ func TestNewDataRetriever_NoCollectionConfig(t *testing.T) { committer.On("GetConfigHistoryRetriever").Return(historyRetreiver, nil) retriever := NewDataRetriever(store.store, committer) - assertion := assert.New(t) + assertion := require.New(t) _, _, err := retriever.CollectionRWSet([]*gossip2.PvtDataDigest{{ Namespace: ns1, @@ -532,7 +532,7 @@ func TestNewDataRetriever_FailedGetLedgerHeight(t *testing.T) { SeqInBlock: 1, }}, 5) - assertion := assert.New(t) + assertion := require.New(t) assertion.Error(err) assertion.Contains(err.Error(), "failed to read ledger height") } @@ -558,7 +558,7 @@ func TestNewDataRetriever_EmptyPvtRWSetInTransientStore(t *testing.T) { SeqInBlock: 1, }}, 2) - assertion := assert.New(t) + assertion := require.New(t) assertion.NoError(err) assertion.NotEmpty(rwSets) assertion.Empty(rwSets[privdatacommon.DigKey{ diff --git a/gossip/privdata/distributor_test.go b/gossip/privdata/distributor_test.go index 13a5f55bdf6..99e49755254 100644 --- a/gossip/privdata/distributor_test.go +++ b/gossip/privdata/distributor_test.go @@ -25,8 +25,8 @@ import ( mocks2 "github.com/hyperledger/fabric/gossip/privdata/mocks" "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func Setup(mock *mocks2.CollectionAccessPolicy, requiredPeerCount int, maxPeerCount int, @@ -158,7 +158,7 @@ func TestDistributor(t *testing.T) { }, }, }, 0) - assert.NoError(t, err) + require.NoError(t, err) err = d.Distribute("tx2", &transientstore.TxPvtReadWriteSetWithConfigInfo{ PvtRwset: pvtData[1].WriteSet, CollectionConfigs: map[string]*peer.CollectionConfigPackage{ @@ -167,13 +167,13 @@ func TestDistributor(t *testing.T) { }, }, }, 0) - assert.NoError(t, err) + require.NoError(t, err) expectedMaxCount := map[string]int{} expectedMinAck := map[string]int{} i := 0 - assert.Len(t, sendings, 8) + require.Len(t, sendings, 8) for dis := range sendings { key := fmt.Sprintf("%s~%s", dis.PrivatePayload.Namespace, dis.PrivatePayload.CollectionName) expectedMaxCount[key] += dis.SendCriteria.MaxPeers @@ -185,15 +185,15 @@ func TestDistributor(t *testing.T) { } // Ensure MaxPeers is maxInternalPeers which is 2 - assert.Equal(t, 2, expectedMaxCount["ns1~c1"]) - assert.Equal(t, 2, expectedMaxCount["ns2~c2"]) + require.Equal(t, 2, expectedMaxCount["ns1~c1"]) + require.Equal(t, 2, expectedMaxCount["ns2~c2"]) // and MinAck is minInternalPeers which is 1 - assert.Equal(t, 1, expectedMinAck["ns1~c1"]) - assert.Equal(t, 1, expectedMinAck["ns2~c2"]) + require.Equal(t, 1, expectedMinAck["ns1~c1"]) + require.Equal(t, 1, expectedMinAck["ns2~c2"]) // Channel is empty after we read 8 times from it - assert.Len(t, sendings, 0) + require.Len(t, sendings, 0) // Bad path: dependencies (gossip and others) don't work properly g.err = errors.New("failed obtaining filter") @@ -205,8 +205,8 @@ func TestDistributor(t *testing.T) { }, }, }, 0) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed obtaining filter") + require.Error(t, err) + require.Contains(t, err.Error(), "failed obtaining filter") g.Mock = mock.Mock{} g.On("SendByCriteria", mock.Anything, mock.Anything).Return(errors.New("failed sending")) @@ -230,12 +230,12 @@ func TestDistributor(t *testing.T) { }, }, }, 0) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed disseminating 2 out of 2 private dissemination plans") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed disseminating 2 out of 2 private dissemination plans") - assert.Equal(t, + require.Equal(t, []string{"channel", channelID}, testMetricProvider.FakeSendDuration.WithArgsForCall(0), ) - assert.True(t, testMetricProvider.FakeSendDuration.ObserveArgsForCall(0) > 0) + require.True(t, testMetricProvider.FakeSendDuration.ObserveArgsForCall(0) > 0) } diff --git a/gossip/privdata/pull_test.go b/gossip/privdata/pull_test.go index 8b35b09e432..aa05393a2b3 100644 --- a/gossip/privdata/pull_test.go +++ b/gossip/privdata/pull_test.go @@ -35,8 +35,8 @@ import ( "github.com/hyperledger/fabric/gossip/util" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func init() { @@ -377,8 +377,8 @@ func TestPullerFromOnly1Peer(t *testing.T) { rws1 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[0]) rws2 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[1]) fetched := []util.PrivateRWSet{rws1, rws2} - assert.NoError(t, err) - assert.Equal(t, p2TransientStore.RWSet, fetched) + require.NoError(t, err) + require.Equal(t, p2TransientStore.RWSet, fetched) } func TestPullerDataNotAvailable(t *testing.T) { @@ -418,8 +418,8 @@ func TestPullerDataNotAvailable(t *testing.T) { dasf := &digestsAndSourceFactory{} fetchedMessages, err := p1.fetch(dasf.mapDigest(toDigKey(dig)).toSources().create()) - assert.Empty(t, fetchedMessages.AvailableElements) - assert.NoError(t, err) + require.Empty(t, fetchedMessages.AvailableElements) + require.NoError(t, err) } func TestPullerNoPeersKnown(t *testing.T) { @@ -433,9 +433,9 @@ func TestPullerNoPeersKnown(t *testing.T) { dasf := &digestsAndSourceFactory{} d2s := dasf.mapDigest(&privdatacommon.DigKey{Collection: "col1", TxId: "txID1", Namespace: "ns1"}).toSources().create() fetchedMessages, err := p1.fetch(d2s) - assert.Empty(t, fetchedMessages) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Empty membership") + require.Empty(t, fetchedMessages) + require.Error(t, err) + require.Contains(t, err.Error(), "Empty membership") } func TestPullPeerFilterError(t *testing.T) { @@ -450,9 +450,9 @@ func TestPullPeerFilterError(t *testing.T) { dasf := &digestsAndSourceFactory{} d2s := dasf.mapDigest(&privdatacommon.DigKey{Collection: "col1", TxId: "txID1", Namespace: "ns1"}).toSources().create() fetchedMessages, err := p1.fetch(d2s) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed obtaining filter") - assert.Empty(t, fetchedMessages) + require.Error(t, err) + require.Contains(t, err.Error(), "Failed obtaining filter") + require.Empty(t, fetchedMessages) } func TestPullerPeerNotEligible(t *testing.T) { @@ -517,8 +517,8 @@ func TestPullerPeerNotEligible(t *testing.T) { dasf := &digestsAndSourceFactory{} d2s := dasf.mapDigest(&privdatacommon.DigKey{Collection: "col1", TxId: "txID1", Namespace: "ns1"}).toSources().create() fetchedMessages, err := p1.fetch(d2s) - assert.Empty(t, fetchedMessages.AvailableElements) - assert.NoError(t, err) + require.Empty(t, fetchedMessages.AvailableElements) + require.NoError(t, err) } func TestPullerDifferentPeersDifferentCollections(t *testing.T) { @@ -608,16 +608,16 @@ func TestPullerDifferentPeersDifferentCollections(t *testing.T) { dasf := &digestsAndSourceFactory{} fetchedMessages, err := p1.fetch(dasf.mapDigest(toDigKey(dig1)).toSources().mapDigest(toDigKey(dig2)).toSources().create()) - assert.NoError(t, err) + require.NoError(t, err) rws1 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[0]) rws2 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[1]) rws3 := util.PrivateRWSet(fetchedMessages.AvailableElements[1].Payload[0]) rws4 := util.PrivateRWSet(fetchedMessages.AvailableElements[1].Payload[1]) fetched := []util.PrivateRWSet{rws1, rws2, rws3, rws4} - assert.Contains(t, fetched, p2TransientStore.RWSet[0]) - assert.Contains(t, fetched, p2TransientStore.RWSet[1]) - assert.Contains(t, fetched, p3TransientStore.RWSet[0]) - assert.Contains(t, fetched, p3TransientStore.RWSet[1]) + require.Contains(t, fetched, p2TransientStore.RWSet[0]) + require.Contains(t, fetched, p2TransientStore.RWSet[1]) + require.Contains(t, fetched, p3TransientStore.RWSet[0]) + require.Contains(t, fetched, p3TransientStore.RWSet[1]) } func TestPullerRetries(t *testing.T) { @@ -716,12 +716,12 @@ func TestPullerRetries(t *testing.T) { // Fetch from someone dasf := &digestsAndSourceFactory{} fetchedMessages, err := p1.fetch(dasf.mapDigest(toDigKey(dig)).toSources().create()) - assert.NoError(t, err) + require.NoError(t, err) rws1 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[0]) rws2 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[1]) fetched := []util.PrivateRWSet{rws1, rws2} - assert.NoError(t, err) - assert.Equal(t, transientStore.RWSet, fetched) + require.NoError(t, err) + require.Equal(t, transientStore.RWSet, fetched) } func TestPullerPreferEndorsers(t *testing.T) { @@ -808,16 +808,16 @@ func TestPullerPreferEndorsers(t *testing.T) { dasf := &digestsAndSourceFactory{} d2s := dasf.mapDigest(toDigKey(dig1)).toSources("p3").mapDigest(toDigKey(dig2)).toSources().create() fetchedMessages, err := p1.fetch(d2s) - assert.NoError(t, err) + require.NoError(t, err) rws1 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[0]) rws2 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[1]) rws3 := util.PrivateRWSet(fetchedMessages.AvailableElements[1].Payload[0]) rws4 := util.PrivateRWSet(fetchedMessages.AvailableElements[1].Payload[1]) fetched := []util.PrivateRWSet{rws1, rws2, rws3, rws4} - assert.Contains(t, fetched, p3TransientStore.RWSet[0]) - assert.Contains(t, fetched, p3TransientStore.RWSet[1]) - assert.Contains(t, fetched, p2TransientStore.RWSet[0]) - assert.Contains(t, fetched, p2TransientStore.RWSet[1]) + require.Contains(t, fetched, p3TransientStore.RWSet[0]) + require.Contains(t, fetched, p3TransientStore.RWSet[1]) + require.Contains(t, fetched, p2TransientStore.RWSet[0]) + require.Contains(t, fetched, p2TransientStore.RWSet[1]) } func TestPullerFetchReconciledItemsPreferPeersFromOriginalConfig(t *testing.T) { @@ -924,16 +924,16 @@ func TestPullerFetchReconciledItemsPreferPeersFromOriginalConfig(t *testing.T) { } fetchedMessages, err := p1.FetchReconciledItems(d2cc) - assert.NoError(t, err) + require.NoError(t, err) rws1 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[0]) rws2 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[1]) rws3 := util.PrivateRWSet(fetchedMessages.AvailableElements[1].Payload[0]) rws4 := util.PrivateRWSet(fetchedMessages.AvailableElements[1].Payload[1]) fetched := []util.PrivateRWSet{rws1, rws2, rws3, rws4} - assert.Contains(t, fetched, p3TransientStore.RWSet[0]) - assert.Contains(t, fetched, p3TransientStore.RWSet[1]) - assert.Contains(t, fetched, p2TransientStore.RWSet[0]) - assert.Contains(t, fetched, p2TransientStore.RWSet[1]) + require.Contains(t, fetched, p3TransientStore.RWSet[0]) + require.Contains(t, fetched, p3TransientStore.RWSet[1]) + require.Contains(t, fetched, p2TransientStore.RWSet[0]) + require.Contains(t, fetched, p2TransientStore.RWSet[1]) } func TestPullerAvoidPullingPurgedData(t *testing.T) { @@ -1009,7 +1009,7 @@ func TestPullerAvoidPullingPurgedData(t *testing.T) { p3.PrivateDataRetriever.(*dataRetrieverMock).On("CollectionRWSet", mock.MatchedBy(protoMatcher(dig1)), 0).Return(store, true, nil). Run( func(arg mock.Arguments) { - assert.Fail(t, "we should not fetch private data from peers where it was purged") + require.Fail(t, "we should not fetch private data from peers where it was purged") }, ) @@ -1017,7 +1017,7 @@ func TestPullerAvoidPullingPurgedData(t *testing.T) { p2.PrivateDataRetriever.(*dataRetrieverMock).On("CollectionRWSet", mock.MatchedBy(protoMatcher(dig2)), uint64(0)).Return(store, true, nil). Run( func(mock.Arguments) { - assert.Fail(t, "we should not fetch private data of collection2 from peer 2") + require.Fail(t, "we should not fetch private data of collection2 from peer 2") }, ) @@ -1027,9 +1027,9 @@ func TestPullerAvoidPullingPurgedData(t *testing.T) { // trying to fetch missing pvt data for block seq 1 fetchedMessages, err := p1.fetch(d2s) - assert.NoError(t, err) - assert.Equal(t, 1, len(fetchedMessages.PurgedElements)) - assert.Equal(t, dig1, fetchedMessages.PurgedElements[0]) + require.NoError(t, err) + require.Equal(t, 1, len(fetchedMessages.PurgedElements)) + require.Equal(t, dig1, fetchedMessages.PurgedElements[0]) p3.PrivateDataRetriever.(*dataRetrieverMock).AssertNumberOfCalls(t, "CollectionRWSet", 1) } @@ -1138,11 +1138,11 @@ func TestPullerIntegratedWithDataRetreiver(t *testing.T) { dasf := &digestsAndSourceFactory{} d2s := dasf.mapDigest(dig1).toSources("p2").mapDigest(dig2).toSources("p2").create() fetchedMessages, err := p1.fetch(d2s) - assert.NoError(t, err) - assert.Equal(t, 2, len(fetchedMessages.AvailableElements)) - assert.Equal(t, 1, dataRetreiver.getNumberOfCalls()) - assert.Equal(t, 2, len(fetchedMessages.AvailableElements[0].Payload)) - assert.Equal(t, 2, len(fetchedMessages.AvailableElements[1].Payload)) + require.NoError(t, err) + require.Equal(t, 2, len(fetchedMessages.AvailableElements)) + require.Equal(t, 1, dataRetreiver.getNumberOfCalls()) + require.Equal(t, 2, len(fetchedMessages.AvailableElements[0].Payload)) + require.Equal(t, 2, len(fetchedMessages.AvailableElements[1].Payload)) } func toDigKey(dig *proto.PvtDataDigest) *privdatacommon.DigKey { @@ -1214,17 +1214,17 @@ func TestPullerMetrics(t *testing.T) { rws1 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[0]) rws2 := util.PrivateRWSet(fetchedMessages.AvailableElements[0].Payload[1]) fetched := []util.PrivateRWSet{rws1, rws2} - assert.NoError(t, err) - assert.Equal(t, p2TransientStore.RWSet, fetched) + require.NoError(t, err) + require.Equal(t, p2TransientStore.RWSet, fetched) - assert.Equal(t, + require.Equal(t, []string{"channel", "A"}, testMetricProvider.FakePullDuration.WithArgsForCall(0), ) - assert.True(t, testMetricProvider.FakePullDuration.ObserveArgsForCall(0) > 0) - assert.Equal(t, + require.True(t, testMetricProvider.FakePullDuration.ObserveArgsForCall(0) > 0) + require.Equal(t, []string{"channel", "A"}, testMetricProvider.FakeRetrieveDuration.WithArgsForCall(0), ) - assert.True(t, testMetricProvider.FakeRetrieveDuration.ObserveArgsForCall(0) > 0) + require.True(t, testMetricProvider.FakeRetrieveDuration.ObserveArgsForCall(0) > 0) } diff --git a/gossip/privdata/pvtdataprovider_test.go b/gossip/privdata/pvtdataprovider_test.go index a6e21a5a1c8..9c6957d5e32 100644 --- a/gossip/privdata/pvtdataprovider_test.go +++ b/gossip/privdata/pvtdataprovider_test.go @@ -33,7 +33,6 @@ import ( mspmgmt "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" ) @@ -976,11 +975,11 @@ func TestRetryFetchFromPeer(t *testing.T) { } _, err = pdp.RetrievePvtdata(pvtdataToRetrieve) - assert.NoError(t, err) + require.NoError(t, err) maxRetries := int(testConfig.PullRetryThreshold / pullRetrySleepInterval) - assert.Equal(t, fakeSleeper.SleepCallCount() <= maxRetries, true) - assert.Equal(t, fakeSleeper.SleepArgsForCall(0), pullRetrySleepInterval) + require.Equal(t, fakeSleeper.SleepCallCount() <= maxRetries, true) + require.Equal(t, fakeSleeper.SleepArgsForCall(0), pullRetrySleepInterval) } func TestSkipPullingAllInvalidTransactions(t *testing.T) { @@ -1071,14 +1070,14 @@ func TestSkipPullingAllInvalidTransactions(t *testing.T) { pdp.fetcher = newFetcher retrievedPvtdata, err := pdp.RetrievePvtdata(pvtdataToRetrieve) - assert.NoError(t, err) + require.NoError(t, err) blockPvtdata := sortBlockPvtdata(retrievedPvtdata.GetBlockPvtdata()) - assert.Equal(t, expectedBlockPvtdata, blockPvtdata) + require.Equal(t, expectedBlockPvtdata, blockPvtdata) // Check sleep and fetch were never called - assert.Equal(t, fakeSleeper.SleepCallCount(), 0) - assert.Len(t, newFetcher.Calls, 0) + require.Equal(t, fakeSleeper.SleepCallCount(), 0) + require.Len(t, newFetcher.Calls, 0) } func TestRetrievedPvtdataPurgeBelowHeight(t *testing.T) { @@ -1155,7 +1154,7 @@ func TestRetrievedPvtdataPurgeBelowHeight(t *testing.T) { defer iterator.Close() res, err := iterator.Next() require.NoError(t, err, fmt.Sprintf("Failed iterating, got err %s", err)) - assert.NotNil(t, res) + require.NotNil(t, res) }() } @@ -1205,9 +1204,9 @@ func TestRetrievedPvtdataPurgeBelowHeight(t *testing.T) { require.NoError(t, err, fmt.Sprintf("Failed iterating, got err %s", err)) // Check that only the fetched private write set was purged because we haven't reached a blockNum that's a multiple of 5 yet if i == 9 { - assert.Nil(t, res) + require.Nil(t, res) } else { - assert.NotNil(t, res) + require.NotNil(t, res) } }() } @@ -1229,9 +1228,9 @@ func TestRetrievedPvtdataPurgeBelowHeight(t *testing.T) { require.NoError(t, err, fmt.Sprintf("Failed iterating, got err %s", err)) // Check that the first 5 sets have been purged alongside the 9th set purged earlier if i < 6 || i == 9 { - assert.Nil(t, res) + require.Nil(t, res) } else { - assert.NotNil(t, res) + require.NotNil(t, res) } }() } @@ -1243,7 +1242,7 @@ func TestFetchStats(t *testing.T) { fromTransientStore: 2, fromRemotePeer: 3, } - assert.Equal(t, "(1 from local cache, 2 from transient store, 3 from other peers)", fetchStats.String()) + require.Equal(t, "(1 from local cache, 2 from transient store, 3 from other peers)", fetchStats.String()) } func testRetrievePvtdataSuccess(t *testing.T, @@ -1273,12 +1272,12 @@ func testRetrievePvtdataSuccess(t *testing.T, require.NotNil(t, pdp, scenario) retrievedPvtdata, err := pdp.RetrievePvtdata(pvtdataToRetrieve) - assert.NoError(t, err, scenario) + require.NoError(t, err, scenario) // sometimes the collection private write sets are added out of order // so we need to sort it to check equality with expected blockPvtdata := sortBlockPvtdata(retrievedPvtdata.GetBlockPvtdata()) - assert.Equal(t, expectedBlockPvtdata, blockPvtdata, scenario) + require.Equal(t, expectedBlockPvtdata, blockPvtdata, scenario) // Test pvtdata is purged from store on Done() call testPurged(t, scenario, retrievedPvtdata, store, pvtdataToRetrieve) @@ -1312,7 +1311,7 @@ func testRetrievePvtdataFailure(t *testing.T, require.NotNil(t, pdp, scenario) _, err = pdp.RetrievePvtdata(pvtdataToRetrieve) - assert.EqualError(t, err, expectedErr, scenario) + require.EqualError(t, err, expectedErr, scenario) } func setupPrivateDataProvider(t *testing.T, @@ -1379,7 +1378,7 @@ func testPurged(t *testing.T, res, err := iterator.Next() require.NoError(t, err, fmt.Sprintf("Failed iterating, got err %s", err)) - assert.Nil(t, res, scenario) + require.Nil(t, res, scenario) }() } } diff --git a/gossip/privdata/reconcile_test.go b/gossip/privdata/reconcile_test.go index e75ba2647b9..1d649da77f9 100644 --- a/gossip/privdata/reconcile_test.go +++ b/gossip/privdata/reconcile_test.go @@ -21,8 +21,8 @@ import ( gmetricsmocks "github.com/hyperledger/fabric/gossip/metrics/mocks" privdatacommon "github.com/hyperledger/fabric/gossip/privdata/common" "github.com/hyperledger/fabric/gossip/privdata/mocks" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestNoItemsToReconcile(t *testing.T) { @@ -48,7 +48,7 @@ func TestNoItemsToReconcile(t *testing.T) { } err := r.reconcile() - assert.NoError(t, err) + require.NoError(t, err) } func TestNotReconcilingWhenCollectionConfigNotAvailable(t *testing.T) { @@ -76,7 +76,7 @@ func TestNotReconcilingWhenCollectionConfigNotAvailable(t *testing.T) { var fetchCalled bool fetcher.On("FetchReconciledItems", mock.Anything).Run(func(args mock.Arguments) { var dig2CollectionConfig = args.Get(0).(privdatacommon.Dig2CollectionConfig) - assert.Equal(t, 0, len(dig2CollectionConfig)) + require.Equal(t, 0, len(dig2CollectionConfig)) fetchCalled = true }).Return(nil, errors.New("called with no digests")) @@ -89,9 +89,9 @@ func TestNotReconcilingWhenCollectionConfigNotAvailable(t *testing.T) { } err := r.reconcile() - assert.Error(t, err) - assert.Equal(t, "called with no digests", err.Error()) - assert.True(t, fetchCalled) + require.Error(t, err) + require.Equal(t, "called with no digests", err.Error()) + require.True(t, fetchCalled) } func TestReconciliationHappyPathWithoutScheduler(t *testing.T) { @@ -131,7 +131,7 @@ func TestReconciliationHappyPathWithoutScheduler(t *testing.T) { result := &privdatacommon.FetchedPvtDataContainer{} fetcher.On("FetchReconciledItems", mock.Anything).Run(func(args mock.Arguments) { var dig2CollectionConfig = args.Get(0).(privdatacommon.Dig2CollectionConfig) - assert.Equal(t, 1, len(dig2CollectionConfig)) + require.Equal(t, 1, len(dig2CollectionConfig)) for digest := range dig2CollectionConfig { hash := util2.ComputeSHA256([]byte("rws-pre-image")) element := &gossip2.PvtDataElement{ @@ -154,11 +154,11 @@ func TestReconciliationHappyPathWithoutScheduler(t *testing.T) { seqInBlock = 1 committer.On("CommitPvtDataOfOldBlocks", mock.Anything).Run(func(args mock.Arguments) { var reconciledPvtdata = args.Get(0).([]*ledger.ReconciledPvtdata) - assert.Equal(t, 1, len(reconciledPvtdata)) - assert.Equal(t, blockNum, reconciledPvtdata[0].BlockNum) - assert.Equal(t, seqInBlock, reconciledPvtdata[0].WriteSets[1].SeqInBlock) - assert.Equal(t, "ns1", reconciledPvtdata[0].WriteSets[1].WriteSet.NsPvtRwset[0].Namespace) - assert.Equal(t, "col1", reconciledPvtdata[0].WriteSets[1].WriteSet.NsPvtRwset[0].CollectionPvtRwset[0].CollectionName) + require.Equal(t, 1, len(reconciledPvtdata)) + require.Equal(t, blockNum, reconciledPvtdata[0].BlockNum) + require.Equal(t, seqInBlock, reconciledPvtdata[0].WriteSets[1].SeqInBlock) + require.Equal(t, "ns1", reconciledPvtdata[0].WriteSets[1].WriteSet.NsPvtRwset[0].Namespace) + require.Equal(t, "col1", reconciledPvtdata[0].WriteSets[1].WriteSet.NsPvtRwset[0].CollectionPvtRwset[0].CollectionName) commitPvtDataOfOldBlocksHappened = true }).Return([]*ledger.PvtdataHashMismatch{}, nil) @@ -174,10 +174,10 @@ func TestReconciliationHappyPathWithoutScheduler(t *testing.T) { } err := r.reconcile() - assert.NoError(t, err) - assert.True(t, commitPvtDataOfOldBlocksHappened) + require.NoError(t, err) + require.True(t, commitPvtDataOfOldBlocksHappened) - assert.Equal(t, + require.Equal(t, []string{"channel", "mychannel"}, testMetricProvider.FakeReconciliationDuration.WithArgsForCall(0), ) @@ -220,7 +220,7 @@ func TestReconciliationHappyPathWithScheduler(t *testing.T) { result := &privdatacommon.FetchedPvtDataContainer{} fetcher.On("FetchReconciledItems", mock.Anything).Run(func(args mock.Arguments) { var dig2CollectionConfig = args.Get(0).(privdatacommon.Dig2CollectionConfig) - assert.Equal(t, 1, len(dig2CollectionConfig)) + require.Equal(t, 1, len(dig2CollectionConfig)) for digest := range dig2CollectionConfig { hash := util2.ComputeSHA256([]byte("rws-pre-image")) element := &gossip2.PvtDataElement{ @@ -246,11 +246,11 @@ func TestReconciliationHappyPathWithScheduler(t *testing.T) { seqInBlock = 1 committer.On("CommitPvtDataOfOldBlocks", mock.Anything).Run(func(args mock.Arguments) { var reconciledPvtdata = args.Get(0).([]*ledger.ReconciledPvtdata) - assert.Equal(t, 1, len(reconciledPvtdata)) - assert.Equal(t, blockNum, reconciledPvtdata[0].BlockNum) - assert.Equal(t, seqInBlock, reconciledPvtdata[0].WriteSets[1].SeqInBlock) - assert.Equal(t, "ns1", reconciledPvtdata[0].WriteSets[1].WriteSet.NsPvtRwset[0].Namespace) - assert.Equal(t, "col1", reconciledPvtdata[0].WriteSets[1].WriteSet.NsPvtRwset[0].CollectionPvtRwset[0].CollectionName) + require.Equal(t, 1, len(reconciledPvtdata)) + require.Equal(t, blockNum, reconciledPvtdata[0].BlockNum) + require.Equal(t, seqInBlock, reconciledPvtdata[0].WriteSets[1].SeqInBlock) + require.Equal(t, "ns1", reconciledPvtdata[0].WriteSets[1].WriteSet.NsPvtRwset[0].Namespace) + require.Equal(t, "col1", reconciledPvtdata[0].WriteSets[1].WriteSet.NsPvtRwset[0].CollectionPvtRwset[0].CollectionName) commitPvtDataOfOldBlocksHappened = true wg.Done() }).Return([]*ledger.PvtdataHashMismatch{}, nil) @@ -269,7 +269,7 @@ func TestReconciliationHappyPathWithScheduler(t *testing.T) { wg.Wait() r.Stop() - assert.True(t, commitPvtDataOfOldBlocksHappened) + require.True(t, commitPvtDataOfOldBlocksHappened) } func TestReconciliationPullingMissingPrivateDataAtOnePass(t *testing.T) { @@ -343,7 +343,7 @@ func TestReconciliationPullingMissingPrivateDataAtOnePass(t *testing.T) { fetcher.On("FetchReconciledItems", mock.Anything).Run(func(args mock.Arguments) { result.AvailableElements = make([]*gossip2.PvtDataElement, 0) var dig2CollectionConfig = args.Get(0).(privdatacommon.Dig2CollectionConfig) - assert.Equal(t, 1, len(dig2CollectionConfig)) + require.Equal(t, 1, len(dig2CollectionConfig)) for digest := range dig2CollectionConfig { hash := util2.ComputeSHA256([]byte("rws-pre-image")) element := &gossip2.PvtDataElement{ @@ -367,7 +367,7 @@ func TestReconciliationPullingMissingPrivateDataAtOnePass(t *testing.T) { pvtDataStore := make([][]*ledger.ReconciledPvtdata, 0) committer.On("CommitPvtDataOfOldBlocks", mock.Anything).Run(func(args mock.Arguments) { var reconciledPvtdata = args.Get(0).([]*ledger.ReconciledPvtdata) - assert.Equal(t, 1, len(reconciledPvtdata)) + require.Equal(t, 1, len(reconciledPvtdata)) pvtDataStore = append(pvtDataStore, reconciledPvtdata) commitPvtDataOfOldBlocksHappened = true wg.Done() @@ -389,20 +389,20 @@ func TestReconciliationPullingMissingPrivateDataAtOnePass(t *testing.T) { nextC <- struct{}{} wg.Wait() - assert.Equal(t, 2, len(pvtDataStore)) - assert.Equal(t, uint64(4), pvtDataStore[0][0].BlockNum) - assert.Equal(t, uint64(3), pvtDataStore[1][0].BlockNum) + require.Equal(t, 2, len(pvtDataStore)) + require.Equal(t, uint64(4), pvtDataStore[0][0].BlockNum) + require.Equal(t, uint64(3), pvtDataStore[1][0].BlockNum) - assert.Equal(t, uint64(1), pvtDataStore[0][0].WriteSets[1].SeqInBlock) - assert.Equal(t, uint64(2), pvtDataStore[1][0].WriteSets[2].SeqInBlock) + require.Equal(t, uint64(1), pvtDataStore[0][0].WriteSets[1].SeqInBlock) + require.Equal(t, uint64(2), pvtDataStore[1][0].WriteSets[2].SeqInBlock) - assert.Equal(t, "ns1", pvtDataStore[0][0].WriteSets[1].WriteSet.NsPvtRwset[0].Namespace) - assert.Equal(t, "ns2", pvtDataStore[1][0].WriteSets[2].WriteSet.NsPvtRwset[0].Namespace) + require.Equal(t, "ns1", pvtDataStore[0][0].WriteSets[1].WriteSet.NsPvtRwset[0].Namespace) + require.Equal(t, "ns2", pvtDataStore[1][0].WriteSets[2].WriteSet.NsPvtRwset[0].Namespace) - assert.Equal(t, "col1", pvtDataStore[0][0].WriteSets[1].WriteSet.NsPvtRwset[0].CollectionPvtRwset[0].CollectionName) - assert.Equal(t, "col2", pvtDataStore[1][0].WriteSets[2].WriteSet.NsPvtRwset[0].CollectionPvtRwset[0].CollectionName) + require.Equal(t, "col1", pvtDataStore[0][0].WriteSets[1].WriteSet.NsPvtRwset[0].CollectionPvtRwset[0].CollectionName) + require.Equal(t, "col2", pvtDataStore[1][0].WriteSets[2].WriteSet.NsPvtRwset[0].CollectionPvtRwset[0].CollectionName) - assert.True(t, commitPvtDataOfOldBlocksHappened) + require.True(t, commitPvtDataOfOldBlocksHappened) } func TestReconciliationFailedToCommit(t *testing.T) { @@ -441,7 +441,7 @@ func TestReconciliationFailedToCommit(t *testing.T) { result := &privdatacommon.FetchedPvtDataContainer{} fetcher.On("FetchReconciledItems", mock.Anything).Run(func(args mock.Arguments) { var dig2CollectionConfig = args.Get(0).(privdatacommon.Dig2CollectionConfig) - assert.Equal(t, 1, len(dig2CollectionConfig)) + require.Equal(t, 1, len(dig2CollectionConfig)) for digest := range dig2CollectionConfig { hash := util2.ComputeSHA256([]byte("rws-pre-image")) element := &gossip2.PvtDataElement{ @@ -469,8 +469,8 @@ func TestReconciliationFailedToCommit(t *testing.T) { } err := r.reconcile() - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to commit") + require.Error(t, err) + require.Contains(t, err.Error(), "failed to commit") } func TestFailuresWhileReconcilingMissingPvtData(t *testing.T) { @@ -490,16 +490,16 @@ func TestFailuresWhileReconcilingMissingPvtData(t *testing.T) { ReconciliationEnabled: true, }) err := r.reconcile() - assert.Error(t, err) - assert.Contains(t, "failed to obtain missing pvt data tracker", err.Error()) + require.Error(t, err) + require.Contains(t, "failed to obtain missing pvt data tracker", err.Error()) committer.Mock = mock.Mock{} committer.On("GetMissingPvtDataTracker").Return(nil, nil) r = NewReconciler("", metrics, committer, fetcher, &PrivdataConfig{ReconcileSleepInterval: time.Millisecond * 100, ReconcileBatchSize: 1, ReconciliationEnabled: true}) err = r.reconcile() - assert.Error(t, err) - assert.Contains(t, "got nil as MissingPvtDataTracker, exiting...", err.Error()) + require.Error(t, err) + require.Contains(t, "got nil as MissingPvtDataTracker, exiting...", err.Error()) missingPvtDataTracker := &mocks.MissingPvtDataTracker{} missingPvtDataTracker.On("GetMissingPvtDataInfoForMostRecentBlocks", mock.Anything).Return(nil, errors.New("failed get missing pvt data for recent blocks")) @@ -509,6 +509,6 @@ func TestFailuresWhileReconcilingMissingPvtData(t *testing.T) { r = NewReconciler("", metrics, committer, fetcher, &PrivdataConfig{ReconcileSleepInterval: time.Millisecond * 100, ReconcileBatchSize: 1, ReconciliationEnabled: true}) err = r.reconcile() - assert.Error(t, err) - assert.Contains(t, "failed get missing pvt data for recent blocks", err.Error()) + require.Error(t, err) + require.Contains(t, "failed get missing pvt data for recent blocks", err.Error()) } diff --git a/gossip/protoext/compatibility_test.go b/gossip/protoext/compatibility_test.go index 2d50d5b428a..97498a96bf3 100644 --- a/gossip/protoext/compatibility_test.go +++ b/gossip/protoext/compatibility_test.go @@ -13,7 +13,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-protos-go/gossip" "github.com/hyperledger/fabric/gossip/protoext" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var digestMsg = &gossip.GossipMessage{ @@ -61,9 +61,9 @@ func TestUnmarshalV12Digests(t *testing.T) { var err error v13Envelope := &gossip.Envelope{} v13Envelope.Payload, err = hex.DecodeString(msgBytes) - assert.NoError(t, err) + require.NoError(t, err) v13Digest, err := protoext.EnvelopeToGossipMessage(v13Envelope) - assert.NoError(t, err) - assert.True(t, proto.Equal(expectedMsg, v13Digest.GossipMessage)) + require.NoError(t, err) + require.True(t, proto.Equal(expectedMsg, v13Digest.GossipMessage)) } } diff --git a/gossip/protoext/message_test.go b/gossip/protoext/message_test.go index a71388e2cca..d9df1e24d9f 100644 --- a/gossip/protoext/message_test.go +++ b/gossip/protoext/message_test.go @@ -11,7 +11,7 @@ import ( "github.com/hyperledger/fabric-protos-go/gossip" "github.com/hyperledger/fabric/gossip/protoext" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCheckGossipMessageTypes(t *testing.T) { @@ -25,7 +25,7 @@ func TestCheckGossipMessageTypes(t *testing.T) { }, }, } - assert.True(t, protoext.IsStateInfoPullRequestMsg(msg)) + require.True(t, protoext.IsStateInfoPullRequestMsg(msg)) // Create alive message msg = &gossip.GossipMessage{ @@ -44,13 +44,13 @@ func TestCheckGossipMessageTypes(t *testing.T) { }, }, } - assert.True(t, protoext.IsAliveMsg(msg)) + require.True(t, protoext.IsAliveMsg(msg)) // Create gossip data message msg = &gossip.GossipMessage{ Content: dataMessage(1, []byte{1, 2, 3, 4, 5}), } - assert.True(t, protoext.IsDataMsg(msg)) + require.True(t, protoext.IsDataMsg(msg)) // Create data request message msg = &gossip.GossipMessage{ @@ -62,8 +62,8 @@ func TestCheckGossipMessageTypes(t *testing.T) { }, }, } - assert.True(t, protoext.IsDataReq(msg)) - assert.True(t, protoext.IsPullMsg(msg)) + require.True(t, protoext.IsDataReq(msg)) + require.True(t, protoext.IsPullMsg(msg)) // Create data request message msg = &gossip.GossipMessage{ @@ -75,8 +75,8 @@ func TestCheckGossipMessageTypes(t *testing.T) { }, }, } - assert.True(t, protoext.IsDigestMsg(msg)) - assert.True(t, protoext.IsPullMsg(msg)) + require.True(t, protoext.IsDigestMsg(msg)) + require.True(t, protoext.IsPullMsg(msg)) // Create data update message msg = &gossip.GossipMessage{ @@ -88,8 +88,8 @@ func TestCheckGossipMessageTypes(t *testing.T) { }, }, } - assert.True(t, protoext.IsDataUpdate(msg)) - assert.True(t, protoext.IsPullMsg(msg)) + require.True(t, protoext.IsDataUpdate(msg)) + require.True(t, protoext.IsPullMsg(msg)) // Create gossip hello message msg = &gossip.GossipMessage{ @@ -100,8 +100,8 @@ func TestCheckGossipMessageTypes(t *testing.T) { }, }, } - assert.True(t, protoext.IsHelloMsg(msg)) - assert.True(t, protoext.IsPullMsg(msg)) + require.True(t, protoext.IsHelloMsg(msg)) + require.True(t, protoext.IsPullMsg(msg)) // Create state request message msg = &gossip.GossipMessage{ @@ -112,7 +112,7 @@ func TestCheckGossipMessageTypes(t *testing.T) { }, }, } - assert.True(t, protoext.IsRemoteStateMessage(msg)) + require.True(t, protoext.IsRemoteStateMessage(msg)) // Create state response message msg = &gossip.GossipMessage{ @@ -125,7 +125,7 @@ func TestCheckGossipMessageTypes(t *testing.T) { }, }, } - assert.True(t, protoext.IsRemoteStateMessage(msg)) + require.True(t, protoext.IsRemoteStateMessage(msg)) } func TestGossipPullMessageType(t *testing.T) { @@ -140,9 +140,9 @@ func TestGossipPullMessageType(t *testing.T) { }, }, } - assert.True(t, protoext.IsHelloMsg(msg)) - assert.True(t, protoext.IsPullMsg(msg)) - assert.Equal(t, protoext.GetPullMsgType(msg), gossip.PullMsgType_BLOCK_MSG) + require.True(t, protoext.IsHelloMsg(msg)) + require.True(t, protoext.IsPullMsg(msg)) + require.Equal(t, protoext.GetPullMsgType(msg), gossip.PullMsgType_BLOCK_MSG) // Create data request message msg = &gossip.GossipMessage{ @@ -154,9 +154,9 @@ func TestGossipPullMessageType(t *testing.T) { }, }, } - assert.True(t, protoext.IsDigestMsg(msg)) - assert.True(t, protoext.IsPullMsg(msg)) - assert.Equal(t, protoext.GetPullMsgType(msg), gossip.PullMsgType_IDENTITY_MSG) + require.True(t, protoext.IsDigestMsg(msg)) + require.True(t, protoext.IsPullMsg(msg)) + require.Equal(t, protoext.GetPullMsgType(msg), gossip.PullMsgType_IDENTITY_MSG) // Create data request message msg = &gossip.GossipMessage{ @@ -168,9 +168,9 @@ func TestGossipPullMessageType(t *testing.T) { }, }, } - assert.True(t, protoext.IsDataReq(msg)) - assert.True(t, protoext.IsPullMsg(msg)) - assert.Equal(t, protoext.GetPullMsgType(msg), gossip.PullMsgType_BLOCK_MSG) + require.True(t, protoext.IsDataReq(msg)) + require.True(t, protoext.IsPullMsg(msg)) + require.Equal(t, protoext.GetPullMsgType(msg), gossip.PullMsgType_BLOCK_MSG) // Create data update message msg = &gossip.GossipMessage{ @@ -182,16 +182,16 @@ func TestGossipPullMessageType(t *testing.T) { }, }, } - assert.True(t, protoext.IsDataUpdate(msg)) - assert.True(t, protoext.IsPullMsg(msg)) - assert.Equal(t, protoext.GetPullMsgType(msg), gossip.PullMsgType_IDENTITY_MSG) + require.True(t, protoext.IsDataUpdate(msg)) + require.True(t, protoext.IsPullMsg(msg)) + require.Equal(t, protoext.GetPullMsgType(msg), gossip.PullMsgType_IDENTITY_MSG) // Create gossip data message msg = &gossip.GossipMessage{ Content: dataMessage(1, []byte{1, 2, 3, 4, 5}), } - assert.True(t, protoext.IsDataMsg(msg)) - assert.Equal(t, protoext.GetPullMsgType(msg), gossip.PullMsgType_UNDEFINED) + require.True(t, protoext.IsDataMsg(msg)) + require.Equal(t, protoext.GetPullMsgType(msg), gossip.PullMsgType_UNDEFINED) } func TestGossipMessageDataMessageTagType(t *testing.T) { @@ -201,49 +201,49 @@ func TestGossipMessageDataMessageTagType(t *testing.T) { Tag: gossip.GossipMessage_CHAN_AND_ORG, Content: dataMessage(1, []byte{1}), } - assert.True(t, protoext.IsChannelRestricted(msg)) - assert.True(t, protoext.IsOrgRestricted(msg)) - assert.NoError(t, protoext.IsTagLegal(msg)) + require.True(t, protoext.IsChannelRestricted(msg)) + require.True(t, protoext.IsOrgRestricted(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_EMPTY, Content: dataMessage(1, []byte{1}), } - assert.Error(t, protoext.IsTagLegal(msg)) + require.Error(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_UNDEFINED, Content: dataMessage(1, []byte{1}), } - assert.Error(t, protoext.IsTagLegal(msg)) + require.Error(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_ORG_ONLY, Content: dataMessage(1, []byte{1}), } - assert.False(t, protoext.IsChannelRestricted(msg)) - assert.True(t, protoext.IsOrgRestricted(msg)) + require.False(t, protoext.IsChannelRestricted(msg)) + require.True(t, protoext.IsOrgRestricted(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_CHAN_OR_ORG, Content: dataMessage(1, []byte{1}), } - assert.True(t, protoext.IsChannelRestricted(msg)) - assert.False(t, protoext.IsOrgRestricted(msg)) + require.True(t, protoext.IsChannelRestricted(msg)) + require.False(t, protoext.IsOrgRestricted(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_EMPTY, Content: dataMessage(1, []byte{1}), } - assert.False(t, protoext.IsChannelRestricted(msg)) - assert.False(t, protoext.IsOrgRestricted(msg)) + require.False(t, protoext.IsChannelRestricted(msg)) + require.False(t, protoext.IsOrgRestricted(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_UNDEFINED, Content: dataMessage(1, []byte{1}), } - assert.False(t, protoext.IsChannelRestricted(msg)) - assert.False(t, protoext.IsOrgRestricted(msg)) + require.False(t, protoext.IsChannelRestricted(msg)) + require.False(t, protoext.IsOrgRestricted(msg)) } func TestGossipMessageAliveMessageTagType(t *testing.T) { @@ -255,7 +255,7 @@ func TestGossipMessageAliveMessageTagType(t *testing.T) { AliveMsg: &gossip.AliveMessage{}, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_ORG_ONLY, @@ -263,7 +263,7 @@ func TestGossipMessageAliveMessageTagType(t *testing.T) { AliveMsg: &gossip.AliveMessage{}, }, } - assert.Error(t, protoext.IsTagLegal(msg)) + require.Error(t, protoext.IsTagLegal(msg)) } func TestGossipMessageMembershipMessageTagType(t *testing.T) { @@ -275,7 +275,7 @@ func TestGossipMessageMembershipMessageTagType(t *testing.T) { MemReq: &gossip.MembershipRequest{}, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_EMPTY, @@ -283,7 +283,7 @@ func TestGossipMessageMembershipMessageTagType(t *testing.T) { MemRes: &gossip.MembershipResponse{}, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) } func TestGossipMessageIdentityMessageTagType(t *testing.T) { @@ -295,7 +295,7 @@ func TestGossipMessageIdentityMessageTagType(t *testing.T) { PeerIdentity: &gossip.PeerIdentity{}, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_EMPTY, @@ -303,7 +303,7 @@ func TestGossipMessageIdentityMessageTagType(t *testing.T) { PeerIdentity: &gossip.PeerIdentity{}, }, } - assert.Error(t, protoext.IsTagLegal(msg)) + require.Error(t, protoext.IsTagLegal(msg)) } func TestGossipMessagePullMessageTagType(t *testing.T) { @@ -317,7 +317,7 @@ func TestGossipMessagePullMessageTagType(t *testing.T) { }, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_EMPTY, @@ -327,7 +327,7 @@ func TestGossipMessagePullMessageTagType(t *testing.T) { }, }, } - assert.Error(t, protoext.IsTagLegal(msg)) + require.Error(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_EMPTY, @@ -337,7 +337,7 @@ func TestGossipMessagePullMessageTagType(t *testing.T) { }, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_ORG_ONLY, @@ -347,7 +347,7 @@ func TestGossipMessagePullMessageTagType(t *testing.T) { }, }, } - assert.Error(t, protoext.IsTagLegal(msg)) + require.Error(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_ORG_ONLY, @@ -357,7 +357,7 @@ func TestGossipMessagePullMessageTagType(t *testing.T) { }, }, } - assert.Error(t, protoext.IsTagLegal(msg)) + require.Error(t, protoext.IsTagLegal(msg)) } func TestGossipMessageStateInfoMessageTagType(t *testing.T) { @@ -369,7 +369,7 @@ func TestGossipMessageStateInfoMessageTagType(t *testing.T) { StateInfo: &gossip.StateInfo{}, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_CHAN_OR_ORG, @@ -377,7 +377,7 @@ func TestGossipMessageStateInfoMessageTagType(t *testing.T) { StateInfoPullReq: &gossip.StateInfoPullRequest{}, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_CHAN_OR_ORG, @@ -385,7 +385,7 @@ func TestGossipMessageStateInfoMessageTagType(t *testing.T) { StateResponse: &gossip.RemoteStateResponse{}, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_CHAN_OR_ORG, @@ -393,7 +393,7 @@ func TestGossipMessageStateInfoMessageTagType(t *testing.T) { StateRequest: &gossip.RemoteStateRequest{}, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_CHAN_OR_ORG, @@ -401,7 +401,7 @@ func TestGossipMessageStateInfoMessageTagType(t *testing.T) { StateSnapshot: &gossip.StateInfoSnapshot{}, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_EMPTY, @@ -409,7 +409,7 @@ func TestGossipMessageStateInfoMessageTagType(t *testing.T) { StateInfo: &gossip.StateInfo{}, }, } - assert.Error(t, protoext.IsTagLegal(msg)) + require.Error(t, protoext.IsTagLegal(msg)) } func TestGossipMessageLeadershipMessageTagType(t *testing.T) { @@ -421,18 +421,18 @@ func TestGossipMessageLeadershipMessageTagType(t *testing.T) { LeadershipMsg: &gossip.LeadershipMessage{}, }, } - assert.NoError(t, protoext.IsTagLegal(msg)) + require.NoError(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_CHAN_OR_ORG, Content: &gossip.GossipMessage_LeadershipMsg{ LeadershipMsg: &gossip.LeadershipMessage{}, }, } - assert.Error(t, protoext.IsTagLegal(msg)) + require.Error(t, protoext.IsTagLegal(msg)) msg = &gossip.GossipMessage{ Tag: gossip.GossipMessage_CHAN_OR_ORG, Content: &gossip.GossipMessage_Empty{}, } - assert.Error(t, protoext.IsTagLegal(msg)) + require.Error(t, protoext.IsTagLegal(msg)) } diff --git a/gossip/protoext/msgcomparator_test.go b/gossip/protoext/msgcomparator_test.go index d3822ed5eeb..1a8eab79a1b 100644 --- a/gossip/protoext/msgcomparator_test.go +++ b/gossip/protoext/msgcomparator_test.go @@ -12,7 +12,7 @@ import ( "github.com/hyperledger/fabric-protos-go/gossip" "github.com/hyperledger/fabric/gossip/common" "github.com/hyperledger/fabric/gossip/protoext" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestAliveMessageNoActionTaken(t *testing.T) { @@ -60,7 +60,7 @@ func TestAliveMessageNoActionTaken(t *testing.T) { }, } - assert.Equal(t, comparator(sMsg1, sMsg2), common.MessageNoAction) + require.Equal(t, comparator(sMsg1, sMsg2), common.MessageNoAction) } func TestStateInfoMessageNoActionTaken(t *testing.T) { @@ -86,7 +86,7 @@ func TestStateInfoMessageNoActionTaken(t *testing.T) { // We only should compare comparable messages, e.g. message from same peer // In any other cases no invalidation should be taken. - assert.Equal(t, comparator(sMsg1, sMsg2), common.MessageNoAction) + require.Equal(t, comparator(sMsg1, sMsg2), common.MessageNoAction) } func TestStateInfoMessagesInvalidation(t *testing.T) { @@ -121,16 +121,16 @@ func TestStateInfoMessagesInvalidation(t *testing.T) { }, } - assert.Equal(t, comparator(sMsg1, sMsg2), common.MessageInvalidated) + require.Equal(t, comparator(sMsg1, sMsg2), common.MessageInvalidated) - assert.Equal(t, comparator(sMsg1, sMsg3), common.MessageInvalidated) - assert.Equal(t, comparator(sMsg3, sMsg1), common.MessageInvalidates) + require.Equal(t, comparator(sMsg1, sMsg3), common.MessageInvalidated) + require.Equal(t, comparator(sMsg3, sMsg1), common.MessageInvalidates) - assert.Equal(t, comparator(sMsg1, sMsg4), common.MessageInvalidated) - assert.Equal(t, comparator(sMsg4, sMsg1), common.MessageInvalidates) + require.Equal(t, comparator(sMsg1, sMsg4), common.MessageInvalidated) + require.Equal(t, comparator(sMsg4, sMsg1), common.MessageInvalidates) - assert.Equal(t, comparator(sMsg3, sMsg4), common.MessageInvalidated) - assert.Equal(t, comparator(sMsg4, sMsg3), common.MessageInvalidates) + require.Equal(t, comparator(sMsg3, sMsg4), common.MessageInvalidated) + require.Equal(t, comparator(sMsg4, sMsg3), common.MessageInvalidates) } func TestAliveMessageInvalidation(t *testing.T) { @@ -199,10 +199,10 @@ func TestAliveMessageInvalidation(t *testing.T) { }, } - assert.Equal(t, comparator(sMsg1, sMsg2), common.MessageInvalidated) - assert.Equal(t, comparator(sMsg2, sMsg1), common.MessageInvalidates) - assert.Equal(t, comparator(sMsg1, sMsg3), common.MessageInvalidated) - assert.Equal(t, comparator(sMsg3, sMsg1), common.MessageInvalidates) + require.Equal(t, comparator(sMsg1, sMsg2), common.MessageInvalidated) + require.Equal(t, comparator(sMsg2, sMsg1), common.MessageInvalidates) + require.Equal(t, comparator(sMsg1, sMsg3), common.MessageInvalidated) + require.Equal(t, comparator(sMsg3, sMsg1), common.MessageInvalidates) } func TestDataMessageInvalidation(t *testing.T) { @@ -238,10 +238,10 @@ func TestDataMessageInvalidation(t *testing.T) { }, } - assert.Equal(t, comparator(sMsg1, sMsg1Clone), common.MessageInvalidated) - assert.Equal(t, comparator(sMsg1, sMsg3), common.MessageNoAction) - assert.Equal(t, comparator(sMsg1, sMsg4), common.MessageInvalidated) - assert.Equal(t, comparator(sMsg4, sMsg1), common.MessageInvalidates) + require.Equal(t, comparator(sMsg1, sMsg1Clone), common.MessageInvalidated) + require.Equal(t, comparator(sMsg1, sMsg3), common.MessageNoAction) + require.Equal(t, comparator(sMsg1, sMsg4), common.MessageInvalidated) + require.Equal(t, comparator(sMsg4, sMsg1), common.MessageInvalidates) } func TestIdentityMessagesInvalidation(t *testing.T) { @@ -289,8 +289,8 @@ func TestIdentityMessagesInvalidation(t *testing.T) { }, } - assert.Equal(t, comparator(msg1, msg2), common.MessageInvalidated) - assert.Equal(t, comparator(msg1, msg3), common.MessageNoAction) + require.Equal(t, comparator(msg1, msg2), common.MessageInvalidated) + require.Equal(t, comparator(msg1, msg3), common.MessageNoAction) } func TestLeadershipMessagesNoAction(t *testing.T) { @@ -312,7 +312,7 @@ func TestLeadershipMessagesNoAction(t *testing.T) { } // If message with different pkid's no action should be taken - assert.Equal(t, comparator(msg1, msg2), common.MessageNoAction) + require.Equal(t, comparator(msg1, msg2), common.MessageNoAction) } func TestLeadershipMessagesInvalidation(t *testing.T) { @@ -342,12 +342,12 @@ func TestLeadershipMessagesInvalidation(t *testing.T) { } // If message with different pkid's no action should be taken - assert.Equal(t, comparator(msg1, msg2), common.MessageInvalidated) - assert.Equal(t, comparator(msg2, msg1), common.MessageInvalidates) - assert.Equal(t, comparator(msg1, msg3), common.MessageInvalidated) - assert.Equal(t, comparator(msg3, msg1), common.MessageInvalidates) - assert.Equal(t, comparator(msg2, msg3), common.MessageInvalidated) - assert.Equal(t, comparator(msg3, msg2), common.MessageInvalidates) + require.Equal(t, comparator(msg1, msg2), common.MessageInvalidated) + require.Equal(t, comparator(msg2, msg1), common.MessageInvalidates) + require.Equal(t, comparator(msg1, msg3), common.MessageInvalidated) + require.Equal(t, comparator(msg3, msg1), common.MessageInvalidates) + require.Equal(t, comparator(msg2, msg3), common.MessageInvalidated) + require.Equal(t, comparator(msg3, msg2), common.MessageInvalidates) } func stateInfoMessage(incNum uint64, seqNum uint64, pkid []byte, mac []byte) *gossip.GossipMessage_StateInfo { diff --git a/gossip/protoext/signing_test.go b/gossip/protoext/signing_test.go index 652342f1872..b1f8dedf002 100644 --- a/gossip/protoext/signing_test.go +++ b/gossip/protoext/signing_test.go @@ -15,13 +15,13 @@ import ( "github.com/hyperledger/fabric-protos-go/gossip" "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestToGossipMessageNilEnvelope(t *testing.T) { memReq := &gossip.MembershipRequest{} _, err := protoext.EnvelopeToGossipMessage(memReq.SelfInformation) - assert.EqualError(t, err, "nil envelope") + require.EqualError(t, err, "nil envelope") } func TestToString(t *testing.T) { @@ -32,7 +32,7 @@ func TestToString(t *testing.T) { // The following line proves that the envelopes constructed in this test // have "2" in them when they are printed - assert.Contains(t, fmt.Sprintf("%v", envelopes()[0]), "2") + require.Contains(t, fmt.Sprintf("%v", envelopes()[0]), "2") // and the following does the same for payloads: dMsg := &gossip.DataMessage{ Payload: &gossip.Payload{ @@ -40,7 +40,7 @@ func TestToString(t *testing.T) { Data: []byte{2, 2, 2, 2, 2}, }, } - assert.Contains(t, fmt.Sprintf("%v", dMsg), "2") + require.Contains(t, fmt.Sprintf("%v", dMsg), "2") // Now we construct all types of messages that have envelopes or payloads in them // and see that "2" is not outputted into their formatting even though it is found @@ -69,9 +69,9 @@ func TestToString(t *testing.T) { }, }, } - assert.NotContains(t, fmt.Sprintf("%v", sMsg), "2") + require.NotContains(t, fmt.Sprintf("%v", sMsg), "2") sMsg.GetDataMsg().Payload = nil - assert.NotPanics(t, func() { + require.NotPanics(t, func() { _ = sMsg.String() }) @@ -90,7 +90,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.NotContains(t, fmt.Sprintf("%v", sMsg), "2") + require.NotContains(t, fmt.Sprintf("%v", sMsg), "2") sMsg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -106,7 +106,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.NotContains(t, fmt.Sprintf("%v", sMsg), "2") + require.NotContains(t, fmt.Sprintf("%v", sMsg), "2") sMsg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -121,7 +121,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.NotContains(t, fmt.Sprintf("%v", sMsg), "2") + require.NotContains(t, fmt.Sprintf("%v", sMsg), "2") sMsg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -145,7 +145,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.NotContains(t, fmt.Sprintf("%v", sMsg), "2") + require.NotContains(t, fmt.Sprintf("%v", sMsg), "2") sMsg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -162,7 +162,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.NotContains(t, fmt.Sprintf("%v", sMsg), "2") + require.NotContains(t, fmt.Sprintf("%v", sMsg), "2") sMsg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -178,7 +178,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.NotContains(t, fmt.Sprintf("%v", sMsg), "2") + require.NotContains(t, fmt.Sprintf("%v", sMsg), "2") sMsg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -193,7 +193,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.NotContains(t, fmt.Sprintf("%v", sMsg), "2") + require.NotContains(t, fmt.Sprintf("%v", sMsg), "2") sMsg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -208,7 +208,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.NotContains(t, fmt.Sprintf("%v", sMsg), "2") + require.NotContains(t, fmt.Sprintf("%v", sMsg), "2") sMsg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -225,7 +225,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.Contains(t, fmt.Sprintf("%v", sMsg), "2") + require.Contains(t, fmt.Sprintf("%v", sMsg), "2") sMsg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -242,7 +242,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.Contains(t, fmt.Sprintf("%v", sMsg), "2") + require.Contains(t, fmt.Sprintf("%v", sMsg), "2") sMsg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -262,7 +262,7 @@ func TestToString(t *testing.T) { }, Envelope: envelopes()[0], } - assert.NotContains(t, fmt.Sprintf("%v", sMsg), "2") + require.NotContains(t, fmt.Sprintf("%v", sMsg), "2") } func TestSignedGossipMessageSign(t *testing.T) { @@ -286,11 +286,11 @@ func TestSignedGossipMessageSign(t *testing.T) { signedMsg, _ := msg.Sign(idSigner) // Since checking the identity signer, signature will be same as the payload - assert.Equal(t, signedMsg.Payload, signedMsg.Signature) + require.Equal(t, signedMsg.Payload, signedMsg.Signature) env, err := msg.Sign(errSigner) - assert.Error(t, err) - assert.Nil(t, env) + require.Error(t, err) + require.Nil(t, env) } func TestEnvelope_NoopSign(t *testing.T) { @@ -305,8 +305,8 @@ func TestEnvelope_NoopSign(t *testing.T) { signedMsg, err := protoext.NoopSign(msg) // Since checking the identity signer, signature will be same as the payload - assert.Nil(t, signedMsg.Signature) - assert.NoError(t, err) + require.Nil(t, signedMsg.Signature) + require.NoError(t, err) } func TestSignedGossipMessage_Verify(t *testing.T) { @@ -323,13 +323,13 @@ func TestSignedGossipMessage_Verify(t *testing.T) { }, Envelope: envelopes()[0], } - assert.True(t, msg.IsSigned()) + require.True(t, msg.IsSigned()) verifier := func(peerIdentity []byte, signature, message []byte) error { return nil } res := msg.Verify(peerID, verifier) - assert.Nil(t, res) + require.Nil(t, res) msg = &protoext.SignedGossipMessage{ GossipMessage: &gossip.GossipMessage{ @@ -345,19 +345,19 @@ func TestSignedGossipMessage_Verify(t *testing.T) { env := msg.Envelope msg.Envelope = nil res = msg.Verify(peerID, verifier) - assert.Error(t, res) + require.Error(t, res) msg.Envelope = env payload := msg.Envelope.Payload msg.Envelope.Payload = nil res = msg.Verify(peerID, verifier) - assert.Error(t, res) + require.Error(t, res) msg.Envelope.Payload = payload sig := msg.Signature msg.Signature = nil res = msg.Verify(peerID, verifier) - assert.Error(t, res) + require.Error(t, res) msg.Signature = sig errVerifier := func(peerIdentity []byte, signature, message []byte) error { @@ -365,7 +365,7 @@ func TestSignedGossipMessage_Verify(t *testing.T) { } res = msg.Verify(peerID, errVerifier) - assert.Error(t, res) + require.Error(t, res) } func TestEnvelope(t *testing.T) { @@ -373,16 +373,16 @@ func TestEnvelope(t *testing.T) { Content: dataMessage(1, []byte("data")), } bytes, err := proto.Marshal(dataMsg) - assert.NoError(t, err) + require.NoError(t, err) env := envelopes()[0] env.Payload = bytes msg, err := protoext.EnvelopeToGossipMessage(env) - assert.NoError(t, err) - assert.NotNil(t, msg) + require.NoError(t, err) + require.NotNil(t, msg) - assert.True(t, protoext.IsDataMsg(msg.GossipMessage)) + require.True(t, protoext.IsDataMsg(msg.GossipMessage)) } func TestEnvelope_SignSecret(t *testing.T) { @@ -390,7 +390,7 @@ func TestEnvelope_SignSecret(t *testing.T) { Content: dataMessage(1, []byte("data")), } bytes, err := proto.Marshal(dataMsg) - assert.NoError(t, err) + require.NoError(t, err) env := envelopes()[0] env.Payload = bytes @@ -404,15 +404,15 @@ func TestEnvelope_SignSecret(t *testing.T) { }, }) - assert.NotNil(t, env.SecretEnvelope) - assert.Equal(t, protoext.InternalEndpoint(env.SecretEnvelope), "localhost:5050") + require.NotNil(t, env.SecretEnvelope) + require.Equal(t, protoext.InternalEndpoint(env.SecretEnvelope), "localhost:5050") } func TestInternalEndpoint(t *testing.T) { - assert.Empty(t, protoext.InternalEndpoint(nil)) - assert.Empty(t, protoext.InternalEndpoint(&gossip.SecretEnvelope{ + require.Empty(t, protoext.InternalEndpoint(nil)) + require.Empty(t, protoext.InternalEndpoint(&gossip.SecretEnvelope{ Payload: []byte{1, 2, 3}})) - assert.Equal(t, "foo", protoext.InternalEndpoint(&gossip.SecretEnvelope{ + require.Equal(t, "foo", protoext.InternalEndpoint(&gossip.SecretEnvelope{ Payload: protoutil.MarshalOrPanic( &gossip.Secret{ Content: &gossip.Secret_InternalEndpoint{ diff --git a/gossip/protoext/stringers_test.go b/gossip/protoext/stringers_test.go index e0c5edf4031..6e18a01a1fb 100644 --- a/gossip/protoext/stringers_test.go +++ b/gossip/protoext/stringers_test.go @@ -11,7 +11,7 @@ import ( "github.com/hyperledger/fabric-protos-go/gossip" "github.com/hyperledger/fabric/gossip/protoext" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestMembershipResponseToString(t *testing.T) { @@ -20,7 +20,7 @@ func TestMembershipResponseToString(t *testing.T) { Dead: envelopes(), } output := "MembershipResponse with Alive: 1, Dead: 1" - assert.Equal(t, output, protoext.MembershipResponseToString(mr)) + require.Equal(t, output, protoext.MembershipResponseToString(mr)) } func TestMembershipRequestToString(t *testing.T) { @@ -67,7 +67,7 @@ func TestMembershipRequestToString(t *testing.T) { } output := "Membership Request with self information of GossipMessage: Channel: A, nonce: 5, tag: UNDEFINED Block message: {Data: 5 bytes, seq: 3}, Envelope: 18 bytes, Signature: 3 bytes Secret payload: 6 bytes, Secret Signature: 3 bytes " - assert.Equal(t, output, protoext.MembershipRequestToString(mr)) + require.Equal(t, output, protoext.MembershipRequestToString(mr)) mr1 := &gossip.MembershipRequest{ SelfInformation: &gossip.Envelope{ @@ -80,14 +80,14 @@ func TestMembershipRequestToString(t *testing.T) { }, Known: [][]byte{}, } - assert.Equal(t, "", protoext.MembershipRequestToString(mr1)) + require.Equal(t, "", protoext.MembershipRequestToString(mr1)) mr2 := &gossip.MembershipRequest{ SelfInformation: nil, Known: [][]byte{}, } - assert.Equal(t, "", protoext.MembershipRequestToString(mr2)) + require.Equal(t, "", protoext.MembershipRequestToString(mr2)) } func TestToStringMember(t *testing.T) { @@ -97,7 +97,7 @@ func TestToStringMember(t *testing.T) { PkiId: []byte{15}, } output := "Membership: Endpoint:localhost PKI-id:0f" - assert.Equal(t, output, protoext.MemberToString(member)) + require.Equal(t, output, protoext.MemberToString(member)) } func TestToStringAliveMessage(t *testing.T) { @@ -114,7 +114,7 @@ func TestToStringAliveMessage(t *testing.T) { Identity: []byte("peerID1"), } output1 := "Alive Message:Membership: Endpoint:localhost PKI-id:11Identity:Timestamp:inc_num:1 seq_num:1 " - assert.Equal(t, output1, protoext.AliveMessageToString(am1)) + require.Equal(t, output1, protoext.AliveMessageToString(am1)) am2 := &gossip.AliveMessage{ Membership: nil, Timestamp: &gossip.PeerTime{ @@ -124,7 +124,7 @@ func TestToStringAliveMessage(t *testing.T) { Identity: []byte("peerID1"), } output2 := "nil Membership" - assert.Equal(t, output2, protoext.AliveMessageToString(am2)) + require.Equal(t, output2, protoext.AliveMessageToString(am2)) } func TestToStringStateInfoPullRequest(t *testing.T) { @@ -134,7 +134,7 @@ func TestToStringStateInfoPullRequest(t *testing.T) { } output := "state_info_pull_req: Channel MAC:11" - assert.Equal(t, output, protoext.StateInfoPullRequestToString(sipr)) + require.Equal(t, output, protoext.StateInfoPullRequestToString(sipr)) } func TestToStringStateInfo(t *testing.T) { @@ -148,7 +148,7 @@ func TestToStringStateInfo(t *testing.T) { Properties: nil, } output := "state_info_message: Timestamp:inc_num:1 seq_num:1 PKI-id:11 channel MAC:11 properties:" - assert.Equal(t, output, protoext.StateInfoToString(si)) + require.Equal(t, output, protoext.StateInfoToString(si)) } func TestToStringDataDigest(t *testing.T) { @@ -158,14 +158,14 @@ func TestToStringDataDigest(t *testing.T) { MsgType: gossip.PullMsgType_BLOCK_MSG, } output1 := "data_dig: nonce: 0 , Msg_type: BLOCK_MSG, digests: [msg1 msg2 msg3]" - assert.Equal(t, output1, protoext.DataDigestToString(dig1)) + require.Equal(t, output1, protoext.DataDigestToString(dig1)) dig2 := &gossip.DataDigest{ Nonce: 0, Digests: [][]byte{[]byte("msg1"), []byte("msg2"), []byte("msg3")}, MsgType: gossip.PullMsgType_IDENTITY_MSG, } output2 := "data_dig: nonce: 0 , Msg_type: IDENTITY_MSG, digests: [6d736731 6d736732 6d736733]" - assert.Equal(t, output2, protoext.DataDigestToString(dig2)) + require.Equal(t, output2, protoext.DataDigestToString(dig2)) } func TestToStringDataRequest(t *testing.T) { @@ -175,14 +175,14 @@ func TestToStringDataRequest(t *testing.T) { MsgType: gossip.PullMsgType_BLOCK_MSG, } output1 := "data request: nonce: 0 , Msg_type: BLOCK_MSG, digests: [msg1 msg2 msg3]" - assert.Equal(t, output1, protoext.DataRequestToString(dataReq1)) + require.Equal(t, output1, protoext.DataRequestToString(dataReq1)) dataReq2 := &gossip.DataRequest{ Nonce: 0, Digests: [][]byte{[]byte("msg1"), []byte("msg2"), []byte("msg3")}, MsgType: gossip.PullMsgType_IDENTITY_MSG, } output2 := "data request: nonce: 0 , Msg_type: IDENTITY_MSG, digests: [6d736731 6d736732 6d736733]" - assert.Equal(t, output2, protoext.DataRequestToString(dataReq2)) + require.Equal(t, output2, protoext.DataRequestToString(dataReq2)) } func TestToStringLeadershipMessage(t *testing.T) { @@ -195,7 +195,7 @@ func TestToStringLeadershipMessage(t *testing.T) { IsDeclaration: true, } output := "Leadership Message: PKI-id:11 Timestamp:inc_num:1 seq_num:1 Is Declaration true" - assert.Equal(t, output, protoext.LeadershipMessageToString(lm)) + require.Equal(t, output, protoext.LeadershipMessageToString(lm)) } func TestRemotePvtDataResponseToString(t *testing.T) { @@ -206,5 +206,5 @@ func TestRemotePvtDataResponseToString(t *testing.T) { } output := `[tx_id:"tx-id" with 1 elements]` - assert.Equal(t, output, protoext.RemovePvtDataResponseToString(res)) + require.Equal(t, output, protoext.RemovePvtDataResponseToString(res)) } diff --git a/gossip/service/config_test.go b/gossip/service/config_test.go index 97b8a104237..c82a4a325e4 100644 --- a/gossip/service/config_test.go +++ b/gossip/service/config_test.go @@ -13,7 +13,7 @@ import ( "github.com/hyperledger/fabric/gossip/service" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGlobalConfig(t *testing.T) { @@ -51,5 +51,5 @@ func TestGlobalConfig(t *testing.T) { SkipPullingInvalidTransactionsDuringCommit: false, } - assert.Equal(t, coreConfig, expectedConfig) + require.Equal(t, coreConfig, expectedConfig) } diff --git a/gossip/service/gossip_service_test.go b/gossip/service/gossip_service_test.go index 485dc38f607..0c890587248 100644 --- a/gossip/service/gossip_service_test.go +++ b/gossip/service/gossip_service_test.go @@ -46,7 +46,6 @@ import ( "github.com/hyperledger/fabric/internal/pkg/peer/orderers" "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -109,7 +108,7 @@ func TestInitGossipService(t *testing.T) { endpoint, socket := getAvailablePort(t) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) err = msptesttools.LoadMSPSetupForTesting() require.NoError(t, err) @@ -118,7 +117,7 @@ func TestInitGossipService(t *testing.T) { messageCryptoService := peergossip.NewMCS(&mocks.ChannelPolicyManagerGetter{}, signer, mgmt.NewDeserializersManager(cryptoProvider), cryptoProvider) secAdv := peergossip.NewSecurityAdvisor(mgmt.NewDeserializersManager(cryptoProvider)) gossipConfig, err := gossip.GlobalConfig(endpoint, nil) - assert.NoError(t, err) + require.NoError(t, err) grpcClient, err := comm.NewGRPCClient(comm.ClientConfig{}) require.NoError(t, err) @@ -141,7 +140,7 @@ func TestInitGossipService(t *testing.T) { ReconnectTotalTimeThreshold: deliverservice.DefaultReConnectTotalTimeThreshold, }, ) - assert.NoError(t, err) + require.NoError(t, err) go grpcServer.Serve(socket) defer grpcServer.Stop() @@ -198,13 +197,13 @@ func TestLeaderElectionWithDeliverClient(t *testing.T) { Committer: &mockLedgerInfo{1}, }) service, exist := gossips[i].leaderElection[channelName] - assert.True(t, exist, "Leader election service should be created for peer %d and channel %s", i, channelName) + require.True(t, exist, "Leader election service should be created for peer %d and channel %s", i, channelName) services[i] = &electionService{nil, false, 0} services[i].LeaderElectionService = service } // Is single leader was elected. - assert.True(t, waitForLeaderElection(services, time.Second*30, time.Second*2), "One leader should be selected") + require.True(t, waitForLeaderElection(services, time.Second*30, time.Second*2), "One leader should be selected") startsNum := 0 for i := 0; i < n; i++ { @@ -214,7 +213,7 @@ func TestLeaderElectionWithDeliverClient(t *testing.T) { } } - assert.Equal(t, 1, startsNum, "Only for one peer delivery client should start") + require.Equal(t, 1, startsNum, "Only for one peer delivery client should start") stopPeers(gossips) } @@ -263,8 +262,8 @@ func TestWithStaticDeliverClientLeader(t *testing.T) { } for i := 0; i < n; i++ { - assert.NotNil(t, gossips[i].deliveryService[channelName], "Delivery service for channel %s not initiated in peer %d", channelName, i) - assert.True(t, gossips[i].deliveryService[channelName].(*mockDeliverService).running[channelName], "Block deliverer not started for peer %d", i) + require.NotNil(t, gossips[i].deliveryService[channelName], "Delivery service for channel %s not initiated in peer %d", channelName, i) + require.True(t, gossips[i].deliveryService[channelName].(*mockDeliverService).running[channelName], "Block deliverer not started for peer %d", i) } channelName = "chanB" @@ -276,8 +275,8 @@ func TestWithStaticDeliverClientLeader(t *testing.T) { } for i := 0; i < n; i++ { - assert.NotNil(t, gossips[i].deliveryService[channelName], "Delivery service for channel %s not initiated in peer %d", channelName, i) - assert.True(t, gossips[i].deliveryService[channelName].(*mockDeliverService).running[channelName], "Block deliverer not started for peer %d", i) + require.NotNil(t, gossips[i].deliveryService[channelName], "Delivery service for channel %s not initiated in peer %d", channelName, i) + require.True(t, gossips[i].deliveryService[channelName].(*mockDeliverService).running[channelName], "Block deliverer not started for peer %d", i) } stopPeers(gossips) @@ -324,8 +323,8 @@ func TestWithStaticDeliverClientNotLeader(t *testing.T) { } for i := 0; i < n; i++ { - assert.NotNil(t, gossips[i].deliveryService[channelName], "Delivery service for channel %s not initiated in peer %d", channelName, i) - assert.False(t, gossips[i].deliveryService[channelName].(*mockDeliverService).running[channelName], "Block deliverer should not be started for peer %d", i) + require.NotNil(t, gossips[i].deliveryService[channelName], "Delivery service for channel %s not initiated in peer %d", channelName, i) + require.False(t, gossips[i].deliveryService[channelName].(*mockDeliverService).running[channelName], "Block deliverer should not be started for peer %d", i) } stopPeers(gossips) @@ -365,7 +364,7 @@ func TestWithStaticDeliverClientBothStaticAndLeaderElection(t *testing.T) { for i := 0; i < n; i++ { gossips[i].deliveryFactory = deliverServiceFactory - assert.Panics(t, func() { + require.Panics(t, func() { gossips[i].InitializeChannel(channelName, orderers.NewConnectionSource(flogging.MustGetLogger("peer.orderers"), nil), store.Store, Support{ Committer: &mockLedgerInfo{1}, }) @@ -495,7 +494,7 @@ func TestLeaderElectionWithRealGossip(t *testing.T) { logger.Warning("Waiting for leader election") - assert.True(t, waitForLeaderElection(services, time.Second*30, time.Second*2), "One leader should be selected") + require.True(t, waitForLeaderElection(services, time.Second*30, time.Second*2), "One leader should be selected") startsNum := 0 for i := 0; i < n; i++ { @@ -505,7 +504,7 @@ func TestLeaderElectionWithRealGossip(t *testing.T) { } } //Only leader should invoke callback function, so it is double check that only one leader exists - assert.Equal(t, 1, startsNum, "Only for one peer callback function should be called - chanA") + require.Equal(t, 1, startsNum, "Only for one peer callback function should be called - chanA") // Adding some peers to new channel and creating leader election services for peers in new channel // Expecting peer 1 (first in list of election services) to become leader of second channel @@ -526,8 +525,8 @@ func TestLeaderElectionWithRealGossip(t *testing.T) { gossips[i].newLeaderElectionComponent(secondChannelName, secondChannelServices[idx].callback, electionMetrics) } - assert.True(t, waitForLeaderElection(secondChannelServices, time.Second*30, time.Second*2), "One leader should be selected for chanB") - assert.True(t, waitForLeaderElection(services, time.Second*30, time.Second*2), "One leader should be selected for chanA") + require.True(t, waitForLeaderElection(secondChannelServices, time.Second*30, time.Second*2), "One leader should be selected for chanB") + require.True(t, waitForLeaderElection(services, time.Second*30, time.Second*2), "One leader should be selected for chanA") startsNum = 0 for i := 0; i < n; i++ { @@ -535,7 +534,7 @@ func TestLeaderElectionWithRealGossip(t *testing.T) { startsNum++ } } - assert.Equal(t, 1, startsNum, "Only for one peer callback function should be called - chanA") + require.Equal(t, 1, startsNum, "Only for one peer callback function should be called - chanA") startsNum = 0 for i := 0; i < len(secondChannelServices); i++ { @@ -543,7 +542,7 @@ func TestLeaderElectionWithRealGossip(t *testing.T) { startsNum++ } } - assert.Equal(t, 1, startsNum, "Only for one peer callback function should be called - chanB") + require.Equal(t, 1, startsNum, "Only for one peer callback function should be called - chanB") //Stopping 2 gossip instances(peer 0 and peer 1), should init re-election //Now peer 2 become leader for first channel and peer 3 for second channel @@ -555,8 +554,8 @@ func TestLeaderElectionWithRealGossip(t *testing.T) { waitForFullMembershipOrFailNow(t, channelName, gossips[2:], n-2, TIMEOUT, time.Millisecond*100) waitForFullMembershipOrFailNow(t, secondChannelName, secondChannelGossips[1:], len(secondChannelGossips)-1, TIMEOUT, time.Millisecond*100) - assert.True(t, waitForLeaderElection(services[2:], time.Second*30, time.Second*2), "One leader should be selected after re-election - chanA") - assert.True(t, waitForLeaderElection(secondChannelServices[1:], time.Second*30, time.Second*2), "One leader should be selected after re-election - chanB") + require.True(t, waitForLeaderElection(services[2:], time.Second*30, time.Second*2), "One leader should be selected after re-election - chanA") + require.True(t, waitForLeaderElection(secondChannelServices[1:], time.Second*30, time.Second*2), "One leader should be selected after re-election - chanB") startsNum = 0 for i := 2; i < n; i++ { @@ -564,7 +563,7 @@ func TestLeaderElectionWithRealGossip(t *testing.T) { startsNum++ } } - assert.Equal(t, 1, startsNum, "Only for one peer callback function should be called after re-election - chanA") + require.Equal(t, 1, startsNum, "Only for one peer callback function should be called after re-election - chanA") startsNum = 0 for i := 1; i < len(secondChannelServices); i++ { @@ -572,7 +571,7 @@ func TestLeaderElectionWithRealGossip(t *testing.T) { startsNum++ } } - assert.Equal(t, 1, startsNum, "Only for one peer callback function should be called after re-election - chanB") + require.Equal(t, 1, startsNum, "Only for one peer callback function should be called after re-election - chanB") stopServices(secondChannelServices) stopServices(services) @@ -799,7 +798,7 @@ func bootPeers(ports ...int) []string { func getAvailablePort(t *testing.T) (endpoint string, ll net.Listener) { ll, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err) + require.NoError(t, err) endpoint = ll.Addr().String() return endpoint, ll } @@ -871,13 +870,13 @@ func TestInvalidInitialization(t *testing.T) { endpoint, socket := getAvailablePort(t) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockSignerSerializer := &mocks.SignerSerializer{} mockSignerSerializer.SerializeReturns(api.PeerIdentityType("peer-identity"), nil) secAdv := peergossip.NewSecurityAdvisor(mgmt.NewDeserializersManager(cryptoProvider)) gossipConfig, err := gossip.GlobalConfig(endpoint, nil) - assert.NoError(t, err) + require.NoError(t, err) grpcClient, err := comm.NewGRPCClient(comm.ClientConfig{}) require.NoError(t, err) @@ -901,7 +900,7 @@ func TestInvalidInitialization(t *testing.T) { ReconnectTotalTimeThreshold: deliverservice.DefaultReConnectTotalTimeThreshold, }, ) - assert.NoError(t, err) + require.NoError(t, err) gService := gossipService defer gService.Stop() @@ -909,7 +908,7 @@ func TestInvalidInitialization(t *testing.T) { defer grpcServer.Stop() dc := gService.deliveryFactory.Service(gService, orderers.NewConnectionSource(flogging.MustGetLogger("peer.orderers"), nil), &naiveCryptoService{}, false) - assert.NotNil(t, dc) + require.NotNil(t, dc) } func TestChannelConfig(t *testing.T) { @@ -918,16 +917,16 @@ func TestChannelConfig(t *testing.T) { endpoint, socket := getAvailablePort(t) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockSignerSerializer := &mocks.SignerSerializer{} mockSignerSerializer.SerializeReturns(api.PeerIdentityType(string(orgInChannelA)), nil) secAdv := peergossip.NewSecurityAdvisor(mgmt.NewDeserializersManager(cryptoProvider)) gossipConfig, err := gossip.GlobalConfig(endpoint, nil) - assert.NoError(t, err) + require.NoError(t, err) grpcClient, err := comm.NewGRPCClient(comm.ClientConfig{}) - assert.NoError(t, err) + require.NoError(t, err) gossipService, err := New( mockSignerSerializer, @@ -947,7 +946,7 @@ func TestChannelConfig(t *testing.T) { ReconnectTotalTimeThreshold: deliverservice.DefaultReConnectTotalTimeThreshold, }, ) - assert.NoError(t, err) + require.NoError(t, err) gService := gossipService defer gService.Stop() @@ -958,7 +957,7 @@ func TestChannelConfig(t *testing.T) { "A": {{Host: "host", Port: 5000}}, }} - assert.Equal(t, uint64(1), jcm.SequenceNumber()) + require.Equal(t, uint64(1), jcm.SequenceNumber()) mc := &mockConfig{ sequence: 1, @@ -973,7 +972,7 @@ func TestChannelConfig(t *testing.T) { // use mock secAdv so that gService.secAdv.OrgByPeerIdentity can return the matched identity gService.secAdv = &secAdvMock{} gService.updateAnchors(mc) - assert.True(t, gService.amIinChannel(string(orgInChannelA), mc)) - assert.True(t, gService.anchorPeerTracker.IsAnchorPeer("localhost:2001")) - assert.False(t, gService.anchorPeerTracker.IsAnchorPeer("localhost:5000")) + require.True(t, gService.amIinChannel(string(orgInChannelA), mc)) + require.True(t, gService.anchorPeerTracker.IsAnchorPeer("localhost:2001")) + require.False(t, gService.anchorPeerTracker.IsAnchorPeer("localhost:5000")) } diff --git a/gossip/service/integration_test.go b/gossip/service/integration_test.go index 452e203815e..c8416f66d98 100644 --- a/gossip/service/integration_test.go +++ b/gossip/service/integration_test.go @@ -20,7 +20,6 @@ import ( "github.com/hyperledger/fabric/internal/pkg/comm" "github.com/hyperledger/fabric/internal/pkg/peer/blocksprovider" "github.com/hyperledger/fabric/internal/pkg/peer/orderers" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -169,12 +168,12 @@ func TestLeaderYield(t *testing.T) { ds0.waitForDeliveryServiceActivation() t.Log("p0 started its delivery service") // Ensure it's a leader - assert.Equal(t, 0, getLeader()) + require.Equal(t, 0, getLeader()) // Wait for p0 to lose its leadership ds0.waitForDeliveryServiceTermination() t.Log("p0 stopped its delivery service") // Ensure p0 is not a leader - assert.NotEqual(t, 0, getLeader()) + require.NotEqual(t, 0, getLeader()) // Wait for p1 to take over. It should take over before time reaches timeLimit timeLimit := time.Now().Add(takeOverMaxTimeout) for getLeader() != 1 && time.Now().Before(timeLimit) { diff --git a/gossip/service/join_test.go b/gossip/service/join_test.go index 59db08b333a..32b3f373db6 100644 --- a/gossip/service/join_test.go +++ b/gossip/service/join_test.go @@ -23,8 +23,8 @@ import ( "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/util" "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) type secAdvMock struct { @@ -178,7 +178,7 @@ func TestJoinChannelConfig(t *testing.T) { select { case <-time.After(time.Second): case <-failChan: - assert.Fail(t, "Joined a badly configured channel") + require.Fail(t, "Joined a badly configured channel") } succChan := make(chan struct{}, 1) @@ -194,7 +194,7 @@ func TestJoinChannelConfig(t *testing.T) { }) select { case <-time.After(time.Second): - assert.Fail(t, "Didn't join a channel (should have done so within the time period)") + require.Fail(t, "Didn't join a channel (should have done so within the time period)") case <-succChan: } @@ -212,10 +212,10 @@ func TestJoinChannelNoAnchorPeers(t *testing.T) { defer joinChanCalled.Done() jcm := args.Get(0).(api.JoinChannelMessage) channel := args.Get(1).(common.ChannelID) - assert.Len(t, jcm.Members(), 2) - assert.Contains(t, jcm.Members(), api.OrgIdentityType("Org0")) - assert.Contains(t, jcm.Members(), api.OrgIdentityType("Org1")) - assert.Equal(t, "A", string(channel)) + require.Len(t, jcm.Members(), 2) + require.Contains(t, jcm.Members(), api.OrgIdentityType("Org0")) + require.Contains(t, jcm.Members(), api.OrgIdentityType("Org1")) + require.Equal(t, "A", string(channel)) }) anchorPeerTracker := &anchorPeerTracker{allEndpoints: map[string]map[string]struct{}{}} @@ -225,8 +225,8 @@ func TestJoinChannelNoAnchorPeers(t *testing.T) { appOrg1 := &appOrgMock{id: "Org1"} // Make sure the ApplicationOrgs really have no anchor peers - assert.Empty(t, appOrg0.AnchorPeers()) - assert.Empty(t, appOrg1.AnchorPeers()) + require.Empty(t, appOrg0.AnchorPeers()) + require.Empty(t, appOrg1.AnchorPeers()) g.updateAnchors(&configMock{ orgs2AppOrgs: map[string]channelconfig.ApplicationOrg{ diff --git a/gossip/state/config_test.go b/gossip/state/config_test.go index 5444dd3dc40..906f8f7ad3e 100644 --- a/gossip/state/config_test.go +++ b/gossip/state/config_test.go @@ -11,9 +11,8 @@ import ( "time" "github.com/hyperledger/fabric/gossip/state" - "github.com/stretchr/testify/assert" - "github.com/spf13/viper" + "github.com/stretchr/testify/require" ) func TestGlobalConfig(t *testing.T) { @@ -38,7 +37,7 @@ func TestGlobalConfig(t *testing.T) { StateEnabled: true, } - assert.Equal(t, expectedConfig, coreConfig) + require.Equal(t, expectedConfig, coreConfig) } func TestGlobalConfigDefaults(t *testing.T) { @@ -56,5 +55,5 @@ func TestGlobalConfigDefaults(t *testing.T) { StateEnabled: false, } - assert.Equal(t, expectedConfig, coreConfig) + require.Equal(t, expectedConfig, coreConfig) } diff --git a/gossip/state/metrics_test.go b/gossip/state/metrics_test.go index 5356ada86cd..7a40297a84f 100644 --- a/gossip/state/metrics_test.go +++ b/gossip/state/metrics_test.go @@ -17,8 +17,8 @@ import ( "github.com/hyperledger/fabric/gossip/protoext" "github.com/hyperledger/fabric/gossip/state/mocks" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestMetrics(t *testing.T) { @@ -56,7 +56,7 @@ func TestMetrics(t *testing.T) { SeqNum: 100, Data: protoutil.MarshalOrPanic(protoutil.NewBlock(100, []byte{})), }) - assert.NoError(t, err) + require.NoError(t, err) // update the ledger height to prepare for the pop operation mc.On("LedgerHeight", mock.Anything).Return(uint64(101), nil) @@ -66,28 +66,28 @@ func TestMetrics(t *testing.T) { committedDurationWG.Wait() // ensure the right height was reported - assert.Equal(t, + require.Equal(t, []string{"channel", "testchannelid"}, testMetricProvider.FakeHeightGauge.WithArgsForCall(0), ) - assert.EqualValues(t, + require.EqualValues(t, 101, testMetricProvider.FakeHeightGauge.SetArgsForCall(0), ) // after push or pop payload buffer size should be reported - assert.Equal(t, + require.Equal(t, []string{"channel", "testchannelid"}, testMetricProvider.FakePayloadBufferSizeGauge.WithArgsForCall(0), ) - assert.Equal(t, + require.Equal(t, []string{"channel", "testchannelid"}, testMetricProvider.FakePayloadBufferSizeGauge.WithArgsForCall(1), ) // both 0 and 1 as size can be reported, depends on timing size := testMetricProvider.FakePayloadBufferSizeGauge.SetArgsForCall(0) - assert.True(t, size == 1 || size == 0) + require.True(t, size == 1 || size == 0) size = testMetricProvider.FakePayloadBufferSizeGauge.SetArgsForCall(1) - assert.True(t, size == 1 || size == 0) + require.True(t, size == 1 || size == 0) } diff --git a/gossip/state/mocks/gossip_test.go b/gossip/state/mocks/gossip_test.go index 8399c5a178e..e1543fa09c2 100644 --- a/gossip/state/mocks/gossip_test.go +++ b/gossip/state/mocks/gossip_test.go @@ -13,8 +13,8 @@ import ( "github.com/hyperledger/fabric/gossip/api" "github.com/hyperledger/fabric/gossip/common" "github.com/hyperledger/fabric/gossip/discovery" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestGossipMock(t *testing.T) { @@ -28,27 +28,27 @@ func TestGossipMock(t *testing.T) { a, b := g.Accept(func(o interface{}) bool { return true }, false) - assert.Nil(t, b) - assert.NotNil(t, a) - assert.Panics(t, func() { + require.Nil(t, b) + require.NotNil(t, a) + require.Panics(t, func() { g.SuspectPeers(func(identity api.PeerIdentityType) bool { return false }) }) - assert.Panics(t, func() { + require.Panics(t, func() { g.Send(nil, nil) }) - assert.Panics(t, func() { + require.Panics(t, func() { g.Peers() }) g.On("PeersOfChannel", mock.Anything).Return([]discovery.NetworkMember{}) - assert.Empty(t, g.PeersOfChannel(common.ChannelID("A"))) + require.Empty(t, g.PeersOfChannel(common.ChannelID("A"))) - assert.Panics(t, func() { + require.Panics(t, func() { g.UpdateMetadata([]byte{}) }) - assert.Panics(t, func() { + require.Panics(t, func() { g.Gossip(nil) }) - assert.NotPanics(t, func() { + require.NotPanics(t, func() { g.UpdateLedgerHeight(0, common.ChannelID("A")) g.Stop() g.JoinChan(nil, common.ChannelID("A")) diff --git a/gossip/state/payloads_buffer_test.go b/gossip/state/payloads_buffer_test.go index 9e39c564a68..c0fada1a79e 100644 --- a/gossip/state/payloads_buffer_test.go +++ b/gossip/state/payloads_buffer_test.go @@ -15,7 +15,7 @@ import ( proto "github.com/hyperledger/fabric-protos-go/gossip" "github.com/hyperledger/fabric/gossip/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func init() { @@ -36,7 +36,7 @@ func randomPayloadWithSeqNum(seqNum uint64) (*proto.Payload, error) { func TestNewPayloadsBuffer(t *testing.T) { payloadsBuffer := NewPayloadsBuffer(10) - assert.Equal(t, payloadsBuffer.Next(), uint64(10)) + require.Equal(t, payloadsBuffer.Next(), uint64(10)) } func TestPayloadsBufferImpl_Push(t *testing.T) { @@ -54,9 +54,9 @@ func TestPayloadsBufferImpl_Push(t *testing.T) { // Payloads with sequence number less than buffer top // index should not be accepted t.Log("Getting next block sequence number") - assert.Equal(t, buffer.Next(), uint64(5)) + require.Equal(t, buffer.Next(), uint64(5)) t.Log("Check block buffer size") - assert.Equal(t, buffer.Size(), 0) + require.Equal(t, buffer.Size(), 0) // Adding new payload with seq. number equal to top // payload should not be added @@ -68,15 +68,15 @@ func TestPayloadsBufferImpl_Push(t *testing.T) { t.Log("Pushing new payload into buffer") buffer.Push(payload) t.Log("Getting next block sequence number") - assert.Equal(t, buffer.Next(), uint64(5)) + require.Equal(t, buffer.Next(), uint64(5)) t.Log("Check block buffer size") - assert.Equal(t, buffer.Size(), 1) + require.Equal(t, buffer.Size(), 1) } func TestPayloadsBufferImpl_Ready(t *testing.T) { fin := make(chan struct{}) buffer := NewPayloadsBuffer(1) - assert.Equal(t, buffer.Next(), uint64(1)) + require.Equal(t, buffer.Next(), uint64(1)) go func() { <-buffer.Ready() @@ -95,7 +95,7 @@ func TestPayloadsBufferImpl_Ready(t *testing.T) { select { case <-fin: payload := buffer.Pop() - assert.Equal(t, payload.SeqNum, uint64(1)) + require.Equal(t, payload.SeqNum, uint64(1)) case <-time.After(500 * time.Millisecond): t.Fail() } @@ -111,7 +111,7 @@ func TestPayloadsBufferImpl_ConcurrentPush(t *testing.T) { concurrency := 10 buffer := NewPayloadsBuffer(nextSeqNum) - assert.Equal(t, buffer.Next(), uint64(nextSeqNum)) + require.Equal(t, buffer.Next(), uint64(nextSeqNum)) startWG := sync.WaitGroup{} startWG.Add(1) @@ -120,7 +120,7 @@ func TestPayloadsBufferImpl_ConcurrentPush(t *testing.T) { finishWG.Add(concurrency) payload, err := randomPayloadWithSeqNum(nextSeqNum) - assert.NoError(t, err) + require.NoError(t, err) ready := int32(0) readyWG := sync.WaitGroup{} @@ -143,15 +143,15 @@ func TestPayloadsBufferImpl_ConcurrentPush(t *testing.T) { finishWG.Wait() readyWG.Wait() - assert.Equal(t, int32(1), atomic.LoadInt32(&ready)) + require.Equal(t, int32(1), atomic.LoadInt32(&ready)) // Buffer size has to be only one - assert.Equal(t, 1, buffer.Size()) + require.Equal(t, 1, buffer.Size()) } // Tests the scenario where payload pushes and pops are interleaved after a Ready() signal. func TestPayloadsBufferImpl_Interleave(t *testing.T) { buffer := NewPayloadsBuffer(1) - assert.Equal(t, buffer.Next(), uint64(1)) + require.Equal(t, buffer.Next(), uint64(1)) // // First two sequences arrives and the buffer is emptied without interleave. @@ -166,11 +166,11 @@ func TestPayloadsBufferImpl_Interleave(t *testing.T) { // The consumer waits for the signal and then drains all ready payloads. payload, err := randomPayloadWithSeqNum(1) - assert.NoError(t, err, "generating random payload failed") + require.NoError(t, err, "generating random payload failed") buffer.Push(payload) payload, err = randomPayloadWithSeqNum(2) - assert.NoError(t, err, "generating random payload failed") + require.NoError(t, err, "generating random payload failed") buffer.Push(payload) select { @@ -194,7 +194,7 @@ func TestPayloadsBufferImpl_Interleave(t *testing.T) { // Next sequences are incoming at the same time the buffer is being emptied by the consumer. // payload, err = randomPayloadWithSeqNum(3) - assert.NoError(t, err, "generating random payload failed") + require.NoError(t, err, "generating random payload failed") buffer.Push(payload) select { @@ -203,27 +203,27 @@ func TestPayloadsBufferImpl_Interleave(t *testing.T) { t.Error("buffer wasn't ready after 500 ms for second sequence") } payload = buffer.Pop() - assert.NotNil(t, payload, "payload should not be nil") + require.NotNil(t, payload, "payload should not be nil") // ... Block processing now happens on sequence 3. // In the mean time, sequence 4 is pushed into the queue. payload, err = randomPayloadWithSeqNum(4) - assert.NoError(t, err, "generating random payload failed") + require.NoError(t, err, "generating random payload failed") buffer.Push(payload) // ... Block processing completes on sequence 3, the consumer loop grabs the next one (4). payload = buffer.Pop() - assert.NotNil(t, payload, "payload should not be nil") + require.NotNil(t, payload, "payload should not be nil") // In the mean time, sequence 5 is pushed into the queue. payload, err = randomPayloadWithSeqNum(5) - assert.NoError(t, err, "generating random payload failed") + require.NoError(t, err, "generating random payload failed") buffer.Push(payload) // ... Block processing completes on sequence 4, the consumer loop grabs the next one (5). payload = buffer.Pop() - assert.NotNil(t, payload, "payload should not be nil") + require.NotNil(t, payload, "payload should not be nil") // // Now we see that goroutines are building up due to the interleaved push and pops above. @@ -240,7 +240,7 @@ func TestPayloadsBufferImpl_Interleave(t *testing.T) { } payload = buffer.Pop() t.Logf("payload: %v", payload) - assert.Nil(t, payload, "payload should be nil") + require.Nil(t, payload, "payload should be nil") select { case <-buffer.Ready(): @@ -253,7 +253,7 @@ func TestPayloadsBufferImpl_Interleave(t *testing.T) { t.Log("buffer not ready (2)") } payload = buffer.Pop() - assert.Nil(t, payload, "payload should be nil") + require.Nil(t, payload, "payload should be nil") t.Logf("payload: %v", payload) select { diff --git a/gossip/state/state_test.go b/gossip/state/state_test.go index cb12fd959e5..e4c173ac291 100644 --- a/gossip/state/state_test.go +++ b/gossip/state/state_test.go @@ -50,8 +50,8 @@ import ( "github.com/hyperledger/fabric/protoutil" "github.com/onsi/gomega" "github.com/onsi/gomega/gbytes" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -504,8 +504,8 @@ func TestNilAddPayload(t *testing.T) { p := newPeerNodeWithGossip(0, mc, noopPeerIdentityAcceptor, g) defer p.shutdown() err := p.s.AddPayload(nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "nil") + require.Error(t, err) + require.Contains(t, err.Error(), "nil") } func TestAddPayloadLedgerUnavailable(t *testing.T) { @@ -529,9 +529,9 @@ func TestAddPayloadLedgerUnavailable(t *testing.T) { SeqNum: uint64(1), Data: b, }) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed obtaining ledger height") - assert.Contains(t, err.Error(), "cannot query ledger") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed obtaining ledger height") + require.Contains(t, err.Error(), "cannot query ledger") } func TestLargeBlockGap(t *testing.T) { @@ -597,9 +597,9 @@ func TestLargeBlockGap(t *testing.T) { expectedSequence := 1 for expectedSequence < 500 { blockSeq := <-blocksPassedToLedger - assert.Equal(t, expectedSequence, int(blockSeq)) + require.Equal(t, expectedSequence, int(blockSeq)) // Ensure payload buffer isn't over-populated - assert.True(t, p.s.payloads.Size() <= defMaxBlockDistance*2+defAntiEntropyBatchSize, "payload buffer size is %d", p.s.payloads.Size()) + require.True(t, p.s.payloads.Size() <= defMaxBlockDistance*2+defAntiEntropyBatchSize, "payload buffer size is %d", p.s.payloads.Size()) expectedSequence++ time.Sleep(blockProcessingTime) } @@ -627,7 +627,7 @@ func TestOverPopulation(t *testing.T) { for i := 1; i <= 4; i++ { rawblock := protoutil.NewBlock(uint64(i), []byte{}) b, _ := pb.Marshal(rawblock) - assert.NoError(t, p.s.addPayload(&proto.Payload{ + require.NoError(t, p.s.addPayload(&proto.Payload{ SeqNum: uint64(i), Data: b, }, nonBlocking)) @@ -638,7 +638,7 @@ func TestOverPopulation(t *testing.T) { for i := 10; i <= defMaxBlockDistance; i++ { rawblock := protoutil.NewBlock(uint64(i), []byte{}) b, _ := pb.Marshal(rawblock) - assert.NoError(t, p.s.addPayload(&proto.Payload{ + require.NoError(t, p.s.addPayload(&proto.Payload{ SeqNum: uint64(i), Data: b, }, nonBlocking)) @@ -649,7 +649,7 @@ func TestOverPopulation(t *testing.T) { for i := defMaxBlockDistance + 1; i <= defMaxBlockDistance*10; i++ { rawblock := protoutil.NewBlock(uint64(i), []byte{}) b, _ := pb.Marshal(rawblock) - assert.Error(t, p.s.addPayload(&proto.Payload{ + require.Error(t, p.s.addPayload(&proto.Payload{ SeqNum: uint64(i), Data: b, }, nonBlocking)) @@ -659,14 +659,14 @@ func TestOverPopulation(t *testing.T) { close(blocksPassedToLedger) i := 1 for seq := range blocksPassedToLedger { - assert.Equal(t, uint64(i), seq) + require.Equal(t, uint64(i), seq) i++ } - assert.Equal(t, 5, i) + require.Equal(t, 5, i) // Ensure we don't store too many blocks in memory sp := p.s - assert.True(t, sp.payloads.Size() < defMaxBlockDistance) + require.True(t, sp.payloads.Size() < defMaxBlockDistance) } func TestBlockingEnqueue(t *testing.T) { @@ -730,7 +730,7 @@ func TestBlockingEnqueue(t *testing.T) { mc.Lock() mc.Mock = m mc.Unlock() - assert.Equal(t, receivedBlock, uint64(receivedBlockCount)) + require.Equal(t, receivedBlock, uint64(receivedBlockCount)) if int(receivedBlockCount) == numBlocksReceived { break } @@ -811,13 +811,13 @@ func TestFailures(t *testing.T) { g.On("Accept", mock.Anything, false).Return(make(<-chan *proto.GossipMessage), nil) g.On("Accept", mock.Anything, true).Return(nil, make(chan protoext.ReceivedMessage)) g.On("PeersOfChannel", mock.Anything).Return([]discovery.NetworkMember{}) - assert.Panics(t, func() { + require.Panics(t, func() { newPeerNodeWithGossip(0, mc, noopPeerIdentityAcceptor, g) }) // Reprogram mock mc.Mock = &mock.Mock{} mc.On("LedgerHeight", mock.Anything).Return(uint64(1), errors.New("Failed accessing ledger")) - assert.Nil(t, newPeerNodeWithGossip(0, mc, noopPeerIdentityAcceptor, g)) + require.Nil(t, newPeerNodeWithGossip(0, mc, noopPeerIdentityAcceptor, g)) } func TestGossipReception(t *testing.T) { @@ -878,7 +878,7 @@ func TestGossipReception(t *testing.T) { receivedChan := make(chan struct{}) mc.On("CommitLegacy", mock.Anything).Run(func(arguments mock.Arguments) { block := arguments.Get(0).(*pcomm.Block) - assert.Equal(t, uint64(1), block.Header.Number) + require.Equal(t, uint64(1), block.Header.Number) receivedChan <- struct{}{} }) mc.On("LedgerHeight", mock.Anything).Return(uint64(1), nil) @@ -888,7 +888,7 @@ func TestGossipReception(t *testing.T) { select { case <-receivedChan: case <-time.After(time.Second * 15): - assert.Fail(t, "Didn't commit a block within a timely manner") + require.Fail(t, "Didn't commit a block within a timely manner") } } @@ -905,7 +905,7 @@ func TestLedgerHeightFromProperties(t *testing.T) { g := &mocks.GossipMock{} g.On("Send", mock.Anything, mock.Anything).Run(func(arguments mock.Arguments) { msg := arguments.Get(0).(*proto.GossipMessage) - assert.NotNil(t, msg.GetStateRequest()) + require.NotNil(t, msg.GetStateRequest()) peer := arguments.Get(1).([]*comm.RemotePeer)[0] if bytes.Equal(networkMember.PKIid, peer.PKIID) { atomic.StoreInt32(&wasGivenNetworkMemberSelected, 1) @@ -959,7 +959,7 @@ func TestLedgerHeightFromProperties(t *testing.T) { } for _, tst := range tests { - assert.Equal(t, tst.shouldGivenBeSelected, wasNetworkMemberSelected(t, tst.member)) + require.Equal(t, tst.shouldGivenBeSelected, wasNetworkMemberSelected(t, tst.member)) } } @@ -973,7 +973,7 @@ func TestAccessControl(t *testing.T) { for i := 0; i < authorizedPeersSize; i++ { ll, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err) + require.NoError(t, err) listeners = append(listeners, ll) endpoint := ll.Addr().String() endpoints = append(endpoints, endpoint) @@ -1066,7 +1066,7 @@ func TestAccessControl(t *testing.T) { } } else { if err == nil && height > 1 { - assert.Fail(t, "Peer", id, "got message but isn't authorized! Height:", height) + require.Fail(t, "Peer", id, "got message but isn't authorized! Height:", height) } } } @@ -1448,7 +1448,7 @@ func TestTransferOfPrivateRWSet(t *testing.T) { // Start the assertion section stateResponse := response.GetGossipMessage().GetStateResponse() - assertion := assert.New(t) + assertion := require.New(t) // Nonce should be equal to Nonce of the request assertion.Equal(response.GetGossipMessage().Nonce, uint64(1)) // Payload should not need be nil @@ -1672,21 +1672,21 @@ func TestStateRequestValidator(t *testing.T) { StartSeqNum: 10, EndSeqNum: 5, }, defAntiEntropyBatchSize) - assert.Contains(t, err.Error(), "Invalid sequence interval [10...5).") - assert.Error(t, err) + require.Contains(t, err.Error(), "Invalid sequence interval [10...5).") + require.Error(t, err) err = validator.validate(&proto.RemoteStateRequest{ StartSeqNum: 10, EndSeqNum: 30, }, defAntiEntropyBatchSize) - assert.Contains(t, err.Error(), "Requesting blocks range [10-30) greater than configured") - assert.Error(t, err) + require.Contains(t, err.Error(), "Requesting blocks range [10-30) greater than configured") + require.Error(t, err) err = validator.validate(&proto.RemoteStateRequest{ StartSeqNum: 10, EndSeqNum: 20, }, defAntiEntropyBatchSize) - assert.NoError(t, err) + require.NoError(t, err) } func waitUntilTrueOrTimeout(t *testing.T, predicate func() bool, timeout time.Duration) { diff --git a/gossip/util/grpc_test.go b/gossip/util/grpc_test.go index d2ef700cfde..fb61a0c218a 100644 --- a/gossip/util/grpc_test.go +++ b/gossip/util/grpc_test.go @@ -9,14 +9,14 @@ package util import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCreateGRPCLayer(t *testing.T) { port, gRPCServer, certs, secureDialOpts, dialOpts := CreateGRPCLayer() - assert.NotNil(t, port) - assert.NotNil(t, gRPCServer) - assert.NotNil(t, certs) - assert.NotNil(t, secureDialOpts) - assert.NotNil(t, dialOpts) + require.NotNil(t, port) + require.NotNil(t, gRPCServer) + require.NotNil(t, certs) + require.NotNil(t, secureDialOpts) + require.NotNil(t, dialOpts) } diff --git a/gossip/util/misc_test.go b/gossip/util/misc_test.go index aee3741af44..b8a41a95bcb 100644 --- a/gossip/util/misc_test.go +++ b/gossip/util/misc_test.go @@ -13,22 +13,22 @@ import ( "time" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func testHappyPath(t *testing.T) { n1 := RandomInt(10000) n2 := RandomInt(10000) - assert.NotEqual(t, n1, n2) + require.NotEqual(t, n1, n2) n3 := RandomUInt64() n4 := RandomUInt64() - assert.NotEqual(t, n3, n4) + require.NotEqual(t, n3, n4) } func TestContains(t *testing.T) { - assert.True(t, Contains("foo", []string{"bar", "foo", "baz"})) - assert.False(t, Contains("foo", []string{"bar", "baz"})) + require.True(t, Contains("foo", []string{"bar", "foo", "baz"})) + require.False(t, Contains("foo", []string{"bar", "baz"})) } func TestGetRandomInt(t *testing.T) { @@ -36,7 +36,7 @@ func TestGetRandomInt(t *testing.T) { } func TestNonNegativeValues(t *testing.T) { - assert.True(t, RandomInt(1000000) >= 0) + require.True(t, RandomInt(1000000) >= 0) } func TestGetRandomIntBadInput(t *testing.T) { @@ -46,8 +46,8 @@ func TestGetRandomIntBadInput(t *testing.T) { f2 := func() { RandomInt(-500) } - assert.Panics(t, f1) - assert.Panics(t, f2) + require.Panics(t, f1) + require.Panics(t, f2) } type reader struct { @@ -78,27 +78,27 @@ func TestGetRandomIntNoEntropy(t *testing.T) { func TestRandomIndices(t *testing.T) { // not enough choices as needed - assert.Nil(t, GetRandomIndices(10, 5)) + require.Nil(t, GetRandomIndices(10, 5)) // exact number of choices as available - assert.Len(t, GetRandomIndices(10, 9), 10) + require.Len(t, GetRandomIndices(10, 9), 10) // more choices available than needed - assert.Len(t, GetRandomIndices(10, 90), 10) + require.Len(t, GetRandomIndices(10, 90), 10) } func TestGetIntOrDefault(t *testing.T) { viper.Set("N", 100) n := GetIntOrDefault("N", 100) - assert.Equal(t, 100, n) + require.Equal(t, 100, n) m := GetIntOrDefault("M", 101) - assert.Equal(t, 101, m) + require.Equal(t, 101, m) } func TestGetDurationOrDefault(t *testing.T) { viper.Set("foo", time.Second) foo := GetDurationOrDefault("foo", time.Second*2) - assert.Equal(t, time.Second, foo) + require.Equal(t, time.Second, foo) bar := GetDurationOrDefault("bar", time.Second*2) - assert.Equal(t, time.Second*2, bar) + require.Equal(t, time.Second*2, bar) } func TestPrintStackTrace(t *testing.T) { @@ -108,27 +108,27 @@ func TestPrintStackTrace(t *testing.T) { func TestGetLogger(t *testing.T) { l1 := GetLogger("foo", "bar") l2 := GetLogger("foo", "bar") - assert.Equal(t, l1, l2) + require.Equal(t, l1, l2) } func TestSet(t *testing.T) { s := NewSet() - assert.Len(t, s.ToArray(), 0) - assert.Equal(t, s.Size(), 0) - assert.False(t, s.Exists(42)) + require.Len(t, s.ToArray(), 0) + require.Equal(t, s.Size(), 0) + require.False(t, s.Exists(42)) s.Add(42) - assert.True(t, s.Exists(42)) - assert.Len(t, s.ToArray(), 1) - assert.Equal(t, s.Size(), 1) + require.True(t, s.Exists(42)) + require.Len(t, s.ToArray(), 1) + require.Equal(t, s.Size(), 1) s.Remove(42) - assert.False(t, s.Exists(42)) + require.False(t, s.Exists(42)) s.Add(42) - assert.True(t, s.Exists(42)) + require.True(t, s.Exists(42)) s.Clear() - assert.False(t, s.Exists(42)) + require.False(t, s.Exists(42)) } func TestStringsToBytesToStrings(t *testing.T) { strings := []string{"foo", "bar"} - assert.Equal(t, strings, BytesToStrings(StringsToBytes(strings))) + require.Equal(t, strings, BytesToStrings(StringsToBytes(strings))) } diff --git a/gossip/util/msgs_test.go b/gossip/util/msgs_test.go index f0f369914c1..987691331ea 100644 --- a/gossip/util/msgs_test.go +++ b/gossip/util/msgs_test.go @@ -7,12 +7,13 @@ SPDX-License-Identifier: Apache-2.0 package util import ( + "reflect" "testing" proto "github.com/hyperledger/fabric-protos-go/gossip" "github.com/hyperledger/fabric/gossip/common" "github.com/hyperledger/fabric/gossip/protoext" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func init() { @@ -29,29 +30,29 @@ func TestMembershipStore(t *testing.T) { msg2 := &protoext.SignedGossipMessage{Envelope: &proto.Envelope{}} // Test initially created store is empty - assert.Nil(t, membershipStore.MsgByID(id1)) - assert.Equal(t, membershipStore.Size(), 0) + require.Nil(t, membershipStore.MsgByID(id1)) + require.Equal(t, membershipStore.Size(), 0) // Test put works as expected membershipStore.Put(id1, msg1) - assert.NotNil(t, membershipStore.MsgByID(id1)) + require.NotNil(t, membershipStore.MsgByID(id1)) // Test MsgByID returns the right instance stored membershipStore.Put(id2, msg2) - assert.Equal(t, msg1, membershipStore.MsgByID(id1)) - assert.NotEqual(t, msg2, membershipStore.MsgByID(id1)) + require.Equal(t, msg1, membershipStore.MsgByID(id1)) + require.NotEqual(t, msg2, membershipStore.MsgByID(id1)) // Test capacity grows - assert.Equal(t, membershipStore.Size(), 2) + require.Equal(t, membershipStore.Size(), 2) // Test remove works membershipStore.Remove(id1) - assert.Nil(t, membershipStore.MsgByID(id1)) - assert.Equal(t, membershipStore.Size(), 1) + require.Nil(t, membershipStore.MsgByID(id1)) + require.Equal(t, membershipStore.Size(), 1) // Test returned instance is not a copy msg3 := &protoext.SignedGossipMessage{GossipMessage: &proto.GossipMessage{}} msg3Clone := &protoext.SignedGossipMessage{GossipMessage: &proto.GossipMessage{}} id3 := common.PKIidType("id3") membershipStore.Put(id3, msg3) - assert.Equal(t, msg3Clone, msg3) + require.Equal(t, msg3Clone, msg3) membershipStore.MsgByID(id3).Channel = []byte{0, 1, 2, 3} - assert.NotEqual(t, msg3Clone, msg3) + require.NotEqual(t, msg3Clone, msg3) } func TestToSlice(t *testing.T) { @@ -71,11 +72,11 @@ func TestToSlice(t *testing.T) { membershipStore.Put(id3, msg3) membershipStore.Put(id4, msg4) - assert.Len(t, membershipStore.ToSlice(), 4) + require.Len(t, membershipStore.ToSlice(), 4) existsInSlice := func(slice []*protoext.SignedGossipMessage, msg *protoext.SignedGossipMessage) bool { for _, m := range slice { - if assert.ObjectsAreEqual(m, msg) { + if reflect.DeepEqual(m, msg) { return true } } @@ -84,7 +85,7 @@ func TestToSlice(t *testing.T) { expectedMsgs := []*protoext.SignedGossipMessage{msg1, msg2, msg3, msg4} for _, msg := range membershipStore.ToSlice() { - assert.True(t, existsInSlice(expectedMsgs, msg)) + require.True(t, existsInSlice(expectedMsgs, msg)) } } diff --git a/gossip/util/pubsub_test.go b/gossip/util/pubsub_test.go index c428f3026e0..b7bf908540a 100644 --- a/gossip/util/pubsub_test.go +++ b/gossip/util/pubsub_test.go @@ -11,7 +11,7 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewPubsub(t *testing.T) { @@ -19,18 +19,18 @@ func TestNewPubsub(t *testing.T) { // Check a publishing to a topic with a subscription succeeds sub1 := ps.Subscribe("test", time.Second) sub2 := ps.Subscribe("test2", time.Second) - assert.NotNil(t, sub1) + require.NotNil(t, sub1) go func() { err := ps.Publish("test", 5) - assert.NoError(t, err) + require.NoError(t, err) }() item, err := sub1.Listen() - assert.NoError(t, err) - assert.Equal(t, 5, item) + require.NoError(t, err) + require.Equal(t, 5, item) // Check that a publishing to a topic with no subscribers fails err = ps.Publish("test3", 5) - assert.Error(t, err) - assert.Contains(t, "no subscribers", err.Error()) + require.Error(t, err) + require.Contains(t, "no subscribers", err.Error()) // Check that a listen on a topic that its publish is too late, times out // and returns an error go func() { @@ -38,9 +38,9 @@ func TestNewPubsub(t *testing.T) { ps.Publish("test2", 10) }() item, err = sub2.Listen() - assert.Error(t, err) - assert.Contains(t, "timed out", err.Error()) - assert.Nil(t, item) + require.Error(t, err) + require.Contains(t, "timed out", err.Error()) + require.Nil(t, item) // Have multiple subscribers subscribe to the same topic subscriptions := []Subscription{} n := 100 @@ -52,7 +52,7 @@ func TestNewPubsub(t *testing.T) { // it by 1 item for i := 0; i <= subscriptionBuffSize; i++ { err := ps.Publish("test4", 100+i) - assert.NoError(t, err) + require.NoError(t, err) } }() wg := sync.WaitGroup{} @@ -63,14 +63,14 @@ func TestNewPubsub(t *testing.T) { defer wg.Done() for i := 0; i < subscriptionBuffSize; i++ { item, err := s.Listen() - assert.NoError(t, err) - assert.Equal(t, 100+i, item) + require.NoError(t, err) + require.Equal(t, 100+i, item) } // The last item that we published was dropped // due to the buffer being full item, err := s.Listen() - assert.Nil(t, item) - assert.Error(t, err) + require.Nil(t, item) + require.Error(t, err) }(s) } wg.Wait() @@ -87,5 +87,5 @@ func TestNewPubsub(t *testing.T) { } ps.Lock() defer ps.Unlock() - assert.Empty(t, ps.subscriptions) + require.Empty(t, ps.subscriptions) } diff --git a/idemix/idemix_test.go b/idemix/idemix_test.go index 1c76a796621..d249f45f555 100644 --- a/idemix/idemix_test.go +++ b/idemix/idemix_test.go @@ -11,14 +11,14 @@ import ( "testing" "github.com/hyperledger/fabric-amcl/amcl/FP256BN" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestIdemix(t *testing.T) { // Test weak BB sigs: // Test KeyGen rng, err := GetRand() - assert.NoError(t, err) + require.NoError(t, err) wbbsk, wbbpk := WBBKeyGen(rng) // Get random message @@ -29,7 +29,7 @@ func TestIdemix(t *testing.T) { // Test Verification err = WBBVerify(wbbpk, wbbsig, testmsg) - assert.NoError(t, err) + require.NoError(t, err) // Test idemix functionality AttributeNames := []string{"Attr1", "Attr2", "Attr3", "Attr4", "Attr5"} @@ -60,23 +60,23 @@ func TestIdemix(t *testing.T) { // Make sure Check() is invalid for a public key with invalid proof proofC := key.Ipk.GetProofC() key.Ipk.ProofC = BigToBytes(RandModOrder(rng)) - assert.Error(t, key.Ipk.Check(), "public key with broken zero-knowledge proof should be invalid") + require.Error(t, key.Ipk.Check(), "public key with broken zero-knowledge proof should be invalid") // Make sure Check() is invalid for a public key with incorrect number of HAttrs hAttrs := key.Ipk.GetHAttrs() key.Ipk.HAttrs = key.Ipk.HAttrs[:0] - assert.Error(t, key.Ipk.Check(), "public key with incorrect number of HAttrs should be invalid") + require.Error(t, key.Ipk.Check(), "public key with incorrect number of HAttrs should be invalid") key.Ipk.HAttrs = hAttrs // Restore IPk to be valid key.Ipk.ProofC = proofC h := key.Ipk.GetHash() - assert.NoError(t, key.Ipk.Check(), "restored public key should be valid") - assert.Zero(t, bytes.Compare(h, key.Ipk.GetHash()), "IPK hash changed on ipk Check") + require.NoError(t, key.Ipk.Check(), "restored public key should be valid") + require.Zero(t, bytes.Compare(h, key.Ipk.GetHash()), "IPK hash changed on ipk Check") // Create public with duplicate attribute names should fail _, err = NewIssuerKey([]string{"Attr1", "Attr2", "Attr1"}, rng) - assert.Error(t, err, "issuer key generation should fail with duplicate attribute names") + require.Error(t, err, "issuer key generation should fail with duplicate attribute names") // Test issuance sk := RandModOrder(rng) @@ -84,50 +84,50 @@ func TestIdemix(t *testing.T) { m := NewCredRequest(sk, BigToBytes(ni), key.Ipk, rng) cred, err := NewCredential(key, m, attrs, rng) - assert.NoError(t, err, "Failed to issue a credential: \"%s\"", err) + require.NoError(t, err, "Failed to issue a credential: \"%s\"", err) - assert.NoError(t, cred.Ver(sk, key.Ipk), "credential should be valid") + require.NoError(t, cred.Ver(sk, key.Ipk), "credential should be valid") // Issuing a credential with the incorrect amount of attributes should fail _, err = NewCredential(key, m, []*FP256BN.BIG{}, rng) - assert.Error(t, err, "issuing a credential with the incorrect amount of attributes should fail") + require.Error(t, err, "issuing a credential with the incorrect amount of attributes should fail") // Breaking the ZK proof of the CredRequest should make it invalid proofC = m.GetProofC() m.ProofC = BigToBytes(RandModOrder(rng)) - assert.Error(t, m.Check(key.Ipk), "CredRequest with broken ZK proof should not be valid") + require.Error(t, m.Check(key.Ipk), "CredRequest with broken ZK proof should not be valid") // Creating a credential from a broken CredRequest should fail _, err = NewCredential(key, m, attrs, rng) - assert.Error(t, err, "creating a credential from an invalid CredRequest should fail") + require.Error(t, err, "creating a credential from an invalid CredRequest should fail") m.ProofC = proofC // A credential with nil attribute should be invalid attrsBackup := cred.GetAttrs() cred.Attrs = [][]byte{nil, nil, nil, nil, nil} - assert.Error(t, cred.Ver(sk, key.Ipk), "credential with nil attribute should be invalid") + require.Error(t, cred.Ver(sk, key.Ipk), "credential with nil attribute should be invalid") cred.Attrs = attrsBackup // Generate a revocation key pair revocationKey, err := GenerateLongTermRevocationKey() - assert.NoError(t, err) + require.NoError(t, err) // Create CRI that contains no revocation mechanism epoch := 0 cri, err := CreateCRI(revocationKey, []*FP256BN.BIG{}, epoch, ALG_NO_REVOCATION, rng) - assert.NoError(t, err) + require.NoError(t, err) err = VerifyEpochPK(&revocationKey.PublicKey, cri.EpochPk, cri.EpochPkSig, int(cri.Epoch), RevocationAlgorithm(cri.RevocationAlg)) - assert.NoError(t, err) + require.NoError(t, err) // make sure that epoch pk is not valid in future epoch err = VerifyEpochPK(&revocationKey.PublicKey, cri.EpochPk, cri.EpochPkSig, int(cri.Epoch)+1, RevocationAlgorithm(cri.RevocationAlg)) - assert.Error(t, err) + require.Error(t, err) // Test bad input _, err = CreateCRI(nil, []*FP256BN.BIG{}, epoch, ALG_NO_REVOCATION, rng) - assert.Error(t, err) + require.Error(t, err) _, err = CreateCRI(revocationKey, []*FP256BN.BIG{}, epoch, ALG_NO_REVOCATION, nil) - assert.Error(t, err) + require.Error(t, err) // Test signing no disclosure Nym, RandNym := MakeNym(sk, key.Ipk, rng) @@ -136,7 +136,7 @@ func TestIdemix(t *testing.T) { msg := []byte{1, 2, 3, 4, 5} rhindex := 4 sig, err := NewSignature(cred, sk, Nym, RandNym, key.Ipk, disclosure, msg, rhindex, cri, rng) - assert.NoError(t, err) + require.NoError(t, err) err = sig.Ver(disclosure, key.Ipk, msg, nil, 0, &revocationKey.PublicKey, epoch) if err != nil { @@ -147,14 +147,14 @@ func TestIdemix(t *testing.T) { // Test signing selective disclosure disclosure = []byte{0, 1, 1, 1, 0} sig, err = NewSignature(cred, sk, Nym, RandNym, key.Ipk, disclosure, msg, rhindex, cri, rng) - assert.NoError(t, err) + require.NoError(t, err) err = sig.Ver(disclosure, key.Ipk, msg, attrs, rhindex, &revocationKey.PublicKey, epoch) - assert.NoError(t, err) + require.NoError(t, err) // Test NymSignatures nymsig, err := NewNymSignature(sk, Nym, RandNym, key.Ipk, []byte("testing"), rng) - assert.NoError(t, err) + require.NoError(t, err) err = nymsig.Ver(Nym, key.Ipk, []byte("testing")) if err != nil { diff --git a/internal/ccmetadata/validators_test.go b/internal/ccmetadata/validators_test.go index 51ca4151b03..e17eb6389a8 100644 --- a/internal/ccmetadata/validators_test.go +++ b/internal/ccmetadata/validators_test.go @@ -12,7 +12,7 @@ import ( "path/filepath" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var packageTestDir = filepath.Join(os.TempDir(), "ccmetadata-validator-test") @@ -26,7 +26,7 @@ func TestGoodIndexJSON(t *testing.T) { fileBytes := []byte(`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}`) err := ValidateMetadataFile(fileName, fileBytes) - assert.NoError(t, err, "Error validating a good index") + require.NoError(t, err, "Error validating a good index") } func TestBadIndexJSON(t *testing.T) { @@ -39,11 +39,11 @@ func TestBadIndexJSON(t *testing.T) { err := ValidateMetadataFile(fileName, fileBytes) - assert.Error(t, err, "Should have received an InvalidIndexContentError") + require.Error(t, err, "Should have received an InvalidIndexContentError") // Type assertion on InvalidIndexContentError _, ok := err.(*InvalidIndexContentError) - assert.True(t, ok, "Should have received an InvalidIndexContentError") + require.True(t, ok, "Should have received an InvalidIndexContentError") t.Log("SAMPLE ERROR STRING:", err.Error()) } @@ -57,11 +57,11 @@ func TestIndexWrongLocation(t *testing.T) { fileBytes := []byte(`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}`) err := ValidateMetadataFile(fileName, fileBytes) - assert.Error(t, err, "Should have received an UnhandledDirectoryError") + require.Error(t, err, "Should have received an UnhandledDirectoryError") // Type assertion on UnhandledDirectoryError _, ok := err.(*UnhandledDirectoryError) - assert.True(t, ok, "Should have received an UnhandledDirectoryError") + require.True(t, ok, "Should have received an UnhandledDirectoryError") t.Log("SAMPLE ERROR STRING:", err.Error()) } @@ -75,11 +75,11 @@ func TestInvalidMetadataType(t *testing.T) { fileBytes := []byte(`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}`) err := ValidateMetadataFile(fileName, fileBytes) - assert.Error(t, err, "Should have received an UnhandledDirectoryError") + require.Error(t, err, "Should have received an UnhandledDirectoryError") // Type assertion on UnhandledDirectoryError _, ok := err.(*UnhandledDirectoryError) - assert.True(t, ok, "Should have received an UnhandledDirectoryError") + require.True(t, ok, "Should have received an UnhandledDirectoryError") } func TestBadMetadataExtension(t *testing.T) { @@ -91,7 +91,7 @@ func TestBadMetadataExtension(t *testing.T) { fileBytes := []byte(`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}`) err := ValidateMetadataFile(fileName, fileBytes) - assert.Error(t, err, "Should have received an error") + require.Error(t, err, "Should have received an error") } @@ -106,7 +106,7 @@ func TestBadFilePaths(t *testing.T) { err := ValidateMetadataFile(fileName, fileBytes) fmt.Println(err) - assert.Error(t, err, "Should have received an error for bad META-INF directory") + require.Error(t, err, "Should have received an error for bad META-INF directory") // Test bad path length fileName = "META-INF/statedb/test1.json" @@ -114,7 +114,7 @@ func TestBadFilePaths(t *testing.T) { err = ValidateMetadataFile(fileName, fileBytes) fmt.Println(err) - assert.Error(t, err, "Should have received an error for bad length") + require.Error(t, err, "Should have received an error for bad length") // Test invalid database name fileName = "META-INF/statedb/goleveldb/indexes/test1.json" @@ -122,7 +122,7 @@ func TestBadFilePaths(t *testing.T) { err = ValidateMetadataFile(fileName, fileBytes) fmt.Println(err) - assert.Error(t, err, "Should have received an error for invalid database") + require.Error(t, err, "Should have received an error for invalid database") // Test invalid indexes directory name fileName = "META-INF/statedb/couchdb/index/test1.json" @@ -130,7 +130,7 @@ func TestBadFilePaths(t *testing.T) { err = ValidateMetadataFile(fileName, fileBytes) fmt.Println(err) - assert.Error(t, err, "Should have received an error for invalid indexes directory") + require.Error(t, err, "Should have received an error for invalid indexes directory") // Test invalid collections directory name fileName = "META-INF/statedb/couchdb/collection/testcoll/indexes/test1.json" @@ -138,7 +138,7 @@ func TestBadFilePaths(t *testing.T) { err = ValidateMetadataFile(fileName, fileBytes) fmt.Println(err) - assert.Error(t, err, "Should have received an error for invalid collections directory") + require.Error(t, err, "Should have received an error for invalid collections directory") // Test valid collections name fileName = "META-INF/statedb/couchdb/collections/testcoll/indexes/test1.json" @@ -146,7 +146,7 @@ func TestBadFilePaths(t *testing.T) { err = ValidateMetadataFile(fileName, fileBytes) fmt.Println(err) - assert.NoError(t, err, "Error should not have been thrown for a valid collection name") + require.NoError(t, err, "Error should not have been thrown for a valid collection name") // Test invalid collections name fileName = "META-INF/statedb/couchdb/collections/#testcoll/indexes/test1.json" @@ -154,7 +154,7 @@ func TestBadFilePaths(t *testing.T) { err = ValidateMetadataFile(fileName, fileBytes) fmt.Println(err) - assert.Error(t, err, "Should have received an error for an invalid collection name") + require.Error(t, err, "Should have received an error for an invalid collection name") // Test invalid collections name fileName = "META-INF/statedb/couchdb/collections/testcoll/indexes/test1.txt" @@ -162,7 +162,7 @@ func TestBadFilePaths(t *testing.T) { err = ValidateMetadataFile(fileName, fileBytes) fmt.Println(err) - assert.Error(t, err, "Should have received an error for an invalid file name") + require.Error(t, err, "Should have received an error for an invalid file name") } @@ -172,19 +172,19 @@ func TestIndexValidation(t *testing.T) { indexDef := []byte(`{"index":{"fields":[{"size":"desc"}, {"color":"desc"}]},"ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition := isJSON(indexDef) err := validateIndexJSON(indexDefinition) - assert.NoError(t, err) + require.NoError(t, err) // Test valid index without field sorts indexDef = []byte(`{"index":{"fields":["size","color"]},"ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.NoError(t, err) + require.NoError(t, err) // Test valid index without design doc, name and type indexDef = []byte(`{"index":{"fields":["size","color"]}}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.NoError(t, err) + require.NoError(t, err) // Test valid index with partial filter selector (only tests that it will not return error if included) indexDef = []byte(`{ @@ -201,7 +201,7 @@ func TestIndexValidation(t *testing.T) { }`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.NoError(t, err) + require.NoError(t, err) } @@ -211,43 +211,43 @@ func TestIndexValidationInvalidParameters(t *testing.T) { indexDef := []byte(`{"index":{"fields":[{"size":"desc"}, {"color":"desc"}]},"ddoc":1, "name":"indexSizeSortName","type":"json"}`) _, indexDefinition := isJSON(indexDef) err := validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for numeric design doc") + require.Error(t, err, "Error should have been thrown for numeric design doc") // Test invalid design doc parameter indexDef = []byte(`{"index":{"fields":["size","color"]},"ddoc1":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for invalid design doc parameter") + require.Error(t, err, "Error should have been thrown for invalid design doc parameter") // Test invalid name parameter indexDef = []byte(`{"index":{"fields":["size","color"]},"ddoc":"indexSizeSortName", "name1":"indexSizeSortName","type":"json"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for invalid name parameter") + require.Error(t, err, "Error should have been thrown for invalid name parameter") // Test invalid type parameter, numeric indexDef = []byte(`{"index":{"fields":["size","color"]},"ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":1}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for numeric type parameter") + require.Error(t, err, "Error should have been thrown for numeric type parameter") // Test invalid type parameter indexDef = []byte(`{"index":{"fields":["size","color"]},"ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":"text"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for invalid type parameter") + require.Error(t, err, "Error should have been thrown for invalid type parameter") // Test invalid index parameter indexDef = []byte(`{"index1":{"fields":["size","color"]},"ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for invalid index parameter") + require.Error(t, err, "Error should have been thrown for invalid index parameter") // Test missing index parameter indexDef = []byte(`{"ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for missing index parameter") + require.Error(t, err, "Error should have been thrown for missing index parameter") } @@ -257,37 +257,37 @@ func TestIndexValidationInvalidFields(t *testing.T) { indexDef := []byte(`{"index":{"fields1":[{"size":"desc"}, {"color":"desc"}]},"ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition := isJSON(indexDef) err := validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for invalid fields parameter") + require.Error(t, err, "Error should have been thrown for invalid fields parameter") // Test invalid field name (numeric) indexDef = []byte(`{"index":{"fields":["size", 1]},"ddoc1":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for field name defined as numeric") + require.Error(t, err, "Error should have been thrown for field name defined as numeric") // Test invalid field sort indexDef = []byte(`{"index":{"fields":[{"size":"desc1"}, {"color":"desc"}]},"ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for invalid field sort") + require.Error(t, err, "Error should have been thrown for invalid field sort") // Test numeric in sort indexDef = []byte(`{"index":{"fields":[{"size":1}, {"color":"desc"}]},"ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for a numeric in field sort") + require.Error(t, err, "Error should have been thrown for a numeric in field sort") // Test invalid json for fields indexDef = []byte(`{"index":{"fields":"size"},"ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for invalid field json") + require.Error(t, err, "Error should have been thrown for invalid field json") // Test missing JSON for fields indexDef = []byte(`{"index":"fields","ddoc":"indexSizeSortName", "name":"indexSizeSortName","type":"json"}`) _, indexDefinition = isJSON(indexDef) err = validateIndexJSON(indexDefinition) - assert.Error(t, err, "Error should have been thrown for missing JSON for fields") + require.Error(t, err, "Error should have been thrown for missing JSON for fields") } diff --git a/internal/configtxgen/genesisconfig/config_test.go b/internal/configtxgen/genesisconfig/config_test.go index f942e1b5347..be63ac5472b 100644 --- a/internal/configtxgen/genesisconfig/config_test.go +++ b/internal/configtxgen/genesisconfig/config_test.go @@ -13,7 +13,7 @@ import ( "github.com/hyperledger/fabric-protos-go/orderer/etcdraft" "github.com/hyperledger/fabric/common/viperutil" "github.com/hyperledger/fabric/core/config/configtest" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestLoadProfile(t *testing.T) { @@ -30,7 +30,7 @@ func TestLoadProfile(t *testing.T) { for _, pName := range pNames { t.Run(pName, func(t *testing.T) { p := Load(pName) - assert.NotNil(t, p, "profile should not be nil") + require.NotNil(t, p, "profile should not be nil") }) } } @@ -48,7 +48,7 @@ func TestLoadProfileWithPath(t *testing.T) { for _, pName := range pNames { t.Run(pName, func(t *testing.T) { p := Load(pName, devConfigDir) - assert.NotNil(t, p, "profile should not be nil") + require.NotNil(t, p, "profile should not be nil") }) } } @@ -58,22 +58,22 @@ func TestLoadTopLevel(t *testing.T) { defer cleanup() topLevel := LoadTopLevel() - assert.NotNil(t, topLevel.Application, "application should not be nil") - assert.NotNil(t, topLevel.Capabilities, "capabilities should not be nil") - assert.NotNil(t, topLevel.Orderer, "orderer should not be nil") - assert.NotNil(t, topLevel.Organizations, "organizations should not be nil") - assert.NotNil(t, topLevel.Profiles, "profiles should not be nil") + require.NotNil(t, topLevel.Application, "application should not be nil") + require.NotNil(t, topLevel.Capabilities, "capabilities should not be nil") + require.NotNil(t, topLevel.Orderer, "orderer should not be nil") + require.NotNil(t, topLevel.Organizations, "organizations should not be nil") + require.NotNil(t, topLevel.Profiles, "profiles should not be nil") } func TestLoadTopLevelWithPath(t *testing.T) { devConfigDir := configtest.GetDevConfigDir() topLevel := LoadTopLevel(devConfigDir) - assert.NotNil(t, topLevel.Application, "application should not be nil") - assert.NotNil(t, topLevel.Capabilities, "capabilities should not be nil") - assert.NotNil(t, topLevel.Orderer, "orderer should not be nil") - assert.NotNil(t, topLevel.Organizations, "organizations should not be nil") - assert.NotNil(t, topLevel.Profiles, "profiles should not be nil") + require.NotNil(t, topLevel.Application, "application should not be nil") + require.NotNil(t, topLevel.Capabilities, "capabilities should not be nil") + require.NotNil(t, topLevel.Orderer, "orderer should not be nil") + require.NotNil(t, topLevel.Organizations, "organizations should not be nil") + require.NotNil(t, topLevel.Profiles, "profiles should not be nil") } func TestConsensusSpecificInit(t *testing.T) { @@ -90,7 +90,7 @@ func TestConsensusSpecificInit(t *testing.T) { } profile.completeInitialization(devConfigDir) - assert.Equal(t, profile.Orderer.OrdererType, genesisDefaults.Orderer.OrdererType) + require.Equal(t, profile.Orderer.OrdererType, genesisDefaults.Orderer.OrdererType) }) t.Run("unknown orderer type", func(t *testing.T) { @@ -100,7 +100,7 @@ func TestConsensusSpecificInit(t *testing.T) { }, } - assert.Panics(t, func() { + require.Panics(t, func() { profile.completeInitialization(devConfigDir) }) }) @@ -112,7 +112,7 @@ func TestConsensusSpecificInit(t *testing.T) { }, } profile.completeInitialization(devConfigDir) - assert.Nil(t, profile.Orderer.Kafka.Brokers, "Kafka config settings should not be set") + require.Nil(t, profile.Orderer.Kafka.Brokers, "Kafka config settings should not be set") }) t.Run("kafka", func(t *testing.T) { @@ -122,7 +122,7 @@ func TestConsensusSpecificInit(t *testing.T) { }, } profile.completeInitialization(devConfigDir) - assert.NotNil(t, profile.Orderer.Kafka.Brokers, "Kafka config settings should be set") + require.NotNil(t, profile.Orderer.Kafka.Brokers, "Kafka config settings should be set") }) t.Run("raft", func(t *testing.T) { @@ -144,7 +144,7 @@ func TestConsensusSpecificInit(t *testing.T) { }, } - assert.Panics(t, func() { + require.Panics(t, func() { profile.completeInitialization(devConfigDir) }) }) @@ -152,7 +152,7 @@ func TestConsensusSpecificInit(t *testing.T) { t.Run("nil consenter set", func(t *testing.T) { // should panic profile := makeProfile(nil, nil) - assert.Panics(t, func() { + require.Panics(t, func() { profile.completeInitialization(devConfigDir) }) }) @@ -194,7 +194,7 @@ func TestConsensusSpecificInit(t *testing.T) { for _, consenter := range failingConsenterSpecifications { profile := makeProfile([]*etcdraft.Consenter{consenter}, nil) - assert.Panics(t, func() { + require.Panics(t, func() { profile.completeInitialization(devConfigDir) }) } @@ -205,12 +205,12 @@ func TestConsensusSpecificInit(t *testing.T) { profile.completeInitialization(devConfigDir) // need not be tested in subsequent tests - assert.NotNil(t, profile.Orderer.EtcdRaft, "EtcdRaft config settings should be set") - assert.Equal(t, profile.Orderer.EtcdRaft.Consenters[0].ClientTlsCert, consenters[0].ClientTlsCert, + require.NotNil(t, profile.Orderer.EtcdRaft, "EtcdRaft config settings should be set") + require.Equal(t, profile.Orderer.EtcdRaft.Consenters[0].ClientTlsCert, consenters[0].ClientTlsCert, "Client TLS cert path should be correctly set") // specific assertion for this test context - assert.Equal(t, profile.Orderer.EtcdRaft.Options, genesisDefaults.Orderer.EtcdRaft.Options, + require.Equal(t, profile.Orderer.EtcdRaft.Options, genesisDefaults.Orderer.EtcdRaft.Options, "Options should be set to the default value") }) @@ -223,9 +223,9 @@ func TestConsensusSpecificInit(t *testing.T) { profile.completeInitialization(devConfigDir) // specific assertions for this test context - assert.Equal(t, profile.Orderer.EtcdRaft.Options.HeartbeatTick, heartbeatTick, + require.Equal(t, profile.Orderer.EtcdRaft.Options.HeartbeatTick, heartbeatTick, "HeartbeatTick should be set to the specified value") - assert.Equal(t, profile.Orderer.EtcdRaft.Options.ElectionTick, genesisDefaults.Orderer.EtcdRaft.Options.ElectionTick, + require.Equal(t, profile.Orderer.EtcdRaft.Options.ElectionTick, genesisDefaults.Orderer.EtcdRaft.Options.ElectionTick, "ElectionTick should be set to the default value") }) @@ -238,9 +238,9 @@ func TestConsensusSpecificInit(t *testing.T) { profile.completeInitialization(devConfigDir) // specific assertions for this test context - assert.Equal(t, profile.Orderer.EtcdRaft.Options.ElectionTick, electionTick, + require.Equal(t, profile.Orderer.EtcdRaft.Options.ElectionTick, electionTick, "ElectionTick should be set to the specified value") - assert.Equal(t, profile.Orderer.EtcdRaft.Options.HeartbeatTick, genesisDefaults.Orderer.EtcdRaft.Options.HeartbeatTick, + require.Equal(t, profile.Orderer.EtcdRaft.Options.HeartbeatTick, genesisDefaults.Orderer.EtcdRaft.Options.HeartbeatTick, "HeartbeatTick should be set to the default value") }) @@ -251,7 +251,7 @@ func TestConsensusSpecificInit(t *testing.T) { } profile := makeProfile(consenters, options) - assert.Panics(t, func() { + require.Panics(t, func() { profile.completeInitialization(devConfigDir) }) }) @@ -262,7 +262,7 @@ func TestConsensusSpecificInit(t *testing.T) { } profile := makeProfile(consenters, options) - assert.Panics(t, func() { + require.Panics(t, func() { profile.completeInitialization(devConfigDir) }) }) @@ -279,7 +279,7 @@ func TestLoadConfigCache(t *testing.T) { cfg.AddConfigPaths(devConfigDir) cfg.SetConfigName("configtx") err := cfg.ReadInConfig() - assert.NoError(t, err) + require.NoError(t, err) configPath := cfg.ConfigFileUsed() c := &configCache{ @@ -289,16 +289,16 @@ func TestLoadConfigCache(t *testing.T) { // Load the initial config, update the environment, and load again. // With the caching behavior, the update should not be reflected. initial, err := c.load(cfg, configPath) - assert.NoError(t, err) + require.NoError(t, err) os.Setenv("ORDERER_KAFKA_RETRY_SHORTINTERVAL", "120s") updated, err := c.load(cfg, configPath) - assert.NoError(t, err) - assert.Equal(t, initial, updated, "expected %#v to equal %#v", updated, initial) + require.NoError(t, err) + require.Equal(t, initial, updated, "expected %#v to equal %#v", updated, initial) // Change the configuration we got back and load again. // The new value should not contain the updated to the initial initial.Orderer.OrdererType = "bad-Orderer-Type" updated, err = c.load(cfg, configPath) - assert.NoError(t, err) - assert.NotEqual(t, initial, updated, "expected %#v to not equal %#v", updated, initial) + require.NoError(t, err) + require.NotEqual(t, initial, updated, "expected %#v to not equal %#v", updated, initial) } diff --git a/internal/configtxgen/metadata/metadata_test.go b/internal/configtxgen/metadata/metadata_test.go index 340e91855e6..55477fd5b15 100644 --- a/internal/configtxgen/metadata/metadata_test.go +++ b/internal/configtxgen/metadata/metadata_test.go @@ -12,7 +12,7 @@ import ( "testing" "github.com/hyperledger/fabric/internal/configtxgen/metadata" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetVersionInfo(t *testing.T) { @@ -24,6 +24,6 @@ func TestGetVersionInfo(t *testing.T) { expected := fmt.Sprintf("%s:\n Version: %s\n Commit SHA: %s\n Go version: %s\n OS/Arch: %s", metadata.ProgramName, metadata.Version, sha, runtime.Version(), fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH)) - assert.Equal(t, expected, metadata.GetVersionInfo()) + require.Equal(t, expected, metadata.GetVersionInfo()) } } diff --git a/internal/configtxlator/metadata/metadata_test.go b/internal/configtxlator/metadata/metadata_test.go index ca513277aed..8de544ee917 100644 --- a/internal/configtxlator/metadata/metadata_test.go +++ b/internal/configtxlator/metadata/metadata_test.go @@ -12,7 +12,7 @@ import ( "testing" "github.com/hyperledger/fabric/internal/configtxlator/metadata" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetVersionInfo(t *testing.T) { @@ -22,5 +22,5 @@ func TestGetVersionInfo(t *testing.T) { expected := fmt.Sprintf("%s:\n Version: %s\n Commit SHA: %s\n Go version: %s\n OS/Arch: %s", metadata.ProgramName, metadata.Version, testSHA, runtime.Version(), fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH)) - assert.Equal(t, expected, metadata.GetVersionInfo()) + require.Equal(t, expected, metadata.GetVersionInfo()) } diff --git a/internal/configtxlator/rest/configtxlator_handlers_test.go b/internal/configtxlator/rest/configtxlator_handlers_test.go index d661975858a..94bc041c62c 100644 --- a/internal/configtxlator/rest/configtxlator_handlers_test.go +++ b/internal/configtxlator/rest/configtxlator_handlers_test.go @@ -15,7 +15,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestProtolatorComputeConfigUpdate(t *testing.T) { @@ -35,27 +35,27 @@ func TestProtolatorComputeConfigUpdate(t *testing.T) { mpw := multipart.NewWriter(buffer) ffw, err := mpw.CreateFormFile("original", "foo") - assert.NoError(t, err) + require.NoError(t, err) _, err = bytes.NewReader(originalConfig).WriteTo(ffw) - assert.NoError(t, err) + require.NoError(t, err) ffw, err = mpw.CreateFormFile("updated", "bar") - assert.NoError(t, err) + require.NoError(t, err) _, err = bytes.NewReader(updatedConfig).WriteTo(ffw) - assert.NoError(t, err) + require.NoError(t, err) err = mpw.Close() - assert.NoError(t, err) + require.NoError(t, err) req, err := http.NewRequest("POST", "/configtxlator/compute/update-from-configs", buffer) - assert.NoError(t, err) + require.NoError(t, err) req.Header.Set("Content-Type", mpw.FormDataContentType()) rec := httptest.NewRecorder() r := NewRouter() r.ServeHTTP(rec, req) - assert.Equal(t, http.StatusOK, rec.Code, rec.Body.String()) + require.Equal(t, http.StatusOK, rec.Code, rec.Body.String()) } func TestProtolatorMissingOriginal(t *testing.T) { @@ -69,22 +69,22 @@ func TestProtolatorMissingOriginal(t *testing.T) { mpw := multipart.NewWriter(buffer) ffw, err := mpw.CreateFormFile("updated", "bar") - assert.NoError(t, err) + require.NoError(t, err) _, err = bytes.NewReader(updatedConfig).WriteTo(ffw) - assert.NoError(t, err) + require.NoError(t, err) err = mpw.Close() - assert.NoError(t, err) + require.NoError(t, err) req, err := http.NewRequest("POST", "/configtxlator/compute/update-from-configs", buffer) - assert.NoError(t, err) + require.NoError(t, err) req.Header.Set("Content-Type", mpw.FormDataContentType()) rec := httptest.NewRecorder() r := NewRouter() r.ServeHTTP(rec, req) - assert.Equal(t, http.StatusBadRequest, rec.Code) + require.Equal(t, http.StatusBadRequest, rec.Code) } func TestProtolatorMissingUpdated(t *testing.T) { @@ -98,22 +98,22 @@ func TestProtolatorMissingUpdated(t *testing.T) { mpw := multipart.NewWriter(buffer) ffw, err := mpw.CreateFormFile("original", "bar") - assert.NoError(t, err) + require.NoError(t, err) _, err = bytes.NewReader(originalConfig).WriteTo(ffw) - assert.NoError(t, err) + require.NoError(t, err) err = mpw.Close() - assert.NoError(t, err) + require.NoError(t, err) req, err := http.NewRequest("POST", "/configtxlator/compute/update-from-configs", buffer) - assert.NoError(t, err) + require.NoError(t, err) req.Header.Set("Content-Type", mpw.FormDataContentType()) rec := httptest.NewRecorder() r := NewRouter() r.ServeHTTP(rec, req) - assert.Equal(t, http.StatusBadRequest, rec.Code) + require.Equal(t, http.StatusBadRequest, rec.Code) } func TestProtolatorCorruptProtos(t *testing.T) { @@ -124,25 +124,25 @@ func TestProtolatorCorruptProtos(t *testing.T) { mpw := multipart.NewWriter(buffer) ffw, err := mpw.CreateFormFile("original", "bar") - assert.NoError(t, err) + require.NoError(t, err) _, err = bytes.NewReader(originalConfig).WriteTo(ffw) - assert.NoError(t, err) + require.NoError(t, err) ffw, err = mpw.CreateFormFile("updated", "bar") - assert.NoError(t, err) + require.NoError(t, err) _, err = bytes.NewReader(updatedConfig).WriteTo(ffw) - assert.NoError(t, err) + require.NoError(t, err) err = mpw.Close() - assert.NoError(t, err) + require.NoError(t, err) req, err := http.NewRequest("POST", "/configtxlator/compute/update-from-configs", buffer) - assert.NoError(t, err) + require.NoError(t, err) req.Header.Set("Content-Type", mpw.FormDataContentType()) rec := httptest.NewRecorder() r := NewRouter() r.ServeHTTP(rec, req) - assert.Equal(t, http.StatusBadRequest, rec.Code) + require.Equal(t, http.StatusBadRequest, rec.Code) } diff --git a/internal/configtxlator/rest/protolator_handlers_test.go b/internal/configtxlator/rest/protolator_handlers_test.go index 4b894ea8699..918947ca80e 100644 --- a/internal/configtxlator/rest/protolator_handlers_test.go +++ b/internal/configtxlator/rest/protolator_handlers_test.go @@ -17,7 +17,7 @@ import ( "github.com/golang/protobuf/proto" cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var ( @@ -46,7 +46,7 @@ var ( func TestProtolatorDecode(t *testing.T) { data, err := proto.Marshal(testProto) - assert.NoError(t, err) + require.NoError(t, err) url := fmt.Sprintf("/protolator/decode/%s", proto.MessageName(testProto)) @@ -55,12 +55,12 @@ func TestProtolatorDecode(t *testing.T) { r := NewRouter() r.ServeHTTP(rec, req) - assert.Equal(t, http.StatusOK, rec.Code) + require.Equal(t, http.StatusOK, rec.Code) // Remove all the whitespace compactJSON := strings.Replace(strings.Replace(strings.Replace(rec.Body.String(), "\n", "", -1), "\t", "", -1), " ", "", -1) - assert.Equal(t, testOutput, compactJSON) + require.Equal(t, testOutput, compactJSON) } func TestProtolatorEncode(t *testing.T) { @@ -72,13 +72,13 @@ func TestProtolatorEncode(t *testing.T) { r := NewRouter() r.ServeHTTP(rec, req) - assert.Equal(t, http.StatusOK, rec.Code) + require.Equal(t, http.StatusOK, rec.Code) outputMsg := &cb.Block{} err := proto.Unmarshal(rec.Body.Bytes(), outputMsg) - assert.NoError(t, err) - assert.True(t, proto.Equal(testProto, outputMsg)) + require.NoError(t, err) + require.True(t, proto.Equal(testProto, outputMsg)) } func TestProtolatorDecodeNonExistantProto(t *testing.T) { @@ -87,7 +87,7 @@ func TestProtolatorDecodeNonExistantProto(t *testing.T) { r := NewRouter() r.ServeHTTP(rec, req) - assert.Equal(t, http.StatusNotFound, rec.Code) + require.Equal(t, http.StatusNotFound, rec.Code) } func TestProtolatorEncodeNonExistantProto(t *testing.T) { @@ -96,7 +96,7 @@ func TestProtolatorEncodeNonExistantProto(t *testing.T) { r := NewRouter() r.ServeHTTP(rec, req) - assert.Equal(t, http.StatusNotFound, rec.Code) + require.Equal(t, http.StatusNotFound, rec.Code) } func TestProtolatorDecodeBadData(t *testing.T) { @@ -108,7 +108,7 @@ func TestProtolatorDecodeBadData(t *testing.T) { r := NewRouter() r.ServeHTTP(rec, req) - assert.Equal(t, http.StatusBadRequest, rec.Code) + require.Equal(t, http.StatusBadRequest, rec.Code) } func TestProtolatorEncodeBadData(t *testing.T) { @@ -120,5 +120,5 @@ func TestProtolatorEncodeBadData(t *testing.T) { r := NewRouter() r.ServeHTTP(rec, req) - assert.Equal(t, http.StatusBadRequest, rec.Code) + require.Equal(t, http.StatusBadRequest, rec.Code) } diff --git a/internal/configtxlator/update/update_test.go b/internal/configtxlator/update/update_test.go index 953cef9120b..00ddc641898 100644 --- a/internal/configtxlator/update/update_test.go +++ b/internal/configtxlator/update/update_test.go @@ -10,7 +10,7 @@ import ( "testing" cb "github.com/hyperledger/fabric-protos-go/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNoUpdate(t *testing.T) { @@ -25,7 +25,7 @@ func TestNoUpdate(t *testing.T) { ChannelGroup: updated, }) - assert.Error(t, err) + require.Error(t, err) } func TestMissingGroup(t *testing.T) { @@ -33,14 +33,14 @@ func TestMissingGroup(t *testing.T) { t.Run("MissingOriginal", func(t *testing.T) { _, err := Compute(&cb.Config{}, &cb.Config{ChannelGroup: group}) - assert.Error(t, err) - assert.Regexp(t, "no channel group included for original config", err.Error()) + require.Error(t, err) + require.Regexp(t, "no channel group included for original config", err.Error()) }) t.Run("MissingOriginal", func(t *testing.T) { _, err := Compute(&cb.Config{ChannelGroup: group}, &cb.Config{}) - assert.Error(t, err) - assert.Regexp(t, "no channel group included for updated config", err.Error()) + require.Error(t, err) + require.Regexp(t, "no channel group included for updated config", err.Error()) }) } @@ -59,7 +59,7 @@ func TestGroupModPolicyUpdate(t *testing.T) { ChannelGroup: updated, }) - assert.NoError(t, err) + require.NoError(t, err) expectedReadSet := &cb.ConfigGroup{ Version: original.Version, @@ -68,7 +68,7 @@ func TestGroupModPolicyUpdate(t *testing.T) { Values: map[string]*cb.ConfigValue{}, } - assert.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") + require.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") expectedWriteSet := &cb.ConfigGroup{ Version: original.Version + 1, @@ -78,7 +78,7 @@ func TestGroupModPolicyUpdate(t *testing.T) { ModPolicy: updated.ModPolicy, } - assert.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") + require.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") } func TestGroupPolicyModification(t *testing.T) { @@ -119,7 +119,7 @@ func TestGroupPolicyModification(t *testing.T) { ChannelGroup: updated, }) - assert.NoError(t, err) + require.NoError(t, err) expectedReadSet := &cb.ConfigGroup{ Version: original.Version, @@ -128,7 +128,7 @@ func TestGroupPolicyModification(t *testing.T) { Groups: map[string]*cb.ConfigGroup{}, } - assert.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") + require.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") expectedWriteSet := &cb.ConfigGroup{ Version: original.Version, @@ -144,7 +144,7 @@ func TestGroupPolicyModification(t *testing.T) { Groups: map[string]*cb.ConfigGroup{}, } - assert.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") + require.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") } func TestGroupValueModification(t *testing.T) { @@ -179,7 +179,7 @@ func TestGroupValueModification(t *testing.T) { ChannelGroup: updated, }) - assert.NoError(t, err) + require.NoError(t, err) expectedReadSet := &cb.ConfigGroup{ Version: original.Version, @@ -188,7 +188,7 @@ func TestGroupValueModification(t *testing.T) { Groups: map[string]*cb.ConfigGroup{}, } - assert.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") + require.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") expectedWriteSet := &cb.ConfigGroup{ Version: original.Version, @@ -202,7 +202,7 @@ func TestGroupValueModification(t *testing.T) { Groups: map[string]*cb.ConfigGroup{}, } - assert.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") + require.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") } func TestGroupGroupsModification(t *testing.T) { @@ -233,7 +233,7 @@ func TestGroupGroupsModification(t *testing.T) { ChannelGroup: updated, }) - assert.NoError(t, err) + require.NoError(t, err) expectedReadSet := &cb.ConfigGroup{ Version: original.Version, @@ -249,7 +249,7 @@ func TestGroupGroupsModification(t *testing.T) { Values: map[string]*cb.ConfigValue{}, } - assert.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") + require.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") expectedWriteSet := &cb.ConfigGroup{ Version: original.Version, @@ -265,7 +265,7 @@ func TestGroupGroupsModification(t *testing.T) { Values: map[string]*cb.ConfigValue{}, } - assert.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") + require.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") } func TestGroupValueAddition(t *testing.T) { @@ -297,7 +297,7 @@ func TestGroupValueAddition(t *testing.T) { ChannelGroup: updated, }) - assert.NoError(t, err) + require.NoError(t, err) expectedReadSet := &cb.ConfigGroup{ Version: original.Version, @@ -310,7 +310,7 @@ func TestGroupValueAddition(t *testing.T) { Groups: map[string]*cb.ConfigGroup{}, } - assert.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") + require.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") expectedWriteSet := &cb.ConfigGroup{ Version: original.Version + 1, @@ -327,7 +327,7 @@ func TestGroupValueAddition(t *testing.T) { Groups: map[string]*cb.ConfigGroup{}, } - assert.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") + require.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") } func TestGroupPolicySwap(t *testing.T) { @@ -362,7 +362,7 @@ func TestGroupPolicySwap(t *testing.T) { ChannelGroup: updated, }) - assert.NoError(t, err) + require.NoError(t, err) expectedReadSet := &cb.ConfigGroup{ Version: original.Version, @@ -371,7 +371,7 @@ func TestGroupPolicySwap(t *testing.T) { Groups: map[string]*cb.ConfigGroup{}, } - assert.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") + require.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") expectedWriteSet := &cb.ConfigGroup{ Version: original.Version + 1, @@ -387,7 +387,7 @@ func TestGroupPolicySwap(t *testing.T) { Groups: map[string]*cb.ConfigGroup{}, } - assert.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") + require.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") } func TestComplex(t *testing.T) { @@ -448,7 +448,7 @@ func TestComplex(t *testing.T) { ChannelGroup: updated, }) - assert.NoError(t, err) + require.NoError(t, err) expectedReadSet := &cb.ConfigGroup{ Version: original.Version, @@ -465,7 +465,7 @@ func TestComplex(t *testing.T) { }, } - assert.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") + require.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") expectedWriteSet := &cb.ConfigGroup{ Version: original.Version + 1, @@ -496,7 +496,7 @@ func TestComplex(t *testing.T) { Values: map[string]*cb.ConfigValue{}, } - assert.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") + require.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") } func TestTwiceNestedModification(t *testing.T) { @@ -539,7 +539,7 @@ func TestTwiceNestedModification(t *testing.T) { ChannelGroup: updated, }) - assert.NoError(t, err) + require.NoError(t, err) expectedReadSet := &cb.ConfigGroup{ Version: original.Version, @@ -560,7 +560,7 @@ func TestTwiceNestedModification(t *testing.T) { Values: map[string]*cb.ConfigValue{}, } - assert.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") + require.Equal(t, expectedReadSet, cu.ReadSet, "Mismatched read set") expectedWriteSet := &cb.ConfigGroup{ Version: original.Version, @@ -586,5 +586,5 @@ func TestTwiceNestedModification(t *testing.T) { Values: map[string]*cb.ConfigValue{}, } - assert.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") + require.Equal(t, expectedWriteSet, cu.WriteSet, "Mismatched write set") } diff --git a/internal/cryptogen/ca/ca_test.go b/internal/cryptogen/ca/ca_test.go index 65e56cd7ec0..b5e4e2cb1b2 100644 --- a/internal/cryptogen/ca/ca_test.go +++ b/internal/cryptogen/ca/ca_test.go @@ -16,7 +16,6 @@ import ( "github.com/hyperledger/fabric/internal/cryptogen/ca" "github.com/hyperledger/fabric/internal/cryptogen/csp" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -49,7 +48,7 @@ func TestLoadCertificateECDSA(t *testing.T) { t.Fatalf("Failed to create certs directory: %s", err) } priv, err := csp.GeneratePrivateKey(certDir) - assert.NoError(t, err, "Failed to generate signed certificate") + require.NoError(t, err, "Failed to generate signed certificate") // create our CA caDir := filepath.Join(testDir, "ca") @@ -64,7 +63,7 @@ func TestLoadCertificateECDSA(t *testing.T) { testStreetAddress, testPostalCode, ) - assert.NoError(t, err, "Error generating CA") + require.NoError(t, err, "Error generating CA") cert, err := rootCA.SignCertificate( certDir, @@ -75,17 +74,17 @@ func TestLoadCertificateECDSA(t *testing.T) { x509.KeyUsageDigitalSignature|x509.KeyUsageKeyEncipherment, []x509.ExtKeyUsage{x509.ExtKeyUsageAny}, ) - assert.NoError(t, err, "Failed to generate signed certificate") + require.NoError(t, err, "Failed to generate signed certificate") // KeyUsage should be x509.KeyUsageDigitalSignature | x509.KeyUsageKeyEncipherment - assert.Equal(t, x509.KeyUsageDigitalSignature|x509.KeyUsageKeyEncipherment, + require.Equal(t, x509.KeyUsageDigitalSignature|x509.KeyUsageKeyEncipherment, cert.KeyUsage) - assert.Contains(t, cert.ExtKeyUsage, x509.ExtKeyUsageAny) + require.Contains(t, cert.ExtKeyUsage, x509.ExtKeyUsageAny) loadedCert, err := ca.LoadCertificateECDSA(certDir) - assert.NoError(t, err) - assert.NotNil(t, loadedCert, "Should load cert") - assert.Equal(t, cert.SerialNumber, loadedCert.SerialNumber, "Should have same serial number") - assert.Equal(t, cert.Subject.CommonName, loadedCert.Subject.CommonName, "Should have same CN") + require.NoError(t, err) + require.NotNil(t, loadedCert, "Should load cert") + require.Equal(t, cert.SerialNumber, loadedCert.SerialNumber, "Should have same serial number") + require.Equal(t, cert.Subject.CommonName, loadedCert.Subject.CommonName, "Should have same CN") } func TestLoadCertificateECDSA_wrongEncoding(t *testing.T) { @@ -98,8 +97,8 @@ func TestLoadCertificateECDSA_wrongEncoding(t *testing.T) { require.NoErrorf(t, err, "failed to create file %s", filename) _, err = ca.LoadCertificateECDSA(testDir) - assert.NotNil(t, err) - assert.EqualError(t, err, filename+": wrong PEM encoding") + require.NotNil(t, err) + require.EqualError(t, err, filename+": wrong PEM encoding") } func TestLoadCertificateECDSA_empty_DER_cert(t *testing.T) { @@ -113,9 +112,9 @@ func TestLoadCertificateECDSA_empty_DER_cert(t *testing.T) { require.NoErrorf(t, err, "failed to create file %s", filename) cert, err := ca.LoadCertificateECDSA(testDir) - assert.Nil(t, cert) - assert.NotNil(t, err) - assert.EqualError(t, err, filename+": wrong DER encoding") + require.Nil(t, cert) + require.NotNil(t, err) + require.EqualError(t, err, filename+": wrong DER encoding") } func TestNewCA(t *testing.T) { @@ -137,30 +136,30 @@ func TestNewCA(t *testing.T) { testStreetAddress, testPostalCode, ) - assert.NoError(t, err, "Error generating CA") - assert.NotNil(t, rootCA, "Failed to return CA") - assert.NotNil(t, rootCA.Signer, + require.NoError(t, err, "Error generating CA") + require.NotNil(t, rootCA, "Failed to return CA") + require.NotNil(t, rootCA.Signer, "rootCA.Signer should not be empty") - assert.IsType(t, &x509.Certificate{}, rootCA.SignCert, + require.IsType(t, &x509.Certificate{}, rootCA.SignCert, "rootCA.SignCert should be type x509.Certificate") // check to make sure the root public key was stored pemFile := filepath.Join(caDir, testCAName+"-cert.pem") - assert.Equal(t, true, checkForFile(pemFile), + require.Equal(t, true, checkForFile(pemFile), "Expected to find file "+pemFile) - assert.NotEmpty(t, rootCA.SignCert.Subject.Country, "country cannot be empty.") - assert.Equal(t, testCountry, rootCA.SignCert.Subject.Country[0], "Failed to match country") - assert.NotEmpty(t, rootCA.SignCert.Subject.Province, "province cannot be empty.") - assert.Equal(t, testProvince, rootCA.SignCert.Subject.Province[0], "Failed to match province") - assert.NotEmpty(t, rootCA.SignCert.Subject.Locality, "locality cannot be empty.") - assert.Equal(t, testLocality, rootCA.SignCert.Subject.Locality[0], "Failed to match locality") - assert.NotEmpty(t, rootCA.SignCert.Subject.OrganizationalUnit, "organizationalUnit cannot be empty.") - assert.Equal(t, testOrganizationalUnit, rootCA.SignCert.Subject.OrganizationalUnit[0], "Failed to match organizationalUnit") - assert.NotEmpty(t, rootCA.SignCert.Subject.StreetAddress, "streetAddress cannot be empty.") - assert.Equal(t, testStreetAddress, rootCA.SignCert.Subject.StreetAddress[0], "Failed to match streetAddress") - assert.NotEmpty(t, rootCA.SignCert.Subject.PostalCode, "postalCode cannot be empty.") - assert.Equal(t, testPostalCode, rootCA.SignCert.Subject.PostalCode[0], "Failed to match postalCode") + require.NotEmpty(t, rootCA.SignCert.Subject.Country, "country cannot be empty.") + require.Equal(t, testCountry, rootCA.SignCert.Subject.Country[0], "Failed to match country") + require.NotEmpty(t, rootCA.SignCert.Subject.Province, "province cannot be empty.") + require.Equal(t, testProvince, rootCA.SignCert.Subject.Province[0], "Failed to match province") + require.NotEmpty(t, rootCA.SignCert.Subject.Locality, "locality cannot be empty.") + require.Equal(t, testLocality, rootCA.SignCert.Subject.Locality[0], "Failed to match locality") + require.NotEmpty(t, rootCA.SignCert.Subject.OrganizationalUnit, "organizationalUnit cannot be empty.") + require.Equal(t, testOrganizationalUnit, rootCA.SignCert.Subject.OrganizationalUnit[0], "Failed to match organizationalUnit") + require.NotEmpty(t, rootCA.SignCert.Subject.StreetAddress, "streetAddress cannot be empty.") + require.Equal(t, testStreetAddress, rootCA.SignCert.Subject.StreetAddress[0], "Failed to match streetAddress") + require.NotEmpty(t, rootCA.SignCert.Subject.PostalCode, "postalCode cannot be empty.") + require.Equal(t, testPostalCode, rootCA.SignCert.Subject.PostalCode[0], "Failed to match postalCode") } func TestGenerateSignCertificate(t *testing.T) { @@ -176,7 +175,7 @@ func TestGenerateSignCertificate(t *testing.T) { t.Fatalf("Failed to create certs directory: %s", err) } priv, err := csp.GeneratePrivateKey(certDir) - assert.NoError(t, err, "Failed to generate signed certificate") + require.NoError(t, err, "Failed to generate signed certificate") // create our CA caDir := filepath.Join(testDir, "ca") @@ -191,7 +190,7 @@ func TestGenerateSignCertificate(t *testing.T) { testStreetAddress, testPostalCode, ) - assert.NoError(t, err, "Error generating CA") + require.NoError(t, err, "Error generating CA") cert, err := rootCA.SignCertificate( certDir, @@ -202,11 +201,11 @@ func TestGenerateSignCertificate(t *testing.T) { x509.KeyUsageDigitalSignature|x509.KeyUsageKeyEncipherment, []x509.ExtKeyUsage{x509.ExtKeyUsageAny}, ) - assert.NoError(t, err, "Failed to generate signed certificate") + require.NoError(t, err, "Failed to generate signed certificate") // KeyUsage should be x509.KeyUsageDigitalSignature | x509.KeyUsageKeyEncipherment - assert.Equal(t, x509.KeyUsageDigitalSignature|x509.KeyUsageKeyEncipherment, + require.Equal(t, x509.KeyUsageDigitalSignature|x509.KeyUsageKeyEncipherment, cert.KeyUsage) - assert.Contains(t, cert.ExtKeyUsage, x509.ExtKeyUsageAny) + require.Contains(t, cert.ExtKeyUsage, x509.ExtKeyUsageAny) cert, err = rootCA.SignCertificate( certDir, @@ -217,33 +216,33 @@ func TestGenerateSignCertificate(t *testing.T) { x509.KeyUsageDigitalSignature, []x509.ExtKeyUsage{}, ) - assert.NoError(t, err, "Failed to generate signed certificate") - assert.Equal(t, 0, len(cert.ExtKeyUsage)) + require.NoError(t, err, "Failed to generate signed certificate") + require.Equal(t, 0, len(cert.ExtKeyUsage)) // make sure ous are correctly set ous := []string{"TestOU", "PeerOU"} cert, err = rootCA.SignCertificate(certDir, testName, ous, nil, &priv.PublicKey, x509.KeyUsageDigitalSignature, []x509.ExtKeyUsage{}) - assert.NoError(t, err) - assert.Contains(t, cert.Subject.OrganizationalUnit, ous[0]) - assert.Contains(t, cert.Subject.OrganizationalUnit, ous[1]) + require.NoError(t, err) + require.Contains(t, cert.Subject.OrganizationalUnit, ous[0]) + require.Contains(t, cert.Subject.OrganizationalUnit, ous[1]) // make sure sans are correctly set sans := []string{testName2, testIP} cert, err = rootCA.SignCertificate(certDir, testName, nil, sans, &priv.PublicKey, x509.KeyUsageDigitalSignature, []x509.ExtKeyUsage{}) - assert.NoError(t, err) - assert.Contains(t, cert.DNSNames, testName2) - assert.Contains(t, cert.IPAddresses, net.ParseIP(testIP).To4()) + require.NoError(t, err) + require.Contains(t, cert.DNSNames, testName2) + require.Contains(t, cert.IPAddresses, net.ParseIP(testIP).To4()) // check to make sure the signed public key was stored pemFile := filepath.Join(certDir, testName+"-cert.pem") - assert.Equal(t, true, checkForFile(pemFile), + require.Equal(t, true, checkForFile(pemFile), "Expected to find file "+pemFile) _, err = rootCA.SignCertificate(certDir, "empty/CA", nil, nil, &priv.PublicKey, x509.KeyUsageKeyEncipherment, []x509.ExtKeyUsage{x509.ExtKeyUsageAny}) - assert.Error(t, err, "Bad name should fail") + require.Error(t, err, "Bad name should fail") // use an empty CA to test error path badCA := &ca.CA{ @@ -252,7 +251,7 @@ func TestGenerateSignCertificate(t *testing.T) { } _, err = badCA.SignCertificate(certDir, testName, nil, nil, &ecdsa.PublicKey{}, x509.KeyUsageKeyEncipherment, []x509.ExtKeyUsage{x509.ExtKeyUsageAny}) - assert.Error(t, err, "Empty CA should not be able to sign") + require.Error(t, err, "Empty CA should not be able to sign") } diff --git a/internal/cryptogen/csp/csp_internal_test.go b/internal/cryptogen/csp/csp_internal_test.go index a81f428398b..bea30c14df2 100644 --- a/internal/cryptogen/csp/csp_internal_test.go +++ b/internal/cryptogen/csp/csp_internal_test.go @@ -11,7 +11,7 @@ import ( "math/big" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestToLowS(t *testing.T) { @@ -68,7 +68,7 @@ func TestToLowS(t *testing.T) { key := ecdsa.PublicKey{ Curve: curve, } - assert.Equal(t, test.expectedSig, toLowS(key, test.sig)) + require.Equal(t, test.expectedSig, toLowS(key, test.sig)) }) } } diff --git a/internal/cryptogen/csp/csp_test.go b/internal/cryptogen/csp/csp_test.go index 814344d4f4e..850ceb60a2c 100644 --- a/internal/cryptogen/csp/csp_test.go +++ b/internal/cryptogen/csp/csp_test.go @@ -21,7 +21,7 @@ import ( "testing" "github.com/hyperledger/fabric/internal/cryptogen/csp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestLoadPrivateKey(t *testing.T) { @@ -35,12 +35,12 @@ func TestLoadPrivateKey(t *testing.T) { t.Fatalf("Failed to generate private key: %s", err) } pkFile := filepath.Join(testDir, "priv_sk") - assert.Equal(t, true, checkForFile(pkFile), + require.Equal(t, true, checkForFile(pkFile), "Expected to find private key file") loadedPriv, err := csp.LoadPrivateKey(testDir) - assert.NoError(t, err, "Failed to load private key") - assert.NotNil(t, loadedPriv, "Should have returned an *ecdsa.PrivateKey") - assert.Equal(t, priv, loadedPriv, "Expected private keys to match") + require.NoError(t, err, "Failed to load private key") + require.NotNil(t, loadedPriv, "Should have returned an *ecdsa.PrivateKey") + require.Equal(t, priv, loadedPriv, "Expected private keys to match") } func TestLoadPrivateKey_BadPEM(t *testing.T) { @@ -100,7 +100,7 @@ func TestLoadPrivateKey_BadPEM(t *testing.T) { t.Fatalf("failed to write to wrong encoding file: %s", err) } _, err = csp.LoadPrivateKey(badPEMFile) - assert.Contains(t, err.Error(), test.errMsg) + require.Contains(t, err.Error(), test.errMsg) os.Remove(badPEMFile) }) } @@ -115,13 +115,13 @@ func TestGeneratePrivateKey(t *testing.T) { expectedFile := filepath.Join(testDir, "priv_sk") priv, err := csp.GeneratePrivateKey(testDir) - assert.NoError(t, err, "Failed to generate private key") - assert.NotNil(t, priv, "Should have returned an *ecdsa.Key") - assert.Equal(t, true, checkForFile(expectedFile), + require.NoError(t, err, "Failed to generate private key") + require.NotNil(t, priv, "Should have returned an *ecdsa.Key") + require.Equal(t, true, checkForFile(expectedFile), "Expected to find private key file") _, err = csp.GeneratePrivateKey("notExist") - assert.Contains(t, err.Error(), "no such file or directory") + require.Contains(t, err.Error(), "no such file or directory") } func TestECDSASigner(t *testing.T) { @@ -133,7 +133,7 @@ func TestECDSASigner(t *testing.T) { signer := csp.ECDSASigner{ PrivateKey: priv, } - assert.Equal(t, priv.Public(), signer.Public().(*ecdsa.PublicKey)) + require.Equal(t, priv.Public(), signer.Public().(*ecdsa.PublicKey)) digest := []byte{1} sig, err := signer.Sign(rand.Reader, digest, nil) if err != nil { @@ -155,7 +155,7 @@ func TestECDSASigner(t *testing.T) { // ensure signature is valid by using standard verify function ok := ecdsa.Verify(&priv.PublicKey, digest, ecdsaSig.R, ecdsaSig.S) - assert.True(t, ok, "Expected valid signature") + require.True(t, ok, "Expected valid signature") } func checkForFile(file string) bool { diff --git a/internal/cryptogen/metadata/metadata_test.go b/internal/cryptogen/metadata/metadata_test.go index af049c3a482..7360b4efe0d 100644 --- a/internal/cryptogen/metadata/metadata_test.go +++ b/internal/cryptogen/metadata/metadata_test.go @@ -12,7 +12,7 @@ import ( "testing" "github.com/hyperledger/fabric/internal/cryptogen/metadata" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetVersionInfo(t *testing.T) { @@ -24,7 +24,7 @@ func TestGetVersionInfo(t *testing.T) { runtime.Version(), fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), ) - assert.Equal(t, expected, metadata.GetVersionInfo()) + require.Equal(t, expected, metadata.GetVersionInfo()) testSHA := "abcdefg" metadata.CommitSHA = testSHA @@ -36,5 +36,5 @@ func TestGetVersionInfo(t *testing.T) { runtime.Version(), fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), ) - assert.Equal(t, expected, metadata.GetVersionInfo()) + require.Equal(t, expected, metadata.GetVersionInfo()) } diff --git a/internal/cryptogen/msp/msp_test.go b/internal/cryptogen/msp/msp_test.go index e20d6c7ec27..c3206995380 100644 --- a/internal/cryptogen/msp/msp_test.go +++ b/internal/cryptogen/msp/msp_test.go @@ -14,7 +14,7 @@ import ( "github.com/hyperledger/fabric/internal/cryptogen/ca" "github.com/hyperledger/fabric/internal/cryptogen/msp" fabricmsp "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "gopkg.in/yaml.v2" ) @@ -36,7 +36,7 @@ func testGenerateLocalMSP(t *testing.T, nodeOUs bool) { cleanup(testDir) err := msp.GenerateLocalMSP(testDir, testName, nil, &ca.CA{}, &ca.CA{}, msp.PEER, nodeOUs) - assert.Error(t, err, "Empty CA should have failed") + require.Error(t, err, "Empty CA should have failed") caDir := filepath.Join(testDir, "ca") tlsCADir := filepath.Join(testDir, "tlsca") @@ -45,27 +45,27 @@ func testGenerateLocalMSP(t *testing.T, nodeOUs bool) { // generate signing CA signCA, err := ca.NewCA(caDir, testCAOrg, testCAName, testCountry, testProvince, testLocality, testOrganizationalUnit, testStreetAddress, testPostalCode) - assert.NoError(t, err, "Error generating CA") + require.NoError(t, err, "Error generating CA") // generate TLS CA tlsCA, err := ca.NewCA(tlsCADir, testCAOrg, testCAName, testCountry, testProvince, testLocality, testOrganizationalUnit, testStreetAddress, testPostalCode) - assert.NoError(t, err, "Error generating CA") - - assert.NotEmpty(t, signCA.SignCert.Subject.Country, "country cannot be empty.") - assert.Equal(t, testCountry, signCA.SignCert.Subject.Country[0], "Failed to match country") - assert.NotEmpty(t, signCA.SignCert.Subject.Province, "province cannot be empty.") - assert.Equal(t, testProvince, signCA.SignCert.Subject.Province[0], "Failed to match province") - assert.NotEmpty(t, signCA.SignCert.Subject.Locality, "locality cannot be empty.") - assert.Equal(t, testLocality, signCA.SignCert.Subject.Locality[0], "Failed to match locality") - assert.NotEmpty(t, signCA.SignCert.Subject.OrganizationalUnit, "organizationalUnit cannot be empty.") - assert.Equal(t, testOrganizationalUnit, signCA.SignCert.Subject.OrganizationalUnit[0], "Failed to match organizationalUnit") - assert.NotEmpty(t, signCA.SignCert.Subject.StreetAddress, "streetAddress cannot be empty.") - assert.Equal(t, testStreetAddress, signCA.SignCert.Subject.StreetAddress[0], "Failed to match streetAddress") - assert.NotEmpty(t, signCA.SignCert.Subject.PostalCode, "postalCode cannot be empty.") - assert.Equal(t, testPostalCode, signCA.SignCert.Subject.PostalCode[0], "Failed to match postalCode") + require.NoError(t, err, "Error generating CA") + + require.NotEmpty(t, signCA.SignCert.Subject.Country, "country cannot be empty.") + require.Equal(t, testCountry, signCA.SignCert.Subject.Country[0], "Failed to match country") + require.NotEmpty(t, signCA.SignCert.Subject.Province, "province cannot be empty.") + require.Equal(t, testProvince, signCA.SignCert.Subject.Province[0], "Failed to match province") + require.NotEmpty(t, signCA.SignCert.Subject.Locality, "locality cannot be empty.") + require.Equal(t, testLocality, signCA.SignCert.Subject.Locality[0], "Failed to match locality") + require.NotEmpty(t, signCA.SignCert.Subject.OrganizationalUnit, "organizationalUnit cannot be empty.") + require.Equal(t, testOrganizationalUnit, signCA.SignCert.Subject.OrganizationalUnit[0], "Failed to match organizationalUnit") + require.NotEmpty(t, signCA.SignCert.Subject.StreetAddress, "streetAddress cannot be empty.") + require.Equal(t, testStreetAddress, signCA.SignCert.Subject.StreetAddress[0], "Failed to match streetAddress") + require.NotEmpty(t, signCA.SignCert.Subject.PostalCode, "postalCode cannot be empty.") + require.Equal(t, testPostalCode, signCA.SignCert.Subject.PostalCode[0], "Failed to match postalCode") // generate local MSP for nodeType=PEER err = msp.GenerateLocalMSP(testDir, testName, nil, signCA, tlsCA, msp.PEER, nodeOUs) - assert.NoError(t, err, "Failed to generate local MSP") + require.NoError(t, err, "Failed to generate local MSP") // check to see that the right files were generated/saved mspFiles := []string{ @@ -87,34 +87,34 @@ func testGenerateLocalMSP(t *testing.T, nodeOUs bool) { } for _, file := range mspFiles { - assert.Equal(t, true, checkForFile(file), + require.Equal(t, true, checkForFile(file), "Expected to find file "+file) } for _, file := range tlsFiles { - assert.Equal(t, true, checkForFile(file), + require.Equal(t, true, checkForFile(file), "Expected to find file "+file) } // generate local MSP for nodeType=CLIENT err = msp.GenerateLocalMSP(testDir, testName, nil, signCA, tlsCA, msp.CLIENT, nodeOUs) - assert.NoError(t, err, "Failed to generate local MSP") + require.NoError(t, err, "Failed to generate local MSP") // check all for _, file := range mspFiles { - assert.Equal(t, true, checkForFile(file), + require.Equal(t, true, checkForFile(file), "Expected to find file "+file) } for _, file := range tlsFiles { - assert.Equal(t, true, checkForFile(file), + require.Equal(t, true, checkForFile(file), "Expected to find file "+file) } tlsCA.Name = "test/fail" err = msp.GenerateLocalMSP(testDir, testName, nil, signCA, tlsCA, msp.CLIENT, nodeOUs) - assert.Error(t, err, "Should have failed with CA name 'test/fail'") + require.Error(t, err, "Should have failed with CA name 'test/fail'") signCA.Name = "test/fail" err = msp.GenerateLocalMSP(testDir, testName, nil, signCA, tlsCA, msp.ORDERER, nodeOUs) - assert.Error(t, err, "Should have failed with CA name 'test/fail'") + require.Error(t, err, "Should have failed with CA name 'test/fail'") t.Log(err) cleanup(testDir) } @@ -133,13 +133,13 @@ func testGenerateVerifyingMSP(t *testing.T, nodeOUs bool) { mspDir := filepath.Join(testDir, "msp") // generate signing CA signCA, err := ca.NewCA(caDir, testCAOrg, testCAName, testCountry, testProvince, testLocality, testOrganizationalUnit, testStreetAddress, testPostalCode) - assert.NoError(t, err, "Error generating CA") + require.NoError(t, err, "Error generating CA") // generate TLS CA tlsCA, err := ca.NewCA(tlsCADir, testCAOrg, testCAName, testCountry, testProvince, testLocality, testOrganizationalUnit, testStreetAddress, testPostalCode) - assert.NoError(t, err, "Error generating CA") + require.NoError(t, err, "Error generating CA") err = msp.GenerateVerifyingMSP(mspDir, signCA, tlsCA, nodeOUs) - assert.NoError(t, err, "Failed to generate verifying MSP") + require.NoError(t, err, "Failed to generate verifying MSP") // check to see that the right files were generated/saved files := []string{ @@ -154,16 +154,16 @@ func testGenerateVerifyingMSP(t *testing.T, nodeOUs bool) { } for _, file := range files { - assert.Equal(t, true, checkForFile(file), + require.Equal(t, true, checkForFile(file), "Expected to find file "+file) } tlsCA.Name = "test/fail" err = msp.GenerateVerifyingMSP(mspDir, signCA, tlsCA, nodeOUs) - assert.Error(t, err, "Should have failed with CA name 'test/fail'") + require.Error(t, err, "Should have failed with CA name 'test/fail'") signCA.Name = "test/fail" err = msp.GenerateVerifyingMSP(mspDir, signCA, tlsCA, nodeOUs) - assert.Error(t, err, "Should have failed with CA name 'test/fail'") + require.Error(t, err, "Should have failed with CA name 'test/fail'") t.Log(err) cleanup(testDir) @@ -188,7 +188,7 @@ func TestExportConfig(t *testing.T) { } err = msp.ExportConfig(path, caFile, true) - assert.NoError(t, err) + require.NoError(t, err) configBytes, err := ioutil.ReadFile(configFile) if err != nil { @@ -200,15 +200,15 @@ func TestExportConfig(t *testing.T) { if err != nil { t.Fatalf("failed to unmarshal config: [%s]", err) } - assert.True(t, config.NodeOUs.Enable) - assert.Equal(t, caFile, config.NodeOUs.ClientOUIdentifier.Certificate) - assert.Equal(t, msp.CLIENTOU, config.NodeOUs.ClientOUIdentifier.OrganizationalUnitIdentifier) - assert.Equal(t, caFile, config.NodeOUs.PeerOUIdentifier.Certificate) - assert.Equal(t, msp.PEEROU, config.NodeOUs.PeerOUIdentifier.OrganizationalUnitIdentifier) - assert.Equal(t, caFile, config.NodeOUs.AdminOUIdentifier.Certificate) - assert.Equal(t, msp.ADMINOU, config.NodeOUs.AdminOUIdentifier.OrganizationalUnitIdentifier) - assert.Equal(t, caFile, config.NodeOUs.OrdererOUIdentifier.Certificate) - assert.Equal(t, msp.ORDEREROU, config.NodeOUs.OrdererOUIdentifier.OrganizationalUnitIdentifier) + require.True(t, config.NodeOUs.Enable) + require.Equal(t, caFile, config.NodeOUs.ClientOUIdentifier.Certificate) + require.Equal(t, msp.CLIENTOU, config.NodeOUs.ClientOUIdentifier.OrganizationalUnitIdentifier) + require.Equal(t, caFile, config.NodeOUs.PeerOUIdentifier.Certificate) + require.Equal(t, msp.PEEROU, config.NodeOUs.PeerOUIdentifier.OrganizationalUnitIdentifier) + require.Equal(t, caFile, config.NodeOUs.AdminOUIdentifier.Certificate) + require.Equal(t, msp.ADMINOU, config.NodeOUs.AdminOUIdentifier.OrganizationalUnitIdentifier) + require.Equal(t, caFile, config.NodeOUs.OrdererOUIdentifier.Certificate) + require.Equal(t, msp.ORDEREROU, config.NodeOUs.OrdererOUIdentifier.OrganizationalUnitIdentifier) } func cleanup(dir string) { diff --git a/internal/peer/chaincode/common_test.go b/internal/peer/chaincode/common_test.go index 26e6d8c8721..5de2dd9d43c 100644 --- a/internal/peer/chaincode/common_test.go +++ b/internal/peer/chaincode/common_test.go @@ -33,7 +33,6 @@ import ( . "github.com/onsi/gomega" "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -156,7 +155,7 @@ func TestCheckInvalidJSON(t *testing.T) { func TestGetOrdererEndpointFromConfigTx(t *testing.T) { signer, err := common.GetDefaultSigner() - assert.NoError(t, err) + require.NoError(t, err) mockchain := "mockchain" factory.InitFactories(nil) @@ -171,16 +170,16 @@ func TestGetOrdererEndpointFromConfigTx(t *testing.T) { mockEndorserClient := common.GetMockEndorserClient(mockResponse, nil) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) ordererEndpoints, err := common.GetOrdererEndpointOfChain(mockchain, signer, mockEndorserClient, cryptoProvider) - assert.NoError(t, err, "GetOrdererEndpointOfChain from genesis block") + require.NoError(t, err, "GetOrdererEndpointOfChain from genesis block") - assert.Equal(t, len(ordererEndpoints), 0) + require.Equal(t, len(ordererEndpoints), 0) } func TestGetOrdererEndpointFail(t *testing.T) { signer, err := common.GetDefaultSigner() - assert.NoError(t, err) + require.NoError(t, err) mockchain := "mockchain" factory.InitFactories(nil) @@ -192,9 +191,9 @@ func TestGetOrdererEndpointFail(t *testing.T) { mockEndorserClient := common.GetMockEndorserClient(mockResponse, nil) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, err = common.GetOrdererEndpointOfChain(mockchain, signer, mockEndorserClient, cryptoProvider) - assert.Error(t, err, "GetOrdererEndpointOfChain from invalid response") + require.Error(t, err, "GetOrdererEndpointOfChain from invalid response") } const sampleCollectionConfigGood = `[ @@ -291,64 +290,64 @@ const sampleCollectionConfigBadSignaturePolicyAndChannelConfigPolicy = `[ func TestCollectionParsing(t *testing.T) { ccp, ccpBytes, err := getCollectionConfigFromBytes([]byte(sampleCollectionConfigGood)) - assert.NoError(t, err) - assert.NotNil(t, ccp) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccp) + require.NotNil(t, ccpBytes) conf := ccp.Config[0].GetStaticCollectionConfig() pol, _ := policydsl.FromString("OR('A.member', 'B.member')") - assert.Equal(t, 3, int(conf.RequiredPeerCount)) - assert.Equal(t, 483279847, int(conf.MaximumPeerCount)) - assert.Equal(t, "foo", conf.Name) - assert.True(t, proto.Equal(pol, conf.MemberOrgsPolicy.GetSignaturePolicy())) - assert.Equal(t, 10, int(conf.BlockToLive)) - assert.Equal(t, true, conf.MemberOnlyRead) - assert.Nil(t, conf.EndorsementPolicy) + require.Equal(t, 3, int(conf.RequiredPeerCount)) + require.Equal(t, 483279847, int(conf.MaximumPeerCount)) + require.Equal(t, "foo", conf.Name) + require.True(t, proto.Equal(pol, conf.MemberOrgsPolicy.GetSignaturePolicy())) + require.Equal(t, 10, int(conf.BlockToLive)) + require.Equal(t, true, conf.MemberOnlyRead) + require.Nil(t, conf.EndorsementPolicy) t.Logf("conf=%s", conf) // Test default values for RequiredPeerCount and MaxPeerCount ccp, ccpBytes, err = getCollectionConfigFromBytes([]byte(sampleCollectionConfigGoodNoMaxPeerCountOrRequiredPeerCount)) - assert.NoError(t, err) - assert.NotNil(t, ccp) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccp) + require.NotNil(t, ccpBytes) conf = ccp.Config[0].GetStaticCollectionConfig() pol, _ = policydsl.FromString("OR('A.member', 'B.member')") - assert.Equal(t, 0, int(conf.RequiredPeerCount)) - assert.Equal(t, 1, int(conf.MaximumPeerCount)) - assert.Equal(t, "foo", conf.Name) - assert.True(t, proto.Equal(pol, conf.MemberOrgsPolicy.GetSignaturePolicy())) - assert.Equal(t, 10, int(conf.BlockToLive)) - assert.Equal(t, true, conf.MemberOnlyRead) - assert.Nil(t, conf.EndorsementPolicy) + require.Equal(t, 0, int(conf.RequiredPeerCount)) + require.Equal(t, 1, int(conf.MaximumPeerCount)) + require.Equal(t, "foo", conf.Name) + require.True(t, proto.Equal(pol, conf.MemberOrgsPolicy.GetSignaturePolicy())) + require.Equal(t, 10, int(conf.BlockToLive)) + require.Equal(t, true, conf.MemberOnlyRead) + require.Nil(t, conf.EndorsementPolicy) t.Logf("conf=%s", conf) ccp, ccpBytes, err = getCollectionConfigFromBytes([]byte(sampleCollectionConfigGoodWithSignaturePolicy)) - assert.NoError(t, err) - assert.NotNil(t, ccp) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccp) + require.NotNil(t, ccpBytes) conf = ccp.Config[0].GetStaticCollectionConfig() pol, _ = policydsl.FromString("OR('A.member', 'B.member')") - assert.Equal(t, 3, int(conf.RequiredPeerCount)) - assert.Equal(t, 483279847, int(conf.MaximumPeerCount)) - assert.Equal(t, "foo", conf.Name) - assert.True(t, proto.Equal(pol, conf.MemberOrgsPolicy.GetSignaturePolicy())) - assert.Equal(t, 10, int(conf.BlockToLive)) - assert.Equal(t, true, conf.MemberOnlyRead) - assert.True(t, proto.Equal(pol, conf.EndorsementPolicy.GetSignaturePolicy())) + require.Equal(t, 3, int(conf.RequiredPeerCount)) + require.Equal(t, 483279847, int(conf.MaximumPeerCount)) + require.Equal(t, "foo", conf.Name) + require.True(t, proto.Equal(pol, conf.MemberOrgsPolicy.GetSignaturePolicy())) + require.Equal(t, 10, int(conf.BlockToLive)) + require.Equal(t, true, conf.MemberOnlyRead) + require.True(t, proto.Equal(pol, conf.EndorsementPolicy.GetSignaturePolicy())) t.Logf("conf=%s", conf) ccp, ccpBytes, err = getCollectionConfigFromBytes([]byte(sampleCollectionConfigGoodWithChannelConfigPolicy)) - assert.NoError(t, err) - assert.NotNil(t, ccp) - assert.NotNil(t, ccpBytes) + require.NoError(t, err) + require.NotNil(t, ccp) + require.NotNil(t, ccpBytes) conf = ccp.Config[0].GetStaticCollectionConfig() pol, _ = policydsl.FromString("OR('A.member', 'B.member')") - assert.Equal(t, 3, int(conf.RequiredPeerCount)) - assert.Equal(t, 483279847, int(conf.MaximumPeerCount)) - assert.Equal(t, "foo", conf.Name) - assert.True(t, proto.Equal(pol, conf.MemberOrgsPolicy.GetSignaturePolicy())) - assert.Equal(t, 10, int(conf.BlockToLive)) - assert.Equal(t, true, conf.MemberOnlyRead) - assert.Equal(t, "/Channel/Application/Endorsement", conf.EndorsementPolicy.GetChannelConfigPolicyReference()) + require.Equal(t, 3, int(conf.RequiredPeerCount)) + require.Equal(t, 483279847, int(conf.MaximumPeerCount)) + require.Equal(t, "foo", conf.Name) + require.True(t, proto.Equal(pol, conf.MemberOrgsPolicy.GetSignaturePolicy())) + require.Equal(t, 10, int(conf.BlockToLive)) + require.Equal(t, true, conf.MemberOnlyRead) + require.Equal(t, "/Channel/Application/Endorsement", conf.EndorsementPolicy.GetChannelConfigPolicyReference()) t.Logf("conf=%s", conf) failureTests := []struct { @@ -381,9 +380,9 @@ func TestCollectionParsing(t *testing.T) { for _, test := range failureTests { t.Run(test.name, func(t *testing.T) { ccp, ccpBytes, err = getCollectionConfigFromBytes([]byte(test.collectionConfig)) - assert.EqualError(t, err, test.expectedErr) - assert.Nil(t, ccp) - assert.Nil(t, ccpBytes) + require.EqualError(t, err, test.expectedErr) + require.Nil(t, ccp) + require.Nil(t, ccpBytes) }) } } @@ -391,7 +390,7 @@ func TestCollectionParsing(t *testing.T) { func TestValidatePeerConnectionParams(t *testing.T) { defer resetFlags() defer viper.Reset() - assert := assert.New(t) + require := require.New(t) cleanup := configtest.SetDevFabricConfigPath(t) defer cleanup() @@ -403,16 +402,16 @@ func TestValidatePeerConnectionParams(t *testing.T) { peerAddresses = []string{"peer0", "peer1"} tlsRootCertFiles = []string{"cert0", "cert1"} err := validatePeerConnectionParameters("query") - assert.Error(err) - assert.Contains(err.Error(), "command can only be executed against one peer") + require.Error(err) + require.Contains(err.Error(), "command can only be executed against one peer") // success - peer provided and no TLS root certs // TLS disabled resetFlags() peerAddresses = []string{"peer0"} err = validatePeerConnectionParameters("query") - assert.NoError(err) - assert.Nil(tlsRootCertFiles) + require.NoError(err) + require.Nil(tlsRootCertFiles) // success - more TLS root certs than peers // TLS disabled @@ -420,16 +419,16 @@ func TestValidatePeerConnectionParams(t *testing.T) { peerAddresses = []string{"peer0"} tlsRootCertFiles = []string{"cert0", "cert1"} err = validatePeerConnectionParameters("invoke") - assert.NoError(err) - assert.Nil(tlsRootCertFiles) + require.NoError(err) + require.Nil(tlsRootCertFiles) // success - multiple peers and no TLS root certs - invoke // TLS disabled resetFlags() peerAddresses = []string{"peer0", "peer1"} err = validatePeerConnectionParameters("invoke") - assert.NoError(err) - assert.Nil(tlsRootCertFiles) + require.NoError(err) + require.Nil(tlsRootCertFiles) // TLS enabled viper.Set("peer.tls.enabled", true) @@ -440,8 +439,8 @@ func TestValidatePeerConnectionParams(t *testing.T) { peerAddresses = []string{"peer0", "peer1"} tlsRootCertFiles = []string{"cert0"} err = validatePeerConnectionParameters("invoke") - assert.Error(err) - assert.Contains(err.Error(), fmt.Sprintf("number of peer addresses (%d) does not match the number of TLS root cert files (%d)", len(peerAddresses), len(tlsRootCertFiles))) + require.Error(err) + require.Contains(err.Error(), fmt.Sprintf("number of peer addresses (%d) does not match the number of TLS root cert files (%d)", len(peerAddresses), len(tlsRootCertFiles))) // success - more than one peer and TLS root certs - invoke // TLS enabled @@ -449,14 +448,14 @@ func TestValidatePeerConnectionParams(t *testing.T) { peerAddresses = []string{"peer0", "peer1"} tlsRootCertFiles = []string{"cert0", "cert1"} err = validatePeerConnectionParameters("invoke") - assert.NoError(err) + require.NoError(err) // failure - connection profile doesn't exist resetFlags() connectionProfile = "blah" err = validatePeerConnectionParameters("invoke") - assert.Error(err) - assert.Contains(err.Error(), "error reading connection profile") + require.Error(err) + require.Contains(err.Error(), "error reading connection profile") // failure - connection profile has peer defined in channel config but // not in peer config @@ -464,49 +463,49 @@ func TestValidatePeerConnectionParams(t *testing.T) { channelID = "mychannel" connectionProfile = "testdata/connectionprofile-uneven.yaml" err = validatePeerConnectionParameters("invoke") - assert.Error(err) - assert.Contains(err.Error(), "defined in the channel config but doesn't have associated peer config") + require.Error(err) + require.Contains(err.Error(), "defined in the channel config but doesn't have associated peer config") // success - connection profile exists resetFlags() channelID = "mychannel" connectionProfile = "testdata/connectionprofile.yaml" err = validatePeerConnectionParameters("invoke") - assert.NoError(err) + require.NoError(err) } func TestInitCmdFactoryFailures(t *testing.T) { defer resetFlags() - assert := assert.New(t) + require := require.New(t) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.Nil(err) + require.Nil(err) // failure validating peer connection parameters resetFlags() peerAddresses = []string{"peer0", "peer1"} tlsRootCertFiles = []string{"cert0", "cert1"} cf, err := InitCmdFactory("query", true, false, cryptoProvider) - assert.Error(err) - assert.Contains(err.Error(), "error validating peer connection parameters: 'query' command can only be executed against one peer") - assert.Nil(cf) + require.Error(err) + require.Contains(err.Error(), "error validating peer connection parameters: 'query' command can only be executed against one peer") + require.Nil(cf) // failure - no peers supplied and endorser client is needed resetFlags() peerAddresses = []string{} cf, err = InitCmdFactory("query", true, false, cryptoProvider) - assert.Error(err) - assert.Contains(err.Error(), "no endorser clients retrieved") - assert.Nil(cf) + require.Error(err) + require.Contains(err.Error(), "no endorser clients retrieved") + require.Nil(cf) // failure - orderer client is needed, ordering endpoint is empty and no // endorser client supplied resetFlags() peerAddresses = nil cf, err = InitCmdFactory("invoke", false, true, cryptoProvider) - assert.Error(err) - assert.Contains(err.Error(), "no ordering endpoint or endorser client supplied") - assert.Nil(cf) + require.Error(err) + require.Contains(err.Error(), "no ordering endpoint or endorser client supplied") + require.Nil(cf) } func TestDeliverGroupConnect(t *testing.T) { @@ -715,7 +714,7 @@ func TestChaincodeInvokeOrQuery_waitForEvent(t *testing.T) { waitForEvent = true mockCF, err := getMockChaincodeCmdFactory() - assert.NoError(t, err) + require.NoError(t, err) peerAddresses = []string{"peer0", "peer1"} channelID := "testchannel" txID := "txid0" @@ -732,7 +731,7 @@ func TestChaincodeInvokeOrQuery_waitForEvent(t *testing.T) { mockCF.DeliverClients, mockCF.BroadcastClient, ) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("success - one deliver client first receives block without txid and then one with txid", func(t *testing.T) { @@ -755,7 +754,7 @@ func TestChaincodeInvokeOrQuery_waitForEvent(t *testing.T) { mockDeliverClients, mockCF.BroadcastClient, ) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("failure - one of the deliver clients returns error", func(t *testing.T) { @@ -774,8 +773,8 @@ func TestChaincodeInvokeOrQuery_waitForEvent(t *testing.T) { mockDeliverClients, mockCF.BroadcastClient, ) - assert.Error(t, err) - assert.Contains(t, err.Error(), "moist") + require.Error(t, err) + require.Contains(t, err.Error(), "moist") }) t.Run("failure - transaction committed with non-success validation code", func(t *testing.T) { @@ -794,8 +793,8 @@ func TestChaincodeInvokeOrQuery_waitForEvent(t *testing.T) { mockDeliverClients, mockCF.BroadcastClient, ) - assert.Error(t, err) - assert.Equal(t, err.Error(), "transaction invalidated with status (ENDORSEMENT_POLICY_FAILURE)") + require.Error(t, err) + require.Equal(t, err.Error(), "transaction invalidated with status (ENDORSEMENT_POLICY_FAILURE)") }) t.Run("failure - deliver returns response status instead of block", func(t *testing.T) { @@ -820,8 +819,8 @@ func TestChaincodeInvokeOrQuery_waitForEvent(t *testing.T) { mockDeliverClients, mockCF.BroadcastClient, ) - assert.Error(t, err) - assert.Equal(t, err.Error(), "deliver completed with status (FORBIDDEN) before txid received") + require.Error(t, err) + require.Equal(t, err.Error(), "deliver completed with status (FORBIDDEN) before txid received") }) t.Run(" failure - timeout occurs - both deliver clients don't return an event with the expected txid before timeout", func(t *testing.T) { @@ -841,8 +840,8 @@ func TestChaincodeInvokeOrQuery_waitForEvent(t *testing.T) { mockDeliverClients, mockCF.BroadcastClient, ) - assert.Error(t, err) - assert.Contains(t, err.Error(), "timed out") + require.Error(t, err) + require.Contains(t, err.Error(), "timed out") close(delayChan) }) } @@ -861,30 +860,30 @@ func TestProcessProposals(t *testing.T) { signedProposal := &pb.SignedProposal{} t.Run("should process a proposal for a single peer", func(t *testing.T) { responses, err := processProposals([]pb.EndorserClient{mockClients[0]}, signedProposal) - assert.NoError(t, err) - assert.Len(t, responses, 1) - assert.Equal(t, responses[0].Response.Status, int32(200)) + require.NoError(t, err) + require.Len(t, responses, 1) + require.Equal(t, responses[0].Response.Status, int32(200)) }) t.Run("should process a proposal for multiple peers", func(t *testing.T) { responses, err := processProposals(mockClients, signedProposal) - assert.NoError(t, err) - assert.Len(t, responses, 4) + require.NoError(t, err) + require.Len(t, responses, 4) // Sort the statuses (as they may turn up in different order) before comparing. statuses := []int32{} for _, response := range responses { statuses = append(statuses, response.Response.Status) } sort.Slice(statuses, func(i, j int) bool { return statuses[i] < statuses[j] }) - assert.EqualValues(t, []int32{200, 300, 400, 500}, statuses) + require.EqualValues(t, []int32{200, 300, 400, 500}, statuses) }) t.Run("should return an error from processing a proposal for a single peer", func(t *testing.T) { responses, err := processProposals([]pb.EndorserClient{mockErrorClient}, signedProposal) - assert.EqualError(t, err, "failed to call endorser") - assert.Nil(t, responses) + require.EqualError(t, err, "failed to call endorser") + require.Nil(t, responses) }) t.Run("should return an error from processing a proposal for a single peer within multiple peers", func(t *testing.T) { responses, err := processProposals([]pb.EndorserClient{mockClients[0], mockErrorClient, mockClients[1]}, signedProposal) - assert.EqualError(t, err, "failed to call endorser") - assert.Nil(t, responses) + require.EqualError(t, err, "failed to call endorser") + require.Nil(t, responses) }) } diff --git a/internal/peer/chaincode/flags_test.go b/internal/peer/chaincode/flags_test.go index a74ad4f411d..6d3dc473c61 100644 --- a/internal/peer/chaincode/flags_test.go +++ b/internal/peer/chaincode/flags_test.go @@ -13,7 +13,7 @@ import ( "github.com/hyperledger/fabric/internal/peer/common" "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestOrdererFlags(t *testing.T) { @@ -29,13 +29,13 @@ func TestOrdererFlags(t *testing.T) { Use: "test", Run: func(cmd *cobra.Command, args []string) { t.Logf("rootcert: %s", viper.GetString("orderer.tls.rootcert.file")) - assert.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) - assert.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) - assert.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) - assert.Equal(t, endpoint, viper.GetString("orderer.address")) - assert.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) - assert.Equal(t, true, viper.GetBool("orderer.tls.enabled")) - assert.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) + require.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) + require.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) + require.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) + require.Equal(t, endpoint, viper.GetString("orderer.address")) + require.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) + require.Equal(t, true, viper.GetBool("orderer.tls.enabled")) + require.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) }, PersistentPreRun: func(cmd *cobra.Command, args []string) { common.SetOrdererEnv(cmd, args) @@ -43,7 +43,7 @@ func TestOrdererFlags(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) runCmd := Cmd(nil, cryptoProvider) runCmd.AddCommand(testCmd) @@ -52,15 +52,15 @@ func TestOrdererFlags(t *testing.T) { "--certfile", cert, "--orderer", endpoint, "--tls", "--clientauth", "--ordererTLSHostnameOverride", sn}) err = runCmd.Execute() - assert.NoError(t, err) + require.NoError(t, err) // check env one more time t.Logf("address: %s", viper.GetString("orderer.address")) - assert.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) - assert.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) - assert.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) - assert.Equal(t, endpoint, viper.GetString("orderer.address")) - assert.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) - assert.Equal(t, true, viper.GetBool("orderer.tls.enabled")) - assert.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) + require.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) + require.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) + require.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) + require.Equal(t, endpoint, viper.GetString("orderer.address")) + require.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) + require.Equal(t, true, viper.GetBool("orderer.tls.enabled")) + require.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) } diff --git a/internal/peer/chaincode/install_test.go b/internal/peer/chaincode/install_test.go index 8d1abf91df9..7c960fdeb8d 100644 --- a/internal/peer/chaincode/install_test.go +++ b/internal/peer/chaincode/install_test.go @@ -17,7 +17,7 @@ import ( "github.com/hyperledger/fabric/internal/peer/common" "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func initInstallTest(t *testing.T, fsPath string, ec pb.EndorserClient, mockResponse *pb.ProposalResponse) (*cobra.Command, *ChaincodeCmdFactory) { @@ -43,7 +43,7 @@ func initInstallTest(t *testing.T, fsPath string, ec pb.EndorserClient, mockResp EndorserClients: []pb.EndorserClient{ec}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cmd := installCmd(mockCF, nil, cryptoProvider) addFlags(cmd) @@ -57,7 +57,7 @@ func cleanupInstallTest(fsPath string) { func TestInstallBadVersion(t *testing.T) { fsPath, err := ioutil.TempDir("", "installbadversion") - assert.NoError(t, err) + require.NoError(t, err) cmd, _ := initInstallTest(t, fsPath, nil, nil) defer cleanupInstallTest(fsPath) @@ -72,7 +72,7 @@ func TestInstallBadVersion(t *testing.T) { func TestInstallNonExistentCC(t *testing.T) { fsPath, err := ioutil.TempDir("", "install-nonexistentcc") - assert.NoError(t, err) + require.NoError(t, err) cmd, _ := initInstallTest(t, fsPath, nil, nil) defer cleanupInstallTest(fsPath) @@ -146,7 +146,7 @@ func installCC(t *testing.T) error { defer viper.Reset() fsPath, err := ioutil.TempDir("", "installLegacyEx02") - assert.NoError(t, err) + require.NoError(t, err) cmd, _ := initInstallTest(t, fsPath, nil, nil) defer cleanupInstallTest(fsPath) diff --git a/internal/peer/chaincode/instantiate_test.go b/internal/peer/chaincode/instantiate_test.go index 8952808d44e..593ad99ef88 100644 --- a/internal/peer/chaincode/instantiate_test.go +++ b/internal/peer/chaincode/instantiate_test.go @@ -10,14 +10,14 @@ import ( "testing" "github.com/hyperledger/fabric/bccsp/sw" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInstantiateCmd(t *testing.T) { mockCF, err := getMockChaincodeCmdFactory() - assert.NoError(t, err, "Error getting mock chaincode command factory") + require.NoError(t, err, "Error getting mock chaincode command factory") cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) // basic function tests var tests = []struct { @@ -83,8 +83,8 @@ func TestInstantiateCmd(t *testing.T) { func checkError(t *testing.T, err error, expectedError bool, msg string) { if expectedError { - assert.Error(t, err, msg) + require.Error(t, err, msg) } else { - assert.NoError(t, err, msg) + require.NoError(t, err, msg) } } diff --git a/internal/peer/chaincode/invoke_test.go b/internal/peer/chaincode/invoke_test.go index c7b5b2006d1..bffadd5ac9b 100644 --- a/internal/peer/chaincode/invoke_test.go +++ b/internal/peer/chaincode/invoke_test.go @@ -23,7 +23,7 @@ import ( "github.com/hyperledger/fabric/msp" "github.com/hyperledger/fabric/protoutil" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -33,10 +33,10 @@ func TestInvokeCmd(t *testing.T) { resetFlags() mockCF, err := getMockChaincodeCmdFactory() - assert.NoError(t, err, "Error getting mock chaincode command factory") + require.NoError(t, err, "Error getting mock chaincode command factory") cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) // Error case 0: no channelID specified cmd := invokeCmd(mockCF, cryptoProvider) @@ -44,7 +44,7 @@ func TestInvokeCmd(t *testing.T) { args := []string{"-n", "example02", "-c", "{\"Args\": [\"invoke\",\"a\",\"b\",\"10\"]}"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "'peer chaincode invoke' command should have returned error when called without -C flag") + require.Error(t, err, "'peer chaincode invoke' command should have returned error when called without -C flag") // Success case cmd = invokeCmd(mockCF, cryptoProvider) @@ -52,7 +52,7 @@ func TestInvokeCmd(t *testing.T) { args = []string{"-n", "example02", "-c", "{\"Args\": [\"invoke\",\"a\",\"b\",\"10\"]}", "-C", "mychannel"} cmd.SetArgs(args) err = cmd.Execute() - assert.NoError(t, err, "Run chaincode invoke cmd error") + require.NoError(t, err, "Run chaincode invoke cmd error") // set timeout for error cases viper.Set("peer.client.connTimeout", 10*time.Millisecond) @@ -84,7 +84,7 @@ func TestInvokeCmd(t *testing.T) { args = []string{"-n", "example02", "-c", "{\"Args\": [\"invoke\",\"a\",\"b\",\"10\"]}", "-C", "mychannel"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err) + require.Error(t, err) // Error case 2: getEndorserClient returns error t.Logf("Start error case 2: getEndorserClient returns error") @@ -92,7 +92,7 @@ func TestInvokeCmd(t *testing.T) { return nil, errors.New("error") } err = cmd.Execute() - assert.Error(t, err) + require.Error(t, err) // Error case 3: getDeliverClient returns error t.Logf("Start error case 3: getDeliverClient returns error") @@ -100,7 +100,7 @@ func TestInvokeCmd(t *testing.T) { return nil, errors.New("error") } err = cmd.Execute() - assert.Error(t, err) + require.Error(t, err) // Error case 4 : getPeerDeliverClient returns error t.Logf("Start error case 4: getPeerDeliverClient returns error") @@ -108,7 +108,7 @@ func TestInvokeCmd(t *testing.T) { return nil, errors.New("error") } err = cmd.Execute() - assert.Error(t, err) + require.Error(t, err) // Error case 5: getDefaultSignerFnc returns error t.Logf("Start error case 5: getDefaultSignerFnc returns error") @@ -122,7 +122,7 @@ func TestInvokeCmd(t *testing.T) { return nil, errors.New("error") } err = cmd.Execute() - assert.Error(t, err) + require.Error(t, err) common.GetDefaultSignerFnc = common.GetDefaultSigner // Error case 6: getOrdererEndpointOfChainFnc returns error @@ -134,7 +134,7 @@ func TestInvokeCmd(t *testing.T) { return nil, errors.New("error") } err = cmd.Execute() - assert.Error(t, err) + require.Error(t, err) // Error case 7: getBroadcastClient returns error t.Logf("Start error case 7: getBroadcastClient returns error") @@ -145,7 +145,7 @@ func TestInvokeCmd(t *testing.T) { return nil, errors.New("error") } err = cmd.Execute() - assert.Error(t, err) + require.Error(t, err) // Success case t.Logf("Start success case") @@ -153,15 +153,15 @@ func TestInvokeCmd(t *testing.T) { return mockCF.BroadcastClient, nil } err = cmd.Execute() - assert.NoError(t, err) + require.NoError(t, err) } func TestInvokeCmdSimulateESCCPluginResponse(t *testing.T) { defer resetFlags() mockCF, err := getMockChaincodeCmdFactory() - assert.NoError(t, err, "Error getting mock chaincode command factory") + require.NoError(t, err, "Error getting mock chaincode command factory") cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) // success case - simulate an ESCC plugin that endorses a chaincode response // with status greater than shim.ERRORTHRESHOLD or even shim.ERROR @@ -186,25 +186,25 @@ func TestInvokeCmdSimulateESCCPluginResponse(t *testing.T) { cmd.SetArgs(args) err = cmd.Execute() - assert.NoError(t, err, "Run chaincode invoke cmd error") + require.NoError(t, err, "Run chaincode invoke cmd error") - assert.NotEmpty(t, recorder.MessagesContaining("Chaincode invoke successful"), "missing invoke success log record") - assert.NotEmpty(t, recorder.MessagesContaining("result: "), "missing result log record") + require.NotEmpty(t, recorder.MessagesContaining("Chaincode invoke successful"), "missing invoke success log record") + require.NotEmpty(t, recorder.MessagesContaining("result: "), "missing result log record") } func TestInvokeCmdEndorsementError(t *testing.T) { defer resetFlags() mockCF, err := getMockChaincodeCmdFactoryWithErr() - assert.NoError(t, err, "Error getting mock chaincode command factory") + require.NoError(t, err, "Error getting mock chaincode command factory") cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cmd := invokeCmd(mockCF, cryptoProvider) addFlags(cmd) args := []string{"-n", "example02", "-C", "mychannel", "-c", "{\"Args\": [\"invoke\",\"a\",\"b\",\"10\"]}"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "Expected error executing invoke command") + require.Error(t, err, "Expected error executing invoke command") } func TestInvokeCmdEndorsementFailure(t *testing.T) { @@ -212,11 +212,11 @@ func TestInvokeCmdEndorsementFailure(t *testing.T) { ccRespStatus := [2]int32{502, 400} ccRespPayload := [][]byte{[]byte("Invalid function name"), []byte("Incorrect parameters")} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) for i := 0; i < 2; i++ { mockCF, err := getMockChaincodeCmdFactoryEndorsementFailure(ccRespStatus[i], ccRespPayload[i]) - assert.NoError(t, err, "Error getting mock chaincode command factory") + require.NoError(t, err, "Error getting mock chaincode command factory") cmd := invokeCmd(mockCF, cryptoProvider) addFlags(cmd) @@ -224,9 +224,9 @@ func TestInvokeCmdEndorsementFailure(t *testing.T) { cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err) - assert.Contains(t, err.Error(), "endorsement failure during invoke") - assert.Contains(t, err.Error(), fmt.Sprintf("response: status:%d payload:\"%s\"", ccRespStatus[i], ccRespPayload[i])) + require.Error(t, err) + require.Contains(t, err.Error(), "endorsement failure during invoke") + require.Contains(t, err.Error(), fmt.Sprintf("response: status:%d payload:\"%s\"", ccRespStatus[i], ccRespPayload[i])) } } diff --git a/internal/peer/chaincode/list_test.go b/internal/peer/chaincode/list_test.go index 236a0dcf858..56c5645ab22 100644 --- a/internal/peer/chaincode/list_test.go +++ b/internal/peer/chaincode/list_test.go @@ -15,7 +15,7 @@ import ( pb "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/internal/peer/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestChaincodeListCmd(t *testing.T) { @@ -48,7 +48,7 @@ func TestChaincodeListCmd(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cmd := listCmd(mockCF, cryptoProvider) @@ -68,7 +68,7 @@ func TestChaincodeListCmd(t *testing.T) { args := []string{"--instantiated"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "Run chaincode list cmd to get instantiated chaincodes should fail if invoked without -C flag") + require.Error(t, err, "Run chaincode list cmd to get instantiated chaincodes should fail if invoked without -C flag") }) t.Run("get instantiated chaincodes - no channel", func(t *testing.T) { @@ -77,7 +77,7 @@ func TestChaincodeListCmd(t *testing.T) { args := []string{"--instantiated"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "Run chaincode list cmd to get instantiated chaincodes should fail if invoked without -C flag") + require.Error(t, err, "Run chaincode list cmd to get instantiated chaincodes should fail if invoked without -C flag") }) t.Run("get instantiated chaincodes - success", func(t *testing.T) { @@ -98,7 +98,7 @@ func TestChaincodeListCmd(t *testing.T) { args := []string{"--installed", "--instantiated"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "Run chaincode list cmd to get instantiated/installed chaincodes should fail if invoked without -C flag") + require.Error(t, err, "Run chaincode list cmd to get instantiated/installed chaincodes should fail if invoked without -C flag") }) t.Run("both --installed and --instantiated set - no channel", func(t *testing.T) { @@ -107,8 +107,8 @@ func TestChaincodeListCmd(t *testing.T) { cmd.SetArgs(args) expectErr := fmt.Errorf("must explicitly specify \"--installed\" or \"--instantiated\"") err = cmd.Execute() - assert.Error(t, err) - assert.Equal(t, expectErr.Error(), err.Error()) + require.Error(t, err) + require.Equal(t, expectErr.Error(), err.Error()) }) t.Run("neither --installed nor --instantiated set", func(t *testing.T) { @@ -118,8 +118,8 @@ func TestChaincodeListCmd(t *testing.T) { expectErr := fmt.Errorf("must explicitly specify \"--installed\" or \"--instantiated\"") err = cmd.Execute() - assert.Error(t, err) - assert.Equal(t, expectErr.Error(), err.Error()) + require.Error(t, err) + require.Equal(t, expectErr.Error(), err.Error()) }) } @@ -147,15 +147,15 @@ func TestChaincodeListFailure(t *testing.T) { resetFlags() cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) // Get instantiated chaincodes instantiatedChaincodesCmd := listCmd(mockCF, cryptoProvider) args := []string{"--instantiated", "-C", "mychannel"} instantiatedChaincodesCmd.SetArgs(args) err = instantiatedChaincodesCmd.Execute() - assert.Error(t, err) - assert.Regexp(t, "bad response: 500 - error message", err.Error()) + require.Error(t, err) + require.Regexp(t, "bad response: 500 - error message", err.Error()) } func TestString(t *testing.T) { @@ -172,5 +172,5 @@ func TestString(t *testing.T) { Vscc: "vscc", }, } - assert.Equal(t, "Name: ccName, Version: 1.0, Input: input, Escc: escc, Vscc: vscc, Id: 0102030405", ccInf.String()) + require.Equal(t, "Name: ccName, Version: 1.0, Input: input, Escc: escc, Vscc: vscc, Id: 0102030405", ccInf.String()) } diff --git a/internal/peer/chaincode/package_test.go b/internal/peer/chaincode/package_test.go index 1308bf5302a..dc3aaa4581c 100644 --- a/internal/peer/chaincode/package_test.go +++ b/internal/peer/chaincode/package_test.go @@ -19,7 +19,7 @@ import ( "github.com/hyperledger/fabric/internal/peer/common" "github.com/hyperledger/fabric/msp" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestMain(m *testing.M) { @@ -92,7 +92,7 @@ func createSignedCDSPackage(t *testing.T, args []string, sign bool) error { p := newPackagerForTest(t, sign) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cmd := packageCmd(nil, mockCDSFactory, p, cryptoProvider) addFlags(cmd) @@ -215,7 +215,7 @@ func newPackagerForTest(t *testing.T /*pr PlatformRegistry, w Writer,*/, sign bo t.Fatal("error creating mock ChaincodeCmdFactory", err) } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) p := &Packager{ ChaincodeCmdFactory: mockCF, diff --git a/internal/peer/chaincode/query_test.go b/internal/peer/chaincode/query_test.go index 1189cbc64ca..9d15de866d3 100644 --- a/internal/peer/chaincode/query_test.go +++ b/internal/peer/chaincode/query_test.go @@ -14,14 +14,14 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/internal/peer/common" "github.com/spf13/cobra" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestQueryCmd(t *testing.T) { mockCF, err := getMockChaincodeCmdFactory() - assert.NoError(t, err, "Error getting mock chaincode command factory") + require.NoError(t, err, "Error getting mock chaincode command factory") cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) // reset channelID, it might have been set by previous test channelID = "" @@ -29,40 +29,40 @@ func TestQueryCmd(t *testing.T) { args := []string{"-n", "example02", "-c", "{\"Args\": [\"query\",\"a\"]}"} cmd := newQueryCmdForTest(mockCF, args, cryptoProvider) err = cmd.Execute() - assert.Error(t, err, "'peer chaincode query' command should have failed without -C flag") + require.Error(t, err, "'peer chaincode query' command should have failed without -C flag") // Success case: run query command without -r or -x option args = []string{"-C", "mychannel", "-n", "example02", "-c", "{\"Args\": [\"query\",\"a\"]}"} cmd = newQueryCmdForTest(mockCF, args, cryptoProvider) err = cmd.Execute() - assert.NoError(t, err, "Run chaincode query cmd error") + require.NoError(t, err, "Run chaincode query cmd error") // Success case: run query command with -r option args = []string{"-r", "-C", "mychannel", "-n", "example02", "-c", "{\"Args\": [\"query\",\"a\"]}"} cmd = newQueryCmdForTest(mockCF, args, cryptoProvider) err = cmd.Execute() - assert.NoError(t, err, "Run chaincode query cmd error") + require.NoError(t, err, "Run chaincode query cmd error") chaincodeQueryRaw = false // Success case: run query command with -x option args = []string{"-x", "-C", "mychannel", "-n", "example02", "-c", "{\"Args\": [\"query\",\"a\"]}"} cmd = newQueryCmdForTest(mockCF, args, cryptoProvider) err = cmd.Execute() - assert.NoError(t, err, "Run chaincode query cmd error") + require.NoError(t, err, "Run chaincode query cmd error") // Failure case: run query command with both -x and -r options args = []string{"-r", "-x", "-C", "mychannel", "-n", "example02", "-c", "{\"Args\": [\"query\",\"a\"]}"} cmd = newQueryCmdForTest(mockCF, args, cryptoProvider) err = cmd.Execute() - assert.Error(t, err, "Expected error executing query command with both -r and -x options") + require.Error(t, err, "Expected error executing query command with both -r and -x options") // Failure case: run query command with mock chaincode cmd factory built to return error mockCF, err = getMockChaincodeCmdFactoryWithErr() - assert.NoError(t, err, "Error getting mock chaincode command factory") + require.NoError(t, err, "Error getting mock chaincode command factory") args = []string{"-r", "-n", "example02", "-c", "{\"Args\": [\"query\",\"a\"]}"} cmd = newQueryCmdForTest(mockCF, args, cryptoProvider) err = cmd.Execute() - assert.Error(t, err, "Expected error executing query command") + require.Error(t, err, "Expected error executing query command") } func TestQueryCmdEndorsementFailure(t *testing.T) { @@ -70,29 +70,29 @@ func TestQueryCmdEndorsementFailure(t *testing.T) { ccRespStatus := [2]int32{502, 400} ccRespPayload := [][]byte{[]byte("Invalid function name"), []byte("Incorrect parameters")} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) for i := 0; i < 2; i++ { mockCF, err := getMockChaincodeCmdFactoryEndorsementFailure(ccRespStatus[i], ccRespPayload[i]) - assert.NoError(t, err, "Error getting mock chaincode command factory") + require.NoError(t, err, "Error getting mock chaincode command factory") cmd := newQueryCmdForTest(mockCF, args, cryptoProvider) err = cmd.Execute() - assert.Error(t, err) - assert.Regexp(t, "endorsement failure during query", err.Error()) - assert.Regexp(t, fmt.Sprintf("response: status:%d payload:\"%s\"", ccRespStatus[i], ccRespPayload[i]), err.Error()) + require.Error(t, err) + require.Regexp(t, "endorsement failure during query", err.Error()) + require.Regexp(t, fmt.Sprintf("response: status:%d payload:\"%s\"", ccRespStatus[i], ccRespPayload[i]), err.Error()) } // failure - nil proposal response mockCF, err := getMockChaincodeCmdFactory() - assert.NoError(t, err, "Error getting mock chaincode command factory") + require.NoError(t, err, "Error getting mock chaincode command factory") mockCF.EndorserClients[0] = common.GetMockEndorserClient(nil, nil) mockCF.EndorserClients[1] = common.GetMockEndorserClient(nil, nil) cmd := newQueryCmdForTest(mockCF, args, cryptoProvider) err = cmd.Execute() - assert.Error(t, err) - assert.Regexp(t, "error during query: received nil proposal response", err.Error()) + require.Error(t, err) + require.Regexp(t, "error during query: received nil proposal response", err.Error()) } func newQueryCmdForTest(cf *ChaincodeCmdFactory, args []string, cryptoProvider bccsp.BCCSP) *cobra.Command { diff --git a/internal/peer/chaincode/signpackage_test.go b/internal/peer/chaincode/signpackage_test.go index 5d2ea5980d6..1eed54ffffd 100644 --- a/internal/peer/chaincode/signpackage_test.go +++ b/internal/peer/chaincode/signpackage_test.go @@ -17,7 +17,7 @@ import ( "github.com/hyperledger/fabric/bccsp" "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/internal/peer/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //helper to sign an existing package @@ -49,7 +49,7 @@ func TestSignExistingPackage(t *testing.T) { defer os.RemoveAll(pdir) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) ccpackfile := pdir + "/ccpack.file" err = createSignedCDSPackage(t, []string{"-n", "somecc", "-p", "some/go/package", "-v", "0", "-s", "-S", ccpackfile}, true) @@ -106,7 +106,7 @@ func TestFailSignUnsignedPackage(t *testing.T) { pdir := newTempDir() defer os.RemoveAll(pdir) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) ccpackfile := pdir + "/ccpack.file" // don't sign it ... no "-S" diff --git a/internal/peer/chaincode/upgrade_test.go b/internal/peer/chaincode/upgrade_test.go index 260b01faea0..5df5d84a4d7 100644 --- a/internal/peer/chaincode/upgrade_test.go +++ b/internal/peer/chaincode/upgrade_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/internal/peer/common" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestUpgradeCmd(t *testing.T) { @@ -41,7 +41,7 @@ func TestUpgradeCmd(t *testing.T) { channelID = "" cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cmd := upgradeCmd(mockCF, cryptoProvider) addFlags(cmd) @@ -49,13 +49,13 @@ func TestUpgradeCmd(t *testing.T) { "-v", "anotherversion", "-c", "{\"Function\":\"init\",\"Args\": [\"param\",\"1\"]}"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "'peer chaincode upgrade' command should have failed without -C flag") + require.Error(t, err, "'peer chaincode upgrade' command should have failed without -C flag") args = []string{"-C", "mychannel", "-n", "mychaincode", "-p", "mychaincodepath", "-v", "anotherversion", "-c", "{\"Function\":\"init\",\"Args\": [\"param\",\"1\"]}"} cmd.SetArgs(args) err = cmd.Execute() - assert.NoError(t, err, "'peer chaincode upgrade' command failed") + require.NoError(t, err, "'peer chaincode upgrade' command failed") } func TestUpgradeCmdEndorseFail(t *testing.T) { @@ -77,7 +77,7 @@ func TestUpgradeCmdEndorseFail(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cmd := upgradeCmd(mockCF, cryptoProvider) addFlags(cmd) @@ -115,7 +115,7 @@ func TestUpgradeCmdSendTXFail(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cmd := upgradeCmd(mockCF, cryptoProvider) addFlags(cmd) @@ -145,13 +145,13 @@ func TestUpgradeCmdWithNilCF(t *testing.T) { if r := recover(); r != nil { err = fmt.Errorf("%v", r) } - assert.NoError(t, err, "'peer chaincode upgrade' command should have failed without a panic") + require.NoError(t, err, "'peer chaincode upgrade' command should have failed without a panic") }() channelID = "" cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cmd := upgradeCmd(nil, cryptoProvider) addFlags(cmd) @@ -159,5 +159,5 @@ func TestUpgradeCmdWithNilCF(t *testing.T) { "-v", "anotherversion", "-c", "{\"Function\":\"init\",\"Args\": [\"param\",\"1\"]}"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "'peer chaincode upgrade' command should have failed without a panic") + require.Error(t, err, "'peer chaincode upgrade' command should have failed without a panic") } diff --git a/internal/peer/channel/channel_test.go b/internal/peer/channel/channel_test.go index da5eac97ef1..46e003b2f72 100644 --- a/internal/peer/channel/channel_test.go +++ b/internal/peer/channel/channel_test.go @@ -9,14 +9,14 @@ package channel import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInitCmdFactory(t *testing.T) { t.Run("InitCmdFactory() with PeerDeliverRequired and OrdererRequired", func(t *testing.T) { cf, err := InitCmdFactory(EndorserRequired, PeerDeliverRequired, OrdererRequired) - assert.Nil(t, cf) - assert.Error(t, err) - assert.Contains(t, err.Error(), "ERROR - only a single deliver source is currently supported") + require.Nil(t, cf) + require.Error(t, err) + require.Contains(t, err.Error(), "ERROR - only a single deliver source is currently supported") }) } diff --git a/internal/peer/channel/create_test.go b/internal/peer/channel/create_test.go index d2f87a1cc22..bd35d19d2f6 100644 --- a/internal/peer/channel/create_test.go +++ b/internal/peer/channel/create_test.go @@ -29,7 +29,7 @@ import ( msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -224,10 +224,10 @@ func TestCreateChainWithOutputBlock(t *testing.T) { defer func() { outputBlock = "" }() err = cmd.Execute() - assert.NoError(t, err, "execute should succeed") + require.NoError(t, err, "execute should succeed") _, err = os.Stat(outputBlockPath) - assert.NoErrorf(t, err, "expected %s to exist", outputBlockPath) + require.NoErrorf(t, err, "expected %s to exist", outputBlockPath) } func TestCreateChainWithDefaultAnchorPeers(t *testing.T) { @@ -330,7 +330,7 @@ func TestCreateChainWithTimeoutErr(t *testing.T) { if err := channelCmd.Execute(); err == nil { t.Error("expected create chain to fail with deliver error") } else { - assert.Contains(t, err.Error(), "timeout waiting for channel creation") + require.Contains(t, err.Error(), "timeout waiting for channel creation") } // failure - point to bad port and time out connecting to orderer @@ -340,7 +340,7 @@ func TestCreateChainWithTimeoutErr(t *testing.T) { if err := channelCmd.Execute(); err == nil { t.Error("expected create chain to fail with deliver error") } else { - assert.Contains(t, err.Error(), "failed connecting") + require.Contains(t, err.Error(), "failed connecting") } } @@ -484,30 +484,30 @@ func TestCreateChainFromTx(t *testing.T) { args := []string{"-c", "", "-f", file, "-o", "localhost:7050"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "Create command should have failed because channel ID is not specified") - assert.Contains(t, err.Error(), "must supply channel ID") + require.Error(t, err, "Create command should have failed because channel ID is not specified") + require.Contains(t, err.Error(), "must supply channel ID") // Error case 1 args = []string{"-c", mockchannel, "-f", file, "-o", "localhost:7050"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "Create command should have failed because tx file does not exist") + require.Error(t, err, "Create command should have failed because tx file does not exist") var msgExpr = regexp.MustCompile(`channel create configuration tx file not found.*no such file or directory`) - assert.True(t, msgExpr.MatchString(err.Error())) + require.True(t, msgExpr.MatchString(err.Error())) // Success case: -f option is empty args = []string{"-c", mockchannel, "-f", "", "-o", "localhost:7050"} cmd.SetArgs(args) err = cmd.Execute() - assert.NoError(t, err) + require.NoError(t, err) // Success case args = []string{"-c", mockchannel, "-f", file, "-o", "localhost:7050"} cmd.SetArgs(args) _, err = createTxFile(file, cb.HeaderType_CONFIG_UPDATE, mockchannel) - assert.NoError(t, err, "Couldn't create tx file") + require.NoError(t, err, "Couldn't create tx file") err = cmd.Execute() - assert.NoError(t, err) + require.NoError(t, err) } func TestCreateChainInvalidTx(t *testing.T) { @@ -595,7 +595,7 @@ func TestCreateChainNilCF(t *testing.T) { mockchannel := "mockchannel" dir, err := ioutil.TempDir("", "createinvaltest-") - assert.NoError(t, err, "Couldn't create temp dir") + require.NoError(t, err, "Couldn't create temp dir") defer os.RemoveAll(dir) // clean up //this is created by create command @@ -609,15 +609,15 @@ func TestCreateChainNilCF(t *testing.T) { args := []string{"-c", mockchannel, "-f", file, "-o", "localhost:7050"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to create deliver client") + require.Error(t, err) + require.Contains(t, err.Error(), "failed to create deliver client") // Error case: invalid ordering service endpoint args = []string{"-c", mockchannel, "-f", file, "-o", "localhost"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err) - assert.Contains(t, err.Error(), "ordering service endpoint localhost is not valid or missing") + require.Error(t, err) + require.Contains(t, err.Error(), "ordering service endpoint localhost is not valid or missing") // Error case: invalid ca file defer os.RemoveAll(dir) // clean up @@ -625,9 +625,9 @@ func TestCreateChainNilCF(t *testing.T) { args = []string{"create", "-c", mockchannel, "-f", file, "-o", "localhost:7050", "--tls", "true", "--cafile", dir + "/ca.pem"} channelCmd.SetArgs(args) err = channelCmd.Execute() - assert.Error(t, err) + require.Error(t, err) t.Log(err) - assert.Contains(t, err.Error(), "no such file or directory") + require.Contains(t, err.Error(), "no such file or directory") } func TestSanityCheckAndSignChannelCreateTx(t *testing.T) { @@ -640,27 +640,27 @@ func TestSanityCheckAndSignChannelCreateTx(t *testing.T) { // Error case 1 _, err = sanityCheckAndSignConfigTx(env, signer) - assert.Error(t, err, "Error expected for nil payload") - assert.Contains(t, err.Error(), "bad payload") + require.Error(t, err, "Error expected for nil payload") + require.Contains(t, err.Error(), "bad payload") // Error case 2 p := &cb.Payload{Header: nil} data, err1 := proto.Marshal(p) - assert.NoError(t, err1) + require.NoError(t, err1) env = &cb.Envelope{Payload: data} _, err = sanityCheckAndSignConfigTx(env, signer) - assert.Error(t, err, "Error expected for bad payload header") - assert.Contains(t, err.Error(), "bad header") + require.Error(t, err, "Error expected for bad payload header") + require.Contains(t, err.Error(), "bad header") // Error case 3 bites := bytes.NewBufferString("foo").Bytes() p = &cb.Payload{Header: &cb.Header{ChannelHeader: bites}} data, err = proto.Marshal(p) - assert.NoError(t, err) + require.NoError(t, err) env = &cb.Envelope{Payload: data} _, err = sanityCheckAndSignConfigTx(env, signer) - assert.Error(t, err, "Error expected for bad channel header") - assert.Contains(t, err.Error(), "could not unmarshall channel header") + require.Error(t, err, "Error expected for bad channel header") + require.Contains(t, err.Error(), "could not unmarshall channel header") // Error case 4 mockchannel := "mockchannel" @@ -671,14 +671,14 @@ func TestSanityCheckAndSignChannelCreateTx(t *testing.T) { }() ch := &cb.ChannelHeader{Type: int32(cb.HeaderType_CONFIG_UPDATE), ChannelId: mockchannel} data, err = proto.Marshal(ch) - assert.NoError(t, err) + require.NoError(t, err) p = &cb.Payload{Header: &cb.Header{ChannelHeader: data}, Data: bytes.NewBufferString("foo").Bytes()} data, err = proto.Marshal(p) - assert.NoError(t, err) + require.NoError(t, err) env = &cb.Envelope{Payload: data} _, err = sanityCheckAndSignConfigTx(env, signer) - assert.Error(t, err, "Error expected for bad payload data") - assert.Contains(t, err.Error(), "Bad config update env") + require.Error(t, err, "Error expected for bad payload data") + require.Contains(t, err.Error(), "Bad config update env") // Error case 5 signer = &mock.SignerSerializer{} @@ -690,9 +690,9 @@ func TestSanityCheckAndSignChannelCreateTx(t *testing.T) { &cb.ConfigEnvelope{}, 0, 0) - assert.NoError(t, err) + require.NoError(t, err) _, err = sanityCheckAndSignConfigTx(env, signer) - assert.EqualError(t, err, "bad signer header") + require.EqualError(t, err, "bad signer header") // Error case 6 signer = &mock.SignerSerializer{} @@ -704,7 +704,7 @@ func TestSanityCheckAndSignChannelCreateTx(t *testing.T) { &cb.ConfigEnvelope{}, 0, 0) - assert.NoError(t, err) + require.NoError(t, err) _, err = sanityCheckAndSignConfigTx(env, signer) - assert.EqualError(t, err, "signer failed to sign") + require.EqualError(t, err, "signer failed to sign") } diff --git a/internal/peer/channel/fetch_test.go b/internal/peer/channel/fetch_test.go index 3d3fcadd4f8..52ae5015a67 100644 --- a/internal/peer/channel/fetch_test.go +++ b/internal/peer/channel/fetch_test.go @@ -21,7 +21,7 @@ import ( "github.com/hyperledger/fabric/internal/peer/common/mock" "github.com/hyperledger/fabric/protoutil" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestFetch(t *testing.T) { @@ -65,7 +65,7 @@ func TestFetch(t *testing.T) { cmd.SetArgs(args) err = cmd.Execute() - assert.NoError(t, err, "fetch command expected to succeed") + require.NoError(t, err, "fetch command expected to succeed") if _, err := os.Stat(outputBlockPath); os.IsNotExist(err) { // path/to/whatever does not exist @@ -83,8 +83,8 @@ func TestFetch(t *testing.T) { cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "fetch command expected to fail") - assert.Regexp(t, err.Error(), fmt.Sprintf("fetch target illegal: %s", block)) + require.Error(t, err, "fetch command expected to fail") + require.Regexp(t, err.Error(), fmt.Sprintf("fetch target illegal: %s", block)) if fileInfo, _ := os.Stat(outputBlockPath); fileInfo != nil { // path/to/whatever does exist @@ -99,15 +99,15 @@ func TestFetchArgs(t *testing.T) { cmd := fetchCmd(nil) AddFlags(cmd) err := cmd.Execute() - assert.Error(t, err, "fetch command expected to fail") - assert.Contains(t, err.Error(), "fetch target required") + require.Error(t, err, "fetch command expected to fail") + require.Contains(t, err.Error(), "fetch target required") // failure - too many args args := []string{"strawberry", "kiwi", "lemonade"} cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "fetch command expected to fail") - assert.Contains(t, err.Error(), "trailing args detected") + require.Error(t, err, "fetch command expected to fail") + require.Contains(t, err.Error(), "trailing args detected") } func TestFetchNilCF(t *testing.T) { @@ -126,8 +126,8 @@ func TestFetchNilCF(t *testing.T) { args := []string{"-c", mockchain, "oldest"} cmd.SetArgs(args) err := cmd.Execute() - assert.Error(t, err, "fetch command expected to fail") - assert.Contains(t, err.Error(), "deliver client failed to connect to") + require.Error(t, err, "fetch command expected to fail") + require.Contains(t, err.Error(), "deliver client failed to connect to") } func getMockDeliverClient(channelID string) *common.DeliverClient { diff --git a/internal/peer/channel/flags_test.go b/internal/peer/channel/flags_test.go index c393dd29314..c1cd09497b8 100644 --- a/internal/peer/channel/flags_test.go +++ b/internal/peer/channel/flags_test.go @@ -12,7 +12,7 @@ import ( "github.com/hyperledger/fabric/internal/peer/common" "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestOrdererFlags(t *testing.T) { @@ -29,13 +29,13 @@ func TestOrdererFlags(t *testing.T) { Use: "test", Run: func(cmd *cobra.Command, args []string) { t.Logf("rootcert: %s", viper.GetString("orderer.tls.rootcert.file")) - assert.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) - assert.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) - assert.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) - assert.Equal(t, endpoint, viper.GetString("orderer.address")) - assert.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) - assert.Equal(t, true, viper.GetBool("orderer.tls.enabled")) - assert.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) + require.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) + require.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) + require.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) + require.Equal(t, endpoint, viper.GetString("orderer.address")) + require.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) + require.Equal(t, true, viper.GetBool("orderer.tls.enabled")) + require.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) }, PersistentPreRun: func(cmd *cobra.Command, args []string) { common.SetOrdererEnv(cmd, args) @@ -50,15 +50,15 @@ func TestOrdererFlags(t *testing.T) { "--certfile", cert, "--orderer", endpoint, "--tls", "--clientauth", "--ordererTLSHostnameOverride", sn}) err := runCmd.Execute() - assert.NoError(t, err) + require.NoError(t, err) // check env one more time t.Logf("address: %s", viper.GetString("orderer.address")) - assert.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) - assert.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) - assert.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) - assert.Equal(t, endpoint, viper.GetString("orderer.address")) - assert.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) - assert.Equal(t, true, viper.GetBool("orderer.tls.enabled")) - assert.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) + require.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) + require.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) + require.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) + require.Equal(t, endpoint, viper.GetString("orderer.address")) + require.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) + require.Equal(t, true, viper.GetBool("orderer.tls.enabled")) + require.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) } diff --git a/internal/peer/channel/getinfo_test.go b/internal/peer/channel/getinfo_test.go index 53f962d3b6c..b9cf143d3ff 100644 --- a/internal/peer/channel/getinfo_test.go +++ b/internal/peer/channel/getinfo_test.go @@ -13,7 +13,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" pb "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/internal/peer/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetChannelInfo(t *testing.T) { @@ -26,7 +26,7 @@ func TestGetChannelInfo(t *testing.T) { PreviousBlockHash: []byte("PreviousBlockHash"), } mockPayload, err := proto.Marshal(mockBlockchainInfo) - assert.NoError(t, err) + require.NoError(t, err) mockResponse := &pb.ProposalResponse{ Response: &pb.Response{ @@ -37,7 +37,7 @@ func TestGetChannelInfo(t *testing.T) { } signer, err := common.GetDefaultSigner() - assert.NoError(t, err) + require.NoError(t, err) mockCF := &ChannelCmdFactory{ EndorserClient: common.GetMockEndorserClient(mockResponse, nil), @@ -51,7 +51,7 @@ func TestGetChannelInfo(t *testing.T) { args := []string{"-c", mockChannel} cmd.SetArgs(args) - assert.NoError(t, cmd.Execute()) + require.NoError(t, cmd.Execute()) } func TestGetChannelInfoMissingChannelID(t *testing.T) { @@ -73,5 +73,5 @@ func TestGetChannelInfoMissingChannelID(t *testing.T) { cmd.SetArgs([]string{}) - assert.Error(t, cmd.Execute()) + require.Error(t, cmd.Execute()) } diff --git a/internal/peer/channel/join_test.go b/internal/peer/channel/join_test.go index 61681cd046a..cbd1c260a16 100644 --- a/internal/peer/channel/join_test.go +++ b/internal/peer/channel/join_test.go @@ -16,7 +16,7 @@ import ( pb "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/internal/peer/common" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestMissingBlockFile(t *testing.T) { @@ -29,7 +29,7 @@ func TestMissingBlockFile(t *testing.T) { args := []string{} cmd.SetArgs(args) - assert.Error(t, cmd.Execute(), "expected join command to fail due to missing blockfilepath") + require.Error(t, cmd.Execute(), "expected join command to fail due to missing blockfilepath") } func TestJoin(t *testing.T) { @@ -39,13 +39,13 @@ func TestJoin(t *testing.T) { resetFlags() dir, err := ioutil.TempDir("/tmp", "jointest") - assert.NoError(t, err, "Could not create the directory %s", dir) + require.NoError(t, err, "Could not create the directory %s", dir) mockblockfile := filepath.Join(dir, "mockjointest.block") err = ioutil.WriteFile(mockblockfile, []byte(""), 0644) - assert.NoError(t, err, "Could not write to the file %s", mockblockfile) + require.NoError(t, err, "Could not write to the file %s", mockblockfile) defer os.RemoveAll(dir) signer, err := common.GetDefaultSigner() - assert.NoError(t, err, "Get default signer error: %v", err) + require.NoError(t, err, "Get default signer error: %v", err) mockResponse := &pb.ProposalResponse{ Response: &pb.Response{Status: 200}, @@ -66,7 +66,7 @@ func TestJoin(t *testing.T) { args := []string{"-b", mockblockfile} cmd.SetArgs(args) - assert.NoError(t, cmd.Execute(), "expected join command to succeed") + require.NoError(t, cmd.Execute(), "expected join command to succeed") } func TestJoinNonExistentBlock(t *testing.T) { @@ -101,8 +101,8 @@ func TestJoinNonExistentBlock(t *testing.T) { cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "expected join command to fail") - assert.IsType(t, GBFileNotFoundErr(err.Error()), err, "expected error type of GBFileNotFoundErr") + require.Error(t, err, "expected join command to fail") + require.IsType(t, GBFileNotFoundErr(err.Error()), err, "expected error type of GBFileNotFoundErr") } func TestBadProposalResponse(t *testing.T) { @@ -115,7 +115,7 @@ func TestBadProposalResponse(t *testing.T) { ioutil.WriteFile(mockblockfile, []byte(""), 0644) defer os.Remove(mockblockfile) signer, err := common.GetDefaultSigner() - assert.NoError(t, err, "Get default signer error: %v", err) + require.NoError(t, err, "Get default signer error: %v", err) mockResponse := &pb.ProposalResponse{ Response: &pb.Response{Status: 500}, @@ -138,8 +138,8 @@ func TestBadProposalResponse(t *testing.T) { cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err, "expected join command to fail") - assert.IsType(t, ProposalFailedErr(err.Error()), err, "expected error type of ProposalFailedErr") + require.Error(t, err, "expected join command to fail") + require.IsType(t, ProposalFailedErr(err.Error()), err, "expected error type of ProposalFailedErr") } func TestJoinNilCF(t *testing.T) { @@ -150,7 +150,7 @@ func TestJoinNilCF(t *testing.T) { resetFlags() dir, err := ioutil.TempDir("/tmp", "jointest") - assert.NoError(t, err, "Could not create the directory %s", dir) + require.NoError(t, err, "Could not create the directory %s", dir) mockblockfile := filepath.Join(dir, "mockjointest.block") defer os.RemoveAll(dir) viper.Set("peer.client.connTimeout", 10*time.Millisecond) @@ -160,6 +160,6 @@ func TestJoinNilCF(t *testing.T) { cmd.SetArgs(args) err = cmd.Execute() - assert.Error(t, err) - assert.Contains(t, err.Error(), "endorser client failed to connect to") + require.Error(t, err) + require.Contains(t, err.Error(), "endorser client failed to connect to") } diff --git a/internal/peer/channel/list_test.go b/internal/peer/channel/list_test.go index 4d7d3bff44b..84f783f2c53 100644 --- a/internal/peer/channel/list_test.go +++ b/internal/peer/channel/list_test.go @@ -14,7 +14,7 @@ import ( pb "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/internal/peer/common" "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestListChannels(t *testing.T) { @@ -27,7 +27,7 @@ func TestListChannels(t *testing.T) { } mockPayload, err := proto.Marshal(mockChannelResponse) - assert.NoError(t, err) + require.NoError(t, err) mockResponse := &pb.ProposalResponse{ Response: &pb.Response{ @@ -38,7 +38,7 @@ func TestListChannels(t *testing.T) { } signer, err := common.GetDefaultSigner() - assert.NoError(t, err) + require.NoError(t, err) mockCF := &ChannelCmdFactory{ EndorserClient: common.GetMockEndorserClient(mockResponse, nil), @@ -81,18 +81,18 @@ func testListChannelsEmptyCF(t *testing.T, mockCF *ChannelCmdFactory) { } err := cmd.Execute() - assert.Error(t, err, "Error expected because GetDefaultSignerFnc returns an error") + require.Error(t, err, "Error expected because GetDefaultSignerFnc returns an error") common.GetDefaultSignerFnc = getDefaultSigner common.GetEndorserClientFnc = func(string, string) (pb.EndorserClient, error) { return nil, errors.New("error") } err = cmd.Execute() - assert.Error(t, err, "Error expected because GetEndorserClientFnc returns an error") + require.Error(t, err, "Error expected because GetEndorserClientFnc returns an error") common.GetEndorserClientFnc = func(string, string) (pb.EndorserClient, error) { return mockCF.EndorserClient, nil } err = cmd.Execute() - assert.NoError(t, err, "Error occurred while executing list command") + require.NoError(t, err, "Error occurred while executing list command") } diff --git a/internal/peer/channel/signconfigtx_test.go b/internal/peer/channel/signconfigtx_test.go index 387ac870064..9cd0b715eb0 100644 --- a/internal/peer/channel/signconfigtx_test.go +++ b/internal/peer/channel/signconfigtx_test.go @@ -14,7 +14,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/internal/peer/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSignConfigtx(t *testing.T) { @@ -48,7 +48,7 @@ func TestSignConfigtx(t *testing.T) { args := []string{"-f", configtxFile} cmd.SetArgs(args) - assert.NoError(t, cmd.Execute()) + require.NoError(t, cmd.Execute()) } func TestSignConfigtxMissingConfigTxFlag(t *testing.T) { @@ -70,7 +70,7 @@ func TestSignConfigtxMissingConfigTxFlag(t *testing.T) { cmd.SetArgs([]string{}) - assert.Error(t, cmd.Execute()) + require.Error(t, cmd.Execute()) } func TestSignConfigtxChannelMissingConfigTxFile(t *testing.T) { @@ -93,5 +93,5 @@ func TestSignConfigtxChannelMissingConfigTxFile(t *testing.T) { args := []string{"-f", "Non-existent"} cmd.SetArgs(args) - assert.Error(t, cmd.Execute()) + require.Error(t, cmd.Execute()) } diff --git a/internal/peer/channel/update_test.go b/internal/peer/channel/update_test.go index ce230da3cb1..063efaa3afc 100644 --- a/internal/peer/channel/update_test.go +++ b/internal/peer/channel/update_test.go @@ -14,7 +14,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/internal/peer/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const mockChannel = "mockChannel" @@ -52,7 +52,7 @@ func TestUpdateChannel(t *testing.T) { args := []string{"-c", mockChannel, "-f", configtxFile, "-o", "localhost:7050"} cmd.SetArgs(args) - assert.NoError(t, cmd.Execute()) + require.NoError(t, cmd.Execute()) } func TestUpdateChannelMissingConfigTxFlag(t *testing.T) { @@ -77,7 +77,7 @@ func TestUpdateChannelMissingConfigTxFlag(t *testing.T) { args := []string{"-c", mockChannel, "-o", "localhost:7050"} cmd.SetArgs(args) - assert.Error(t, cmd.Execute()) + require.Error(t, cmd.Execute()) } func TestUpdateChannelMissingConfigTxFile(t *testing.T) { @@ -102,7 +102,7 @@ func TestUpdateChannelMissingConfigTxFile(t *testing.T) { args := []string{"-c", mockChannel, "-f", "Non-existent", "-o", "localhost:7050"} cmd.SetArgs(args) - assert.Error(t, cmd.Execute()) + require.Error(t, cmd.Execute()) } func TestUpdateChannelMissingChannelID(t *testing.T) { @@ -138,5 +138,5 @@ func TestUpdateChannelMissingChannelID(t *testing.T) { args := []string{"-f", configtxFile, "-o", "localhost:7050"} cmd.SetArgs(args) - assert.Error(t, cmd.Execute()) + require.Error(t, cmd.Execute()) } diff --git a/internal/peer/common/common_test.go b/internal/peer/common/common_test.go index 899f6332007..d1157b324cc 100644 --- a/internal/peer/common/common_test.go +++ b/internal/peer/common/common_test.go @@ -22,7 +22,7 @@ import ( "github.com/hyperledger/fabric/msp" "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInitConfig(t *testing.T) { @@ -65,35 +65,35 @@ func TestInitConfig(t *testing.T) { func TestInitCryptoMissingDir(t *testing.T) { dir := path.Join(os.TempDir(), util.GenerateUUID()) err := common.InitCrypto(dir, "SampleOrg", msp.ProviderTypeToString(msp.FABRIC)) - assert.Error(t, err, "Should not be able to initialize crypto with non-existing directory") - assert.Contains(t, err.Error(), fmt.Sprintf("specified path \"%s\" does not exist", dir)) + require.Error(t, err, "Should not be able to initialize crypto with non-existing directory") + require.Contains(t, err.Error(), fmt.Sprintf("specified path \"%s\" does not exist", dir)) } func TestInitCryptoFileNotDir(t *testing.T) { file := path.Join(os.TempDir(), util.GenerateUUID()) err := ioutil.WriteFile(file, []byte{}, 0644) - assert.Nil(t, err, "Failed to create test file") + require.Nil(t, err, "Failed to create test file") defer os.Remove(file) err = common.InitCrypto(file, "SampleOrg", msp.ProviderTypeToString(msp.FABRIC)) - assert.Error(t, err, "Should not be able to initialize crypto with a file instead of a directory") - assert.Contains(t, err.Error(), fmt.Sprintf("specified path \"%s\" is not a directory", file)) + require.Error(t, err, "Should not be able to initialize crypto with a file instead of a directory") + require.Contains(t, err.Error(), fmt.Sprintf("specified path \"%s\" is not a directory", file)) } func TestInitCrypto(t *testing.T) { mspConfigPath := configtest.GetDevMspDir() localMspId := "SampleOrg" err := common.InitCrypto(mspConfigPath, localMspId, msp.ProviderTypeToString(msp.FABRIC)) - assert.NoError(t, err, "Unexpected error [%s] calling InitCrypto()", err) + require.NoError(t, err, "Unexpected error [%s] calling InitCrypto()", err) localMspId = "" err = common.InitCrypto(mspConfigPath, localMspId, msp.ProviderTypeToString(msp.FABRIC)) - assert.Error(t, err, fmt.Sprintf("Expected error [%s] calling InitCrypto()", err)) + require.Error(t, err, fmt.Sprintf("Expected error [%s] calling InitCrypto()", err)) } func TestSetBCCSPKeystorePath(t *testing.T) { cfgKey := "peer.BCCSP.SW.FileKeyStore.KeyStore" cfgPath := "./testdata" absPath, err := filepath.Abs(cfgPath) - assert.NoError(t, err) + require.NoError(t, err) keystorePath := "/msp/keystore" defer os.Unsetenv("FABRIC_CFG_PATH") @@ -103,22 +103,22 @@ func TestSetBCCSPKeystorePath(t *testing.T) { err = common.InitConfig("notset") common.SetBCCSPKeystorePath() t.Log(viper.GetString(cfgKey)) - assert.Equal(t, "", viper.GetString(cfgKey)) - assert.Nil(t, viper.Get(cfgKey)) + require.Equal(t, "", viper.GetString(cfgKey)) + require.Nil(t, viper.Get(cfgKey)) viper.Reset() err = common.InitConfig("absolute") - assert.NoError(t, err) + require.NoError(t, err) common.SetBCCSPKeystorePath() t.Log(viper.GetString(cfgKey)) - assert.Equal(t, keystorePath, viper.GetString(cfgKey)) + require.Equal(t, keystorePath, viper.GetString(cfgKey)) viper.Reset() err = common.InitConfig("relative") - assert.NoError(t, err) + require.NoError(t, err) common.SetBCCSPKeystorePath() t.Log(viper.GetString(cfgKey)) - assert.Equal(t, filepath.Join(absPath, keystorePath), viper.GetString(cfgKey)) + require.Equal(t, filepath.Join(absPath, keystorePath), viper.GetString(cfgKey)) viper.Reset() } @@ -198,20 +198,20 @@ func TestInitCmd(t *testing.T) { // test that InitCmd doesn't remove existing loggers from the logger levels map flogging.MustGetLogger("test") flogging.ActivateSpec("test=error") - assert.Equal(t, "error", flogging.LoggerLevel("test")) + require.Equal(t, "error", flogging.LoggerLevel("test")) flogging.MustGetLogger("chaincode") - assert.Equal(t, flogging.DefaultLevel(), flogging.LoggerLevel("chaincode")) + require.Equal(t, flogging.DefaultLevel(), flogging.LoggerLevel("chaincode")) flogging.MustGetLogger("test.test2") flogging.ActivateSpec("test.test2=warn") - assert.Equal(t, "warn", flogging.LoggerLevel("test.test2")) + require.Equal(t, "warn", flogging.LoggerLevel("test.test2")) origEnvValue := os.Getenv("FABRIC_LOGGING_SPEC") os.Setenv("FABRIC_LOGGING_SPEC", "chaincode=debug:test.test2=fatal:abc=error") common.InitCmd(&cobra.Command{}, nil) - assert.Equal(t, "debug", flogging.LoggerLevel("chaincode")) - assert.Equal(t, "info", flogging.LoggerLevel("test")) - assert.Equal(t, "fatal", flogging.LoggerLevel("test.test2")) - assert.Equal(t, "error", flogging.LoggerLevel("abc")) + require.Equal(t, "debug", flogging.LoggerLevel("chaincode")) + require.Equal(t, "info", flogging.LoggerLevel("test")) + require.Equal(t, "fatal", flogging.LoggerLevel("test.test2")) + require.Equal(t, "error", flogging.LoggerLevel("abc")) os.Setenv("FABRIC_LOGGING_SPEC", origEnvValue) } diff --git a/internal/peer/common/deliverclient_test.go b/internal/peer/common/deliverclient_test.go index 76425014a1b..5810d53aacb 100644 --- a/internal/peer/common/deliverclient_test.go +++ b/internal/peer/common/deliverclient_test.go @@ -20,7 +20,7 @@ import ( msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mock/signer_serializer.go --fake-name SignerSerializer . signerSerializer @@ -60,9 +60,9 @@ func TestDeliverClientErrors(t *testing.T) { // failure - recv returns error mockClient.RecvReturns(nil, errors.New("monkey")) block, err := o.readBlock() - assert.Nil(t, block) - assert.Error(t, err) - assert.Contains(t, err.Error(), "error receiving: monkey") + require.Nil(t, block) + require.Error(t, err) + require.Contains(t, err.Error(), "error receiving: monkey") // failure - recv returns status statusResponse := &ab.DeliverResponse{ @@ -70,56 +70,56 @@ func TestDeliverClientErrors(t *testing.T) { } mockClient.RecvReturns(statusResponse, nil) block, err = o.readBlock() - assert.Nil(t, block) - assert.Error(t, err) - assert.Contains(t, err.Error(), "can't read the block") + require.Nil(t, block) + require.Error(t, err) + require.Contains(t, err.Error(), "can't read the block") // failure - recv returns empty proto mockClient.RecvReturns(&ab.DeliverResponse{}, nil) block, err = o.readBlock() - assert.Nil(t, block) - assert.Error(t, err) - assert.Contains(t, err.Error(), "response error: unknown type") + require.Nil(t, block) + require.Error(t, err) + require.Contains(t, err.Error(), "response error: unknown type") // failures - send returns error // getting specified block mockClient.SendReturns(errors.New("gorilla")) block, err = o.GetSpecifiedBlock(0) - assert.Nil(t, block) - assert.Error(t, err) - assert.Contains(t, err.Error(), "error getting specified block: gorilla") + require.Nil(t, block) + require.Error(t, err) + require.Contains(t, err.Error(), "error getting specified block: gorilla") // getting oldest block block, err = o.GetOldestBlock() - assert.Nil(t, block) - assert.Error(t, err) - assert.Contains(t, err.Error(), "error getting oldest block: gorilla") + require.Nil(t, block) + require.Error(t, err) + require.Contains(t, err.Error(), "error getting oldest block: gorilla") // getting newest block block, err = o.GetNewestBlock() - assert.Nil(t, block) - assert.Error(t, err) - assert.Contains(t, err.Error(), "error getting newest block: gorilla") + require.Nil(t, block) + require.Error(t, err) + require.Contains(t, err.Error(), "error getting newest block: gorilla") } func TestSeekHelper(t *testing.T) { t.Run("Standard", func(t *testing.T) { env := seekHelper("channel-id", &ab.SeekPosition{}, nil, nil, false) - assert.NotNil(t, env) + require.NotNil(t, env) seekInfo := &ab.SeekInfo{} _, err := protoutil.UnmarshalEnvelopeOfType(env, cb.HeaderType_DELIVER_SEEK_INFO, seekInfo) - assert.NoError(t, err) - assert.Equal(t, seekInfo.Behavior, ab.SeekInfo_BLOCK_UNTIL_READY) - assert.Equal(t, seekInfo.ErrorResponse, ab.SeekInfo_STRICT) + require.NoError(t, err) + require.Equal(t, seekInfo.Behavior, ab.SeekInfo_BLOCK_UNTIL_READY) + require.Equal(t, seekInfo.ErrorResponse, ab.SeekInfo_STRICT) }) t.Run("BestEffort", func(t *testing.T) { env := seekHelper("channel-id", &ab.SeekPosition{}, nil, nil, true) - assert.NotNil(t, env) + require.NotNil(t, env) seekInfo := &ab.SeekInfo{} _, err := protoutil.UnmarshalEnvelopeOfType(env, cb.HeaderType_DELIVER_SEEK_INFO, seekInfo) - assert.NoError(t, err) - assert.Equal(t, seekInfo.ErrorResponse, ab.SeekInfo_BEST_EFFORT) + require.NoError(t, err) + require.Equal(t, seekInfo.ErrorResponse, ab.SeekInfo_BEST_EFFORT) }) } @@ -133,9 +133,9 @@ func TestNewOrdererDeliverClient(t *testing.T) { viper.Set("orderer.tls.enabled", true) viper.Set("orderer.tls.rootcert.file", "ukelele.crt") oc, err := NewDeliverClientForOrderer("ukelele", &mock.SignerSerializer{}, false) - assert.Nil(t, oc) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to create deliver client for orderer: failed to load config for OrdererClient") + require.Nil(t, oc) + require.Error(t, err) + require.Contains(t, err.Error(), "failed to create deliver client for orderer: failed to load config for OrdererClient") } func TestNewDeliverClientForPeer(t *testing.T) { @@ -148,7 +148,7 @@ func TestNewDeliverClientForPeer(t *testing.T) { viper.Set("peer.tls.enabled", true) viper.Set("peer.tls.rootcert.file", "ukelele.crt") pc, err := NewDeliverClientForPeer("ukelele", &mock.SignerSerializer{}, false) - assert.Nil(t, pc) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to create deliver client for peer: failed to load config for PeerClient") + require.Nil(t, pc) + require.Error(t, err) + require.Contains(t, err.Error(), "failed to create deliver client for peer: failed to load config for PeerClient") } diff --git a/internal/peer/common/networkconfig_test.go b/internal/peer/common/networkconfig_test.go index e4b19822965..a6e4787c06b 100644 --- a/internal/peer/common/networkconfig_test.go +++ b/internal/peer/common/networkconfig_test.go @@ -10,42 +10,42 @@ import ( "testing" "github.com/hyperledger/fabric/internal/peer/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetConfig(t *testing.T) { - assert := assert.New(t) + require := require.New(t) // failure - empty file name networkConfig, err := common.GetConfig("") - assert.Error(err) - assert.Nil(networkConfig) + require.Error(err) + require.Nil(networkConfig) // failure - file doesn't exist networkConfig, err = common.GetConfig("fakefile.yaml") - assert.Error(err) - assert.Nil(networkConfig) + require.Error(err) + require.Nil(networkConfig) // failure - unexpected values for a few bools in the connection profile networkConfig, err = common.GetConfig("testdata/connectionprofile-bad.yaml") - assert.Error(err, "error should have been nil") - assert.Nil(networkConfig, "network config should be set") + require.Error(err, "error should have been nil") + require.Nil(networkConfig, "network config should be set") // success networkConfig, err = common.GetConfig("testdata/connectionprofile.yaml") - assert.NoError(err, "error should have been nil") - assert.NotNil(networkConfig, "network config should be set") - assert.Equal(networkConfig.Name, "connection-profile") + require.NoError(err, "error should have been nil") + require.NotNil(networkConfig, "network config should be set") + require.Equal(networkConfig.Name, "connection-profile") channelPeers := networkConfig.Channels["mychannel"].Peers - assert.Equal(len(channelPeers), 2) + require.Equal(len(channelPeers), 2) for _, peer := range channelPeers { - assert.True(peer.EndorsingPeer) + require.True(peer.EndorsingPeer) } peers := networkConfig.Peers - assert.Equal(len(peers), 2) + require.Equal(len(peers), 2) for _, peer := range peers { - assert.NotEmpty(peer.TLSCACerts.Path) + require.NotEmpty(peer.TLSCACerts.Path) } } diff --git a/internal/peer/common/ordererclient_test.go b/internal/peer/common/ordererclient_test.go index 2c25bc7f313..2e3fc074651 100644 --- a/internal/peer/common/ordererclient_test.go +++ b/internal/peer/common/ordererclient_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/internal/peer/common" "github.com/hyperledger/fabric/internal/pkg/comm" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func initOrdererTestEnv(t *testing.T) (cleanup func()) { @@ -27,7 +27,7 @@ func initOrdererTestEnv(t *testing.T) (cleanup func()) { return func() { err := os.Unsetenv("FABRIC_CFG_PATH") - assert.NoError(t, err) + require.NoError(t, err) viper.Reset() } } @@ -37,45 +37,45 @@ func TestNewOrdererClientFromEnv(t *testing.T) { defer cleanup() oClient, err := common.NewOrdererClientFromEnv() - assert.NoError(t, err) - assert.NotNil(t, oClient) + require.NoError(t, err) + require.NotNil(t, oClient) viper.Set("orderer.tls.enabled", true) oClient, err = common.NewOrdererClientFromEnv() - assert.NoError(t, err) - assert.NotNil(t, oClient) + require.NoError(t, err) + require.NotNil(t, oClient) viper.Set("orderer.tls.enabled", true) viper.Set("orderer.tls.clientAuthRequired", true) oClient, err = common.NewOrdererClientFromEnv() - assert.NoError(t, err) - assert.NotNil(t, oClient) + require.NoError(t, err) + require.NotNil(t, oClient) // bad key file badKeyFile := filepath.Join("certs", "bad.key") viper.Set("orderer.tls.clientKey.file", badKeyFile) oClient, err = common.NewOrdererClientFromEnv() - assert.Contains(t, err.Error(), "failed to create OrdererClient from config") - assert.Nil(t, oClient) + require.Contains(t, err.Error(), "failed to create OrdererClient from config") + require.Nil(t, oClient) // bad cert file path viper.Set("orderer.tls.clientCert.file", "./nocert.crt") oClient, err = common.NewOrdererClientFromEnv() - assert.Contains(t, err.Error(), "unable to load orderer.tls.clientCert.file") - assert.Contains(t, err.Error(), "failed to load config for OrdererClient") - assert.Nil(t, oClient) + require.Contains(t, err.Error(), "unable to load orderer.tls.clientCert.file") + require.Contains(t, err.Error(), "failed to load config for OrdererClient") + require.Nil(t, oClient) // bad key file path viper.Set("orderer.tls.clientKey.file", "./nokey.key") oClient, err = common.NewOrdererClientFromEnv() - assert.Contains(t, err.Error(), "unable to load orderer.tls.clientKey.file") - assert.Nil(t, oClient) + require.Contains(t, err.Error(), "unable to load orderer.tls.clientKey.file") + require.Nil(t, oClient) // bad ca path viper.Set("orderer.tls.rootcert.file", "noroot.crt") oClient, err = common.NewOrdererClientFromEnv() - assert.Contains(t, err.Error(), "unable to load orderer.tls.rootcert.file") - assert.Nil(t, oClient) + require.Contains(t, err.Error(), "unable to load orderer.tls.rootcert.file") + require.Nil(t, oClient) } func TestOrdererClient(t *testing.T) { @@ -99,11 +99,11 @@ func TestOrdererClient(t *testing.T) { t.Fatalf("failed to create OrdererClient for test: %v", err) } bc, err := oClient.Broadcast() - assert.NoError(t, err) - assert.NotNil(t, bc) + require.NoError(t, err) + require.NotNil(t, bc) dc, err := oClient.Deliver() - assert.NoError(t, err) - assert.NotNil(t, dc) + require.NoError(t, err) + require.NotNil(t, dc) } func TestOrdererClientTimeout(t *testing.T) { @@ -116,7 +116,7 @@ func TestOrdererClientTimeout(t *testing.T) { t.Fatalf("failed to create OrdererClient for test: %v", err) } _, err = oClient.Broadcast() - assert.Contains(t, err.Error(), "orderer client failed to connect") + require.Contains(t, err.Error(), "orderer client failed to connect") }) t.Run("OrdererClient.Deliver() timeout", func(t *testing.T) { cleanup := initOrdererTestEnv(t) @@ -127,6 +127,6 @@ func TestOrdererClientTimeout(t *testing.T) { t.Fatalf("failed to create OrdererClient for test: %v", err) } _, err = oClient.Deliver() - assert.Contains(t, err.Error(), "orderer client failed to connect") + require.Contains(t, err.Error(), "orderer client failed to connect") }) } diff --git a/internal/peer/common/ordererenv_test.go b/internal/peer/common/ordererenv_test.go index 934dad7919c..78fa981b83e 100644 --- a/internal/peer/common/ordererenv_test.go +++ b/internal/peer/common/ordererenv_test.go @@ -11,7 +11,7 @@ import ( "github.com/hyperledger/fabric/internal/peer/common" "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestOrdererCmdEnv(t *testing.T) { @@ -28,13 +28,13 @@ func TestOrdererCmdEnv(t *testing.T) { Use: "test", Run: func(cmd *cobra.Command, args []string) { t.Logf("rootcert: %s", viper.GetString("orderer.tls.rootcert.file")) - assert.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) - assert.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) - assert.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) - assert.Equal(t, endpoint, viper.GetString("orderer.address")) - assert.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) - assert.Equal(t, true, viper.GetBool("orderer.tls.enabled")) - assert.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) + require.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) + require.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) + require.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) + require.Equal(t, endpoint, viper.GetString("orderer.address")) + require.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) + require.Equal(t, true, viper.GetBool("orderer.tls.enabled")) + require.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) }, PersistentPreRun: common.SetOrdererEnv, } @@ -45,16 +45,16 @@ func TestOrdererCmdEnv(t *testing.T) { "--certfile", cert, "--orderer", endpoint, "--tls", "--clientauth", "--ordererTLSHostnameOverride", sn}) err := runCmd.Execute() - assert.NoError(t, err) + require.NoError(t, err) // check env one more time t.Logf("address: %s", viper.GetString("orderer.address")) - assert.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) - assert.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) - assert.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) - assert.Equal(t, endpoint, viper.GetString("orderer.address")) - assert.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) - assert.Equal(t, true, viper.GetBool("orderer.tls.enabled")) - assert.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) + require.Equal(t, ca, viper.GetString("orderer.tls.rootcert.file")) + require.Equal(t, key, viper.GetString("orderer.tls.clientKey.file")) + require.Equal(t, cert, viper.GetString("orderer.tls.clientCert.file")) + require.Equal(t, endpoint, viper.GetString("orderer.address")) + require.Equal(t, sn, viper.GetString("orderer.tls.serverhostoverride")) + require.Equal(t, true, viper.GetBool("orderer.tls.enabled")) + require.Equal(t, true, viper.GetBool("orderer.tls.clientAuthRequired")) } diff --git a/internal/peer/common/peerclient_test.go b/internal/peer/common/peerclient_test.go index 478eecdc399..7881153d27b 100644 --- a/internal/peer/common/peerclient_test.go +++ b/internal/peer/common/peerclient_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/internal/peer/common" "github.com/hyperledger/fabric/internal/pkg/comm" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func initPeerTestEnv(t *testing.T) (cleanup func()) { @@ -28,7 +28,7 @@ func initPeerTestEnv(t *testing.T) (cleanup func()) { return func() { err := os.Unsetenv("FABRIC_CFG_PATH") - assert.NoError(t, err) + require.NoError(t, err) viper.Reset() } } @@ -38,45 +38,45 @@ func TestNewPeerClientFromEnv(t *testing.T) { defer cleanup() pClient, err := common.NewPeerClientFromEnv() - assert.NoError(t, err) - assert.NotNil(t, pClient) + require.NoError(t, err) + require.NotNil(t, pClient) viper.Set("peer.tls.enabled", true) pClient, err = common.NewPeerClientFromEnv() - assert.NoError(t, err) - assert.NotNil(t, pClient) + require.NoError(t, err) + require.NotNil(t, pClient) viper.Set("peer.tls.enabled", true) viper.Set("peer.tls.clientAuthRequired", true) pClient, err = common.NewPeerClientFromEnv() - assert.NoError(t, err) - assert.NotNil(t, pClient) + require.NoError(t, err) + require.NotNil(t, pClient) // bad key file badKeyFile := filepath.Join("certs", "bad.key") viper.Set("peer.tls.clientKey.file", badKeyFile) pClient, err = common.NewPeerClientFromEnv() - assert.Contains(t, err.Error(), "failed to create PeerClient from config") - assert.Nil(t, pClient) + require.Contains(t, err.Error(), "failed to create PeerClient from config") + require.Nil(t, pClient) // bad cert file path viper.Set("peer.tls.clientCert.file", "./nocert.crt") pClient, err = common.NewPeerClientFromEnv() - assert.Contains(t, err.Error(), "unable to load peer.tls.clientCert.file") - assert.Contains(t, err.Error(), "failed to load config for PeerClient") - assert.Nil(t, pClient) + require.Contains(t, err.Error(), "unable to load peer.tls.clientCert.file") + require.Contains(t, err.Error(), "failed to load config for PeerClient") + require.Nil(t, pClient) // bad key file path viper.Set("peer.tls.clientKey.file", "./nokey.key") pClient, err = common.NewPeerClientFromEnv() - assert.Contains(t, err.Error(), "unable to load peer.tls.clientKey.file") - assert.Nil(t, pClient) + require.Contains(t, err.Error(), "unable to load peer.tls.clientKey.file") + require.Nil(t, pClient) // bad ca path viper.Set("peer.tls.rootcert.file", "noroot.crt") pClient, err = common.NewPeerClientFromEnv() - assert.Contains(t, err.Error(), "unable to load peer.tls.rootcert.file") - assert.Nil(t, pClient) + require.Contains(t, err.Error(), "unable to load peer.tls.rootcert.file") + require.Nil(t, pClient) } func TestPeerClient(t *testing.T) { @@ -100,18 +100,18 @@ func TestPeerClient(t *testing.T) { t.Fatalf("failed to create PeerClient for test: %v", err) } eClient, err := pClient1.Endorser() - assert.NoError(t, err) - assert.NotNil(t, eClient) + require.NoError(t, err) + require.NotNil(t, eClient) eClient, err = common.GetEndorserClient("", "") - assert.NoError(t, err) - assert.NotNil(t, eClient) + require.NoError(t, err) + require.NotNil(t, eClient) dClient, err := pClient1.Deliver() - assert.NoError(t, err) - assert.NotNil(t, dClient) + require.NoError(t, err) + require.NotNil(t, dClient) dClient, err = common.GetDeliverClient("", "") - assert.NoError(t, err) - assert.NotNil(t, dClient) + require.NoError(t, err) + require.NotNil(t, dClient) } func TestPeerClientTimeout(t *testing.T) { @@ -124,14 +124,14 @@ func TestPeerClientTimeout(t *testing.T) { t.Fatalf("failed to create PeerClient for test: %v", err) } _, err = pClient.Endorser() - assert.Contains(t, err.Error(), "endorser client failed to connect") + require.Contains(t, err.Error(), "endorser client failed to connect") }) t.Run("GetEndorserClient() timeout", func(t *testing.T) { cleanup := initPeerTestEnv(t) viper.Set("peer.client.connTimeout", 10*time.Millisecond) defer cleanup() _, err := common.GetEndorserClient("", "") - assert.Contains(t, err.Error(), "endorser client failed to connect") + require.Contains(t, err.Error(), "endorser client failed to connect") }) t.Run("PeerClient.Deliver() timeout", func(t *testing.T) { cleanup := initPeerTestEnv(t) @@ -142,14 +142,14 @@ func TestPeerClientTimeout(t *testing.T) { t.Fatalf("failed to create PeerClient for test: %v", err) } _, err = pClient.Deliver() - assert.Contains(t, err.Error(), "deliver client failed to connect") + require.Contains(t, err.Error(), "deliver client failed to connect") }) t.Run("GetDeliverClient() timeout", func(t *testing.T) { cleanup := initPeerTestEnv(t) viper.Set("peer.client.connTimeout", 10*time.Millisecond) defer cleanup() _, err := common.GetDeliverClient("", "") - assert.Contains(t, err.Error(), "deliver client failed to connect") + require.Contains(t, err.Error(), "deliver client failed to connect") }) t.Run("PeerClient.Certificate()", func(t *testing.T) { cleanup := initPeerTestEnv(t) @@ -159,14 +159,14 @@ func TestPeerClientTimeout(t *testing.T) { t.Fatalf("failed to create PeerClient for test: %v", err) } cert := pClient.Certificate() - assert.NotNil(t, cert) + require.NotNil(t, cert) }) t.Run("GetCertificate()", func(t *testing.T) { cleanup := initPeerTestEnv(t) defer cleanup() cert, err := common.GetCertificate() - assert.NotEqual(t, cert, &tls.Certificate{}) - assert.NoError(t, err) + require.NotEqual(t, cert, &tls.Certificate{}) + require.NoError(t, err) }) } @@ -179,13 +179,13 @@ func TestNewPeerClientForAddress(t *testing.T) { // success case pClient, err := common.NewPeerClientForAddress("testPeer", "") - assert.NoError(t, err) - assert.NotNil(t, pClient) + require.NoError(t, err) + require.NotNil(t, pClient) // failure - no peer address supplied pClient, err = common.NewPeerClientForAddress("", "") - assert.Contains(t, err.Error(), "peer address must be set") - assert.Nil(t, pClient) + require.Contains(t, err.Error(), "peer address must be set") + require.Nil(t, pClient) // TLS enabled viper.Set("peer.tls.enabled", true) @@ -195,31 +195,31 @@ func TestNewPeerClientForAddress(t *testing.T) { // success case pClient, err = common.NewPeerClientForAddress("tlsPeer", "./testdata/certs/ca.crt") - assert.NoError(t, err) - assert.NotNil(t, pClient) + require.NoError(t, err) + require.NotNil(t, pClient) // failure - bad tls root cert file pClient, err = common.NewPeerClientForAddress("badPeer", "bad.crt") - assert.Contains(t, err.Error(), "unable to load TLS root cert file from bad.crt") - assert.Nil(t, pClient) + require.Contains(t, err.Error(), "unable to load TLS root cert file from bad.crt") + require.Nil(t, pClient) // failure - empty tls root cert file pClient, err = common.NewPeerClientForAddress("badPeer", "") - assert.Contains(t, err.Error(), "tls root cert file must be set") - assert.Nil(t, pClient) + require.Contains(t, err.Error(), "tls root cert file must be set") + require.Nil(t, pClient) // failure - empty tls root cert file viper.Set("peer.tls.clientCert.file", "./nocert.crt") pClient, err = common.NewPeerClientForAddress("badPeer", "") - assert.Contains(t, err.Error(), "unable to load peer.tls.clientCert.file") - assert.Nil(t, pClient) + require.Contains(t, err.Error(), "unable to load peer.tls.clientCert.file") + require.Nil(t, pClient) // bad key file viper.Set("peer.tls.clientKey.file", "./nokey.key") viper.Set("peer.client.connTimeout", time.Duration(0)) pClient, err = common.NewPeerClientForAddress("badPeer", "") - assert.Contains(t, err.Error(), "unable to load peer.tls.clientKey.file") - assert.Nil(t, pClient) + require.Contains(t, err.Error(), "unable to load peer.tls.clientKey.file") + require.Nil(t, pClient) } @@ -231,10 +231,10 @@ func TestGetClients_AddressError(t *testing.T) { // failure eClient, err := common.GetEndorserClient("peer0", "") - assert.Contains(t, err.Error(), "tls root cert file must be set") - assert.Nil(t, eClient) + require.Contains(t, err.Error(), "tls root cert file must be set") + require.Nil(t, eClient) dClient, err := common.GetDeliverClient("peer0", "") - assert.Contains(t, err.Error(), "tls root cert file must be set") - assert.Nil(t, dClient) + require.Contains(t, err.Error(), "tls root cert file must be set") + require.Nil(t, dClient) } diff --git a/internal/peer/gossip/mcs_test.go b/internal/peer/gossip/mcs_test.go index e59a388aa31..b0dffd244b8 100644 --- a/internal/peer/gossip/mcs_test.go +++ b/internal/peer/gossip/mcs_test.go @@ -27,8 +27,8 @@ import ( "github.com/hyperledger/fabric/msp" "github.com/hyperledger/fabric/msp/mgmt" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mocks/policy_manager.go -fake-name PolicyManager . policyManager @@ -50,7 +50,7 @@ func TestPKIidOfCert(t *testing.T) { signer := &mocks.SignerSerializer{} signer.SerializeReturns([]byte("Alice"), nil) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) msgCryptoService := NewMCS( &mocks.ChannelPolicyManagerGetterWithManager{}, signer, @@ -62,16 +62,16 @@ func TestPKIidOfCert(t *testing.T) { pkid := msgCryptoService.GetPKIidOfCert(peerIdentity) // Check pkid is not nil - assert.NotNil(t, pkid, "PKID must be different from nil") + require.NotNil(t, pkid, "PKID must be different from nil") // Check that pkid is correctly computed id, err := deserializersManager.Deserialize(peerIdentity) - assert.NoError(t, err, "Failed getting validated identity from [% x]", []byte(peerIdentity)) + require.NoError(t, err, "Failed getting validated identity from [% x]", []byte(peerIdentity)) idRaw := append([]byte(id.Mspid), id.IdBytes...) - assert.NoError(t, err, "Failed marshalling identity identifier [% x]: [%s]", peerIdentity, err) + require.NoError(t, err, "Failed marshalling identity identifier [% x]: [%s]", peerIdentity, err) h := sha256.New() h.Write(idRaw) digest := h.Sum(nil) - assert.Equal(t, digest, []byte(pkid), "PKID must be the SHA2-256 of peerIdentity") + require.Equal(t, digest, []byte(pkid), "PKID must be the SHA2-256 of peerIdentity") // The PKI-ID is calculated by concatenating the MspId with IdBytes. // Ensure that additional fields haven't been introduced in the code @@ -82,18 +82,18 @@ func TestPKIidOfCert(t *testing.T) { fieldsThatStartWithXXX++ } } - assert.Equal(t, 2+fieldsThatStartWithXXX, v.NumField()) + require.Equal(t, 2+fieldsThatStartWithXXX, v.NumField()) } func TestPKIidOfNil(t *testing.T) { signer := &mocks.SignerSerializer{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) msgCryptoService := NewMCS(&mocks.ChannelPolicyManagerGetter{}, signer, mgmt.NewDeserializersManager(cryptoProvider), cryptoProvider) pkid := msgCryptoService.GetPKIidOfCert(nil) // Check pkid is not nil - assert.Nil(t, pkid, "PKID must be nil") + require.Nil(t, pkid, "PKID must be nil") } func TestValidateIdentity(t *testing.T) { @@ -106,7 +106,7 @@ func TestValidateIdentity(t *testing.T) { signer := &mocks.SignerSerializer{} signer.SerializeReturns([]byte("Charlie"), nil) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) msgCryptoService := NewMCS( &mocks.ChannelPolicyManagerGetterWithManager{}, signer, @@ -115,34 +115,34 @@ func TestValidateIdentity(t *testing.T) { ) err = msgCryptoService.ValidateIdentity([]byte("Alice")) - assert.NoError(t, err) + require.NoError(t, err) err = msgCryptoService.ValidateIdentity([]byte("Bob")) - assert.NoError(t, err) + require.NoError(t, err) err = msgCryptoService.ValidateIdentity([]byte("Charlie")) - assert.Error(t, err) + require.Error(t, err) err = msgCryptoService.ValidateIdentity(nil) - assert.Error(t, err) + require.Error(t, err) // Now, pretend the identities are not well formed deserializersManager.ChannelDeserializers["A"].(*mocks.IdentityDeserializer).On("IsWellFormed", mock.Anything).Return(errors.New("invalid form")) err = msgCryptoService.ValidateIdentity([]byte("Bob")) - assert.Error(t, err) - assert.Equal(t, "identity is not well formed: invalid form", err.Error()) + require.Error(t, err) + require.Equal(t, "identity is not well formed: invalid form", err.Error()) deserializersManager.LocalDeserializer.(*mocks.IdentityDeserializer).On("IsWellFormed", mock.Anything).Return(errors.New("invalid form")) err = msgCryptoService.ValidateIdentity([]byte("Alice")) - assert.Error(t, err) - assert.Equal(t, "identity is not well formed: invalid form", err.Error()) + require.Error(t, err) + require.Equal(t, "identity is not well formed: invalid form", err.Error()) } func TestSign(t *testing.T) { signer := &mocks.SignerSerializer{} signer.SignReturns([]byte("signature"), nil) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) msgCryptoService := NewMCS( &mocks.ChannelPolicyManagerGetter{}, @@ -153,8 +153,8 @@ func TestSign(t *testing.T) { msg := []byte("Hello World!!!") sigma, err := msgCryptoService.Sign(msg) - assert.NoError(t, err, "Failed generating signature") - assert.NotNil(t, sigma, "Signature must be different from nil") + require.NoError(t, err, "Failed generating signature") + require.NotNil(t, sigma, "Signature must be different from nil") } func TestVerify(t *testing.T) { @@ -162,7 +162,7 @@ func TestVerify(t *testing.T) { signer.SerializeReturns([]byte("Alice"), nil) signer.SignReturns([]byte("msg1"), nil) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) msgCryptoService := NewMCS( &mocks.ChannelPolicyManagerGetterWithManager{ Managers: map[string]policies.Manager{ @@ -189,25 +189,25 @@ func TestVerify(t *testing.T) { msg := []byte("msg1") sigma, err := msgCryptoService.Sign(msg) - assert.NoError(t, err, "Failed generating signature") + require.NoError(t, err, "Failed generating signature") err = msgCryptoService.Verify(api.PeerIdentityType("Alice"), sigma, msg) - assert.NoError(t, err, "Alice should verify the signature") + require.NoError(t, err, "Alice should verify the signature") err = msgCryptoService.Verify(api.PeerIdentityType("Bob"), sigma, msg) - assert.Error(t, err, "Bob should not verify the signature") + require.Error(t, err, "Bob should not verify the signature") err = msgCryptoService.Verify(api.PeerIdentityType("Charlie"), sigma, msg) - assert.Error(t, err, "Charlie should not verify the signature") + require.Error(t, err, "Charlie should not verify the signature") sigma, err = msgCryptoService.Sign(msg) - assert.NoError(t, err) + require.NoError(t, err) err = msgCryptoService.Verify(api.PeerIdentityType("Dave"), sigma, msg) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Could not acquire policy manager") + require.Error(t, err) + require.Contains(t, err.Error(), "Could not acquire policy manager") // Check invalid args - assert.Error(t, msgCryptoService.Verify(nil, sigma, msg)) + require.Error(t, msgCryptoService.Verify(nil, sigma, msg)) } func TestVerifyBlock(t *testing.T) { @@ -231,7 +231,7 @@ func TestVerifyBlock(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) msgCryptoService := NewMCS( policyManagerGetter, aliceSigner, @@ -252,27 +252,27 @@ func TestVerifyBlock(t *testing.T) { policyManagerGetter.Managers["D"].(*mocks.ChannelPolicyManager).Policy.(*mocks.Policy).Deserializer.(*mocks.IdentityDeserializer).Msg = msg2 // - Verify block - assert.NoError(t, msgCryptoService.VerifyBlock([]byte("C"), 42, blockRaw)) + require.NoError(t, msgCryptoService.VerifyBlock([]byte("C"), 42, blockRaw)) // Wrong sequence number claimed err = msgCryptoService.VerifyBlock([]byte("C"), 43, blockRaw) - assert.Error(t, err) - assert.Contains(t, err.Error(), "but actual seqNum inside block is") + require.Error(t, err) + require.Contains(t, err.Error(), "but actual seqNum inside block is") delete(policyManagerGetter.Managers, "D") nilPolMgrErr := msgCryptoService.VerifyBlock([]byte("D"), 42, blockRaw2) - assert.Contains(t, nilPolMgrErr.Error(), "Could not acquire policy manager") - assert.Error(t, nilPolMgrErr) - assert.Error(t, msgCryptoService.VerifyBlock([]byte("A"), 42, blockRaw)) - assert.Error(t, msgCryptoService.VerifyBlock([]byte("B"), 42, blockRaw)) + require.Contains(t, nilPolMgrErr.Error(), "Could not acquire policy manager") + require.Error(t, nilPolMgrErr) + require.Error(t, msgCryptoService.VerifyBlock([]byte("A"), 42, blockRaw)) + require.Error(t, msgCryptoService.VerifyBlock([]byte("B"), 42, blockRaw)) // - Prepare testing invalid block (wrong data has), Alice signs it. blockRaw, msg = mockBlock(t, "C", 42, aliceSigner, []byte{0}) policyManagerGetter.Managers["C"].(*mocks.ChannelPolicyManager).Policy.(*mocks.Policy).Deserializer.(*mocks.IdentityDeserializer).Msg = msg // - Verify block - assert.Error(t, msgCryptoService.VerifyBlock([]byte("C"), 42, blockRaw)) + require.Error(t, msgCryptoService.VerifyBlock([]byte("C"), 42, blockRaw)) // Check invalid args - assert.Error(t, msgCryptoService.VerifyBlock([]byte("C"), 42, &common.Block{})) + require.Error(t, msgCryptoService.VerifyBlock([]byte("C"), 42, &common.Block{})) } func mockBlock(t *testing.T, channel string, seqNum uint64, localSigner *mocks.SignerSerializer, dataHash []byte) (*common.Block, []byte) { @@ -281,7 +281,7 @@ func mockBlock(t *testing.T, channel string, seqNum uint64, localSigner *mocks.S // Add a fake transaction to the block referring channel "C" sProp, _ := protoutil.MockSignedEndorserProposalOrPanic(channel, &protospeer.ChaincodeSpec{}, []byte("transactor"), []byte("transactor's signature")) sPropRaw, err := protoutil.Marshal(sProp) - assert.NoError(t, err, "Failed marshalling signed proposal") + require.NoError(t, err, "Failed marshalling signed proposal") block.Data.Data = [][]byte{sPropRaw} // Compute hash of block.Data and put into the Header @@ -293,7 +293,7 @@ func mockBlock(t *testing.T, channel string, seqNum uint64, localSigner *mocks.S // Add signer's signature to the block shdr, err := protoutil.NewSignatureHeader(localSigner) - assert.NoError(t, err, "Failed generating signature header") + require.NoError(t, err, "Failed generating signature header") blockSignature := &common.MetadataSignature{ SignatureHeader: protoutil.MarshalOrPanic(shdr), @@ -306,7 +306,7 @@ func mockBlock(t *testing.T, channel string, seqNum uint64, localSigner *mocks.S msg := util.ConcatenateBytes(blockSignatureValue, blockSignature.SignatureHeader, protoutil.BlockHeaderBytes(block.Header)) localSigner.SignReturns(msg, nil) blockSignature.Signature, err = localSigner.Sign(msg) - assert.NoError(t, err, "Failed signing block") + require.NoError(t, err, "Failed signing block") block.Metadata.Metadata[common.BlockMetadataIndex_SIGNATURES] = protoutil.MarshalOrPanic(&common.Metadata{ Value: blockSignatureValue, @@ -354,7 +354,7 @@ func TestExpiration(t *testing.T) { }, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) msgCryptoService := NewMCS( &mocks.ChannelPolicyManagerGetterWithManager{}, &mocks.SignerSerializer{}, @@ -364,18 +364,18 @@ func TestExpiration(t *testing.T) { // Green path I check the expiration date is as expected exp, err := msgCryptoService.Expiration(x509IdentityBytes) - assert.NoError(t, err) - assert.Equal(t, expirationDate.Second(), exp.Second()) + require.NoError(t, err) + require.Equal(t, expirationDate.Second(), exp.Second()) // Green path II - a non-x509 identity has a zero expiration time exp, err = msgCryptoService.Expiration(nonX509IdentityBytes) - assert.NoError(t, err) - assert.Zero(t, exp) + require.NoError(t, err) + require.Zero(t, exp) // Bad path I - corrupt the x509 identity and make sure error is returned x509IdentityBytes = append(x509IdentityBytes, 0, 0, 0, 0, 0, 0) exp, err = msgCryptoService.Expiration(x509IdentityBytes) - assert.Error(t, err) - assert.Contains(t, err.Error(), "No MSP found able to do that") - assert.Zero(t, exp) + require.Error(t, err) + require.Contains(t, err.Error(), "No MSP found able to do that") + require.Zero(t, exp) } diff --git a/internal/peer/gossip/sa_test.go b/internal/peer/gossip/sa_test.go index 9fd815c4739..8e6b53ec281 100644 --- a/internal/peer/gossip/sa_test.go +++ b/internal/peer/gossip/sa_test.go @@ -12,8 +12,8 @@ import ( "github.com/hyperledger/fabric/internal/peer/gossip/mocks" "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestMspSecurityAdvisor_OrgByPeerIdentity(t *testing.T) { @@ -25,8 +25,8 @@ func TestMspSecurityAdvisor_OrgByPeerIdentity(t *testing.T) { } advisor := NewSecurityAdvisor(dm) - assert.NotNil(t, advisor.OrgByPeerIdentity([]byte("Alice"))) - assert.NotNil(t, advisor.OrgByPeerIdentity([]byte("Bob"))) - assert.Nil(t, advisor.OrgByPeerIdentity([]byte("Charlie"))) - assert.Nil(t, advisor.OrgByPeerIdentity(nil)) + require.NotNil(t, advisor.OrgByPeerIdentity([]byte("Alice"))) + require.NotNil(t, advisor.OrgByPeerIdentity([]byte("Bob"))) + require.Nil(t, advisor.OrgByPeerIdentity([]byte("Charlie"))) + require.Nil(t, advisor.OrgByPeerIdentity(nil)) } diff --git a/internal/peer/lifecycle/chaincode/client_connections_test.go b/internal/peer/lifecycle/chaincode/client_connections_test.go index ab8a59e00c4..15c265105b2 100644 --- a/internal/peer/lifecycle/chaincode/client_connections_test.go +++ b/internal/peer/lifecycle/chaincode/client_connections_test.go @@ -10,13 +10,13 @@ import ( "testing" "github.com/hyperledger/fabric/bccsp/sw" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewClientConnections(t *testing.T) { - assert := assert.New(t) + require := require.New(t) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.Nil(err) + require.Nil(err) t.Run("bad connection profile", func(t *testing.T) { input := &ClientConnectionsInput{ @@ -26,9 +26,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.Contains(err.Error(), "failed to validate peer connection parameters: error unmarshaling YAML") + require.Nil(c) + require.Error(err) + require.Contains(err.Error(), "failed to validate peer connection parameters: error unmarshaling YAML") }) t.Run("uneven connection profile", func(t *testing.T) { @@ -40,9 +40,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.EqualError(err, "failed to validate peer connection parameters: peer 'peer0.org2.example.com' doesn't have associated peer config") + require.Nil(c) + require.Error(err) + require.EqualError(err, "failed to validate peer connection parameters: peer 'peer0.org2.example.com' doesn't have associated peer config") }) t.Run("good connection profile - two peers", func(t *testing.T) { @@ -54,9 +54,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.Contains(err.Error(), "failed to retrieve endorser client") + require.Nil(c) + require.Error(err) + require.Contains(err.Error(), "failed to retrieve endorser client") }) t.Run("more than one peer not allowed", func(t *testing.T) { @@ -67,9 +67,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.EqualError(err, "failed to validate peer connection parameters: 'install' command supports one peer. 2 peers provided") + require.Nil(c) + require.Error(err) + require.EqualError(err, "failed to validate peer connection parameters: 'install' command supports one peer. 2 peers provided") }) t.Run("more TLS root cert files than peer addresses and TLS enabled", func(t *testing.T) { @@ -82,9 +82,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.EqualError(err, "failed to validate peer connection parameters: number of peer addresses (1) does not match the number of TLS root cert files (2)") + require.Nil(c) + require.Error(err) + require.EqualError(err, "failed to validate peer connection parameters: number of peer addresses (1) does not match the number of TLS root cert files (2)") }) t.Run("failure connecting to endorser - TLS enabled", func(t *testing.T) { @@ -97,9 +97,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.Contains(err.Error(), "failed to retrieve endorser client") + require.Nil(c) + require.Error(err) + require.Contains(err.Error(), "failed to retrieve endorser client") }) t.Run("failure connecting to endorser - TLS disabled", func(t *testing.T) { @@ -112,9 +112,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.Contains(err.Error(), "failed to retrieve endorser client") + require.Nil(c) + require.Error(err) + require.Contains(err.Error(), "failed to retrieve endorser client") }) t.Run("no endorser clients - programming bug", func(t *testing.T) { @@ -124,9 +124,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.Contains(err.Error(), "no endorser clients retrieved") + require.Nil(c) + require.Error(err) + require.Contains(err.Error(), "no endorser clients retrieved") }) t.Run("install using connection profile", func(t *testing.T) { @@ -138,9 +138,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.Contains(err.Error(), "failed to retrieve endorser client") + require.Nil(c) + require.Error(err) + require.Contains(err.Error(), "failed to retrieve endorser client") }) t.Run("install using connection profile - no target peer specified", func(t *testing.T) { @@ -152,9 +152,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.Contains(err.Error(), "failed to validate peer connection parameters: --targetPeer must be specified for channel-less operation using connection profile") + require.Nil(c) + require.Error(err) + require.Contains(err.Error(), "failed to validate peer connection parameters: --targetPeer must be specified for channel-less operation using connection profile") }) t.Run("install using connection profile - target peer doesn't exist", func(t *testing.T) { @@ -166,9 +166,9 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.Contains(err.Error(), "failed to validate peer connection parameters: peer 'not-a-peer' doesn't have associated peer config") + require.Nil(c) + require.Error(err) + require.Contains(err.Error(), "failed to validate peer connection parameters: peer 'not-a-peer' doesn't have associated peer config") }) t.Run("failure connecting to orderer", func(t *testing.T) { @@ -180,8 +180,8 @@ func TestNewClientConnections(t *testing.T) { } c, err := NewClientConnections(input, cryptoProvider) - assert.Nil(c) - assert.Error(err) - assert.Contains(err.Error(), "cannot obtain orderer endpoint, empty endorser list") + require.Nil(c) + require.Error(err) + require.Contains(err.Error(), "cannot obtain orderer endpoint, empty endorser list") }) } diff --git a/internal/peer/node/config_test.go b/internal/peer/node/config_test.go index 756c1034ff4..463e012505b 100644 --- a/internal/peer/node/config_test.go +++ b/internal/peer/node/config_test.go @@ -12,7 +12,7 @@ import ( "github.com/hyperledger/fabric/core/ledger" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestLedgerConfig(t *testing.T) { @@ -156,7 +156,7 @@ func TestLedgerConfig(t *testing.T) { viper.Set(k, v) } conf := ledgerConfig() - assert.EqualValues(t, _test.expected, conf) + require.EqualValues(t, _test.expected, conf) }) } } diff --git a/internal/peer/node/rebuild_dbs_test.go b/internal/peer/node/rebuild_dbs_test.go index b44e91af261..0e7ace868ed 100644 --- a/internal/peer/node/rebuild_dbs_test.go +++ b/internal/peer/node/rebuild_dbs_test.go @@ -16,7 +16,7 @@ import ( "github.com/hyperledger/fabric/core/config" "github.com/hyperledger/fabric/core/ledger/kvledger" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestRebuildDBsCmd(t *testing.T) { @@ -35,22 +35,22 @@ func TestRebuildDBsCmd(t *testing.T) { dbPaths := []string{bookkeeperDBPath, configHistoryDBPath, historyDBPath, stateDBPath, blockstoreIndexDBPath} for _, dbPath := range dbPaths { - assert.NoError(t, os.MkdirAll(dbPath, 0755)) - assert.NoError(t, ioutil.WriteFile(path.Join(dbPath, "dummyfile.txt"), []byte("this is a dummy file for test"), 0644)) + require.NoError(t, os.MkdirAll(dbPath, 0755)) + require.NoError(t, ioutil.WriteFile(path.Join(dbPath, "dummyfile.txt"), []byte("this is a dummy file for test"), 0644)) } // check dbs exist before upgrade for _, dbPath := range dbPaths { _, err := os.Stat(dbPath) - assert.False(t, os.IsNotExist(err)) + require.False(t, os.IsNotExist(err)) } cmd := rebuildDBsCmd() - assert.NoError(t, cmd.Execute()) + require.NoError(t, cmd.Execute()) // check dbs do not exist after upgrade for _, dbPath := range dbPaths { _, err := os.Stat(dbPath) - assert.True(t, os.IsNotExist(err)) + require.True(t, os.IsNotExist(err)) } } diff --git a/internal/peer/node/reset_test.go b/internal/peer/node/reset_test.go index b8cc602c04b..0a365a6836c 100644 --- a/internal/peer/node/reset_test.go +++ b/internal/peer/node/reset_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/core/config" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestResetCmd(t *testing.T) { @@ -27,17 +27,17 @@ func TestResetCmd(t *testing.T) { viper.Set("logging.ledger", "INFO") rootFSPath := filepath.Join(config.GetPath("peer.fileSystemPath"), "ledgersData") historyDBPath := filepath.Join(rootFSPath, "historyLeveldb") - assert.NoError(t, + require.NoError(t, os.MkdirAll(historyDBPath, 0755), ) - assert.NoError(t, + require.NoError(t, ioutil.WriteFile(path.Join(historyDBPath, "dummyfile.txt"), []byte("this is a dummy file for test"), 0644), ) cmd := resetCmd() _, err := os.Stat(historyDBPath) - assert.False(t, os.IsNotExist(err)) - assert.NoError(t, cmd.Execute()) + require.False(t, os.IsNotExist(err)) + require.NoError(t, cmd.Execute()) _, err = os.Stat(historyDBPath) - assert.True(t, os.IsNotExist(err)) + require.True(t, os.IsNotExist(err)) } diff --git a/internal/peer/node/rollback_test.go b/internal/peer/node/rollback_test.go index cbfdb2c76f4..01ab4508fac 100644 --- a/internal/peer/node/rollback_test.go +++ b/internal/peer/node/rollback_test.go @@ -9,7 +9,7 @@ package node import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestRollbackCmd(t *testing.T) { @@ -18,7 +18,7 @@ func TestRollbackCmd(t *testing.T) { args := []string{} cmd.SetArgs(args) err := cmd.Execute() - assert.Equal(t, "Must supply channel ID", err.Error()) + require.Equal(t, "Must supply channel ID", err.Error()) }) t.Run("when the specified channelID does not exist", func(t *testing.T) { @@ -27,6 +27,6 @@ func TestRollbackCmd(t *testing.T) { cmd.SetArgs(args) err := cmd.Execute() expectedErr := "ledgerID [ch1] does not exist" - assert.Equal(t, expectedErr, err.Error()) + require.Equal(t, expectedErr, err.Error()) }) } diff --git a/internal/peer/node/start_test.go b/internal/peer/node/start_test.go index ca68bafaecd..9b7227824bf 100644 --- a/internal/peer/node/start_test.go +++ b/internal/peer/node/start_test.go @@ -22,7 +22,7 @@ import ( "github.com/mitchellh/mapstructure" . "github.com/onsi/gomega" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -46,7 +46,7 @@ func TestStartCmd(t *testing.T) { go func() { cmd := startCmd() - assert.NoError(t, cmd.Execute(), "expected to successfully start command") + require.NoError(t, cmd.Execute(), "expected to successfully start command") }() grpcProbe := func(addr string) bool { @@ -71,14 +71,14 @@ func TestHandlerMap(t *testing.T) { ` viper.SetConfigType("yaml") err := viper.ReadConfig(bytes.NewBuffer([]byte(config1))) - assert.NoError(t, err) + require.NoError(t, err) var libConf library.Config err = mapstructure.Decode(viper.Get("peer.handlers"), &libConf) - assert.NoError(t, err) - assert.Len(t, libConf.AuthFilters, 2, "expected two filters") - assert.Equal(t, "/opt/lib/filter1.so", libConf.AuthFilters[0].Library) - assert.Equal(t, "filter2", libConf.AuthFilters[1].Name) + require.NoError(t, err) + require.Len(t, libConf.AuthFilters, 2, "expected two filters") + require.Equal(t, "/opt/lib/filter1.so", libConf.AuthFilters[0].Library) + require.Equal(t, "filter2", libConf.AuthFilters[1].Name) } func TestComputeChaincodeEndpoint(t *testing.T) { @@ -145,11 +145,11 @@ func TestComputeChaincodeEndpoint(t *testing.T) { t.Run(strconv.Itoa(i), func(t *testing.T) { ccEndpoint, err := computeChaincodeEndpoint(tt.chaincodeAddress, tt.chaincodeListenAddress, tt.peerAddress) if tt.expectedError != "" { - assert.EqualErrorf(t, err, tt.expectedError, "peerAddress: %q, ccListenAddr: %q, ccAddr: %q", tt.peerAddress, tt.chaincodeListenAddress, tt.chaincodeAddress) + require.EqualErrorf(t, err, tt.expectedError, "peerAddress: %q, ccListenAddr: %q, ccAddr: %q", tt.peerAddress, tt.chaincodeListenAddress, tt.chaincodeAddress) return } - assert.NoErrorf(t, err, "peerAddress: %q, ccListenAddr: %q, ccAddr: %q", tt.peerAddress, tt.chaincodeListenAddress, tt.chaincodeAddress) - assert.Equalf(t, tt.expectedEndpoint, ccEndpoint, "peerAddress: %q, ccListenAddr: %q, ccAddr: %q", tt.peerAddress, tt.chaincodeListenAddress, tt.chaincodeAddress) + require.NoErrorf(t, err, "peerAddress: %q, ccListenAddr: %q, ccAddr: %q", tt.peerAddress, tt.chaincodeListenAddress, tt.chaincodeAddress) + require.Equalf(t, tt.expectedEndpoint, ccEndpoint, "peerAddress: %q, ccListenAddr: %q, ccAddr: %q", tt.peerAddress, tt.chaincodeListenAddress, tt.chaincodeAddress) }) } } @@ -157,13 +157,13 @@ func TestComputeChaincodeEndpoint(t *testing.T) { func TestGetDockerHostConfig(t *testing.T) { testutil.SetupTestConfig() hostConfig := getDockerHostConfig() - assert.NotNil(t, hostConfig) - assert.Equal(t, "host", hostConfig.NetworkMode) - assert.Equal(t, "json-file", hostConfig.LogConfig.Type) - assert.Equal(t, "50m", hostConfig.LogConfig.Config["max-size"]) - assert.Equal(t, "5", hostConfig.LogConfig.Config["max-file"]) - assert.Equal(t, int64(1024*1024*1024*2), hostConfig.Memory) - assert.Equal(t, int64(0), hostConfig.CPUShares) + require.NotNil(t, hostConfig) + require.Equal(t, "host", hostConfig.NetworkMode) + require.Equal(t, "json-file", hostConfig.LogConfig.Type) + require.Equal(t, "50m", hostConfig.LogConfig.Config["max-size"]) + require.Equal(t, "5", hostConfig.LogConfig.Config["max-file"]) + require.Equal(t, int64(1024*1024*1024*2), hostConfig.Memory) + require.Equal(t, int64(0), hostConfig.CPUShares) } func TestResetLoop(t *testing.T) { @@ -213,6 +213,6 @@ func TestResetLoop(t *testing.T) { } resetLoop(resetFilter, heights, ledgerIDs, getLedger.Spy, 1*time.Second) - assert.False(t, resetFilter.reject) - assert.Equal(t, 4, peerLedger.GetBlockchainInfoCallCount()) + require.False(t, resetFilter.reject) + require.Equal(t, 4, peerLedger.GetBlockchainInfoCallCount()) } diff --git a/internal/peer/node/upgrade_dbs_test.go b/internal/peer/node/upgrade_dbs_test.go index 05d05e7278d..c9bb12286f7 100644 --- a/internal/peer/node/upgrade_dbs_test.go +++ b/internal/peer/node/upgrade_dbs_test.go @@ -11,7 +11,7 @@ import ( "testing" "github.com/spf13/viper" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestUpgradeDBsCmd(t *testing.T) { @@ -21,5 +21,5 @@ func TestUpgradeDBsCmd(t *testing.T) { defer os.RemoveAll(testPath) cmd := upgradeDBsCmd() - assert.NoError(t, cmd.Execute()) + require.NoError(t, cmd.Execute()) } diff --git a/internal/peer/version/version_test.go b/internal/peer/version/version_test.go index 77e74d1a779..1f9aa21a841 100644 --- a/internal/peer/version/version_test.go +++ b/internal/peer/version/version_test.go @@ -9,17 +9,17 @@ package version import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCmd(t *testing.T) { cmd := Cmd() - assert.NoError(t, cmd.Execute(), "expected version command to succeed") + require.NoError(t, cmd.Execute(), "expected version command to succeed") } func TestCmdWithTrailingArgs(t *testing.T) { cmd := Cmd() args := []string{"trailingargs"} cmd.SetArgs(args) - assert.EqualError(t, cmd.Execute(), "trailing args detected") + require.EqualError(t, cmd.Execute(), "trailing args detected") } diff --git a/internal/pkg/comm/client_test.go b/internal/pkg/comm/client_test.go index 860485b1b1b..fa5c7338e8c 100644 --- a/internal/pkg/comm/client_test.go +++ b/internal/pkg/comm/client_test.go @@ -25,7 +25,6 @@ import ( "github.com/hyperledger/fabric/internal/pkg/comm" "github.com/hyperledger/fabric/internal/pkg/comm/testpb" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/connectivity" @@ -47,20 +46,20 @@ func TestNewGRPCClient_GoodConfig(t *testing.T) { config := comm.ClientConfig{} client, err := comm.NewGRPCClient(config) - assert.NoError(t, err) - assert.Equal(t, tls.Certificate{}, client.Certificate()) - assert.False(t, client.TLSEnabled()) - assert.False(t, client.MutualTLSRequired()) + require.NoError(t, err) + require.Equal(t, tls.Certificate{}, client.Certificate()) + require.False(t, client.TLSEnabled()) + require.False(t, client.MutualTLSRequired()) secOpts := comm.SecureOptions{ UseTLS: false, } config.SecOpts = secOpts client, err = comm.NewGRPCClient(config) - assert.NoError(t, err) - assert.Equal(t, tls.Certificate{}, client.Certificate()) - assert.False(t, client.TLSEnabled()) - assert.False(t, client.MutualTLSRequired()) + require.NoError(t, err) + require.Equal(t, tls.Certificate{}, client.Certificate()) + require.False(t, client.TLSEnabled()) + require.False(t, client.MutualTLSRequired()) secOpts = comm.SecureOptions{ UseTLS: true, @@ -69,9 +68,9 @@ func TestNewGRPCClient_GoodConfig(t *testing.T) { } config.SecOpts = secOpts client, err = comm.NewGRPCClient(config) - assert.NoError(t, err) - assert.True(t, client.TLSEnabled()) - assert.False(t, client.MutualTLSRequired()) + require.NoError(t, err) + require.True(t, client.TLSEnabled()) + require.False(t, client.MutualTLSRequired()) secOpts = comm.SecureOptions{ Certificate: testCerts.certPEM, @@ -82,10 +81,10 @@ func TestNewGRPCClient_GoodConfig(t *testing.T) { } config.SecOpts = secOpts client, err = comm.NewGRPCClient(config) - assert.NoError(t, err) - assert.True(t, client.TLSEnabled()) - assert.True(t, client.MutualTLSRequired()) - assert.Equal(t, testCerts.clientCert, client.Certificate()) + require.NoError(t, err) + require.True(t, client.TLSEnabled()) + require.True(t, client.MutualTLSRequired()) + require.Equal(t, testCerts.clientCert, client.Certificate()) } func TestNewGRPCClient_BadConfig(t *testing.T) { @@ -100,7 +99,7 @@ func TestNewGRPCClient_BadConfig(t *testing.T) { }, } _, err := comm.NewGRPCClient(config) - assert.Contains(t, err.Error(), "error adding root certificate") + require.Contains(t, err.Error(), "error adding root certificate") // missing key missing := "both Key and Certificate are required when using mutual TLS" @@ -110,7 +109,7 @@ func TestNewGRPCClient_BadConfig(t *testing.T) { RequireClientCert: true, } _, err = comm.NewGRPCClient(config) - assert.Equal(t, missing, err.Error()) + require.Equal(t, missing, err.Error()) // missing cert config.SecOpts = comm.SecureOptions{ @@ -119,7 +118,7 @@ func TestNewGRPCClient_BadConfig(t *testing.T) { RequireClientCert: true, } _, err = comm.NewGRPCClient(config) - assert.Equal(t, missing, err.Error()) + require.Equal(t, missing, err.Error()) // bad key failed := "failed to load client certificate" @@ -130,7 +129,7 @@ func TestNewGRPCClient_BadConfig(t *testing.T) { RequireClientCert: true, } _, err = comm.NewGRPCClient(config) - assert.Contains(t, err.Error(), failed) + require.Contains(t, err.Error(), failed) // bad cert config.SecOpts = comm.SecureOptions{ @@ -140,7 +139,7 @@ func TestNewGRPCClient_BadConfig(t *testing.T) { RequireClientCert: true, } _, err = comm.NewGRPCClient(config) - assert.Contains(t, err.Error(), failed) + require.Contains(t, err.Error(), failed) } func TestNewConnection(t *testing.T) { @@ -353,11 +352,11 @@ func TestNewConnection(t *testing.T) { } conn, err := client.NewConnection(address) if test.success { - assert.NoError(t, err) - assert.NotNil(t, conn) + require.NoError(t, err) + require.NotNil(t, conn) } else { t.Log(errors.WithStack(err)) - assert.Regexp(t, test.errorMsg, err.Error()) + require.Regexp(t, test.errorMsg, err.Error()) } }) } @@ -397,8 +396,8 @@ func TestSetServerRootCAs(t *testing.T) { // initial config should work t.Log("running initial good config") conn, err := client.NewConnection(address) - assert.NoError(t, err) - assert.NotNil(t, conn) + require.NoError(t, err) + require.NotNil(t, conn) if conn != nil { conn.Close() } @@ -406,19 +405,19 @@ func TestSetServerRootCAs(t *testing.T) { // no root testCerts t.Log("running bad config") err = client.SetServerRootCAs([][]byte{}) - assert.NoError(t, err) + require.NoError(t, err) // now connection should fail _, err = client.NewConnection(address) - assert.Error(t, err) + require.Error(t, err) // good root cert t.Log("running good config") err = client.SetServerRootCAs([][]byte{[]byte(testCerts.caPEM)}) - assert.NoError(t, err) + require.NoError(t, err) // now connection should succeed again conn, err = client.NewConnection(address) - assert.NoError(t, err) - assert.NotNil(t, conn) + require.NoError(t, err) + require.NotNil(t, conn) if conn != nil { conn.Close() } @@ -426,7 +425,7 @@ func TestSetServerRootCAs(t *testing.T) { // bad root cert t.Log("running bad root cert") err = client.SetServerRootCAs([][]byte{[]byte(badPEM)}) - assert.Contains(t, err.Error(), "error adding root certificate") + require.Contains(t, err.Error(), "error adding root certificate") } func TestSetMessageSize(t *testing.T) { @@ -498,7 +497,7 @@ func TestSetMessageSize(t *testing.T) { client.SetMaxSendMsgSize(test.maxSendSize) } conn, err := client.NewConnection(address) - assert.NoError(t, err) + require.NoError(t, err) defer conn.Close() // create service client from conn svcClient := testpb.NewEchoServiceClient(conn) @@ -511,16 +510,16 @@ func TestSetMessageSize(t *testing.T) { } resp, err := svcClient.EchoCall(callCtx, echo) if !test.failRecv && !test.failSend { - assert.NoError(t, err) - assert.True(t, proto.Equal(echo, resp)) + require.NoError(t, err) + require.True(t, proto.Equal(echo, resp)) } if test.failSend { t.Logf("send error: %v", err) - assert.Contains(t, err.Error(), "trying to send message larger than max") + require.Contains(t, err.Error(), "trying to send message larger than max") } if test.failRecv { t.Logf("recv error: %v", err) - assert.Contains(t, err.Error(), "received message larger than max") + require.Contains(t, err.Error(), "received message larger than max") } }) } @@ -559,7 +558,7 @@ func loadCerts(t *testing.T) testCerts { filepath.Join("testdata", "certs", "Org1-server1-cert.pem"), filepath.Join("testdata", "certs", "Org1-server1-key.pem"), ) - assert.NoError(t, err) + require.NoError(t, err) return certs } @@ -568,7 +567,7 @@ func TestServerNameOverride(t *testing.T) { tlsOption := comm.ServerNameOverride("override-name") testConfig := &tls.Config{} tlsOption(testConfig) - assert.Equal(t, &tls.Config{ + require.Equal(t, &tls.Config{ ServerName: "override-name", }, testConfig) } @@ -576,11 +575,11 @@ func TestServerNameOverride(t *testing.T) { func TestCertPoolOverride(t *testing.T) { tlsOption := comm.CertPoolOverride(&x509.CertPool{}) testConfig := &tls.Config{} - assert.NotEqual(t, &tls.Config{ + require.NotEqual(t, &tls.Config{ RootCAs: &x509.CertPool{}, }, testConfig) tlsOption(testConfig) - assert.Equal(t, &tls.Config{ + require.Equal(t, &tls.Config{ RootCAs: &x509.CertPool{}, }, testConfig) } @@ -588,16 +587,16 @@ func TestCertPoolOverride(t *testing.T) { func TestDynamicClientTLSLoading(t *testing.T) { t.Parallel() ca1, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) ca2, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) clientKP, err := ca1.NewClientCertKeyPair() - assert.NoError(t, err) + require.NoError(t, err) serverKP, err := ca2.NewServerCertKeyPair("127.0.0.1") - assert.NoError(t, err) + require.NoError(t, err) client, err := comm.NewGRPCClient(comm.ClientConfig{ AsyncConnect: true, @@ -609,7 +608,7 @@ func TestDynamicClientTLSLoading(t *testing.T) { Key: clientKP.Key, }, }) - assert.NoError(t, err) + require.NoError(t, err) server, err := comm.NewGRPCServer("127.0.0.1:0", comm.ServerConfig{ Logger: flogging.MustGetLogger("test"), @@ -619,7 +618,7 @@ func TestDynamicClientTLSLoading(t *testing.T) { Certificate: serverKP.Cert, }, }) - assert.NoError(t, err) + require.NoError(t, err) var wg sync.WaitGroup wg.Add(1) @@ -636,8 +635,8 @@ func TestDynamicClientTLSLoading(t *testing.T) { tlsConfig.RootCAs = x509.NewCertPool() tlsConfig.RootCAs.AppendCertsFromPEM(dynamicRootCerts.Load().([]byte)) }) - assert.NoError(t, err) - assert.NotNil(t, conn) + require.NoError(t, err) + require.NotNil(t, conn) waitForConnState := func(state connectivity.State, succeedOrFail string) { deadline := time.Now().Add(time.Second * 30) @@ -662,7 +661,7 @@ func TestDynamicClientTLSLoading(t *testing.T) { waitForConnState(connectivity.Ready, "succeed") err = conn.Close() - assert.NoError(t, err) + require.NoError(t, err) server.Stop() wg.Wait() diff --git a/internal/pkg/comm/config_test.go b/internal/pkg/comm/config_test.go index 2ad2cf653ad..5a8166a7a59 100644 --- a/internal/pkg/comm/config_test.go +++ b/internal/pkg/comm/config_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/keepalive" ) @@ -31,8 +31,16 @@ func TestServerKeepaliveOptions(t *testing.T) { grpc.KeepaliveEnforcementPolicy(kep), } opts := ServerKeepaliveOptions(DefaultKeepaliveOptions) - assert.ObjectsAreEqual(expectedOpts, opts) + // Unable to test equality of options since the option methods return + // functions and each instance is a different func. + // Unable to test the equality of applying the options to the server + // implementation because the server embeds channels. + // Fallback to a sanity check. + require.Len(t, opts, len(expectedOpts)) + for i := range opts { + require.IsType(t, expectedOpts[i], opts[i]) + } } func TestClientKeepaliveOptions(t *testing.T) { @@ -45,8 +53,14 @@ func TestClientKeepaliveOptions(t *testing.T) { } expectedOpts := []grpc.DialOption{grpc.WithKeepaliveParams(kap)} opts := ClientKeepaliveOptions(DefaultKeepaliveOptions) - assert.ObjectsAreEqual(expectedOpts, opts) + // Unable to test equality of options since the option methods return + // functions and each instance is a different func. + // Fallback to a sanity check. + require.Len(t, opts, len(expectedOpts)) + for i := range opts { + require.IsType(t, expectedOpts[i], opts[i]) + } } func TestClientConfigClone(t *testing.T) { @@ -64,7 +78,7 @@ func TestClientConfigClone(t *testing.T) { clone := origin.Clone() // Same content, different inner fields references. - assert.Equal(t, origin, clone) + require.Equal(t, origin, clone) // We change the contents of the fields and ensure it doesn't // propagate across instances. @@ -103,6 +117,6 @@ func TestClientConfigClone(t *testing.T) { AsyncConnect: true, } - assert.Equal(t, expectedOriginState, origin) - assert.Equal(t, expectedCloneState, clone) + require.Equal(t, expectedOriginState, origin) + require.Equal(t, expectedCloneState, clone) } diff --git a/internal/pkg/comm/connection_test.go b/internal/pkg/comm/connection_test.go index 5c88553be6d..e2755893f79 100644 --- a/internal/pkg/comm/connection_test.go +++ b/internal/pkg/comm/connection_test.go @@ -13,7 +13,7 @@ import ( "path/filepath" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const ( @@ -62,14 +62,14 @@ func TestNewCredentialSupport(t *testing.T) { expected := &CredentialSupport{ appRootCAsByChain: make(map[string][][]byte), } - assert.Equal(t, expected, NewCredentialSupport()) + require.Equal(t, expected, NewCredentialSupport()) rootCAs := [][]byte{ []byte("certificate-one"), []byte("certificate-two"), } expected.serverRootCAs = rootCAs[:] - assert.Equal(t, expected, NewCredentialSupport(rootCAs...)) + require.Equal(t, expected, NewCredentialSupport(rootCAs...)) } func TestCredentialSupport(t *testing.T) { @@ -85,8 +85,8 @@ func TestCredentialSupport(t *testing.T) { } cert := tls.Certificate{Certificate: [][]byte{}} cs.SetClientCertificate(cert) - assert.Equal(t, cert, cs.clientCert) - assert.Equal(t, cert, cs.GetClientCertificate()) + require.Equal(t, cert, cs.clientCert) + require.Equal(t, cert, cs.GetClientCertificate()) cs.appRootCAsByChain["channel1"] = [][]byte{rootCAs[0]} cs.appRootCAsByChain["channel2"] = [][]byte{rootCAs[1]} @@ -94,13 +94,13 @@ func TestCredentialSupport(t *testing.T) { cs.serverRootCAs = [][]byte{rootCAs[5]} creds := cs.GetPeerCredentials() - assert.Equal(t, "1.2", creds.Info().SecurityVersion, + require.Equal(t, "1.2", creds.Info().SecurityVersion, "Expected Security version to be 1.2") // append some bad certs and make sure things still work cs.serverRootCAs = append(cs.serverRootCAs, []byte("badcert")) cs.serverRootCAs = append(cs.serverRootCAs, []byte(badPEM)) creds = cs.GetPeerCredentials() - assert.Equal(t, "1.2", creds.Info().SecurityVersion, + require.Equal(t, "1.2", creds.Info().SecurityVersion, "Expected Security version to be 1.2") } diff --git a/internal/pkg/comm/creds_test.go b/internal/pkg/comm/creds_test.go index af0d6e1b74f..5032efef878 100644 --- a/internal/pkg/comm/creds_test.go +++ b/internal/pkg/comm/creds_test.go @@ -18,7 +18,7 @@ import ( "github.com/hyperledger/fabric/common/flogging/floggingtest" "github.com/hyperledger/fabric/internal/pkg/comm" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCreds(t *testing.T) { @@ -51,11 +51,11 @@ func TestCreds(t *testing.T) { creds := comm.NewServerTransportCredentials(config, logger) _, _, err = creds.ClientHandshake(context.Background(), "", nil) - assert.EqualError(t, err, comm.ErrClientHandshakeNotImplemented.Error()) + require.EqualError(t, err, comm.ErrClientHandshakeNotImplemented.Error()) err = creds.OverrideServerName("") - assert.EqualError(t, err, comm.ErrOverrideHostnameNotSupported.Error()) - assert.Equal(t, "1.2", creds.Info().SecurityVersion) - assert.Equal(t, "tls", creds.Info().SecurityProtocol) + require.EqualError(t, err, comm.ErrOverrideHostnameNotSupported.Error()) + require.Equal(t, "1.2", creds.Info().SecurityVersion) + require.Equal(t, "tls", creds.Info().SecurityProtocol) lis, err := net.Listen("tcp", "localhost:0") if err != nil { @@ -64,7 +64,7 @@ func TestCreds(t *testing.T) { defer lis.Close() _, port, err := net.SplitHostPort(lis.Addr().String()) - assert.NoError(t, err) + require.NoError(t, err) addr := net.JoinHostPort("localhost", port) handshake := func(wg *sync.WaitGroup) { @@ -84,7 +84,7 @@ func TestCreds(t *testing.T) { go handshake(wg) _, err = tls.Dial("tcp", addr, &tls.Config{RootCAs: certPool}) wg.Wait() - assert.NoError(t, err) + require.NoError(t, err) wg = &sync.WaitGroup{} wg.Add(1) @@ -94,8 +94,8 @@ func TestCreds(t *testing.T) { MaxVersion: tls.VersionTLS10, }) wg.Wait() - assert.Contains(t, err.Error(), "protocol version not supported") - assert.Contains(t, recorder.Messages()[0], "TLS handshake failed with error") + require.Contains(t, err.Error(), "protocol version not supported") + require.Contains(t, recorder.Messages()[0], "TLS handshake failed with error") } func TestNewTLSConfig(t *testing.T) { @@ -104,7 +104,7 @@ func TestNewTLSConfig(t *testing.T) { config := comm.NewTLSConfig(tlsConfig) - assert.NotEmpty(t, config, "TLSConfig is not empty") + require.NotEmpty(t, config, "TLSConfig is not empty") } func TestConfig(t *testing.T) { @@ -118,7 +118,7 @@ func TestConfig(t *testing.T) { certPool := x509.NewCertPool() config.SetClientCAs(certPool) - assert.NotEqual(t, config.Config(), &configCopy, "TLSConfig should have new certs") + require.NotEqual(t, config.Config(), &configCopy, "TLSConfig should have new certs") } func TestAddRootCA(t *testing.T) { @@ -152,11 +152,11 @@ func TestAddRootCA(t *testing.T) { } config := comm.NewTLSConfig(tlsConfig) - assert.Equal(t, config.Config().ClientCAs, certPool) + require.Equal(t, config.Config().ClientCAs, certPool) config.AddClientRootCA(cert) - assert.Equal(t, config.Config().ClientCAs, expectedCertPool, "The CertPools should be equal") + require.Equal(t, config.Config().ClientCAs, expectedCertPool, "The CertPools should be equal") } func TestSetClientCAs(t *testing.T) { @@ -166,10 +166,10 @@ func TestSetClientCAs(t *testing.T) { } config := comm.NewTLSConfig(tlsConfig) - assert.Empty(t, config.Config().ClientCAs, "No CertPool should be defined") + require.Empty(t, config.Config().ClientCAs, "No CertPool should be defined") certPool := x509.NewCertPool() config.SetClientCAs(certPool) - assert.NotNil(t, config.Config().ClientCAs, "The CertPools' should not be the same") + require.NotNil(t, config.Config().ClientCAs, "The CertPools' should not be the same") } diff --git a/internal/pkg/comm/server_test.go b/internal/pkg/comm/server_test.go index ca48d567f45..a547987c6d9 100644 --- a/internal/pkg/comm/server_test.go +++ b/internal/pkg/comm/server_test.go @@ -25,7 +25,7 @@ import ( "github.com/hyperledger/fabric/internal/pkg/comm" "github.com/hyperledger/fabric/internal/pkg/comm/testpb" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" @@ -383,15 +383,15 @@ func TestNewGRPCServerInvalidParameters(t *testing.T) { "", comm.ServerConfig{SecOpts: comm.SecureOptions{UseTLS: false}}, ) - assert.EqualError(t, err, "missing address parameter") + require.EqualError(t, err, "missing address parameter") // missing port _, err = comm.NewGRPCServer( "abcdef", comm.ServerConfig{SecOpts: comm.SecureOptions{UseTLS: false}}, ) - assert.Error(t, err, "Expected error with missing port") - assert.Contains(t, err.Error(), "missing port in address") + require.Error(t, err, "Expected error with missing port") + require.Contains(t, err.Error(), "missing port in address") // bad port _, err = comm.NewGRPCServer( @@ -405,9 +405,8 @@ func TestNewGRPCServerInvalidParameters(t *testing.T) { "listen tcp: address tcp/1BBB: unknown port", "listen tcp: lookup tcp/1BBB: Servname not supported for ai_socktype", } - if assert.Error(t, err, fmt.Sprintf("[%s], [%s] [%s] or [%s] expected", msgs[0], msgs[1], msgs[2], msgs[3])) { - assert.Contains(t, msgs, err.Error()) - } + require.Error(t, err, fmt.Sprintf("[%s], [%s] [%s] or [%s] expected", msgs[0], msgs[1], msgs[2], msgs[3])) + require.Contains(t, msgs, err.Error()) // bad hostname _, err = comm.NewGRPCServer( @@ -417,25 +416,25 @@ func TestNewGRPCServerInvalidParameters(t *testing.T) { // We cannot check for a specific error message due to the fact that some // systems will automatically resolve unknown host names to a "search" // address so we just check to make sure that an error was returned - assert.Error(t, err, "error expected") + require.Error(t, err, "error expected") // address in use lis, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err, "failed to create listener") + require.NoError(t, err, "failed to create listener") defer lis.Close() _, err = comm.NewGRPCServerFromListener( lis, comm.ServerConfig{SecOpts: comm.SecureOptions{UseTLS: false}}, ) - assert.NoError(t, err, "failed to create grpc server") + require.NoError(t, err, "failed to create grpc server") _, err = comm.NewGRPCServer( lis.Addr().String(), comm.ServerConfig{SecOpts: comm.SecureOptions{UseTLS: false}}, ) - assert.Error(t, err) - assert.Contains(t, err.Error(), "address already in use") + require.Error(t, err) + require.Contains(t, err.Error(), "address already in use") // missing server Certificate _, err = comm.NewGRPCServerFromListener( @@ -444,7 +443,7 @@ func TestNewGRPCServerInvalidParameters(t *testing.T) { SecOpts: comm.SecureOptions{UseTLS: true, Key: []byte{}}, }, ) - assert.EqualError(t, err, "serverConfig.SecOpts must contain both Key and Certificate when UseTLS is true") + require.EqualError(t, err, "serverConfig.SecOpts must contain both Key and Certificate when UseTLS is true") // missing server Key _, err = comm.NewGRPCServerFromListener( @@ -455,7 +454,7 @@ func TestNewGRPCServerInvalidParameters(t *testing.T) { Certificate: []byte{}}, }, ) - assert.EqualError(t, err, "serverConfig.SecOpts must contain both Key and Certificate when UseTLS is true") + require.EqualError(t, err, "serverConfig.SecOpts must contain both Key and Certificate when UseTLS is true") // bad server Key _, err = comm.NewGRPCServerFromListener( @@ -468,7 +467,7 @@ func TestNewGRPCServerInvalidParameters(t *testing.T) { }, }, ) - assert.EqualError(t, err, "tls: failed to find any PEM data in key input") + require.EqualError(t, err, "tls: failed to find any PEM data in key input") // bad server Certificate _, err = comm.NewGRPCServerFromListener( @@ -480,7 +479,7 @@ func TestNewGRPCServerInvalidParameters(t *testing.T) { Key: []byte(selfSignedKeyPEM)}, }, ) - assert.EqualError(t, err, "tls: failed to find any PEM data in certificate input") + require.EqualError(t, err, "tls: failed to find any PEM data in certificate input") srv, err := comm.NewGRPCServerFromListener( lis, @@ -492,11 +491,11 @@ func TestNewGRPCServerInvalidParameters(t *testing.T) { RequireClientCert: true}, }, ) - assert.NoError(t, err) + require.NoError(t, err) badRootCAs := [][]byte{[]byte(badPEM)} err = srv.SetClientRootCAs(badRootCAs) - assert.EqualError(t, err, "failed to set client root certificate(s): asn1: syntax error: data truncated") + require.EqualError(t, err, "failed to set client root certificate(s): asn1: syntax error: data truncated") } func TestNewGRPCServer(t *testing.T) { @@ -507,17 +506,17 @@ func TestNewGRPCServer(t *testing.T) { testAddress, comm.ServerConfig{SecOpts: comm.SecureOptions{UseTLS: false}}, ) - assert.NoError(t, err, "failed to create new GRPC server") + require.NoError(t, err, "failed to create new GRPC server") // resolve the address addr, err := net.ResolveTCPAddr("tcp", testAddress) - assert.NoError(t, err) + require.NoError(t, err) // make sure our properties are as expected - assert.Equal(t, srv.Address(), addr.String()) - assert.Equal(t, srv.Listener().Addr().String(), addr.String()) - assert.Equal(t, srv.TLSEnabled(), false) - assert.Equal(t, srv.MutualTLSRequired(), false) + require.Equal(t, srv.Address(), addr.String()) + require.Equal(t, srv.Listener().Addr().String(), addr.String()) + require.Equal(t, srv.TLSEnabled(), false) + require.Equal(t, srv.MutualTLSRequired(), false) // register the GRPC test server testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) @@ -531,7 +530,7 @@ func TestNewGRPCServer(t *testing.T) { // invoke the EmptyCall service _, err = invokeEmptyCall(testAddress, grpc.WithInsecure()) - assert.NoError(t, err, "failed to invoke the EmptyCall service") + require.NoError(t, err, "failed to invoke the EmptyCall service") } func TestNewGRPCServerFromListener(t *testing.T) { @@ -539,19 +538,19 @@ func TestNewGRPCServerFromListener(t *testing.T) { // create our listener lis, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err, "failed to create listener") + require.NoError(t, err, "failed to create listener") testAddress := lis.Addr().String() srv, err := comm.NewGRPCServerFromListener( lis, comm.ServerConfig{SecOpts: comm.SecureOptions{UseTLS: false}}, ) - assert.NoError(t, err, "failed to create new GRPC server") + require.NoError(t, err, "failed to create new GRPC server") - assert.Equal(t, srv.Address(), testAddress) - assert.Equal(t, srv.Listener().Addr().String(), testAddress) - assert.Equal(t, srv.TLSEnabled(), false) - assert.Equal(t, srv.MutualTLSRequired(), false) + require.Equal(t, srv.Address(), testAddress) + require.Equal(t, srv.Listener().Addr().String(), testAddress) + require.Equal(t, srv.TLSEnabled(), false) + require.Equal(t, srv.MutualTLSRequired(), false) // register the GRPC test server testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) @@ -565,7 +564,7 @@ func TestNewGRPCServerFromListener(t *testing.T) { // invoke the EmptyCall service _, err = invokeEmptyCall(testAddress, grpc.WithInsecure()) - assert.NoError(t, err, "client failed to invoke the EmptyCall service") + require.NoError(t, err, "client failed to invoke the EmptyCall service") } func TestNewSecureGRPCServer(t *testing.T) { @@ -573,7 +572,7 @@ func TestNewSecureGRPCServer(t *testing.T) { // create our listener lis, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err, "failed to create listener") + require.NoError(t, err, "failed to create listener") testAddress := lis.Addr().String() srv, err := comm.NewGRPCServerFromListener(lis, comm.ServerConfig{ @@ -584,18 +583,18 @@ func TestNewSecureGRPCServer(t *testing.T) { Key: []byte(selfSignedKeyPEM)}, }, ) - assert.NoError(t, err, "failed to create new grpc server") + require.NoError(t, err, "failed to create new grpc server") // make sure our properties are as expected - assert.NoError(t, err) - assert.Equal(t, srv.Address(), testAddress) - assert.Equal(t, srv.Listener().Addr().String(), testAddress) + require.NoError(t, err) + require.Equal(t, srv.Address(), testAddress) + require.Equal(t, srv.Listener().Addr().String(), testAddress) cert, _ := tls.X509KeyPair([]byte(selfSignedCertPEM), []byte(selfSignedKeyPEM)) - assert.Equal(t, srv.ServerCertificate(), cert) + require.Equal(t, srv.ServerCertificate(), cert) - assert.Equal(t, srv.TLSEnabled(), true) - assert.Equal(t, srv.MutualTLSRequired(), false) + require.Equal(t, srv.TLSEnabled(), true) + require.Equal(t, srv.MutualTLSRequired(), false) // register the GRPC test server testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) @@ -616,7 +615,7 @@ func TestNewSecureGRPCServer(t *testing.T) { // invoke the EmptyCall service _, err = invokeEmptyCall(testAddress, grpc.WithTransportCredentials(creds)) - assert.NoError(t, err, "client failed to invoke the EmptyCall service") + require.NoError(t, err, "client failed to invoke the EmptyCall service") // Test TLS versions which should be valid tlsVersions := map[string]uint16{ @@ -629,7 +628,7 @@ func TestNewSecureGRPCServer(t *testing.T) { t.Run(name, func(t *testing.T) { creds := credentials.NewTLS(&tls.Config{RootCAs: certPool, MinVersion: tlsVersion, MaxVersion: tlsVersion}) _, err := invokeEmptyCall(testAddress, grpc.WithTransportCredentials(creds), grpc.WithBlock()) - assert.NoError(t, err) + require.NoError(t, err) }) } @@ -646,8 +645,8 @@ func TestNewSecureGRPCServer(t *testing.T) { creds := credentials.NewTLS(&tls.Config{RootCAs: certPool, MinVersion: tlsVersion, MaxVersion: tlsVersion}) _, err := invokeEmptyCall(testAddress, grpc.WithTransportCredentials(creds), grpc.WithBlock()) - assert.Error(t, err, "should not have been able to connect with TLS version < 1.2") - assert.Contains(t, err.Error(), "context deadline exceeded") + require.Error(t, err, "should not have been able to connect with TLS version < 1.2") + require.Contains(t, err.Error(), "context deadline exceeded") }) } } @@ -656,16 +655,16 @@ func TestVerifyCertificateCallback(t *testing.T) { t.Parallel() ca, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) authorizedClientKeyPair, err := ca.NewClientCertKeyPair() - assert.NoError(t, err) + require.NoError(t, err) notAuthorizedClientKeyPair, err := ca.NewClientCertKeyPair() - assert.NoError(t, err) + require.NoError(t, err) serverKeyPair, err := ca.NewServerCertKeyPair("127.0.0.1") - assert.NoError(t, err) + require.NoError(t, err) verifyFunc := func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error { if bytes.Equal(rawCerts[0], authorizedClientKeyPair.TLSCert.Raw) { @@ -709,12 +708,12 @@ func TestVerifyCertificateCallback(t *testing.T) { t.Run("Success path", func(t *testing.T) { err = probeTLS(gRPCServer.Address(), authorizedClientKeyPair) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Failure path", func(t *testing.T) { err = probeTLS(gRPCServer.Address(), notAuthorizedClientKeyPair) - assert.EqualError(t, err, "remote error: tls: bad certificate") + require.EqualError(t, err, "remote error: tls: bad certificate") }) } @@ -726,17 +725,17 @@ func TestWithSignedRootCertificates(t *testing.T) { // use Org1 testdata fileBase := "Org1" certPEMBlock, err := ioutil.ReadFile(filepath.Join("testdata", "certs", fileBase+"-server1-cert.pem")) - assert.NoError(t, err, "failed to load test certificates") + require.NoError(t, err, "failed to load test certificates") keyPEMBlock, err := ioutil.ReadFile(filepath.Join("testdata", "certs", fileBase+"-server1-key.pem")) - assert.NoError(t, err, "failed to load test certificates: %v") + require.NoError(t, err, "failed to load test certificates: %v") caPEMBlock, err := ioutil.ReadFile(filepath.Join("testdata", "certs", fileBase+"-cert.pem")) - assert.NoError(t, err, "failed to load test certificates") + require.NoError(t, err, "failed to load test certificates") // create our listener lis, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err, "failed to create listener") + require.NoError(t, err, "failed to create listener") testAddress := lis.Addr().String() srv, err := comm.NewGRPCServerFromListener(lis, comm.ServerConfig{ @@ -746,7 +745,7 @@ func TestWithSignedRootCertificates(t *testing.T) { Key: keyPEMBlock, }, }) - assert.NoError(t, err, "failed to create new grpc server") + require.NoError(t, err, "failed to create new grpc server") // register the GRPC test server testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) @@ -759,12 +758,12 @@ func TestWithSignedRootCertificates(t *testing.T) { // create a CertPool for use by the client with the server cert only certPoolServer, err := createCertPool([][]byte{certPEMBlock}) - assert.NoError(t, err, "failed to load root certificates into pool") + require.NoError(t, err, "failed to load root certificates into pool") creds := credentials.NewClientTLSFromCert(certPoolServer, "") // invoke the EmptyCall service _, err = invokeEmptyCall(testAddress, grpc.WithTransportCredentials(creds)) - assert.NoError(t, err, "Expected client to connect with server cert only") + require.NoError(t, err, "Expected client to connect with server cert only") // now use the CA certificate certPoolCA := x509.NewCertPool() @@ -775,7 +774,7 @@ func TestWithSignedRootCertificates(t *testing.T) { // invoke the EmptyCall service _, err = invokeEmptyCall(testAddress, grpc.WithTransportCredentials(creds)) - assert.NoError(t, err, "client failed to invoke the EmptyCall") + require.NoError(t, err, "client failed to invoke the EmptyCall") } // here we'll use certificates signed by intermediate certificate authorities @@ -785,10 +784,10 @@ func TestWithSignedIntermediateCertificates(t *testing.T) { // use Org1 testdata fileBase := "Org1" certPEMBlock, err := ioutil.ReadFile(filepath.Join("testdata", "certs", fileBase+"-child1-server1-cert.pem")) - assert.NoError(t, err) + require.NoError(t, err) keyPEMBlock, err := ioutil.ReadFile(filepath.Join("testdata", "certs", fileBase+"-child1-server1-key.pem")) - assert.NoError(t, err) + require.NoError(t, err) intermediatePEMBlock, err := ioutil.ReadFile(filepath.Join("testdata", "certs", fileBase+"-child1-cert.pem")) if err != nil { @@ -834,18 +833,18 @@ func TestWithSignedIntermediateCertificates(t *testing.T) { _, err = invokeEmptyCall(testAddress, grpc.WithTransportCredentials(creds)) // client should be able to connect with Go 1.9 - assert.NoError(t, err, "Expected client to connect with server cert only") + require.NoError(t, err, "Expected client to connect with server cert only") // now use the CA certificate // create a CertPool for use by the client with the intermediate root CA certPoolCA, err := createCertPool([][]byte{intermediatePEMBlock}) - assert.NoError(t, err, "failed to load root certificates into pool") + require.NoError(t, err, "failed to load root certificates into pool") creds = credentials.NewClientTLSFromCert(certPoolCA, "") // invoke the EmptyCall service _, err = invokeEmptyCall(testAddress, grpc.WithTransportCredentials(creds)) - assert.NoError(t, err, "client failed to invoke the EmptyCall service") + require.NoError(t, err, "client failed to invoke the EmptyCall service") } // utility function for testing client / server communication using TLS @@ -866,7 +865,7 @@ func runMutualAuth(t *testing.T, servers []testServer, trustedClients, unTrusted } // MutualTLSRequired should be true - assert.Equal(t, srv.MutualTLSRequired(), true) + require.Equal(t, srv.MutualTLSRequired(), true) //register the GRPC test server and start the GRPCServer testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) @@ -959,7 +958,7 @@ func TestMutualAuth(t *testing.T) { t.Parallel() t.Logf("Running test %s ...", test.name) testErr := runMutualAuth(t, test.servers, test.trustedClients, test.unTrustedClients) - assert.NoError(t, testErr) + require.NoError(t, testErr) }) } } @@ -970,13 +969,13 @@ func TestSetClientRootCAs(t *testing.T) { // get the config for one of our Org1 test servers serverConfig := testOrgs[0].testServers([][]byte{})[0].config lis, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err, "listen failed") + require.NoError(t, err, "listen failed") defer lis.Close() address := lis.Addr().String() // create a GRPCServer srv, err := comm.NewGRPCServerFromListener(lis, serverConfig) - assert.NoError(t, err, "failed to create GRPCServer") + require.NoError(t, err, "failed to create GRPCServer") // register the GRPC test server and start the GRPCServer testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) @@ -1000,39 +999,39 @@ func TestSetClientRootCAs(t *testing.T) { // initially set client CAs to Org1 children err = srv.SetClientRootCAs(org1ChildRootCAs) - assert.NoError(t, err, "SetClientRootCAs failed") + require.NoError(t, err, "SetClientRootCAs failed") // clientConfigsOrg1Children are currently trusted for _, clientConfig := range clientConfigsOrg1Children { // we expect success as these are trusted clients _, err = invokeEmptyCall(address, grpc.WithTransportCredentials(credentials.NewTLS(clientConfig))) - assert.NoError(t, err, "trusted client should have connected") + require.NoError(t, err, "trusted client should have connected") } // clientConfigsOrg2Children are currently not trusted for _, clientConfig := range clientConfigsOrg2Children { // we expect failure as these are now untrusted clients _, err = invokeEmptyCall(address, grpc.WithTransportCredentials(credentials.NewTLS(clientConfig))) - assert.Error(t, err, "untrusted client should not have been able to connect") + require.Error(t, err, "untrusted client should not have been able to connect") } // now set client CAs to Org2 children err = srv.SetClientRootCAs(org2ChildRootCAs) - assert.NoError(t, err, "SetClientRootCAs failed") + require.NoError(t, err, "SetClientRootCAs failed") // now reverse trusted and not trusted // clientConfigsOrg1Children are currently trusted for _, clientConfig := range clientConfigsOrg2Children { // we expect success as these are trusted clients _, err = invokeEmptyCall(address, grpc.WithTransportCredentials(credentials.NewTLS(clientConfig))) - assert.NoError(t, err, "trusted client should have connected") + require.NoError(t, err, "trusted client should have connected") } // clientConfigsOrg2Children are currently not trusted for _, clientConfig := range clientConfigsOrg1Children { // we expect failure as these are now untrusted clients _, err = invokeEmptyCall(address, grpc.WithTransportCredentials(credentials.NewTLS(clientConfig))) - assert.Error(t, err, "untrusted client should not have connected") + require.Error(t, err, "untrusted client should not have connected") } } @@ -1066,11 +1065,11 @@ func TestUpdateTLSCert(t *testing.T) { // create our listener lis, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err, "listen failed") + require.NoError(t, err, "listen failed") testAddress := lis.Addr().String() srv, err := comm.NewGRPCServerFromListener(lis, cfg) - assert.NoError(t, err) + require.NoError(t, err) testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) go srv.Start() @@ -1090,41 +1089,41 @@ func TestUpdateTLSCert(t *testing.T) { // bootstrap TLS certificate has a SAN of "notlocalhost" so it should fail err = probeServer() - assert.Error(t, err) - assert.Contains(t, err.Error(), "context deadline exceeded") + require.Error(t, err) + require.Contains(t, err.Error(), "context deadline exceeded") // new TLS certificate has a SAN of "127.0.0.1" so it should succeed certPath := filepath.Join("testdata", "dynamic_cert_update", "localhost", "server.crt") keyPath := filepath.Join("testdata", "dynamic_cert_update", "localhost", "server.key") tlsCert, err := tls.LoadX509KeyPair(certPath, keyPath) - assert.NoError(t, err) + require.NoError(t, err) srv.SetServerCertificate(tlsCert) err = probeServer() - assert.NoError(t, err) + require.NoError(t, err) // revert back to the old certificate, should fail. certPath = filepath.Join("testdata", "dynamic_cert_update", "notlocalhost", "server.crt") keyPath = filepath.Join("testdata", "dynamic_cert_update", "notlocalhost", "server.key") tlsCert, err = tls.LoadX509KeyPair(certPath, keyPath) - assert.NoError(t, err) + require.NoError(t, err) srv.SetServerCertificate(tlsCert) err = probeServer() - assert.Error(t, err) - assert.Contains(t, err.Error(), "context deadline exceeded") + require.Error(t, err) + require.Contains(t, err.Error(), "context deadline exceeded") } func TestCipherSuites(t *testing.T) { t.Parallel() certPEM, err := ioutil.ReadFile(filepath.Join("testdata", "certs", "Org1-server1-cert.pem")) - assert.NoError(t, err) + require.NoError(t, err) keyPEM, err := ioutil.ReadFile(filepath.Join("testdata", "certs", "Org1-server1-key.pem")) - assert.NoError(t, err) + require.NoError(t, err) caPEM, err := ioutil.ReadFile(filepath.Join("testdata", "certs", "Org1-cert.pem")) - assert.NoError(t, err) + require.NoError(t, err) certPool, err := createCertPool([][]byte{caPEM}) - assert.NoError(t, err) + require.NoError(t, err) serverConfig := comm.ServerConfig{ SecOpts: comm.SecureOptions{ @@ -1180,10 +1179,10 @@ func TestCipherSuites(t *testing.T) { // create our listener lis, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err, "listen failed") + require.NoError(t, err, "listen failed") testAddress := lis.Addr().String() srv, err := comm.NewGRPCServerFromListener(lis, serverConfig) - assert.NoError(t, err) + require.NoError(t, err) go srv.Start() for _, test := range tests { @@ -1200,10 +1199,10 @@ func TestCipherSuites(t *testing.T) { } _, err := tls.Dial("tcp", testAddress, tlsConfig) if test.success { - assert.NoError(t, err) + require.NoError(t, err) } else { - assert.Error(t, err, "expected handshake failure") - assert.Contains(t, err.Error(), "handshake failure") + require.Error(t, err, "expected handshake failure") + require.Contains(t, err.Error(), "handshake failure") } } }) @@ -1212,7 +1211,7 @@ func TestCipherSuites(t *testing.T) { func TestServerInterceptors(t *testing.T) { lis, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err, "listen failed") + require.NoError(t, err, "listen failed") msg := "error from interceptor" // set up interceptors @@ -1242,7 +1241,7 @@ func TestServerInterceptors(t *testing.T) { srvConfig.StreamInterceptors = append(srvConfig.StreamInterceptors, ssi2) srv, err := comm.NewGRPCServerFromListener(lis, srvConfig) - assert.NoError(t, err, "failed to create gRPC server") + require.NoError(t, err, "failed to create gRPC server") testpb.RegisterEmptyServiceServer(srv.Server(), &emptyServiceServer{}) defer srv.Stop() go srv.Start() @@ -1252,16 +1251,16 @@ func TestServerInterceptors(t *testing.T) { grpc.WithBlock(), grpc.WithInsecure(), ) - assert.Error(t, err) - assert.Equal(t, status.Convert(err).Message(), msg, "Expected error from second usi") - assert.Equal(t, uint32(2), atomic.LoadUint32(&usiCount), "Expected both usi handlers to be invoked") + require.Error(t, err) + require.Equal(t, status.Convert(err).Message(), msg, "Expected error from second usi") + require.Equal(t, uint32(2), atomic.LoadUint32(&usiCount), "Expected both usi handlers to be invoked") _, err = invokeEmptyStream( lis.Addr().String(), grpc.WithBlock(), grpc.WithInsecure(), ) - assert.Error(t, err) - assert.Equal(t, status.Convert(err).Message(), msg, "Expected error from second ssi") - assert.Equal(t, uint32(2), atomic.LoadUint32(&ssiCount), "Expected both ssi handlers to be invoked") + require.Error(t, err) + require.Equal(t, status.Convert(err).Message(), msg, "Expected error from second ssi") + require.Equal(t, uint32(2), atomic.LoadUint32(&ssiCount), "Expected both ssi handlers to be invoked") } diff --git a/internal/pkg/comm/util_test.go b/internal/pkg/comm/util_test.go index a5a4ef34ea0..669df917f9d 100644 --- a/internal/pkg/comm/util_test.go +++ b/internal/pkg/comm/util_test.go @@ -21,7 +21,7 @@ import ( "github.com/hyperledger/fabric/internal/pkg/comm" "github.com/hyperledger/fabric/internal/pkg/comm/testpb" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" "google.golang.org/grpc/credentials" "google.golang.org/grpc/peer" @@ -29,19 +29,19 @@ import ( func TestExtractCertificateHashFromContext(t *testing.T) { t.Parallel() - assert.Nil(t, comm.ExtractCertificateHashFromContext(context.Background())) + require.Nil(t, comm.ExtractCertificateHashFromContext(context.Background())) p := &peer.Peer{} ctx := peer.NewContext(context.Background(), p) - assert.Nil(t, comm.ExtractCertificateHashFromContext(ctx)) + require.Nil(t, comm.ExtractCertificateHashFromContext(ctx)) p.AuthInfo = &nonTLSConnection{} ctx = peer.NewContext(context.Background(), p) - assert.Nil(t, comm.ExtractCertificateHashFromContext(ctx)) + require.Nil(t, comm.ExtractCertificateHashFromContext(ctx)) p.AuthInfo = credentials.TLSInfo{} ctx = peer.NewContext(context.Background(), p) - assert.Nil(t, comm.ExtractCertificateHashFromContext(ctx)) + require.Nil(t, comm.ExtractCertificateHashFromContext(ctx)) p.AuthInfo = credentials.TLSInfo{ State: tls.ConnectionState{ @@ -53,7 +53,7 @@ func TestExtractCertificateHashFromContext(t *testing.T) { ctx = peer.NewContext(context.Background(), p) h := sha256.New() h.Write([]byte{1, 2, 3}) - assert.Equal(t, h.Sum(nil), comm.ExtractCertificateHashFromContext(ctx)) + require.Equal(t, h.Sum(nil), comm.ExtractCertificateHashFromContext(ctx)) } type nonTLSConnection struct { @@ -65,7 +65,7 @@ func (*nonTLSConnection) AuthType() string { func TestBindingInspectorBadInit(t *testing.T) { t.Parallel() - assert.Panics(t, func() { + require.Panics(t, func() { comm.NewBindingInspector(false, nil) }) } @@ -75,10 +75,10 @@ func TestNoopBindingInspector(t *testing.T) { extract := func(msg proto.Message) []byte { return nil } - assert.Nil(t, comm.NewBindingInspector(false, extract)(context.Background(), &common.Envelope{})) + require.Nil(t, comm.NewBindingInspector(false, extract)(context.Background(), &common.Envelope{})) err := comm.NewBindingInspector(false, extract)(context.Background(), nil) - assert.Error(t, err) - assert.Equal(t, "message is nil", err.Error()) + require.Error(t, err) + require.Equal(t, "message is nil", err.Error()) } func TestBindingInspector(t *testing.T) { @@ -106,23 +106,23 @@ func TestBindingInspector(t *testing.T) { // Scenario I: Invalid header sent err = srv.newInspection(t).inspectBinding(nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "client didn't include its TLS cert hash") + require.Error(t, err) + require.Contains(t, err.Error(), "client didn't include its TLS cert hash") // Scenario II: invalid channel header ch, _ := proto.Marshal(protoutil.MakeChannelHeader(common.HeaderType_CONFIG, 0, "test", 0)) // Corrupt channel header ch = append(ch, 0) err = srv.newInspection(t).inspectBinding(envelopeWithChannelHeader(ch)) - assert.Error(t, err) - assert.Contains(t, err.Error(), "client didn't include its TLS cert hash") + require.Error(t, err) + require.Contains(t, err.Error(), "client didn't include its TLS cert hash") // Scenario III: No TLS cert hash in envelope chanHdr := protoutil.MakeChannelHeader(common.HeaderType_CONFIG, 0, "test", 0) ch, _ = proto.Marshal(chanHdr) err = srv.newInspection(t).inspectBinding(envelopeWithChannelHeader(ch)) - assert.Error(t, err) - assert.Contains(t, err.Error(), "client didn't include its TLS cert hash") + require.Error(t, err) + require.Contains(t, err.Error(), "client didn't include its TLS cert hash") // Scenario IV: Client sends its TLS cert hash as needed, but doesn't use mutual TLS cert, _ := tls.X509KeyPair([]byte(selfSignedCertPEM), []byte(selfSignedKeyPEM)) @@ -131,24 +131,24 @@ func TestBindingInspector(t *testing.T) { chanHdr.TlsCertHash = h.Sum(nil) ch, _ = proto.Marshal(chanHdr) err = srv.newInspection(t).inspectBinding(envelopeWithChannelHeader(ch)) - assert.Error(t, err) - assert.Contains(t, err.Error(), "client didn't send a TLS certificate") + require.Error(t, err) + require.Contains(t, err.Error(), "client didn't send a TLS certificate") // Scenario V: Client uses mutual TLS but sends the wrong TLS cert hash chanHdr.TlsCertHash = []byte{1, 2, 3} chHdrWithWrongTLSCertHash, _ := proto.Marshal(chanHdr) err = srv.newInspection(t).withMutualTLS().inspectBinding(envelopeWithChannelHeader(chHdrWithWrongTLSCertHash)) - assert.Error(t, err) - assert.Contains(t, err.Error(), "claimed TLS cert hash is [1 2 3] but actual TLS cert hash is") + require.Error(t, err) + require.Contains(t, err.Error(), "claimed TLS cert hash is [1 2 3] but actual TLS cert hash is") // Scenario VI: Client uses mutual TLS and also sends the correct TLS cert hash err = srv.newInspection(t).withMutualTLS().inspectBinding(envelopeWithChannelHeader(ch)) - assert.NoError(t, err) + require.NoError(t, err) } func TestGetLocalIP(t *testing.T) { ip, err := comm.GetLocalIP() - assert.NoError(t, err) + require.NoError(t, err) t.Log(ip) } @@ -210,7 +210,7 @@ func (is *inspectingServer) newInspection(t *testing.T) *inspection { func (ins *inspection) withMutualTLS() *inspection { cert, err := tls.X509KeyPair([]byte(selfSignedCertPEM), []byte(selfSignedKeyPEM)) - assert.NoError(ins.t, err) + require.NoError(ins.t, err) ins.tlsConfig.Certificates = []tls.Certificate{cert} ins.creds = credentials.NewTLS(ins.tlsConfig) return ins @@ -221,10 +221,10 @@ func (ins *inspection) inspectBinding(envelope *common.Envelope) error { ctx, c := context.WithTimeout(ctx, time.Second*3) defer c() conn, err := grpc.DialContext(ctx, ins.server.addr, grpc.WithTransportCredentials(ins.creds), grpc.WithBlock()) - assert.NoError(ins.t, err) + require.NoError(ins.t, err) defer conn.Close() _, err = testpb.NewTestServiceClient(conn).EmptyCall(context.Background(), &testpb.Empty{}) - assert.NoError(ins.t, err) + require.NoError(ins.t, err) return ins.server.inspect(envelope) } diff --git a/internal/pkg/txflags/validation_flags_test.go b/internal/pkg/txflags/validation_flags_test.go index 80e1ae11148..e0aa9022554 100644 --- a/internal/pkg/txflags/validation_flags_test.go +++ b/internal/pkg/txflags/validation_flags_test.go @@ -10,17 +10,17 @@ import ( "testing" "github.com/hyperledger/fabric-protos-go/peer" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestTransactionValidationFlags(t *testing.T) { txFlags := NewWithValues(10, peer.TxValidationCode_VALID) - assert.Equal(t, 10, len(txFlags)) + require.Equal(t, 10, len(txFlags)) txFlags.SetFlag(0, peer.TxValidationCode_VALID) - assert.Equal(t, peer.TxValidationCode_VALID, txFlags.Flag(0)) - assert.Equal(t, true, txFlags.IsValid(0)) + require.Equal(t, peer.TxValidationCode_VALID, txFlags.Flag(0)) + require.Equal(t, true, txFlags.IsValid(0)) txFlags.SetFlag(1, peer.TxValidationCode_MVCC_READ_CONFLICT) - assert.Equal(t, true, txFlags.IsInvalid(1)) + require.Equal(t, true, txFlags.IsInvalid(1)) } diff --git a/msp/cache/cache_test.go b/msp/cache/cache_test.go index b7a2954a737..4e8882682d4 100644 --- a/msp/cache/cache_test.go +++ b/msp/cache/cache_test.go @@ -14,110 +14,110 @@ import ( "github.com/hyperledger/fabric/msp" "github.com/hyperledger/fabric/msp/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) func TestNewCacheMsp(t *testing.T) { i, err := New(nil) - assert.Error(t, err) - assert.Nil(t, i) - assert.Contains(t, err.Error(), "Invalid passed MSP. It must be different from nil.") + require.Error(t, err) + require.Nil(t, i) + require.Contains(t, err.Error(), "Invalid passed MSP. It must be different from nil.") i, err = New(&mocks.MockMSP{}) - assert.NoError(t, err) - assert.NotNil(t, i) + require.NoError(t, err) + require.NotNil(t, i) } func TestSetup(t *testing.T) { mockMSP := &mocks.MockMSP{} i, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) mockMSP.On("Setup", (*msp2.MSPConfig)(nil)).Return(nil) err = i.Setup(nil) - assert.NoError(t, err) + require.NoError(t, err) mockMSP.AssertExpectations(t) - assert.Equal(t, 0, i.(*cachedMSP).deserializeIdentityCache.len()) - assert.Equal(t, 0, i.(*cachedMSP).satisfiesPrincipalCache.len()) - assert.Equal(t, 0, i.(*cachedMSP).validateIdentityCache.len()) + require.Equal(t, 0, i.(*cachedMSP).deserializeIdentityCache.len()) + require.Equal(t, 0, i.(*cachedMSP).satisfiesPrincipalCache.len()) + require.Equal(t, 0, i.(*cachedMSP).validateIdentityCache.len()) } func TestGetType(t *testing.T) { mockMSP := &mocks.MockMSP{} i, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) mockMSP.On("GetType").Return(msp.FABRIC) - assert.Equal(t, msp.FABRIC, i.GetType()) + require.Equal(t, msp.FABRIC, i.GetType()) mockMSP.AssertExpectations(t) } func TestGetIdentifier(t *testing.T) { mockMSP := &mocks.MockMSP{} i, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) mockMSP.On("GetIdentifier").Return("MSP", nil) id, err := i.GetIdentifier() - assert.NoError(t, err) - assert.Equal(t, "MSP", id) + require.NoError(t, err) + require.Equal(t, "MSP", id) mockMSP.AssertExpectations(t) } func TestGetSigningIdentity(t *testing.T) { mockMSP := &mocks.MockMSP{} i, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) mockIdentity := &mocks.MockSigningIdentity{Mock: mock.Mock{}, MockIdentity: &mocks.MockIdentity{ID: "Alice"}} identifier := &msp.IdentityIdentifier{Mspid: "MSP", Id: "Alice"} mockMSP.On("GetSigningIdentity", identifier).Return(mockIdentity, nil) id, err := i.GetSigningIdentity(identifier) - assert.NoError(t, err) - assert.Equal(t, mockIdentity, id) + require.NoError(t, err) + require.Equal(t, mockIdentity, id) mockMSP.AssertExpectations(t) } func TestGetDefaultSigningIdentity(t *testing.T) { mockMSP := &mocks.MockMSP{} i, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) mockIdentity := &mocks.MockSigningIdentity{Mock: mock.Mock{}, MockIdentity: &mocks.MockIdentity{ID: "Alice"}} mockMSP.On("GetDefaultSigningIdentity").Return(mockIdentity, nil) id, err := i.GetDefaultSigningIdentity() - assert.NoError(t, err) - assert.Equal(t, mockIdentity, id) + require.NoError(t, err) + require.Equal(t, mockIdentity, id) mockMSP.AssertExpectations(t) } func TestGetTLSRootCerts(t *testing.T) { mockMSP := &mocks.MockMSP{} i, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) expected := [][]byte{{1}, {2}} mockMSP.On("GetTLSRootCerts").Return(expected) certs := i.GetTLSRootCerts() - assert.Equal(t, expected, certs) + require.Equal(t, expected, certs) } func TestGetTLSIntermediateCerts(t *testing.T) { mockMSP := &mocks.MockMSP{} i, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) expected := [][]byte{{1}, {2}} mockMSP.On("GetTLSIntermediateCerts").Return(expected) certs := i.GetTLSIntermediateCerts() - assert.Equal(t, expected, certs) + require.Equal(t, expected, certs) } func TestDeserializeIdentity(t *testing.T) { mockMSP := &mocks.MockMSP{} wrappedMSP, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) // Check id is cached mockIdentity := &mocks.MockIdentity{ID: "Alice"} @@ -144,8 +144,8 @@ func TestDeserializeIdentity(t *testing.T) { expectedIdentity = mockIdentity2 } id, err := wrappedMSP.DeserializeIdentity(sIdentity) - assert.NoError(t, err) - assert.Equal(t, expectedIdentity, id.(*cachedIdentity).Identity) + require.NoError(t, err) + require.Equal(t, expectedIdentity, id.(*cachedIdentity).Identity) }(wrappedMSP, i) } wg.Wait() @@ -153,12 +153,12 @@ func TestDeserializeIdentity(t *testing.T) { mockMSP.AssertExpectations(t) // Check the cache _, ok := wrappedMSP.(*cachedMSP).deserializeIdentityCache.get(string(serializedIdentity)) - assert.True(t, ok) + require.True(t, ok) // Check the same object is returned id, err := wrappedMSP.DeserializeIdentity(serializedIdentity) - assert.NoError(t, err) - assert.True(t, mockIdentity == id.(*cachedIdentity).Identity) + require.NoError(t, err) + require.True(t, mockIdentity == id.(*cachedIdentity).Identity) mockMSP.AssertExpectations(t) // Check id is not cached @@ -166,51 +166,51 @@ func TestDeserializeIdentity(t *testing.T) { serializedIdentity = []byte{1, 2, 3, 4} mockMSP.On("DeserializeIdentity", serializedIdentity).Return(mockIdentity, errors.New("Invalid identity")) _, err = wrappedMSP.DeserializeIdentity(serializedIdentity) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid identity") + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid identity") mockMSP.AssertExpectations(t) _, ok = wrappedMSP.(*cachedMSP).deserializeIdentityCache.get(string(serializedIdentity)) - assert.False(t, ok) + require.False(t, ok) } func TestValidate(t *testing.T) { mockMSP := &mocks.MockMSP{} i, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) // Check validation is cached mockIdentity := &mocks.MockIdentity{ID: "Alice"} mockIdentity.On("GetIdentifier").Return(&msp.IdentityIdentifier{Mspid: "MSP", Id: "Alice"}) mockMSP.On("Validate", mockIdentity).Return(nil) err = i.Validate(mockIdentity) - assert.NoError(t, err) + require.NoError(t, err) mockIdentity.AssertExpectations(t) mockMSP.AssertExpectations(t) // Check the cache identifier := mockIdentity.GetIdentifier() key := string(identifier.Mspid + ":" + identifier.Id) v, ok := i.(*cachedMSP).validateIdentityCache.get(string(key)) - assert.True(t, ok) - assert.True(t, v.(bool)) + require.True(t, ok) + require.True(t, v.(bool)) // Recheck err = i.Validate(mockIdentity) - assert.NoError(t, err) + require.NoError(t, err) // Check validation is not cached mockIdentity = &mocks.MockIdentity{ID: "Bob"} mockIdentity.On("GetIdentifier").Return(&msp.IdentityIdentifier{Mspid: "MSP", Id: "Bob"}) mockMSP.On("Validate", mockIdentity).Return(errors.New("Invalid identity")) err = i.Validate(mockIdentity) - assert.Error(t, err) + require.Error(t, err) mockIdentity.AssertExpectations(t) mockMSP.AssertExpectations(t) // Check the cache identifier = mockIdentity.GetIdentifier() key = string(identifier.Mspid + ":" + identifier.Id) _, ok = i.(*cachedMSP).validateIdentityCache.get(string(key)) - assert.False(t, ok) + require.False(t, ok) } func TestSatisfiesValidateIndirectCall(t *testing.T) { @@ -224,20 +224,20 @@ func TestSatisfiesValidateIndirectCall(t *testing.T) { mockIdentity.On("GetIdentifier").Return(&msp.IdentityIdentifier{Mspid: "MSP", Id: "Alice"}) cache, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) mockMSP.On("Validate", mockIdentity).Return(nil) // Test that cache returns the correct value, and also use this to prime the cache err = cache.Validate(mockIdentity) mockMSP.AssertNumberOfCalls(t, "Validate", 1) - assert.NoError(t, err) + require.NoError(t, err) // Get the identity we test the caching on identity, err := cache.DeserializeIdentity([]byte{1, 2, 3}) - assert.NoError(t, err) + require.NoError(t, err) // Ensure the identity returned answers what the cached MSP answers. err = identity.Validate() - assert.NoError(t, err) + require.NoError(t, err) // Ensure that although a call to Validate was called, the calls weren't passed on to the backing MSP mockMSP.AssertNumberOfCalls(t, "Validate", 1) } @@ -254,7 +254,7 @@ func TestSatisfiesPrincipalIndirectCall(t *testing.T) { mockIdentity.On("GetIdentifier").Return(&msp.IdentityIdentifier{Mspid: "MSP", Id: "Alice"}) cache, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) // First invocation of the SatisfiesPrincipal returns an error mockMSP.On("SatisfiesPrincipal", mockIdentity, mockMSPPrincipal).Return(errors.New("error: foo")).Once() @@ -263,20 +263,20 @@ func TestSatisfiesPrincipalIndirectCall(t *testing.T) { // Test that cache returns the correct value err = cache.SatisfiesPrincipal(mockIdentity, mockMSPPrincipal) - assert.Equal(t, "error: foo", err.Error()) + require.Equal(t, "error: foo", err.Error()) // Get the identity we test the caching on identity, err := cache.DeserializeIdentity([]byte{1, 2, 3}) - assert.NoError(t, err) + require.NoError(t, err) // Ensure the identity returned answers what the cached MSP answers. // If the invocation doesn't hit the cache, it will return nil instead of an error. err = identity.SatisfiesPrincipal(mockMSPPrincipal) - assert.Equal(t, "error: foo", err.Error()) + require.Equal(t, "error: foo", err.Error()) } func TestSatisfiesPrincipal(t *testing.T) { mockMSP := &mocks.MockMSP{} i, err := New(mockMSP) - assert.NoError(t, err) + require.NoError(t, err) // Check validation is cached mockIdentity := &mocks.MockIdentity{ID: "Alice"} @@ -285,7 +285,7 @@ func TestSatisfiesPrincipal(t *testing.T) { mockMSP.On("SatisfiesPrincipal", mockIdentity, mockMSPPrincipal).Return(nil) mockMSP.SatisfiesPrincipal(mockIdentity, mockMSPPrincipal) err = i.SatisfiesPrincipal(mockIdentity, mockMSPPrincipal) - assert.NoError(t, err) + require.NoError(t, err) mockIdentity.AssertExpectations(t) mockMSP.AssertExpectations(t) // Check the cache @@ -294,12 +294,12 @@ func TestSatisfiesPrincipal(t *testing.T) { principalKey := string(mockMSPPrincipal.PrincipalClassification) + string(mockMSPPrincipal.Principal) key := identityKey + principalKey v, ok := i.(*cachedMSP).satisfiesPrincipalCache.get(key) - assert.True(t, ok) - assert.Nil(t, v) + require.True(t, ok) + require.Nil(t, v) // Recheck err = i.SatisfiesPrincipal(mockIdentity, mockMSPPrincipal) - assert.NoError(t, err) + require.NoError(t, err) // Check validation is not cached mockIdentity = &mocks.MockIdentity{ID: "Bob"} @@ -308,7 +308,7 @@ func TestSatisfiesPrincipal(t *testing.T) { mockMSP.On("SatisfiesPrincipal", mockIdentity, mockMSPPrincipal).Return(errors.New("Invalid")) mockMSP.SatisfiesPrincipal(mockIdentity, mockMSPPrincipal) err = i.SatisfiesPrincipal(mockIdentity, mockMSPPrincipal) - assert.Error(t, err) + require.Error(t, err) mockIdentity.AssertExpectations(t) mockMSP.AssertExpectations(t) // Check the cache @@ -317,7 +317,7 @@ func TestSatisfiesPrincipal(t *testing.T) { principalKey = string(mockMSPPrincipal.PrincipalClassification) + string(mockMSPPrincipal.Principal) key = identityKey + principalKey v, ok = i.(*cachedMSP).satisfiesPrincipalCache.get(key) - assert.True(t, ok) - assert.NotNil(t, v) - assert.Contains(t, "Invalid", v.(error).Error()) + require.True(t, ok) + require.NotNil(t, v) + require.Contains(t, "Invalid", v.(error).Error()) } diff --git a/msp/cache/second_chance_test.go b/msp/cache/second_chance_test.go index 8c855123176..00cc503c454 100644 --- a/msp/cache/second_chance_test.go +++ b/msp/cache/second_chance_test.go @@ -11,42 +11,42 @@ import ( "sync" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSecondChanceCache(t *testing.T) { cache := newSecondChanceCache(2) - assert.NotNil(t, cache) + require.NotNil(t, cache) cache.add("a", "xyz") cache.add("b", "123") // get b, b referenced bit is set to true obj, ok := cache.get("b") - assert.True(t, ok) - assert.Equal(t, "123", obj.(string)) + require.True(t, ok) + require.Equal(t, "123", obj.(string)) // add c. victim scan: delete a and set b as the next candidate of a victim cache.add("c", "777") // check a is deleted _, ok = cache.get("a") - assert.False(t, ok) + require.False(t, ok) // add d. victim scan: b referenced bit is set to false and delete c cache.add("d", "555") // check c is deleted _, ok = cache.get("c") - assert.False(t, ok) + require.False(t, ok) // check b and d obj, ok = cache.get("b") - assert.True(t, ok) - assert.Equal(t, "123", obj.(string)) + require.True(t, ok) + require.Equal(t, "123", obj.(string)) obj, ok = cache.get("d") - assert.True(t, ok) - assert.Equal(t, "555", obj.(string)) + require.True(t, ok) + require.Equal(t, "555", obj.(string)) } func TestSecondChanceCacheConcurrent(t *testing.T) { @@ -72,13 +72,13 @@ func TestSecondChanceCacheConcurrent(t *testing.T) { val, ok := cache.get(key1) if ok { - assert.Equal(t, val1, val.(string)) + require.Equal(t, val1, val.(string)) } cache.add(key1, val1) val, ok = cache.get(key2) if ok { - assert.Equal(t, val2, val.(string)) + require.Equal(t, val2, val.(string)) } cache.add(key2, val2) @@ -86,13 +86,13 @@ func TestSecondChanceCacheConcurrent(t *testing.T) { val4 := key4 val, ok = cache.get(key4) if ok { - assert.Equal(t, val4, val.(string)) + require.Equal(t, val4, val.(string)) } cache.add(key4, val4) val, ok = cache.get(key3) if ok { - assert.Equal(t, val3, val.(string)) + require.Equal(t, val3, val.(string)) } } diff --git a/msp/cert_test.go b/msp/cert_test.go index 5539a20b46c..f43f1074a60 100644 --- a/msp/cert_test.go +++ b/msp/cert_test.go @@ -30,41 +30,41 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/bccsp/utils" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSanitizeCertWithRSA(t *testing.T) { cert := &x509.Certificate{} cert.SignatureAlgorithm = x509.MD2WithRSA result := isECDSASignedCert(cert) - assert.False(t, result) + require.False(t, result) cert.SignatureAlgorithm = x509.ECDSAWithSHA512 result = isECDSASignedCert(cert) - assert.True(t, result) + require.True(t, result) } func TestSanitizeCertInvalidInput(t *testing.T) { _, err := sanitizeECDSASignedCert(nil, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "certificate must be different from nil") + require.Error(t, err) + require.Contains(t, err.Error(), "certificate must be different from nil") _, err = sanitizeECDSASignedCert(&x509.Certificate{}, nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "parent certificate must be different from nil") + require.Error(t, err) + require.Contains(t, err.Error(), "parent certificate must be different from nil") k, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) cert := &x509.Certificate{} cert.PublicKey = &k.PublicKey sigma, err := utils.MarshalECDSASignature(big.NewInt(1), elliptic.P256().Params().N) - assert.NoError(t, err) + require.NoError(t, err) cert.Signature = sigma cert.PublicKeyAlgorithm = x509.ECDSA cert.Raw = []byte{0, 1} _, err = sanitizeECDSASignedCert(cert, cert) - assert.Error(t, err) - assert.Contains(t, err.Error(), "asn1: structure error: tags don't match") + require.Error(t, err) + require.Contains(t, err.Error(), "asn1: structure error: tags don't match") } func TestSanitizeCert(t *testing.T) { @@ -74,10 +74,10 @@ func TestSanitizeCert(t *testing.T) { k, cert = generateSelfSignedCert(t, time.Now()) _, s, err := utils.UnmarshalECDSASignature(cert.Signature) - assert.NoError(t, err) + require.NoError(t, err) lowS, err := utils.IsLowS(&k.PublicKey, s) - assert.NoError(t, err) + require.NoError(t, err) if !lowS { break @@ -85,20 +85,20 @@ func TestSanitizeCert(t *testing.T) { } sanitizedCert, err := sanitizeECDSASignedCert(cert, cert) - assert.NoError(t, err) - assert.NotEqual(t, cert.Signature, sanitizedCert.Signature) + require.NoError(t, err) + require.NotEqual(t, cert.Signature, sanitizedCert.Signature) _, s, err := utils.UnmarshalECDSASignature(sanitizedCert.Signature) - assert.NoError(t, err) + require.NoError(t, err) lowS, err := utils.IsLowS(&k.PublicKey, s) - assert.NoError(t, err) - assert.True(t, lowS) + require.NoError(t, err) + require.True(t, lowS) } func TestCertExpiration(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) msp := &bccspmsp{bccsp: cryptoProvider} msp.opts = &x509.VerifyOptions{} msp.opts.DNSName = "test.example.com" @@ -108,26 +108,26 @@ func TestCertExpiration(t *testing.T) { msp.opts.Roots = x509.NewCertPool() msp.opts.Roots.AddCert(cert) _, err = msp.getUniqueValidationChain(cert, msp.getValidityOptsForCert(cert)) - assert.NoError(t, err) + require.NoError(t, err) // Certificate is in the past _, cert = generateSelfSignedCert(t, time.Now().Add(-24*time.Hour)) msp.opts.Roots = x509.NewCertPool() msp.opts.Roots.AddCert(cert) _, err = msp.getUniqueValidationChain(cert, msp.getValidityOptsForCert(cert)) - assert.NoError(t, err) + require.NoError(t, err) // Certificate is in the middle _, cert = generateSelfSignedCert(t, time.Now()) msp.opts.Roots = x509.NewCertPool() msp.opts.Roots.AddCert(cert) _, err = msp.getUniqueValidationChain(cert, msp.getValidityOptsForCert(cert)) - assert.NoError(t, err) + require.NoError(t, err) } func generateSelfSignedCert(t *testing.T, now time.Time) (*ecdsa.PrivateKey, *x509.Certificate) { k, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - assert.NoError(t, err) + require.NoError(t, err) // Generate a self-signed certificate testExtKeyUsage := []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth, x509.ExtKeyUsageServerAuth} @@ -177,10 +177,10 @@ func generateSelfSignedCert(t *testing.T, now time.Time) (*ecdsa.PrivateKey, *x5 }, } certRaw, err := x509.CreateCertificate(rand.Reader, &template, &template, &k.PublicKey, k) - assert.NoError(t, err) + require.NoError(t, err) cert, err := x509.ParseCertificate(certRaw) - assert.NoError(t, err) + require.NoError(t, err) return k, cert } diff --git a/msp/configbuilder_test.go b/msp/configbuilder_test.go index eb581b53cd2..a65a80f9d86 100644 --- a/msp/configbuilder_test.go +++ b/msp/configbuilder_test.go @@ -14,7 +14,7 @@ import ( "github.com/hyperledger/fabric/bccsp/factory" "github.com/hyperledger/fabric/core/config/configtest" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSetupBCCSPKeystoreConfig(t *testing.T) { @@ -22,11 +22,11 @@ func TestSetupBCCSPKeystoreConfig(t *testing.T) { // Case 1 : Check with empty FactoryOpts rtnConfig := SetupBCCSPKeystoreConfig(nil, keystoreDir) - assert.NotNil(t, rtnConfig) - assert.Equal(t, rtnConfig.ProviderName, "SW") - assert.NotNil(t, rtnConfig.SwOpts) - assert.NotNil(t, rtnConfig.SwOpts.FileKeystore) - assert.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) + require.NotNil(t, rtnConfig) + require.Equal(t, rtnConfig.ProviderName, "SW") + require.NotNil(t, rtnConfig.SwOpts) + require.NotNil(t, rtnConfig.SwOpts.FileKeystore) + require.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) // Case 2 : Check with 'SW' as default provider // Case 2-1 : without SwOpts @@ -34,9 +34,9 @@ func TestSetupBCCSPKeystoreConfig(t *testing.T) { ProviderName: "SW", } rtnConfig = SetupBCCSPKeystoreConfig(bccspConfig, keystoreDir) - assert.NotNil(t, rtnConfig.SwOpts) - assert.NotNil(t, rtnConfig.SwOpts.FileKeystore) - assert.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) + require.NotNil(t, rtnConfig.SwOpts) + require.NotNil(t, rtnConfig.SwOpts.FileKeystore) + require.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) // Case 2-2 : without SwOpts.FileKeystore bccspConfig.SwOpts = &factory.SwOpts{ @@ -44,8 +44,8 @@ func TestSetupBCCSPKeystoreConfig(t *testing.T) { SecLevel: 256, } rtnConfig = SetupBCCSPKeystoreConfig(bccspConfig, keystoreDir) - assert.NotNil(t, rtnConfig.SwOpts.FileKeystore) - assert.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) + require.NotNil(t, rtnConfig.SwOpts.FileKeystore) + require.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) // Case 2-3 : without SwOpts.FileKeystore.KeyStorePath bccspConfig.SwOpts = &factory.SwOpts{ @@ -54,7 +54,7 @@ func TestSetupBCCSPKeystoreConfig(t *testing.T) { FileKeystore: &factory.FileKeystoreOpts{}, } rtnConfig = SetupBCCSPKeystoreConfig(bccspConfig, keystoreDir) - assert.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) + require.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) // Case 2-4 : with empty SwOpts.FileKeystore.KeyStorePath bccspConfig.SwOpts = &factory.SwOpts{ @@ -63,14 +63,14 @@ func TestSetupBCCSPKeystoreConfig(t *testing.T) { FileKeystore: &factory.FileKeystoreOpts{KeyStorePath: ""}, } rtnConfig = SetupBCCSPKeystoreConfig(bccspConfig, keystoreDir) - assert.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) + require.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) // Case 3 : Check with 'PKCS11' as default provider // Case 3-1 : without SwOpts bccspConfig.ProviderName = "PKCS11" bccspConfig.SwOpts = nil rtnConfig = SetupBCCSPKeystoreConfig(bccspConfig, keystoreDir) - assert.Nil(t, rtnConfig.SwOpts) + require.Nil(t, rtnConfig.SwOpts) // Case 3-2 : without SwOpts.FileKeystore bccspConfig.SwOpts = &factory.SwOpts{ @@ -78,60 +78,60 @@ func TestSetupBCCSPKeystoreConfig(t *testing.T) { SecLevel: 256, } rtnConfig = SetupBCCSPKeystoreConfig(bccspConfig, keystoreDir) - assert.NotNil(t, rtnConfig.SwOpts.FileKeystore) - assert.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) + require.NotNil(t, rtnConfig.SwOpts.FileKeystore) + require.Equal(t, rtnConfig.SwOpts.FileKeystore.KeyStorePath, keystoreDir) } func TestGetLocalMspConfig(t *testing.T) { mspDir := configtest.GetDevMspDir() _, err := GetLocalMspConfig(mspDir, nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) } func TestGetLocalMspConfigFails(t *testing.T) { _, err := GetLocalMspConfig("/tmp/", nil, "SampleOrg") - assert.Error(t, err) + require.Error(t, err) } func TestGetPemMaterialFromDirWithFile(t *testing.T) { tempFile, err := ioutil.TempFile("", "fabric-msp-test") - assert.NoError(t, err) + require.NoError(t, err) err = tempFile.Close() - assert.NoError(t, err) + require.NoError(t, err) defer os.Remove(tempFile.Name()) _, err = getPemMaterialFromDir(tempFile.Name()) - assert.Error(t, err) + require.Error(t, err) } func TestGetPemMaterialFromDirWithSymlinks(t *testing.T) { mspDir := configtest.GetDevMspDir() tempDir, err := ioutil.TempDir("", "fabric-msp-test") - assert.NoError(t, err) + require.NoError(t, err) defer os.RemoveAll(tempDir) dirSymlinkName := filepath.Join(tempDir, "..data") err = os.Symlink(filepath.Join(mspDir, "signcerts"), dirSymlinkName) - assert.NoError(t, err) + require.NoError(t, err) fileSymlinkTarget := filepath.Join("..data", "peer.pem") fileSymlinkName := filepath.Join(tempDir, "peer.pem") err = os.Symlink(fileSymlinkTarget, fileSymlinkName) - assert.NoError(t, err) + require.NoError(t, err) pemdataSymlink, err := getPemMaterialFromDir(tempDir) - assert.NoError(t, err) + require.NoError(t, err) expected, err := getPemMaterialFromDir(filepath.Join(mspDir, "signcerts")) - assert.NoError(t, err) - assert.Equal(t, pemdataSymlink, expected) + require.NoError(t, err) + require.Equal(t, pemdataSymlink, expected) } func TestReadFileUtils(t *testing.T) { // test that reading a file with an empty path doesn't crash _, err := readPemFile("") - assert.Error(t, err) + require.Error(t, err) // test that reading an existing file which is not a PEM file doesn't crash _, err = readPemFile("/dev/null") - assert.Error(t, err) + require.Error(t, err) } diff --git a/msp/factory_test.go b/msp/factory_test.go index c6647f6d6e0..615092d451a 100644 --- a/msp/factory_test.go +++ b/msp/factory_test.go @@ -12,65 +12,65 @@ import ( "testing" "github.com/hyperledger/fabric/bccsp/sw" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewInvalidOpts(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) i, err := New(nil, cryptoProvider) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid msp.NewOpts instance. It must be either *BCCSPNewOpts or *IdemixNewOpts. It was []") - assert.Nil(t, i) + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid msp.NewOpts instance. It must be either *BCCSPNewOpts or *IdemixNewOpts. It was []") + require.Nil(t, i) i, err = New(&BCCSPNewOpts{NewBaseOpts{Version: -1}}, cryptoProvider) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid *BCCSPNewOpts. Version not recognized [-1]") - assert.Nil(t, i) + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid *BCCSPNewOpts. Version not recognized [-1]") + require.Nil(t, i) i, err = New(&IdemixNewOpts{NewBaseOpts{Version: -1}}, cryptoProvider) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Invalid *IdemixNewOpts. Version not recognized [-1]") - assert.Nil(t, i) + require.Error(t, err) + require.Contains(t, err.Error(), "Invalid *IdemixNewOpts. Version not recognized [-1]") + require.Nil(t, i) } func TestNew(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) i, err := New(&BCCSPNewOpts{NewBaseOpts{Version: MSPv1_0}}, cryptoProvider) - assert.NoError(t, err) - assert.NotNil(t, i) - assert.Equal(t, MSPVersion(MSPv1_0), i.(*bccspmsp).version) - assert.Equal(t, + require.NoError(t, err) + require.NotNil(t, i) + require.Equal(t, MSPVersion(MSPv1_0), i.(*bccspmsp).version) + require.Equal(t, runtime.FuncForPC(reflect.ValueOf(i.(*bccspmsp).internalSetupFunc).Pointer()).Name(), runtime.FuncForPC(reflect.ValueOf(i.(*bccspmsp).setupV1).Pointer()).Name(), ) - assert.Equal(t, + require.Equal(t, runtime.FuncForPC(reflect.ValueOf(i.(*bccspmsp).internalValidateIdentityOusFunc).Pointer()).Name(), runtime.FuncForPC(reflect.ValueOf(i.(*bccspmsp).validateIdentityOUsV1).Pointer()).Name(), ) i, err = New(&BCCSPNewOpts{NewBaseOpts{Version: MSPv1_1}}, cryptoProvider) - assert.NoError(t, err) - assert.NotNil(t, i) - assert.Equal(t, MSPVersion(MSPv1_1), i.(*bccspmsp).version) - assert.Equal(t, + require.NoError(t, err) + require.NotNil(t, i) + require.Equal(t, MSPVersion(MSPv1_1), i.(*bccspmsp).version) + require.Equal(t, runtime.FuncForPC(reflect.ValueOf(i.(*bccspmsp).internalSetupFunc).Pointer()).Name(), runtime.FuncForPC(reflect.ValueOf(i.(*bccspmsp).setupV11).Pointer()).Name(), ) - assert.Equal(t, + require.Equal(t, runtime.FuncForPC(reflect.ValueOf(i.(*bccspmsp).internalValidateIdentityOusFunc).Pointer()).Name(), runtime.FuncForPC(reflect.ValueOf(i.(*bccspmsp).validateIdentityOUsV11).Pointer()).Name(), ) i, err = New(&IdemixNewOpts{NewBaseOpts{Version: MSPv1_0}}, cryptoProvider) - assert.Error(t, err) - assert.Nil(t, i) - assert.Contains(t, err.Error(), "Invalid *IdemixNewOpts. Version not recognized [0]") + require.Error(t, err) + require.Nil(t, i) + require.Contains(t, err.Error(), "Invalid *IdemixNewOpts. Version not recognized [0]") i, err = New(&IdemixNewOpts{NewBaseOpts{Version: MSPv1_1}}, cryptoProvider) - assert.NoError(t, err) - assert.NotNil(t, i) + require.NoError(t, err) + require.NotNil(t, i) } diff --git a/msp/idemixmsp_test.go b/msp/idemixmsp_test.go index 46581192946..7a221290b56 100644 --- a/msp/idemixmsp_test.go +++ b/msp/idemixmsp_test.go @@ -13,7 +13,7 @@ import ( "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric/idemix" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func setup(configPath string, ID string) (MSP, error) { @@ -59,210 +59,210 @@ func getDefaultSigner(msp MSP) (SigningIdentity, error) { func TestSetup(t *testing.T) { msp, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) - assert.Equal(t, IDEMIX, msp.GetType()) + require.Equal(t, IDEMIX, msp.GetType()) } func TestSetupBad(t *testing.T) { _, err := setup("testdata/idemix/badpath", "MSPID") - assert.Error(t, err) - assert.Contains(t, err.Error(), "Getting MSP config failed") + require.Error(t, err) + require.Contains(t, err.Error(), "Getting MSP config failed") msp1, err := newIdemixMsp(MSPv1_3) - assert.NoError(t, err) + require.NoError(t, err) // Setup with nil config err = msp1.Setup(nil) - assert.Error(t, err) - assert.Contains(t, err.Error(), "setup error: nil conf reference") + require.Error(t, err) + require.Contains(t, err.Error(), "setup error: nil conf reference") // Setup with incorrect MSP type conf := &msp.MSPConfig{Type: 1234, Config: nil} err = msp1.Setup(conf) - assert.Error(t, err) - assert.Contains(t, err.Error(), "setup error: config is not of type IDEMIX") + require.Error(t, err) + require.Contains(t, err.Error(), "setup error: config is not of type IDEMIX") // Setup with bad idemix config bytes conf = &msp.MSPConfig{Type: int32(IDEMIX), Config: []byte("barf")} err = msp1.Setup(conf) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed unmarshalling idemix msp config") + require.Error(t, err) + require.Contains(t, err.Error(), "failed unmarshalling idemix msp config") conf, err = GetIdemixMspConfig("testdata/idemix/MSP1OU1", "IdemixMSP1") - assert.NoError(t, err) + require.NoError(t, err) idemixconfig := &msp.IdemixMSPConfig{} err = proto.Unmarshal(conf.Config, idemixconfig) - assert.NoError(t, err) + require.NoError(t, err) // Create MSP config with IPK with incorrect attribute names rng, err := idemix.GetRand() - assert.NoError(t, err) + require.NoError(t, err) key, err := idemix.NewIssuerKey([]string{}, rng) - assert.NoError(t, err) + require.NoError(t, err) ipkBytes, err := proto.Marshal(key.Ipk) - assert.NoError(t, err) + require.NoError(t, err) idemixconfig.Ipk = ipkBytes idemixConfigBytes, err := proto.Marshal(idemixconfig) - assert.NoError(t, err) + require.NoError(t, err) conf.Config = idemixConfigBytes err = msp1.Setup(conf) - assert.Error(t, err) - assert.Contains(t, err.Error(), "issuer public key must have have attributes OU, Role, EnrollmentId, and RevocationHandle") + require.Error(t, err) + require.Contains(t, err.Error(), "issuer public key must have have attributes OU, Role, EnrollmentId, and RevocationHandle") // Create MSP config with bad IPK bytes ipkBytes = []byte("barf") idemixconfig.Ipk = ipkBytes idemixConfigBytes, err = proto.Marshal(idemixconfig) - assert.NoError(t, err) + require.NoError(t, err) conf.Config = idemixConfigBytes err = msp1.Setup(conf) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to unmarshal ipk from idemix msp config") + require.Error(t, err) + require.Contains(t, err.Error(), "failed to unmarshal ipk from idemix msp config") } func TestSigning(t *testing.T) { msp, err := setup("testdata/idemix/MSP1OU1", "MSP1") - assert.NoError(t, err) + require.NoError(t, err) id, err := getDefaultSigner(msp) - assert.NoError(t, err) + require.NoError(t, err) msg := []byte("TestMessage") sig, err := id.Sign(msg) - assert.NoError(t, err) + require.NoError(t, err) err = id.Verify(msg, sig) - assert.NoError(t, err) + require.NoError(t, err) err = id.Verify([]byte("OtherMessage"), sig) - assert.Error(t, err) - assert.Contains(t, err.Error(), "pseudonym signature invalid: zero-knowledge proof is invalid") + require.Error(t, err) + require.Contains(t, err.Error(), "pseudonym signature invalid: zero-knowledge proof is invalid") verMsp, err := setup("testdata/idemix/MSP1Verifier", "MSP1") - assert.NoError(t, err) + require.NoError(t, err) err = verMsp.Validate(id) - assert.NoError(t, err) + require.NoError(t, err) _, err = verMsp.GetDefaultSigningIdentity() - assert.Error(t, err) - assert.Contains(t, err.Error(), "no default signer setup") + require.Error(t, err) + require.Contains(t, err.Error(), "no default signer setup") } func TestSigningBad(t *testing.T) { msp, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id, err := getDefaultSigner(msp) - assert.NoError(t, err) + require.NoError(t, err) msg := []byte("TestMessage") sig := []byte("barf") err = id.Verify(msg, sig) - assert.Error(t, err) - assert.Contains(t, err.Error(), "error unmarshalling signature") + require.Error(t, err) + require.Contains(t, err.Error(), "error unmarshalling signature") } func TestIdentitySerialization(t *testing.T) { msp, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id, err := getDefaultSigner(msp) - assert.NoError(t, err) + require.NoError(t, err) // Test serialization of identities serializedID, err := id.Serialize() - assert.NoError(t, err) + require.NoError(t, err) verID, err := msp.DeserializeIdentity(serializedID) - assert.NoError(t, err) + require.NoError(t, err) err = verID.Validate() - assert.NoError(t, err) + require.NoError(t, err) err = msp.Validate(verID) - assert.NoError(t, err) + require.NoError(t, err) } func TestIdentitySerializationBad(t *testing.T) { msp, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) _, err = msp.DeserializeIdentity([]byte("barf")) - assert.Error(t, err, "DeserializeIdentity should have failed for bad input") - assert.Contains(t, err.Error(), "could not deserialize a SerializedIdentity") + require.Error(t, err, "DeserializeIdentity should have failed for bad input") + require.Contains(t, err.Error(), "could not deserialize a SerializedIdentity") } func TestIdentitySerializationWrongMSP(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) msp2, err := setup("testdata/idemix/MSP2OU1", "MSP2OU1") - assert.NoError(t, err) + require.NoError(t, err) id2, err := getDefaultSigner(msp2) - assert.NoError(t, err) + require.NoError(t, err) idBytes, err := id2.Serialize() - assert.NoError(t, err) + require.NoError(t, err) _, err = msp1.DeserializeIdentity(idBytes) - assert.Error(t, err, "DeserializeIdentity should have failed for ID of other MSP") - assert.Contains(t, err.Error(), "expected MSP ID MSP1OU1, received MSP2OU1") + require.Error(t, err, "DeserializeIdentity should have failed for ID of other MSP") + require.Contains(t, err.Error(), "expected MSP ID MSP1OU1, received MSP2OU1") } func TestPrincipalIdentity(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) idBytes, err := id1.Serialize() - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_IDENTITY, Principal: idBytes} err = id1.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestPrincipalIdentityWrongIdentity(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) msp2, err := setup("testdata/idemix/MSP1OU2", "MSP1OU2") - assert.NoError(t, err) + require.NoError(t, err) id2, err := getDefaultSigner(msp2) - assert.NoError(t, err) + require.NoError(t, err) idBytes, err := id1.Serialize() - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_IDENTITY, Principal: idBytes} err = id2.SatisfiesPrincipal(principal) - assert.Error(t, err, "Identity MSP principal for different user should fail") - assert.Contains(t, err.Error(), "the identities do not match") + require.Error(t, err, "Identity MSP principal for different user should fail") + require.Contains(t, err.Error(), "the identities do not match") } func TestPrincipalIdentityBadIdentity(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) idBytes := []byte("barf") @@ -271,92 +271,92 @@ func TestPrincipalIdentityBadIdentity(t *testing.T) { Principal: idBytes} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err, "Identity MSP principal for a bad principal should fail") - assert.Contains(t, err.Error(), "the identities do not match") + require.Error(t, err, "Identity MSP principal for a bad principal should fail") + require.Contains(t, err.Error(), "the identities do not match") } func TestAnonymityPrincipal(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPIdentityAnonymity{AnonymityType: msp.MSPIdentityAnonymity_ANONYMOUS}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ANONYMITY, Principal: principalBytes} err = id1.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestAnonymityPrincipalBad(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPIdentityAnonymity{AnonymityType: msp.MSPIdentityAnonymity_NOMINAL}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ANONYMITY, Principal: principalBytes} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err, "Idemix identity is anonymous and should not pass NOMINAL anonymity principal") - assert.Contains(t, err.Error(), "principal is nominal, but idemix MSP is anonymous") + require.Error(t, err, "Idemix identity is anonymous and should not pass NOMINAL anonymity principal") + require.Contains(t, err.Error(), "principal is nominal, but idemix MSP is anonymous") } func TestAnonymityPrincipalV11(t *testing.T) { msp1, err := setupWithVersion("testdata/idemix/MSP1OU1", "MSP1OU1", MSPv1_1) - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPIdentityAnonymity{AnonymityType: msp.MSPIdentityAnonymity_NOMINAL}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ANONYMITY, Principal: principalBytes} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Anonymity MSP Principals are unsupported in MSPv1_1") + require.Error(t, err) + require.Contains(t, err.Error(), "Anonymity MSP Principals are unsupported in MSPv1_1") } func TestIdemixIsWellFormed(t *testing.T) { idemixMSP, err := setup("testdata/idemix/MSP1OU1", "TestName") - assert.NoError(t, err) + require.NoError(t, err) id, err := getDefaultSigner(idemixMSP) - assert.NoError(t, err) + require.NoError(t, err) rawId, err := id.Serialize() - assert.NoError(t, err) + require.NoError(t, err) sId := &msp.SerializedIdentity{} err = proto.Unmarshal(rawId, sId) - assert.NoError(t, err) + require.NoError(t, err) err = idemixMSP.IsWellFormed(sId) - assert.NoError(t, err) + require.NoError(t, err) // Corrupt the identity bytes sId.IdBytes = append(sId.IdBytes, 1) err = idemixMSP.IsWellFormed(sId) - assert.Error(t, err) - assert.Contains(t, err.Error(), "not an idemix identity") + require.Error(t, err) + require.Contains(t, err.Error(), "not an idemix identity") } func TestPrincipalOU(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) ou := &msp.OrganizationUnit{ OrganizationalUnitIdentifier: id1.GetOrganizationalUnits()[0].OrganizationalUnitIdentifier, @@ -364,22 +364,22 @@ func TestPrincipalOU(t *testing.T) { CertifiersIdentifier: nil, } bytes, err := proto.Marshal(ou) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, Principal: bytes} err = id1.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestPrincipalOUWrongOU(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) ou := &msp.OrganizationUnit{ OrganizationalUnitIdentifier: "DifferentOU", @@ -387,24 +387,24 @@ func TestPrincipalOUWrongOU(t *testing.T) { CertifiersIdentifier: nil, } bytes, err := proto.Marshal(ou) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, Principal: bytes} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err, "OU MSP principal should have failed for user of different OU") - assert.Contains(t, err.Error(), "user is not part of the desired organizational unit") + require.Error(t, err, "OU MSP principal should have failed for user of different OU") + require.Contains(t, err.Error(), "user is not part of the desired organizational unit") } func TestPrincipalOUWrongMSP(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) ou := &msp.OrganizationUnit{ OrganizationalUnitIdentifier: "OU1", @@ -412,75 +412,75 @@ func TestPrincipalOUWrongMSP(t *testing.T) { CertifiersIdentifier: nil, } bytes, err := proto.Marshal(ou) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, Principal: bytes} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err, "OU MSP principal should have failed for user of different MSP") - assert.Contains(t, err.Error(), "the identity is a member of a different MSP") + require.Error(t, err, "OU MSP principal should have failed for user of different MSP") + require.Contains(t, err.Error(), "the identity is a member of a different MSP") } func TestPrincipalOUBad(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) bytes := []byte("barf") - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, Principal: bytes} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err, "OU MSP principal should have failed for a bad OU principal") - assert.Contains(t, err.Error(), "could not unmarshal OU from principal") + require.Error(t, err, "OU MSP principal should have failed for a bad OU principal") + require.Contains(t, err.Error(), "could not unmarshal OU from principal") } func TestPrincipalRoleMember(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id1.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) // Member should also satisfy client principalBytes, err = proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_CLIENT, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principal = &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id1.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestPrincipalRoleAdmin(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1Admin", "MSP1OU1Admin") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, @@ -488,118 +488,118 @@ func TestPrincipalRoleAdmin(t *testing.T) { // Admin should also satisfy member err = id1.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err = proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principal = &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id1.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestPrincipalRoleNotPeer(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1Admin", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_PEER, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err, "Admin should not satisfy PEER principal") - assert.Contains(t, err.Error(), "idemixmsp only supports client use, so it cannot satisfy an MSPRole PEER principal") + require.Error(t, err, "Admin should not satisfy PEER principal") + require.Contains(t, err.Error(), "idemixmsp only supports client use, so it cannot satisfy an MSPRole PEER principal") } func TestPrincipalRoleNotAdmin(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err, "Member should not satisfy Admin principal") - assert.Contains(t, err.Error(), "user is not an admin") + require.Error(t, err, "Member should not satisfy Admin principal") + require.Contains(t, err.Error(), "user is not an admin") } func TestPrincipalRoleWrongMSP(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "OtherMSP"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err, "Role MSP principal should have failed for user of different MSP") - assert.Contains(t, err.Error(), "the identity is a member of a different MSP") + require.Error(t, err, "Role MSP principal should have failed for user of different MSP") + require.Contains(t, err.Error(), "the identity is a member of a different MSP") } func TestPrincipalRoleBadRole(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) // Make principal for nonexisting role 1234 principalBytes, err := proto.Marshal(&msp.MSPRole{Role: 1234, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err, "Role MSP principal should have failed for a bad Role") - assert.Contains(t, err.Error(), "invalid MSP role type") + require.Error(t, err, "Role MSP principal should have failed for a bad Role") + require.Contains(t, err.Error(), "invalid MSP role type") } func TestPrincipalBad(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: 1234, Principal: nil} err = id1.SatisfiesPrincipal(principal) - assert.Error(t, err, "Principal with bad Classification should fail") - assert.Contains(t, err.Error(), "invalid principal type") + require.Error(t, err, "Principal with bad Classification should fail") + require.Contains(t, err.Error(), "invalid principal type") } func TestPrincipalCombined(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) ou := &msp.OrganizationUnit{ OrganizationalUnitIdentifier: id1.GetOrganizationalUnits()[0].OrganizationalUnitIdentifier, @@ -607,14 +607,14 @@ func TestPrincipalCombined(t *testing.T) { CertifiersIdentifier: nil, } principalBytes, err := proto.Marshal(ou) - assert.NoError(t, err) + require.NoError(t, err) principalOU := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, Principal: principalBytes} principalBytes, err = proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principalRole := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, @@ -625,20 +625,20 @@ func TestPrincipalCombined(t *testing.T) { combinedPrincipal := &msp.CombinedPrincipal{Principals: principals} combinedPrincipalBytes, err := proto.Marshal(combinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) principalsCombined := &msp.MSPPrincipal{PrincipalClassification: msp.MSPPrincipal_COMBINED, Principal: combinedPrincipalBytes} err = id1.SatisfiesPrincipal(principalsCombined) - assert.NoError(t, err) + require.NoError(t, err) } func TestPrincipalCombinedBad(t *testing.T) { msp1, err := setup("testdata/idemix/MSP1OU1", "MSP1OU1") - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) // create combined principal requiring membership of OU1 in MSP1 and requiring admin role ou := &msp.OrganizationUnit{ @@ -647,14 +647,14 @@ func TestPrincipalCombinedBad(t *testing.T) { CertifiersIdentifier: nil, } principalBytes, err := proto.Marshal(ou) - assert.NoError(t, err) + require.NoError(t, err) principalOU := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, Principal: principalBytes} principalBytes, err = proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principalRole := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, @@ -665,21 +665,21 @@ func TestPrincipalCombinedBad(t *testing.T) { combinedPrincipal := &msp.CombinedPrincipal{Principals: principals} combinedPrincipalBytes, err := proto.Marshal(combinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) principalsCombined := &msp.MSPPrincipal{PrincipalClassification: msp.MSPPrincipal_COMBINED, Principal: combinedPrincipalBytes} err = id1.SatisfiesPrincipal(principalsCombined) - assert.Error(t, err, "non-admin member of OU1 in MSP1 should not satisfy principal admin and OU1 in MSP1") - assert.Contains(t, err.Error(), "user is not an admin") + require.Error(t, err, "non-admin member of OU1 in MSP1 should not satisfy principal admin and OU1 in MSP1") + require.Contains(t, err.Error(), "user is not an admin") } func TestPrincipalCombinedV11(t *testing.T) { msp1, err := setupWithVersion("testdata/idemix/MSP1OU1", "MSP1OU1", MSPv1_1) - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) ou := &msp.OrganizationUnit{ OrganizationalUnitIdentifier: id1.GetOrganizationalUnits()[0].OrganizationalUnitIdentifier, @@ -687,14 +687,14 @@ func TestPrincipalCombinedV11(t *testing.T) { CertifiersIdentifier: nil, } principalBytes, err := proto.Marshal(ou) - assert.NoError(t, err) + require.NoError(t, err) principalOU := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, Principal: principalBytes} principalBytes, err = proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principalRole := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, @@ -705,43 +705,43 @@ func TestPrincipalCombinedV11(t *testing.T) { combinedPrincipal := &msp.CombinedPrincipal{Principals: principals} combinedPrincipalBytes, err := proto.Marshal(combinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) principalsCombined := &msp.MSPPrincipal{PrincipalClassification: msp.MSPPrincipal_COMBINED, Principal: combinedPrincipalBytes} err = id1.SatisfiesPrincipal(principalsCombined) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Combined MSP Principals are unsupported in MSPv1_1") + require.Error(t, err) + require.Contains(t, err.Error(), "Combined MSP Principals are unsupported in MSPv1_1") } func TestRoleClientV11(t *testing.T) { msp1, err := setupWithVersion("testdata/idemix/MSP1OU1", "MSP1OU1", MSPv1_1) - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_CLIENT, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principalRole := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id1.SatisfiesPrincipal(principalRole) - assert.Error(t, err) - assert.Contains(t, err.Error(), "invalid MSP role type") + require.Error(t, err) + require.Contains(t, err.Error(), "invalid MSP role type") } func TestRolePeerV11(t *testing.T) { msp1, err := setupWithVersion("testdata/idemix/MSP1OU1", "MSP1OU1", MSPv1_1) - assert.NoError(t, err) + require.NoError(t, err) id1, err := getDefaultSigner(msp1) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_PEER, MspIdentifier: id1.GetMSPIdentifier()}) - assert.NoError(t, err) + require.NoError(t, err) principalRole := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id1.SatisfiesPrincipal(principalRole) - assert.Error(t, err) - assert.Contains(t, err.Error(), "invalid MSP role type") + require.Error(t, err) + require.Contains(t, err.Error(), "invalid MSP role type") } diff --git a/msp/mgmt/deserializer_test.go b/msp/mgmt/deserializer_test.go index c3ba69c866f..78ead25d775 100644 --- a/msp/mgmt/deserializer_test.go +++ b/msp/mgmt/deserializer_test.go @@ -15,58 +15,58 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/core/config/configtest" "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewDeserializersManager(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) - assert.NotNil(t, NewDeserializersManager(cryptoProvider)) + require.NoError(t, err) + require.NotNil(t, NewDeserializersManager(cryptoProvider)) } func TestMspDeserializersManager_Deserialize(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) m := NewDeserializersManager(cryptoProvider) i, err := GetLocalMSP(cryptoProvider).GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) raw, err := i.Serialize() - assert.NoError(t, err) + require.NoError(t, err) i2, err := m.Deserialize(raw) - assert.NoError(t, err) - assert.NotNil(t, i2) - assert.NotNil(t, i2.IdBytes) - assert.Equal(t, m.GetLocalMSPIdentifier(), i2.Mspid) + require.NoError(t, err) + require.NotNil(t, i2) + require.NotNil(t, i2.IdBytes) + require.Equal(t, m.GetLocalMSPIdentifier(), i2.Mspid) } func TestMspDeserializersManager_GetChannelDeserializers(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) m := NewDeserializersManager(cryptoProvider) deserializers := m.GetChannelDeserializers() - assert.NotNil(t, deserializers) + require.NotNil(t, deserializers) } func TestMspDeserializersManager_GetLocalDeserializer(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) m := NewDeserializersManager(cryptoProvider) i, err := GetLocalMSP(cryptoProvider).GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) raw, err := i.Serialize() - assert.NoError(t, err) + require.NoError(t, err) i2, err := m.GetLocalDeserializer().DeserializeIdentity(raw) - assert.NoError(t, err) - assert.NotNil(t, i2) - assert.Equal(t, m.GetLocalMSPIdentifier(), i2.GetMSPIdentifier()) + require.NoError(t, err) + require.NotNil(t, i2) + require.Equal(t, m.GetLocalMSPIdentifier(), i2.GetMSPIdentifier()) } func TestMain(m *testing.M) { diff --git a/msp/mgmt/mgmt_test.go b/msp/mgmt/mgmt_test.go index 32e9e6e67c7..4e63ea71005 100644 --- a/msp/mgmt/mgmt_test.go +++ b/msp/mgmt/mgmt_test.go @@ -14,7 +14,7 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/core/config/configtest" "github.com/hyperledger/fabric/msp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetManagerForChains(t *testing.T) { @@ -44,21 +44,21 @@ func TestGetManagerForChains_usingMSPConfigHandlers(t *testing.T) { func TestGetIdentityDeserializer(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) XXXSetMSPManager("baz", msp.NewMSPManager()) ids := GetIdentityDeserializer("baz", cryptoProvider) - assert.NotNil(t, ids) + require.NotNil(t, ids) ids = GetIdentityDeserializer("", cryptoProvider) - assert.NotNil(t, ids) + require.NotNil(t, ids) } func TestGetLocalSigningIdentityOrPanic(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) sid := GetLocalSigningIdentityOrPanic(cryptoProvider) - assert.NotNil(t, sid) + require.NotNil(t, sid) } func TestUpdateLocalMspCache(t *testing.T) { @@ -86,13 +86,13 @@ func TestUpdateLocalMspCache(t *testing.T) { func TestNewMSPMgmtMgr(t *testing.T) { cryptoProvider, err := LoadMSPSetupForTesting() - assert.Nil(t, err) + require.Nil(t, err) // test for nonexistent channel mspMgmtMgr := GetManagerForChain("fake") id := GetLocalSigningIdentityOrPanic(cryptoProvider) - assert.NotNil(t, id) + require.NotNil(t, id) serializedID, err := id.Serialize() if err != nil { @@ -101,15 +101,15 @@ func TestNewMSPMgmtMgr(t *testing.T) { } idBack, err := mspMgmtMgr.DeserializeIdentity(serializedID) - assert.Error(t, err) - assert.Contains(t, err.Error(), "channel doesn't exist") - assert.Nil(t, idBack, "deserialized identity should have been nil") + require.Error(t, err) + require.Contains(t, err.Error(), "channel doesn't exist") + require.Nil(t, idBack, "deserialized identity should have been nil") // test for existing channel mspMgmtMgr = GetManagerForChain("testchannelid") id = GetLocalSigningIdentityOrPanic(cryptoProvider) - assert.NotNil(t, id) + require.NotNil(t, id) serializedID, err = id.Serialize() if err != nil { @@ -118,8 +118,8 @@ func TestNewMSPMgmtMgr(t *testing.T) { } idBack, err = mspMgmtMgr.DeserializeIdentity(serializedID) - assert.NoError(t, err) - assert.NotNil(t, idBack, "deserialized identity should not have been nil") + require.NoError(t, err) + require.NotNil(t, idBack, "deserialized identity should not have been nil") } func LoadMSPSetupForTesting() (bccsp.BCCSP, error) { diff --git a/msp/mgmt/peermsp_test.go b/msp/mgmt/peermsp_test.go index e3e32db8f30..209f7c69bbc 100644 --- a/msp/mgmt/peermsp_test.go +++ b/msp/mgmt/peermsp_test.go @@ -11,7 +11,7 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/core/config/configtest" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestLocalMSP(t *testing.T) { @@ -22,7 +22,7 @@ func TestLocalMSP(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, err = GetLocalMSP(cryptoProvider).GetDefaultSigningIdentity() if err != nil { t.Fatalf("GetDefaultSigningIdentity failed, err %s", err) diff --git a/msp/mgmt/principal_test.go b/msp/mgmt/principal_test.go index 6845f90f1d9..de8729f9d89 100644 --- a/msp/mgmt/principal_test.go +++ b/msp/mgmt/principal_test.go @@ -22,40 +22,40 @@ import ( "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric/bccsp/sw" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewLocalMSPPrincipalGetter(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) - assert.NotNil(t, NewLocalMSPPrincipalGetter(cryptoProvider)) + require.NoError(t, err) + require.NotNil(t, NewLocalMSPPrincipalGetter(cryptoProvider)) } func TestLocalMSPPrincipalGetter_Get(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) m := NewDeserializersManager(cryptoProvider) g := NewLocalMSPPrincipalGetter(cryptoProvider) _, err = g.Get("") - assert.Error(t, err) + require.Error(t, err) p, err := g.Get(Admins) - assert.NoError(t, err) - assert.NotNil(t, p) - assert.Equal(t, msp.MSPPrincipal_ROLE, p.PrincipalClassification) + require.NoError(t, err) + require.NotNil(t, p) + require.Equal(t, msp.MSPPrincipal_ROLE, p.PrincipalClassification) role := &msp.MSPRole{} proto.Unmarshal(p.Principal, role) - assert.Equal(t, m.GetLocalMSPIdentifier(), role.MspIdentifier) - assert.Equal(t, msp.MSPRole_ADMIN, role.Role) + require.Equal(t, m.GetLocalMSPIdentifier(), role.MspIdentifier) + require.Equal(t, msp.MSPRole_ADMIN, role.Role) p, err = g.Get(Members) - assert.NoError(t, err) - assert.NotNil(t, p) - assert.Equal(t, msp.MSPPrincipal_ROLE, p.PrincipalClassification) + require.NoError(t, err) + require.NotNil(t, p) + require.Equal(t, msp.MSPPrincipal_ROLE, p.PrincipalClassification) role = &msp.MSPRole{} proto.Unmarshal(p.Principal, role) - assert.Equal(t, m.GetLocalMSPIdentifier(), role.MspIdentifier) - assert.Equal(t, msp.MSPRole_MEMBER, role.Role) + require.Equal(t, m.GetLocalMSPIdentifier(), role.MspIdentifier) + require.Equal(t, msp.MSPRole_MEMBER, role.Role) } diff --git a/msp/mgmt/testtools/config_test.go b/msp/mgmt/testtools/config_test.go index 1ede369f98b..ecdc766ac38 100644 --- a/msp/mgmt/testtools/config_test.go +++ b/msp/mgmt/testtools/config_test.go @@ -11,7 +11,7 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/msp/mgmt" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestFakeSetup(t *testing.T) { @@ -21,7 +21,7 @@ func TestFakeSetup(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, err = mgmt.GetLocalMSP(cryptoProvider).GetDefaultSigningIdentity() if err != nil { t.Fatalf("GetDefaultSigningIdentity failed, err %s", err) diff --git a/msp/msp_test.go b/msp/msp_test.go index eb2f26bcb1d..1560b7410c5 100644 --- a/msp/msp_test.go +++ b/msp/msp_test.go @@ -29,7 +29,7 @@ import ( "github.com/hyperledger/fabric/bccsp/sw" "github.com/hyperledger/fabric/bccsp/utils" "github.com/hyperledger/fabric/core/config/configtest" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var notACert = `-----BEGIN X509 CRL----- @@ -45,23 +45,23 @@ FRBbKkDnSpaVcZgjns+mLdHV2JkF0gk= func TestMSPParsers(t *testing.T) { _, _, err := localMsp.(*bccspmsp).getIdentityFromConf(nil) - assert.Error(t, err) + require.Error(t, err) _, _, err = localMsp.(*bccspmsp).getIdentityFromConf([]byte("barf")) - assert.Error(t, err) + require.Error(t, err) _, _, err = localMsp.(*bccspmsp).getIdentityFromConf([]byte(notACert)) - assert.Error(t, err) + require.Error(t, err) _, err = localMsp.(*bccspmsp).getSigningIdentityFromConf(nil) - assert.Error(t, err) + require.Error(t, err) sigid := &msp.SigningIdentityInfo{PublicSigner: []byte("barf"), PrivateSigner: nil} _, err = localMsp.(*bccspmsp).getSigningIdentityFromConf(sigid) - assert.Error(t, err) + require.Error(t, err) keyinfo := &msp.KeyInfo{KeyIdentifier: "PEER", KeyMaterial: nil} sigid = &msp.SigningIdentityInfo{PublicSigner: []byte("barf"), PrivateSigner: keyinfo} _, err = localMsp.(*bccspmsp).getSigningIdentityFromConf(sigid) - assert.Error(t, err) + require.Error(t, err) } func TestGetSigningIdentityFromConfWithWrongPrivateCert(t *testing.T) { @@ -85,7 +85,7 @@ func TestGetSigningIdentityFromConfWithWrongPrivateCert(t *testing.T) { } sigid := &msp.SigningIdentityInfo{PublicSigner: pem, PrivateSigner: keyinfo} _, err := localMsp.(*bccspmsp).getSigningIdentityFromConf(sigid) - assert.EqualError(t, err, "MyPrivateKey: wrong PEM encoding") + require.EqualError(t, err, "MyPrivateKey: wrong PEM encoding") } func TestMSPSetupNoCryptoConf(t *testing.T) { @@ -98,7 +98,7 @@ func TestMSPSetupNoCryptoConf(t *testing.T) { mspconf := &msp.FabricMSPConfig{} err = proto.Unmarshal(conf.Config, mspconf) - assert.NoError(t, err) + require.NoError(t, err) // here we test the case of an MSP configuration // where the hash function to be used to obtain @@ -106,12 +106,12 @@ func TestMSPSetupNoCryptoConf(t *testing.T) { // sane default should be picked mspconf.CryptoConfig.IdentityIdentifierHashFunction = "" b, err := proto.Marshal(mspconf) - assert.NoError(t, err) + require.NoError(t, err) conf.Config = b newmsp, err := newBccspMsp(MSPv1_0, factory.GetDefault()) - assert.NoError(t, err) + require.NoError(t, err) err = newmsp.Setup(conf) - assert.NoError(t, err) + require.NoError(t, err) // here we test the case of an MSP configuration // where the hash function to be used to compute @@ -119,31 +119,31 @@ func TestMSPSetupNoCryptoConf(t *testing.T) { // should be picked mspconf.CryptoConfig.SignatureHashFamily = "" b, err = proto.Marshal(mspconf) - assert.NoError(t, err) + require.NoError(t, err) conf.Config = b newmsp, err = newBccspMsp(MSPv1_0, factory.GetDefault()) - assert.NoError(t, err) + require.NoError(t, err) err = newmsp.Setup(conf) - assert.NoError(t, err) + require.NoError(t, err) // here we test the case of an MSP configuration // that has NO crypto configuration specified; // the code will use appropriate defaults mspconf.CryptoConfig = nil b, err = proto.Marshal(mspconf) - assert.NoError(t, err) + require.NoError(t, err) conf.Config = b newmsp, err = newBccspMsp(MSPv1_0, factory.GetDefault()) - assert.NoError(t, err) + require.NoError(t, err) err = newmsp.Setup(conf) - assert.NoError(t, err) + require.NoError(t, err) } func TestGetters(t *testing.T) { typ := localMsp.GetType() - assert.Equal(t, typ, FABRIC) - assert.NotNil(t, localMsp.GetTLSRootCerts()) - assert.NotNil(t, localMsp.GetTLSIntermediateCerts()) + require.Equal(t, typ, FABRIC) + require.NotNil(t, localMsp.GetTLSRootCerts()) + require.NotNil(t, localMsp.GetTLSIntermediateCerts()) } func TestMSPSetupBad(t *testing.T) { @@ -155,15 +155,15 @@ func TestMSPSetupBad(t *testing.T) { mgr := NewMSPManager() err = mgr.Setup(nil) - assert.NoError(t, err) + require.NoError(t, err) err = mgr.Setup([]MSP{}) - assert.NoError(t, err) + require.NoError(t, err) } func TestDoubleSetup(t *testing.T) { // note that we've already called setup once on this err := mspMgr.Setup(nil) - assert.NoError(t, err) + require.NoError(t, err) } type bccspNoKeyLookupKS struct { @@ -176,24 +176,24 @@ func (*bccspNoKeyLookupKS) GetKey(ski []byte) (k bccsp.Key, err error) { func TestNotFoundInBCCSP(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) dir := configtest.GetDevMspDir() conf, err := GetLocalMspConfig(dir, nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err := newBccspMsp(MSPv1_0, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join(dir, "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) csp, err := sw.NewWithParams(256, "SHA2", ks) - assert.NoError(t, err) + require.NoError(t, err) thisMSP.(*bccspmsp).bccsp = &bccspNoKeyLookupKS{csp} err = thisMSP.Setup(conf) - assert.Error(t, err) - assert.Contains(t, "KeyMaterial not found in SigningIdentityInfo", err.Error()) + require.Error(t, err) + require.Contains(t, "KeyMaterial not found in SigningIdentityInfo", err.Error()) } func TestGetIdentities(t *testing.T) { @@ -206,24 +206,24 @@ func TestGetIdentities(t *testing.T) { func TestDeserializeIdentityFails(t *testing.T) { _, err := localMsp.DeserializeIdentity([]byte("barf")) - assert.Error(t, err) + require.Error(t, err) id := &msp.SerializedIdentity{Mspid: "SampleOrg", IdBytes: []byte("barfr")} b, err := proto.Marshal(id) - assert.NoError(t, err) + require.NoError(t, err) _, err = localMsp.DeserializeIdentity(b) - assert.Error(t, err) + require.Error(t, err) id = &msp.SerializedIdentity{Mspid: "SampleOrg", IdBytes: []byte(notACert)} b, err = proto.Marshal(id) - assert.NoError(t, err) + require.NoError(t, err) _, err = localMsp.DeserializeIdentity(b) - assert.Error(t, err) + require.Error(t, err) } func TestGetSigningIdentityFromVerifyingMSP(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mspDir := configtest.GetDevMspDir() conf, err = GetVerifyingMspConfig(mspDir, "SampleOrg", ProviderTypeToString(FABRIC)) @@ -233,22 +233,22 @@ func TestGetSigningIdentityFromVerifyingMSP(t *testing.T) { } newmsp, err := newBccspMsp(MSPv1_0, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) err = newmsp.Setup(conf) - assert.NoError(t, err) + require.NoError(t, err) _, err = newmsp.GetDefaultSigningIdentity() - assert.Error(t, err) + require.Error(t, err) _, err = newmsp.GetSigningIdentity(nil) - assert.Error(t, err) + require.Error(t, err) } func TestValidateDefaultSigningIdentity(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = localMsp.Validate(id.GetPublicVersion()) - assert.NoError(t, err) + require.NoError(t, err) } func TestSerializeIdentities(t *testing.T) { @@ -299,31 +299,31 @@ func TestIsWellFormed(t *testing.T) { sId := &msp.SerializedIdentity{} err = proto.Unmarshal(serializedID, sId) - assert.NoError(t, err) + require.NoError(t, err) // An MSP Manager without any MSPs should not recognize the identity since // not providers are registered err = mspMgr.IsWellFormed(sId) - assert.Error(t, err) - assert.Equal(t, "no MSP provider recognizes the identity", err.Error()) + require.Error(t, err) + require.Equal(t, "no MSP provider recognizes the identity", err.Error()) // Add the MSP to the MSP Manager mspMgr.Setup([]MSP{localMsp}) err = localMsp.IsWellFormed(sId) - assert.NoError(t, err) + require.NoError(t, err) err = mspMgr.IsWellFormed(sId) - assert.NoError(t, err) + require.NoError(t, err) bl, _ := pem.Decode(sId.IdBytes) - assert.Equal(t, "CERTIFICATE", bl.Type) + require.Equal(t, "CERTIFICATE", bl.Type) // Now, strip off the type from the PEM block. It should still be valid bl.Type = "" sId.IdBytes = pem.EncodeToMemory(bl) err = localMsp.IsWellFormed(sId) - assert.NoError(t, err) + require.NoError(t, err) // Now, corrupt the type of the PEM block. // make sure it isn't considered well formed by both an MSP and an MSP Manager @@ -331,32 +331,32 @@ func TestIsWellFormed(t *testing.T) { sId.IdBytes = pem.EncodeToMemory(bl) err = localMsp.IsWellFormed(sId) - assert.Error(t, err) - assert.Contains(t, err.Error(), "pem type is") - assert.Contains(t, err.Error(), "should be 'CERTIFICATE' or missing") + require.Error(t, err) + require.Contains(t, err.Error(), "pem type is") + require.Contains(t, err.Error(), "should be 'CERTIFICATE' or missing") err = mspMgr.IsWellFormed(sId) - assert.Error(t, err) - assert.Equal(t, "no MSP provider recognizes the identity", err.Error()) + require.Error(t, err) + require.Equal(t, "no MSP provider recognizes the identity", err.Error()) // Restore the identity to what it was sId = &msp.SerializedIdentity{} err = proto.Unmarshal(serializedID, sId) - assert.NoError(t, err) + require.NoError(t, err) // Append some trailing junk at the end sId.IdBytes = append(sId.IdBytes, []byte{1, 2, 3}...) // And ensure it is deemed invalid err = localMsp.IsWellFormed(sId) - assert.Error(t, err) - assert.Contains(t, err.Error(), "for MSP SampleOrg has trailing bytes") + require.Error(t, err) + require.Contains(t, err.Error(), "for MSP SampleOrg has trailing bytes") // Parse the certificate of the identity cert, err := x509.ParseCertificate(bl.Bytes) - assert.NoError(t, err) + require.NoError(t, err) // Obtain the ECDSA signature r, s, err := utils.UnmarshalECDSASignature(cert.Signature) - assert.NoError(t, err) + require.NoError(t, err) // Modify it by appending some bytes to its end. modifiedSig, err := asn1.Marshal(rst{ @@ -364,20 +364,20 @@ func TestIsWellFormed(t *testing.T) { S: s, T: big.NewInt(100), }) - assert.NoError(t, err) + require.NoError(t, err) newCert, err := certFromX509Cert(cert) - assert.NoError(t, err) + require.NoError(t, err) newCert.SignatureValue.Bytes = modifiedSig newCert.SignatureValue.BitLength = len(newCert.SignatureValue.Bytes) * 8 newCert.Raw = nil // Pour it back into the identity rawCert, err := asn1.Marshal(newCert) - assert.NoError(t, err) + require.NoError(t, err) sId.IdBytes = pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: rawCert}) // Ensure it is invalid now and the signature modification is detected err = localMsp.IsWellFormed(sId) - assert.Error(t, err) - assert.Contains(t, err.Error(), "for MSP SampleOrg has a non canonical signature") + require.Error(t, err) + require.Contains(t, err.Error(), "for MSP SampleOrg has a non canonical signature") } type rst struct { @@ -388,33 +388,33 @@ func TestValidateCAIdentity(t *testing.T) { caID := getIdentity(t, cacerts) err := localMsp.Validate(caID) - assert.Error(t, err) + require.Error(t, err) } func TestBadAdminIdentity(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) conf, err := GetLocalMspConfig("testdata/badadmin", nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err := newBccspMsp(MSPv1_0, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join("testdata/badadmin", "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) csp, err := sw.NewWithParams(256, "SHA2", ks) - assert.NoError(t, err) + require.NoError(t, err) thisMSP.(*bccspmsp).bccsp = csp err = thisMSP.Setup(conf) - assert.Error(t, err) + require.Error(t, err) } func TestValidateAdminIdentity(t *testing.T) { caID := getIdentity(t, admincerts) err := localMsp.Validate(caID) - assert.NoError(t, err) + require.NoError(t, err) } func TestSerializeIdentitiesWithWrongMSP(t *testing.T) { @@ -432,15 +432,15 @@ func TestSerializeIdentitiesWithWrongMSP(t *testing.T) { sid := &msp.SerializedIdentity{} err = proto.Unmarshal(serializedID, sid) - assert.NoError(t, err) + require.NoError(t, err) sid.Mspid += "BARF" serializedID, err = proto.Marshal(sid) - assert.NoError(t, err) + require.NoError(t, err) _, err = localMsp.DeserializeIdentity(serializedID) - assert.Error(t, err) + require.Error(t, err) } func TestSerializeIdentitiesWithMSPManager(t *testing.T) { @@ -457,24 +457,24 @@ func TestSerializeIdentitiesWithMSPManager(t *testing.T) { } _, err = mspMgr.DeserializeIdentity(serializedID) - assert.NoError(t, err) + require.NoError(t, err) sid := &msp.SerializedIdentity{} err = proto.Unmarshal(serializedID, sid) - assert.NoError(t, err) + require.NoError(t, err) sid.Mspid += "BARF" serializedID, err = proto.Marshal(sid) - assert.NoError(t, err) + require.NoError(t, err) _, err = mspMgr.DeserializeIdentity(serializedID) - assert.Error(t, err) - assert.Contains(t, err.Error(), fmt.Sprintf("MSP %s is not defined on channel", sid.Mspid)) + require.Error(t, err) + require.Contains(t, err.Error(), fmt.Sprintf("MSP %s is not defined on channel", sid.Mspid)) _, err = mspMgr.DeserializeIdentity([]byte("barf")) - assert.Error(t, err) - assert.Contains(t, err.Error(), "could not deserialize") + require.Error(t, err) + require.Contains(t, err.Error(), "could not deserialize") } func TestIdentitiesGetters(t *testing.T) { @@ -485,10 +485,10 @@ func TestIdentitiesGetters(t *testing.T) { } idid := id.GetIdentifier() - assert.NotNil(t, idid) + require.NotNil(t, idid) mspid := id.GetMSPIdentifier() - assert.NotNil(t, mspid) - assert.False(t, id.Anonymous()) + require.NotNil(t, mspid) + require.False(t, id.Anonymous()) } func TestSignAndVerify(t *testing.T) { @@ -530,9 +530,9 @@ func TestSignAndVerify(t *testing.T) { } err = id.Verify(msg[1:], sig) - assert.Error(t, err) + require.Error(t, err) err = id.Verify(msg, sig[1:]) - assert.Error(t, err) + require.Error(t, err) } func TestSignAndVerifyFailures(t *testing.T) { @@ -548,7 +548,7 @@ func TestSignAndVerifyFailures(t *testing.T) { id.(*signingidentity).msp.cryptoConfig.SignatureHashFamily = "barf" _, err = id.Sign(msg) - assert.Error(t, err) + require.Error(t, err) id.(*signingidentity).msp.cryptoConfig.SignatureHashFamily = hash @@ -561,7 +561,7 @@ func TestSignAndVerifyFailures(t *testing.T) { id.(*signingidentity).msp.cryptoConfig.SignatureHashFamily = "barf" err = id.Verify(msg, sig) - assert.Error(t, err) + require.Error(t, err) id.(*signingidentity).msp.cryptoConfig.SignatureHashFamily = hash } @@ -584,7 +584,7 @@ func TestSignAndVerifyOtherHash(t *testing.T) { } err = id.Verify(msg, sig) - assert.NoError(t, err) + require.NoError(t, err) id.(*signingidentity).msp.cryptoConfig.SignatureHashFamily = hash } @@ -635,7 +635,7 @@ func TestGetOU(t *testing.T) { return } - assert.Equal(t, "COP", id.GetOrganizationalUnits()[0].OrganizationalUnitIdentifier) + require.Equal(t, "COP", id.GetOrganizationalUnits()[0].OrganizationalUnitIdentifier) } func TestGetOUFail(t *testing.T) { @@ -648,47 +648,47 @@ func TestGetOUFail(t *testing.T) { certTmp := id.(*signingidentity).cert id.(*signingidentity).cert = nil ou := id.GetOrganizationalUnits() - assert.Nil(t, ou) + require.Nil(t, ou) id.(*signingidentity).cert = certTmp opts := id.(*signingidentity).msp.opts id.(*signingidentity).msp.opts = nil ou = id.GetOrganizationalUnits() - assert.Nil(t, ou) + require.Nil(t, ou) id.(*signingidentity).msp.opts = opts } func TestCertificationIdentifierComputation(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) chain, err := localMsp.(*bccspmsp).getCertificationChain(id.GetPublicVersion()) - assert.NoError(t, err) + require.NoError(t, err) // Hash the chain // Use the hash of the identity's certificate as id in the IdentityIdentifier hashOpt, err := bccsp.GetHashOpt(localMsp.(*bccspmsp).cryptoConfig.IdentityIdentifierHashFunction) - assert.NoError(t, err) + require.NoError(t, err) hf, err := localMsp.(*bccspmsp).bccsp.GetHash(hashOpt) - assert.NoError(t, err) + require.NoError(t, err) // Skipping first cert because it belongs to the identity for i := 1; i < len(chain); i++ { hf.Write(chain[i].Raw) } sum := hf.Sum(nil) - assert.Equal(t, sum, id.GetOrganizationalUnits()[0].CertifiersIdentifier) + require.Equal(t, sum, id.GetOrganizationalUnits()[0].CertifiersIdentifier) } func TestOUPolicyPrincipal(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) cid, err := localMsp.(*bccspmsp).getCertificationChainIdentifier(id.GetPublicVersion()) - assert.NoError(t, err) + require.NoError(t, err) ou := &msp.OrganizationUnit{ OrganizationalUnitIdentifier: "COP", @@ -696,7 +696,7 @@ func TestOUPolicyPrincipal(t *testing.T) { CertifiersIdentifier: cid, } bytes, err := proto.Marshal(ou) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, @@ -704,12 +704,12 @@ func TestOUPolicyPrincipal(t *testing.T) { } err = id.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestOUPolicyPrincipalBadPrincipal(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, @@ -717,15 +717,15 @@ func TestOUPolicyPrincipalBadPrincipal(t *testing.T) { } err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestOUPolicyPrincipalBadMSPID(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) cid, err := localMsp.(*bccspmsp).getCertificationChainIdentifier(id.GetPublicVersion()) - assert.NoError(t, err) + require.NoError(t, err) ou := &msp.OrganizationUnit{ OrganizationalUnitIdentifier: "COP", @@ -733,7 +733,7 @@ func TestOUPolicyPrincipalBadMSPID(t *testing.T) { CertifiersIdentifier: cid, } bytes, err := proto.Marshal(ou) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, @@ -741,12 +741,12 @@ func TestOUPolicyPrincipalBadMSPID(t *testing.T) { } err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestOUPolicyPrincipalBadPath(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) ou := &msp.OrganizationUnit{ OrganizationalUnitIdentifier: "COP", @@ -754,7 +754,7 @@ func TestOUPolicyPrincipalBadPath(t *testing.T) { CertifiersIdentifier: nil, } bytes, err := proto.Marshal(ou) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, @@ -762,7 +762,7 @@ func TestOUPolicyPrincipalBadPath(t *testing.T) { } err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) ou = &msp.OrganizationUnit{ OrganizationalUnitIdentifier: "COP", @@ -770,7 +770,7 @@ func TestOUPolicyPrincipalBadPath(t *testing.T) { CertifiersIdentifier: []byte{0, 1, 2, 3, 4}, } bytes, err = proto.Marshal(ou) - assert.NoError(t, err) + require.NoError(t, err) principal = &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ORGANIZATION_UNIT, @@ -778,82 +778,82 @@ func TestOUPolicyPrincipalBadPath(t *testing.T) { } err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestPolicyPrincipalBogusType(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: 35, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: 35, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestPolicyPrincipalBogusRole(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: 35, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestPolicyPrincipalWrongMSPID(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "SampleOrgBARFBARF"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestMemberPolicyPrincipal(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestAdminPolicyPrincipal(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } // Combine one or more MSPPrincipals into a MSPPrincipal of type @@ -874,13 +874,13 @@ func createCombinedPrincipal(principals ...*msp.MSPPrincipal) (*msp.MSPPrincipal func TestMultilevelAdminAndMemberPolicyPrincipal(t *testing.T) { id, err := localMspV13.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) adminPrincipalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) memberPrincipalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) adminPrincipal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, @@ -892,32 +892,32 @@ func TestMultilevelAdminAndMemberPolicyPrincipal(t *testing.T) { // CombinedPrincipal with Admin and Member principals levelOneCombinedPrincipal, err := createCombinedPrincipal(adminPrincipal, memberPrincipal) - assert.NoError(t, err) + require.NoError(t, err) err = id.SatisfiesPrincipal(levelOneCombinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) // Nested CombinedPrincipal levelTwoCombinedPrincipal, err := createCombinedPrincipal(levelOneCombinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) err = id.SatisfiesPrincipal(levelTwoCombinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) // Double nested CombinedPrincipal levelThreeCombinedPrincipal, err := createCombinedPrincipal(levelTwoCombinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) err = id.SatisfiesPrincipal(levelThreeCombinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) } func TestMultilevelAdminAndMemberPolicyPrincipalPreV12(t *testing.T) { id, err := localMspV11.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) adminPrincipalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) memberPrincipalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) adminPrincipal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, @@ -929,29 +929,29 @@ func TestMultilevelAdminAndMemberPolicyPrincipalPreV12(t *testing.T) { // CombinedPrincipal with Admin and Member principals levelOneCombinedPrincipal, err := createCombinedPrincipal(adminPrincipal, memberPrincipal) - assert.NoError(t, err) + require.NoError(t, err) err = id.SatisfiesPrincipal(levelOneCombinedPrincipal) - assert.Error(t, err) + require.Error(t, err) // Nested CombinedPrincipal levelTwoCombinedPrincipal, err := createCombinedPrincipal(levelOneCombinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) err = id.SatisfiesPrincipal(levelTwoCombinedPrincipal) - assert.Error(t, err) + require.Error(t, err) // Double nested CombinedPrincipal levelThreeCombinedPrincipal, err := createCombinedPrincipal(levelTwoCombinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) err = id.SatisfiesPrincipal(levelThreeCombinedPrincipal) - assert.Error(t, err) + require.Error(t, err) } func TestAdminPolicyPrincipalFails(t *testing.T) { id, err := localMspV13.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, @@ -961,18 +961,18 @@ func TestAdminPolicyPrincipalFails(t *testing.T) { localMspV13.(*bccspmsp).admins = make([]Identity, 0) err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestMultilevelAdminAndMemberPolicyPrincipalFails(t *testing.T) { id, err := localMspV13.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) adminPrincipalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) memberPrincipalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) adminPrincipal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, @@ -987,53 +987,53 @@ func TestMultilevelAdminAndMemberPolicyPrincipalFails(t *testing.T) { // CombinedPrincipal with Admin and Member principals levelOneCombinedPrincipal, err := createCombinedPrincipal(adminPrincipal, memberPrincipal) - assert.NoError(t, err) + require.NoError(t, err) err = id.SatisfiesPrincipal(levelOneCombinedPrincipal) - assert.Error(t, err) + require.Error(t, err) // Nested CombinedPrincipal levelTwoCombinedPrincipal, err := createCombinedPrincipal(levelOneCombinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) err = id.SatisfiesPrincipal(levelTwoCombinedPrincipal) - assert.Error(t, err) + require.Error(t, err) // Double nested CombinedPrincipal levelThreeCombinedPrincipal, err := createCombinedPrincipal(levelTwoCombinedPrincipal) - assert.NoError(t, err) + require.NoError(t, err) err = id.SatisfiesPrincipal(levelThreeCombinedPrincipal) - assert.Error(t, err) + require.Error(t, err) } func TestIdentityExpiresAt(t *testing.T) { thisMSP := getLocalMSP(t, "testdata/expiration") - assert.NotNil(t, thisMSP) + require.NotNil(t, thisMSP) si, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) expirationDate := si.GetPublicVersion().ExpiresAt() - assert.Equal(t, time.Date(2027, 8, 17, 12, 19, 48, 0, time.UTC), expirationDate) + require.Equal(t, time.Date(2027, 8, 17, 12, 19, 48, 0, time.UTC), expirationDate) } func TestIdentityExpired(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) expiredCertsDir := "testdata/expired" conf, err := GetLocalMspConfig(expiredCertsDir, nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err := newBccspMsp(MSPv1_0, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join(expiredCertsDir, "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) csp, err := sw.NewWithParams(256, "SHA2", ks) - assert.NoError(t, err) + require.NoError(t, err) thisMSP.(*bccspmsp).bccsp = csp err = thisMSP.Setup(conf) if err != nil { - assert.Contains(t, err.Error(), "signing identity expired") + require.Contains(t, err.Error(), "signing identity expired") } else { t.Fatal("Should have failed when loading expired certs") } @@ -1041,29 +1041,29 @@ func TestIdentityExpired(t *testing.T) { func TestIdentityPolicyPrincipal(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) idSerialized, err := id.Serialize() - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_IDENTITY, Principal: idSerialized} err = id.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestIdentityPolicyPrincipalBadBytes(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_IDENTITY, Principal: []byte("barf")} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestMSPOus(t *testing.T) { @@ -1071,32 +1071,32 @@ func TestMSPOus(t *testing.T) { backup := localMsp.(*bccspmsp).ouIdentifiers defer func() { localMsp.(*bccspmsp).ouIdentifiers = backup }() sid, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) sidBytes, err := sid.Serialize() - assert.NoError(t, err) + require.NoError(t, err) id, err := localMsp.DeserializeIdentity(sidBytes) - assert.NoError(t, err) + require.NoError(t, err) localMsp.(*bccspmsp).ouIdentifiers = map[string][][]byte{ "COP": {id.GetOrganizationalUnits()[0].CertifiersIdentifier}, } - assert.NoError(t, localMsp.Validate(id)) + require.NoError(t, localMsp.Validate(id)) id, err = localMsp.DeserializeIdentity(sidBytes) - assert.NoError(t, err) + require.NoError(t, err) localMsp.(*bccspmsp).ouIdentifiers = map[string][][]byte{ "COP2": {id.GetOrganizationalUnits()[0].CertifiersIdentifier}, } - assert.Error(t, localMsp.Validate(id)) + require.Error(t, localMsp.Validate(id)) id, err = localMsp.DeserializeIdentity(sidBytes) - assert.NoError(t, err) + require.NoError(t, err) localMsp.(*bccspmsp).ouIdentifiers = map[string][][]byte{ "COP": {{0, 1, 2, 3, 4}}, } - assert.Error(t, localMsp.Validate(id)) + require.Error(t, localMsp.Validate(id)) } const othercert = `-----BEGIN CERTIFICATE----- @@ -1122,17 +1122,17 @@ HeamPGiDTQ== func TestIdentityPolicyPrincipalFails(t *testing.T) { id, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) sid, err := NewSerializedIdentity("SampleOrg", []byte(othercert)) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_IDENTITY, Principal: sid} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } var conf *msp.MSPConfig @@ -1233,58 +1233,58 @@ func TestMain(m *testing.M) { func getIdentity(t *testing.T, path string) Identity { mspDir := configtest.GetDevMspDir() pems, err := getPemMaterialFromDir(filepath.Join(mspDir, path)) - assert.NoError(t, err) + require.NoError(t, err) id, _, err := localMsp.(*bccspmsp).getIdentityFromConf(pems[0]) - assert.NoError(t, err) + require.NoError(t, err) return id } func getLocalMSPWithVersionAndError(t *testing.T, dir string, version MSPVersion) (MSP, error) { conf, err := GetLocalMspConfig(dir, nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join(dir, "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err := NewBccspMspWithKeyStore(version, ks, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) return thisMSP, thisMSP.Setup(conf) } func getLocalMSP(t *testing.T, dir string) MSP { conf, err := GetLocalMspConfig(dir, nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join(dir, "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err := NewBccspMspWithKeyStore(MSPv1_0, ks, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Setup(conf) - assert.NoError(t, err) + require.NoError(t, err) return thisMSP } func getLocalMSPWithVersion(t *testing.T, dir string, version MSPVersion) MSP { conf, err := GetLocalMspConfig(dir, nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join(dir, "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err := NewBccspMspWithKeyStore(version, ks, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Setup(conf) - assert.NoError(t, err) + require.NoError(t, err) return thisMSP } @@ -1293,22 +1293,22 @@ func TestCollectEmptyCombinedPrincipal(t *testing.T) { var principalsArray []*msp.MSPPrincipal combinedPrincipal := &msp.CombinedPrincipal{Principals: principalsArray} combinedPrincipalBytes, err := proto.Marshal(combinedPrincipal) - assert.NoError(t, err, "Error marshalling empty combined principal") + require.NoError(t, err, "Error marshalling empty combined principal") principalsCombined := &msp.MSPPrincipal{PrincipalClassification: msp.MSPPrincipal_COMBINED, Principal: combinedPrincipalBytes} _, err = collectPrincipals(principalsCombined, MSPv1_3) - assert.Error(t, err) + require.Error(t, err) } func TestCollectPrincipalContainingEmptyCombinedPrincipal(t *testing.T) { var principalsArray []*msp.MSPPrincipal combinedPrincipal := &msp.CombinedPrincipal{Principals: principalsArray} combinedPrincipalBytes, err := proto.Marshal(combinedPrincipal) - assert.NoError(t, err, "Error marshalling empty combined principal") + require.NoError(t, err, "Error marshalling empty combined principal") emptyPrincipal := &msp.MSPPrincipal{PrincipalClassification: msp.MSPPrincipal_COMBINED, Principal: combinedPrincipalBytes} levelOneCombinedPrincipal, err := createCombinedPrincipal(emptyPrincipal) - assert.NoError(t, err) + require.NoError(t, err) _, err = collectPrincipals(levelOneCombinedPrincipal, MSPv1_3) - assert.Error(t, err) + require.Error(t, err) } func TestMSPIdentityIdentifier(t *testing.T) { @@ -1317,112 +1317,112 @@ func TestMSPIdentityIdentifier(t *testing.T) { thisMSP := getLocalMSP(t, "testdata/mspid") id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = id.Validate() - assert.NoError(t, err) + require.NoError(t, err) // Check that the identity identifier is computed with the respect to the lowS signature idid := id.GetIdentifier() - assert.NotNil(t, idid) + require.NotNil(t, idid) // Load and parse cacaert and signcert from folder pems, err := getPemMaterialFromDir("testdata/mspid/cacerts") - assert.NoError(t, err) + require.NoError(t, err) bl, _ := pem.Decode(pems[0]) - assert.NotNil(t, bl) + require.NotNil(t, bl) caCertFromFile, err := x509.ParseCertificate(bl.Bytes) - assert.NoError(t, err) + require.NoError(t, err) pems, err = getPemMaterialFromDir("testdata/mspid/signcerts") - assert.NoError(t, err) + require.NoError(t, err) bl, _ = pem.Decode(pems[0]) - assert.NotNil(t, bl) + require.NotNil(t, bl) certFromFile, err := x509.ParseCertificate(bl.Bytes) - assert.NoError(t, err) + require.NoError(t, err) // Check that the certificates' raws are different, meaning that the identity has been sanitised - assert.NotEqual(t, certFromFile.Raw, id.(*signingidentity).cert) + require.NotEqual(t, certFromFile.Raw, id.(*signingidentity).cert) // Check that certFromFile is in HighS _, S, err := utils.UnmarshalECDSASignature(certFromFile.Signature) - assert.NoError(t, err) + require.NoError(t, err) lowS, err := utils.IsLowS(caCertFromFile.PublicKey.(*ecdsa.PublicKey), S) - assert.NoError(t, err) - assert.False(t, lowS) + require.NoError(t, err) + require.False(t, lowS) // Check that id.(*signingidentity).cert is in LoswS _, S, err = utils.UnmarshalECDSASignature(id.(*signingidentity).cert.Signature) - assert.NoError(t, err) + require.NoError(t, err) lowS, err = utils.IsLowS(caCertFromFile.PublicKey.(*ecdsa.PublicKey), S) - assert.NoError(t, err) - assert.True(t, lowS) + require.NoError(t, err) + require.True(t, lowS) // Compute the digest for certFromFile thisBCCSPMsp := thisMSP.(*bccspmsp) hashOpt, err := bccsp.GetHashOpt(thisBCCSPMsp.cryptoConfig.IdentityIdentifierHashFunction) - assert.NoError(t, err) + require.NoError(t, err) digest, err := thisBCCSPMsp.bccsp.Hash(certFromFile.Raw, hashOpt) - assert.NoError(t, err) + require.NoError(t, err) // Compare with the digest computed from the sanitised cert - assert.NotEqual(t, idid.Id, hex.EncodeToString(digest)) + require.NotEqual(t, idid.Id, hex.EncodeToString(digest)) } func TestAnonymityIdentity(t *testing.T) { id, err := localMspV13.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPIdentityAnonymity{AnonymityType: msp.MSPIdentityAnonymity_NOMINAL}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ANONYMITY, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestAnonymityIdentityPreV12Fail(t *testing.T) { id, err := localMspV11.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPIdentityAnonymity{AnonymityType: msp.MSPIdentityAnonymity_NOMINAL}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ANONYMITY, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestAnonymityIdentityFail(t *testing.T) { id, err := localMspV13.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPIdentityAnonymity{AnonymityType: msp.MSPIdentityAnonymity_ANONYMOUS}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ANONYMITY, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestProviderTypeToString(t *testing.T) { // Check that the provider type is found for FABRIC pt := ProviderTypeToString(FABRIC) - assert.Equal(t, "bccsp", pt) + require.Equal(t, "bccsp", pt) // Check that the provider type is found for IDEMIX pt = ProviderTypeToString(IDEMIX) - assert.Equal(t, "idemix", pt) + require.Equal(t, "idemix", pt) // Check that the provider type is not found pt = ProviderTypeToString(OTHER) - assert.Equal(t, "", pt) + require.Equal(t, "", pt) } diff --git a/msp/mspwithintermediatecas_test.go b/msp/mspwithintermediatecas_test.go index 7faa9a55df0..6e2f965509e 100644 --- a/msp/mspwithintermediatecas_test.go +++ b/msp/mspwithintermediatecas_test.go @@ -20,7 +20,7 @@ import ( "path/filepath" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestMSPWithIntermediateCAs(t *testing.T) { @@ -34,30 +34,30 @@ func TestMSPWithIntermediateCAs(t *testing.T) { // This MSP will trust any cert signed by the CA directly OR by the intermediate sid, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) sidBytes, err := sid.Serialize() - assert.NoError(t, err) + require.NoError(t, err) id, err := thisMSP.DeserializeIdentity(sidBytes) - assert.NoError(t, err) + require.NoError(t, err) // ensure that we validate correctly the identity err = thisMSP.Validate(id) - assert.NoError(t, err) + require.NoError(t, err) id, err = thisMSP.DeserializeIdentity(sidBytes) - assert.NoError(t, err) + require.NoError(t, err) // ensure that validation of an identity of the MSP with intermediate CAs // fails with the local MSP err = localMsp.Validate(id) - assert.Error(t, err) + require.Error(t, err) // ensure that validation of an identity of the local MSP // fails with the MSP with intermediate CAs localMSPID, err := localMsp.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Validate(localMSPID) - assert.Error(t, err) + require.Error(t, err) } func TestMSPWithExternalIntermediateCAs(t *testing.T) { @@ -75,11 +75,11 @@ func TestMSPWithExternalIntermediateCAs(t *testing.T) { // This MSP will trust any cert signed only by the intermediate id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) // ensure that we validate correctly the identity err = thisMSP.Validate(id.GetPublicVersion()) - assert.NoError(t, err) + require.NoError(t, err) } func TestIntermediateCAIdentityValidity(t *testing.T) { @@ -91,7 +91,7 @@ func TestIntermediateCAIdentityValidity(t *testing.T) { thisMSP := getLocalMSP(t, "testdata/intermediate") id := thisMSP.(*bccspmsp).intermediateCerts[0] - assert.Error(t, id.Validate()) + require.Error(t, id.Validate()) } func TestMSPWithIntermediateCAs2(t *testing.T) { @@ -107,16 +107,16 @@ func TestMSPWithIntermediateCAs2(t *testing.T) { // the default signing identity is signed by the intermediate CA, // the validation should return no error id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Validate(id.GetPublicVersion()) - assert.NoError(t, err) + require.NoError(t, err) // user2-cert has been signed by the root CA, validation must fail pem, err := readPemFile(filepath.Join("testdata", "intermediate2", "users", "user2-cert.pem")) - assert.NoError(t, err) + require.NoError(t, err) id2, _, err := thisMSP.(*bccspmsp).getIdentityFromConf(pem) - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Validate(id2) - assert.Error(t, err) - assert.Contains(t, err.Error(), "invalid validation chain. Parent certificate should be a leaf of the certification tree ") + require.Error(t, err) + require.Contains(t, err.Error(), "invalid validation chain. Parent certificate should be a leaf of the certification tree ") } diff --git a/msp/nodeous_test.go b/msp/nodeous_test.go index 71dc80ac979..d41506258a2 100644 --- a/msp/nodeous_test.go +++ b/msp/nodeous_test.go @@ -23,7 +23,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric/bccsp/sw" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInvalidAdminNodeOU(t *testing.T) { @@ -31,13 +31,13 @@ func TestInvalidAdminNodeOU(t *testing.T) { // the configuration enables NodeOUs but the administrator does not carry // any valid NodeOUS. Therefore MSP initialization must fail thisMSP, err := getLocalMSPWithVersionAndError(t, "testdata/nodeous1", MSPv1_1) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) - assert.Error(t, err) + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.Error(t, err) // MSPv1_0 should not fail thisMSP, err = getLocalMSPWithVersionAndError(t, "testdata/nodeous1", MSPv1_0) - assert.False(t, thisMSP.(*bccspmsp).ouEnforcement) - assert.NoError(t, err) + require.False(t, thisMSP.(*bccspmsp).ouEnforcement) + require.NoError(t, err) } func TestInvalidSigningIdentityNodeOU(t *testing.T) { @@ -45,70 +45,70 @@ func TestInvalidSigningIdentityNodeOU(t *testing.T) { // the configuration enables NodeOUs but the signing identity does not carry // any valid NodeOUS. Therefore signing identity validation should fail thisMSP := getLocalMSPWithVersion(t, "testdata/nodeous2", MSPv1_1) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = id.Validate() - assert.Error(t, err) + require.Error(t, err) // MSPv1_0 should not fail thisMSP, err = getLocalMSPWithVersionAndError(t, "testdata/nodeous1", MSPv1_0) - assert.False(t, thisMSP.(*bccspmsp).ouEnforcement) - assert.NoError(t, err) + require.False(t, thisMSP.(*bccspmsp).ouEnforcement) + require.NoError(t, err) id, err = thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = id.Validate() - assert.NoError(t, err) + require.NoError(t, err) } func TestValidMSPWithNodeOU(t *testing.T) { // testdata/nodeous3: // the configuration enables NodeOUs and admin and signing identity are valid thisMSP := getLocalMSPWithVersion(t, "testdata/nodeous3", MSPv1_1) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = id.Validate() - assert.NoError(t, err) + require.NoError(t, err) // MSPv1_0 should not fail as well thisMSP = getLocalMSPWithVersion(t, "testdata/nodeous3", MSPv1_0) - assert.False(t, thisMSP.(*bccspmsp).ouEnforcement) + require.False(t, thisMSP.(*bccspmsp).ouEnforcement) id, err = thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = id.Validate() - assert.NoError(t, err) + require.NoError(t, err) } func TestValidMSPWithNodeOUAndOrganizationalUnits(t *testing.T) { // testdata/nodeous6: // the configuration enables NodeOUs and OrganizationalUnits, and admin and signing identity are valid thisMSP := getLocalMSPWithVersion(t, "testdata/nodeous6", MSPv1_1) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = id.Validate() - assert.NoError(t, err) + require.NoError(t, err) // MSPv1_0 should not fail as well thisMSP = getLocalMSPWithVersion(t, "testdata/nodeous6", MSPv1_0) - assert.False(t, thisMSP.(*bccspmsp).ouEnforcement) + require.False(t, thisMSP.(*bccspmsp).ouEnforcement) id, err = thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = id.Validate() - assert.NoError(t, err) + require.NoError(t, err) } func TestInvalidMSPWithNodeOUAndOrganizationalUnits(t *testing.T) { @@ -117,85 +117,83 @@ func TestInvalidMSPWithNodeOUAndOrganizationalUnits(t *testing.T) { // and admin and signing identity are not valid because they don't have // OU_common in their OUs. thisMSP, err := getLocalMSPWithVersionAndError(t, "testdata/nodeous7", MSPv1_1) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) - if assert.Error(t, err) { - assert.Contains(t, err.Error(), "could not validate identity's OUs: none of the identity's organizational units") - } + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.Error(t, err) + require.Contains(t, err.Error(), "could not validate identity's OUs: none of the identity's organizational units") // MSPv1_0 should fail as well thisMSP, err = getLocalMSPWithVersionAndError(t, "testdata/nodeous7", MSPv1_0) - assert.False(t, thisMSP.(*bccspmsp).ouEnforcement) - if assert.Error(t, err) { - assert.Contains(t, err.Error(), "could not validate identity's OUs: none of the identity's organizational units") - } + require.False(t, thisMSP.(*bccspmsp).ouEnforcement) + require.Error(t, err) + require.Contains(t, err.Error(), "could not validate identity's OUs: none of the identity's organizational units") } func TestInvalidAdminOU(t *testing.T) { // testdata/nodeous4: // the configuration enables NodeOUs and admin does not match the certifier chain specified at config thisMSP, err := getLocalMSPWithVersionAndError(t, "testdata/nodeous4", MSPv1_1) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) - assert.Error(t, err) - assert.Contains(t, err.Error(), "admin 0 is invalid: The identity is not valid under this MSP [SampleOrg]: could not validate identity's OUs: certifiersIdentifier does not match") + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.Error(t, err) + require.Contains(t, err.Error(), "admin 0 is invalid: The identity is not valid under this MSP [SampleOrg]: could not validate identity's OUs: certifiersIdentifier does not match") // MSPv1_0 should not fail as well thisMSP, err = getLocalMSPWithVersionAndError(t, "testdata/nodeous4", MSPv1_0) - assert.False(t, thisMSP.(*bccspmsp).ouEnforcement) - assert.NoError(t, err) + require.False(t, thisMSP.(*bccspmsp).ouEnforcement) + require.NoError(t, err) } func TestInvalidAdminOUNotAClient(t *testing.T) { // testdata/nodeous4: // the configuration enables NodeOUs and admin is not a client thisMSP, err := getLocalMSPWithVersionAndError(t, "testdata/nodeous8", MSPv1_1) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) - assert.Error(t, err) - assert.Contains(t, err.Error(), "The identity does not contain OU [CLIENT]") + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.Error(t, err) + require.Contains(t, err.Error(), "The identity does not contain OU [CLIENT]") // MSPv1_0 should not fail thisMSP, err = getLocalMSPWithVersionAndError(t, "testdata/nodeous8", MSPv1_0) - assert.False(t, thisMSP.(*bccspmsp).ouEnforcement) - assert.NoError(t, err) + require.False(t, thisMSP.(*bccspmsp).ouEnforcement) + require.NoError(t, err) } func TestSatisfiesPrincipalPeer(t *testing.T) { // testdata/nodeous3: // the configuration enables NodeOUs and admin and signing identity are valid thisMSP := getLocalMSPWithVersion(t, "testdata/nodeous3", MSPv1_1) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) // The default signing identity is a peer id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = id.Validate() - assert.NoError(t, err) + require.NoError(t, err) - assert.True(t, t.Run("Check that id is a peer", func(t *testing.T) { + require.True(t, t.Run("Check that id is a peer", func(t *testing.T) { // Check that id is a peer mspID, err := thisMSP.GetIdentifier() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_PEER, MspIdentifier: mspID}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) })) - assert.True(t, t.Run("Check that id is not a client", func(t *testing.T) { + require.True(t, t.Run("Check that id is not a client", func(t *testing.T) { // Check that id is not a client mspID, err := thisMSP.GetIdentifier() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_CLIENT, MspIdentifier: mspID}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) - assert.Contains(t, err.Error(), "The identity is not a [CLIENT] under this MSP [SampleOrg]") + require.Error(t, err) + require.Contains(t, err.Error(), "The identity is not a [CLIENT] under this MSP [SampleOrg]") })) } @@ -203,40 +201,40 @@ func TestSatisfiesPrincipalClient(t *testing.T) { // testdata/nodeous3: // the configuration enables NodeOUs and admin and signing identity are valid thisMSP := getLocalMSPWithVersion(t, "testdata/nodeous3", MSPv1_1) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) // The admin of this msp is a client - assert.Equal(t, 1, len(thisMSP.(*bccspmsp).admins)) + require.Equal(t, 1, len(thisMSP.(*bccspmsp).admins)) id := thisMSP.(*bccspmsp).admins[0] err := id.Validate() - assert.NoError(t, err) + require.NoError(t, err) // Check that id is a client - assert.True(t, t.Run("Check that id is a client", func(t *testing.T) { + require.True(t, t.Run("Check that id is a client", func(t *testing.T) { mspID, err := thisMSP.GetIdentifier() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_CLIENT, MspIdentifier: mspID}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) })) - assert.True(t, t.Run("Check that id is not a peer", func(t *testing.T) { + require.True(t, t.Run("Check that id is not a peer", func(t *testing.T) { // Check that id is not a peer mspID, err := thisMSP.GetIdentifier() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_PEER, MspIdentifier: mspID}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) - assert.Contains(t, err.Error(), "The identity is not a [PEER] under this MSP [SampleOrg]") + require.Error(t, err) + require.Contains(t, err.Error(), "The identity is not a [PEER] under this MSP [SampleOrg]") })) } @@ -244,53 +242,53 @@ func TestSatisfiesPrincipalAdmin(t *testing.T) { // testdata/nodeouadmin: // the configuration enables NodeOUs (with adminOU) and admin and signing identity are valid thisMSP := getLocalMSPWithVersion(t, "testdata/nodeouadmin", MSPv1_4_3) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) cert, err := readFile("testdata/nodeouadmin/adm/testadmincert.pem") - assert.NoError(t, err) + require.NoError(t, err) id, _, err := thisMSP.(*bccspmsp).getIdentityFromConf(cert) - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestLoad142MSPWithInvalidAdminConfiguration(t *testing.T) { // testdata/nodeouadmin2: // the configuration enables NodeOUs (with adminOU) but no valid identifier for the AdminOU conf, err := GetLocalMspConfig("testdata/nodeouadmin2", nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join("testdata/nodeouadmin2", "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err := NewBccspMspWithKeyStore(MSPv1_4_3, ks, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Setup(conf) - assert.Error(t, err) - assert.Equal(t, "administrators must be declared when no admin ou classification is set", err.Error()) + require.Error(t, err) + require.Equal(t, "administrators must be declared when no admin ou classification is set", err.Error()) // testdata/nodeouadmin3: // the configuration enables NodeOUs (with adminOU) but no valid identifier for the AdminOU conf, err = GetLocalMspConfig("testdata/nodeouadmin3", nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) ks, err = sw.NewFileBasedKeyStore(nil, filepath.Join("testdata/nodeouadmin3", "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err = NewBccspMspWithKeyStore(MSPv1_4_3, ks, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Setup(conf) - assert.Error(t, err) - assert.Equal(t, "administrators must be declared when no admin ou classification is set", err.Error()) + require.Error(t, err) + require.Equal(t, "administrators must be declared when no admin ou classification is set", err.Error()) } func TestAdminInAdmincertsWith143MSP(t *testing.T) { @@ -306,21 +304,21 @@ func TestAdminInAdmincertsWith143MSP(t *testing.T) { localMSP := getLocalMSPWithVersion(t, testFolder, MSPv1_4_3) cert, err := readFile(filepath.Join(testFolder, "admincerts", "admin.pem")) - assert.NoError(t, err) + require.NoError(t, err) id, _, err := localMSP.(*bccspmsp).getIdentityFromConf(cert) - assert.NoError(t, err) + require.NoError(t, err) for _, ou := range id.GetOrganizationalUnits() { - assert.NotEqual(t, "admin", ou.OrganizationalUnitIdentifier) + require.NotEqual(t, "admin", ou.OrganizationalUnitIdentifier) } principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } } @@ -328,89 +326,89 @@ func TestSatisfiesPrincipalOrderer(t *testing.T) { // testdata/nodeouorderer: // the configuration enables NodeOUs (with orderOU) thisMSP := getLocalMSPWithVersion(t, "testdata/nodeouorderer", MSPv1_4_3) - assert.True(t, thisMSP.(*bccspmsp).ouEnforcement) + require.True(t, thisMSP.(*bccspmsp).ouEnforcement) id, err := thisMSP.(*bccspmsp).GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ORDERER, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.NoError(t, err) + require.NoError(t, err) } func TestLoad142MSPWithInvalidOrdererConfiguration(t *testing.T) { // testdata/nodeouorderer2: // the configuration enables NodeOUs (with orderOU) but no valid identifier for the OrdererOU conf, err := GetLocalMspConfig("testdata/nodeouorderer2", nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join("testdata/nodeouorderer2", "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err := NewBccspMspWithKeyStore(MSPv1_4_3, ks, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Setup(conf) - assert.NoError(t, err) + require.NoError(t, err) id, err := thisMSP.(*bccspmsp).GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ORDERER, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) - assert.Equal(t, "The identity is not a [ORDERER] under this MSP [SampleOrg]: cannot test for classification, node ou for type [ORDERER], not defined, msp: [SampleOrg]", err.Error()) + require.Error(t, err) + require.Equal(t, "The identity is not a [ORDERER] under this MSP [SampleOrg]: cannot test for classification, node ou for type [ORDERER], not defined, msp: [SampleOrg]", err.Error()) // testdata/nodeouorderer3: // the configuration enables NodeOUs (with orderOU) but no valid identifier for the OrdererOU conf, err = GetLocalMspConfig("testdata/nodeouorderer3", nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) ks, err = sw.NewFileBasedKeyStore(nil, filepath.Join("testdata/nodeouorderer3", "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err = NewBccspMspWithKeyStore(MSPv1_4_3, ks, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Setup(conf) - assert.NoError(t, err) + require.NoError(t, err) id, err = thisMSP.(*bccspmsp).GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) principalBytes, err = proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ORDERER, MspIdentifier: "SampleOrg"}) - assert.NoError(t, err) + require.NoError(t, err) principal = &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_ROLE, Principal: principalBytes} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) - assert.Equal(t, "The identity is not a [ORDERER] under this MSP [SampleOrg]: cannot test for classification, node ou for type [ORDERER], not defined, msp: [SampleOrg]", err.Error()) + require.Error(t, err) + require.Equal(t, "The identity is not a [ORDERER] under this MSP [SampleOrg]: cannot test for classification, node ou for type [ORDERER], not defined, msp: [SampleOrg]", err.Error()) } func TestValidMSPWithNodeOUMissingClassification(t *testing.T) { // testdata/nodeousbadconf1: // the configuration enables NodeOUs but client ou identifier is missing _, err := getLocalMSPWithVersionAndError(t, "testdata/nodeousbadconf1", MSPv1_3) - assert.Error(t, err) - assert.Equal(t, "Failed setting up NodeOUs. ClientOU must be different from nil.", err.Error()) + require.Error(t, err) + require.Equal(t, "Failed setting up NodeOUs. ClientOU must be different from nil.", err.Error()) _, err = getLocalMSPWithVersionAndError(t, "testdata/nodeousbadconf1", MSPv1_4_3) - assert.Error(t, err) - assert.Equal(t, "admin 0 is invalid [cannot test for classification, node ou for type [CLIENT], not defined, msp: [SampleOrg],The identity does not contain OU [ADMIN], MSP: [SampleOrg]]", err.Error()) + require.Error(t, err) + require.Equal(t, "admin 0 is invalid [cannot test for classification, node ou for type [CLIENT], not defined, msp: [SampleOrg],The identity does not contain OU [ADMIN], MSP: [SampleOrg]]", err.Error()) // testdata/nodeousbadconf2: // the configuration enables NodeOUs but peer ou identifier is missing _, err = getLocalMSPWithVersionAndError(t, "testdata/nodeousbadconf2", MSPv1_3) - assert.Error(t, err) - assert.Equal(t, "Failed setting up NodeOUs. PeerOU must be different from nil.", err.Error()) + require.Error(t, err) + require.Equal(t, "Failed setting up NodeOUs. PeerOU must be different from nil.", err.Error()) _, err = getLocalMSPWithVersionAndError(t, "testdata/nodeousbadconf2", MSPv1_4_3) - assert.NoError(t, err) + require.NoError(t, err) } diff --git a/msp/ouconfig_test.go b/msp/ouconfig_test.go index aa0acfad157..f4b76559dbc 100644 --- a/msp/ouconfig_test.go +++ b/msp/ouconfig_test.go @@ -22,7 +22,7 @@ import ( "github.com/hyperledger/fabric/bccsp/factory" "github.com/hyperledger/fabric/bccsp/sw" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestBadConfigOU(t *testing.T) { @@ -32,12 +32,12 @@ func TestBadConfigOU(t *testing.T) { thisMSP := getLocalMSP(t, "testdata/badconfigou") id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) // the default signing identity OU is COP but the msp is configured // to validate only identities whose OU is COP2 err = id.Validate() - assert.Error(t, err) + require.Error(t, err) } func TestBadConfigOUCert(t *testing.T) { @@ -45,15 +45,15 @@ func TestBadConfigOUCert(t *testing.T) { // the configuration of the OU identifier points to a // certificate that is neither a CA nor an intermediate CA for the msp. conf, err := GetLocalMspConfig("testdata/badconfigoucert", nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err := newBccspMsp(MSPv1_0, factory.GetDefault()) - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Setup(conf) - assert.Error(t, err) - assert.Contains(t, err.Error(), "Failed adding OU. Certificate [") - assert.Contains(t, err.Error(), "] not in root or intermediate certs.") + require.Error(t, err) + require.Contains(t, err.Error(), "Failed adding OU. Certificate [") + require.Contains(t, err.Error(), "] not in root or intermediate certs.") } func TestValidateIntermediateConfigOU(t *testing.T) { @@ -63,24 +63,24 @@ func TestValidateIntermediateConfigOU(t *testing.T) { thisMSP := getLocalMSP(t, "testdata/external") id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = id.Validate() - assert.NoError(t, err) + require.NoError(t, err) conf, err := GetLocalMspConfig("testdata/external", nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err = newBccspMsp(MSPv1_0, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join("testdata/external", "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) csp, err := sw.NewWithParams(256, "SHA2", ks) - assert.NoError(t, err) + require.NoError(t, err) thisMSP.(*bccspmsp).bccsp = csp err = thisMSP.Setup(conf) - assert.NoError(t, err) + require.NoError(t, err) } diff --git a/msp/revocation_test.go b/msp/revocation_test.go index 198495b781d..55f28c32333 100644 --- a/msp/revocation_test.go +++ b/msp/revocation_test.go @@ -22,7 +22,7 @@ import ( "github.com/hyperledger/fabric-protos-go/msp" "github.com/hyperledger/fabric/bccsp/sw" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestRevocation(t *testing.T) { @@ -33,23 +33,23 @@ func TestRevocation(t *testing.T) { thisMSP := getLocalMSP(t, "testdata/revocation") id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) // the certificate associated to this id is revoked and so validation should fail! err = id.Validate() - assert.Error(t, err) + require.Error(t, err) // This MSP is identical to the previous one, with only 1 difference: // the signature on the CRL is invalid thisMSP = getLocalMSP(t, "testdata/revocation2") id, err = thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) // the certificate associated to this id is revoked but the signature on the CRL is invalid // so validation should succeed err = id.Validate() - assert.NoError(t, err, "Identity found revoked although the signature over the CRL is invalid") + require.NoError(t, err, "Identity found revoked although the signature over the CRL is invalid") } func TestIdentityPolicyPrincipalAgainstRevokedIdentity(t *testing.T) { @@ -60,17 +60,17 @@ func TestIdentityPolicyPrincipalAgainstRevokedIdentity(t *testing.T) { thisMSP := getLocalMSP(t, "testdata/revocation") id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) idSerialized, err := id.Serialize() - assert.NoError(t, err) + require.NoError(t, err) principal := &msp.MSPPrincipal{ PrincipalClassification: msp.MSPPrincipal_IDENTITY, Principal: idSerialized} err = id.SatisfiesPrincipal(principal) - assert.Error(t, err) + require.Error(t, err) } func TestRevokedIntermediateCA(t *testing.T) { @@ -80,19 +80,19 @@ func TestRevokedIntermediateCA(t *testing.T) { // 3) a revocation list that revokes the intermediate CA cert dir := "testdata/revokedica" conf, err := GetLocalMspConfig(dir, nil, "SampleOrg") - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) thisMSP, err := newBccspMsp(MSPv1_0, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) ks, err := sw.NewFileBasedKeyStore(nil, filepath.Join(dir, "keystore"), true) - assert.NoError(t, err) + require.NoError(t, err) csp, err := sw.NewWithParams(256, "SHA2", ks) - assert.NoError(t, err) + require.NoError(t, err) thisMSP.(*bccspmsp).bccsp = csp err = thisMSP.Setup(conf) - assert.Error(t, err) - assert.Contains(t, err.Error(), "CA Certificate is not valid, ") + require.Error(t, err) + require.Contains(t, err.Error(), "CA Certificate is not valid, ") } diff --git a/msp/tls_test.go b/msp/tls_test.go index 50c90faf2cf..c12581db591 100644 --- a/msp/tls_test.go +++ b/msp/tls_test.go @@ -19,7 +19,7 @@ package msp import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestTLSCAs(t *testing.T) { @@ -27,22 +27,22 @@ func TestTLSCAs(t *testing.T) { thisMSP := getLocalMSP(t, "testdata/tls") id, err := thisMSP.GetDefaultSigningIdentity() - assert.NoError(t, err) + require.NoError(t, err) err = thisMSP.Validate(id.GetPublicVersion()) - assert.NoError(t, err) + require.NoError(t, err) tlsRootCerts := thisMSP.GetTLSRootCerts() - assert.Len(t, tlsRootCerts, 1) + require.Len(t, tlsRootCerts, 1) tlsRootCerts2, err := getPemMaterialFromDir("testdata/tls/tlscacerts") - assert.NoError(t, err) - assert.Len(t, tlsRootCerts2, 1) - assert.Equal(t, tlsRootCerts2[0], tlsRootCerts[0]) + require.NoError(t, err) + require.Len(t, tlsRootCerts2, 1) + require.Equal(t, tlsRootCerts2[0], tlsRootCerts[0]) tlsIntermediateCerts := thisMSP.GetTLSIntermediateCerts() - assert.Len(t, tlsIntermediateCerts, 1) + require.Len(t, tlsIntermediateCerts, 1) tlsIntermediateCerts2, err := getPemMaterialFromDir("testdata/tls/tlsintermediatecerts") - assert.NoError(t, err) - assert.Len(t, tlsIntermediateCerts2, 1) - assert.Equal(t, tlsIntermediateCerts2[0], tlsIntermediateCerts[0]) + require.NoError(t, err) + require.Len(t, tlsIntermediateCerts2, 1) + require.Equal(t, tlsIntermediateCerts2[0], tlsIntermediateCerts[0]) } diff --git a/orderer/common/bootstrap/file/bootstrap_test.go b/orderer/common/bootstrap/file/bootstrap_test.go index 97fceb05e3e..b947ece47cc 100644 --- a/orderer/common/bootstrap/file/bootstrap_test.go +++ b/orderer/common/bootstrap/file/bootstrap_test.go @@ -12,7 +12,6 @@ import ( "github.com/golang/protobuf/proto" cb "github.com/hyperledger/fabric-protos-go/common" bootfile "github.com/hyperledger/fabric/orderer/common/bootstrap/file" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -22,7 +21,7 @@ const fileFake = file + ".fake" func TestGenesisBlock(t *testing.T) { testDir, err := ioutil.TempDir("", "unittest") - assert.NoErrorf(t, err, "generate temporary test dir") + require.NoErrorf(t, err, "generate temporary test dir") defer os.RemoveAll(testDir) testFile := path.Join(testDir, file) @@ -30,7 +29,7 @@ func TestGenesisBlock(t *testing.T) { testFileFake := path.Join(testDir, fileFake) t.Run("Bad - No file", func(t *testing.T) { - assert.Panics(t, func() { + require.Panics(t, func() { helper := bootfile.New(testFileFake) _ = helper.GenesisBlock() }, "No file") @@ -38,9 +37,9 @@ func TestGenesisBlock(t *testing.T) { t.Run("Bad - Malformed Block", func(t *testing.T) { err := ioutil.WriteFile(testFile, []byte("abc"), 0644) - assert.NoErrorf(t, err, "generate temporary test file: %s", file) + require.NoErrorf(t, err, "generate temporary test file: %s", file) - assert.Panics(t, func() { + require.Panics(t, func() { helper := bootfile.New(testFile) _ = helper.GenesisBlock() }, "Malformed Block") @@ -72,24 +71,24 @@ func TestGenesisBlock(t *testing.T) { } marshalledBlock, _ := proto.Marshal(block) err := ioutil.WriteFile(testFile, marshalledBlock, 0644) - assert.NoErrorf(t, err, "generate temporary test file: %s", file) + require.NoErrorf(t, err, "generate temporary test file: %s", file) defer os.Remove(testFile) helper := bootfile.New(testFile) outBlock := helper.GenesisBlock() outHeader := outBlock.Header - assert.Equal(t, expectedNumber, outHeader.Number, "block header Number not read correctly") - assert.Equal(t, expectedHash, outHeader.PreviousHash, "block header PreviousHash not read correctly") - assert.Equal(t, expectedBytes, outHeader.DataHash, "block header DataHash not read correctly") + require.Equal(t, expectedNumber, outHeader.Number, "block header Number not read correctly") + require.Equal(t, expectedHash, outHeader.PreviousHash, "block header PreviousHash not read correctly") + require.Equal(t, expectedBytes, outHeader.DataHash, "block header DataHash not read correctly") outData := outBlock.Data - assert.Equal(t, expectedDataLen, len(outData.Data), "block len(data) not read correctly") - assert.Equal(t, expectedBytes, outData.Data[0], "block data not read correctly") + require.Equal(t, expectedDataLen, len(outData.Data), "block len(data) not read correctly") + require.Equal(t, expectedBytes, outData.Data[0], "block data not read correctly") outMeta := outBlock.Metadata - assert.Equal(t, expectedMetaLen, len(outMeta.Metadata), "block len(Metadata) not read correctly") - assert.Equal(t, expectedBytes, outMeta.Metadata[0], "block Metadata not read correctly") + require.Equal(t, expectedMetaLen, len(outMeta.Metadata), "block len(Metadata) not read correctly") + require.Equal(t, expectedBytes, outMeta.Metadata[0], "block Metadata not read correctly") }) } @@ -117,12 +116,12 @@ func TestReplaceGenesisBlockFile(t *testing.T) { marshalledBlock, _ := proto.Marshal(block) testDir, err := ioutil.TempDir("", "unittest") - assert.NoErrorf(t, err, "generate temporary test dir") + require.NoErrorf(t, err, "generate temporary test dir") defer os.RemoveAll(testDir) testFile := path.Join(testDir, file) err = ioutil.WriteFile(testFile, marshalledBlock, 0644) - assert.NoErrorf(t, err, "generate temporary test file: %s", file) + require.NoErrorf(t, err, "generate temporary test file: %s", file) testFileBak := path.Join(testDir, fileBak) testFileFake := path.Join(testDir, fileFake) @@ -164,39 +163,39 @@ func TestReplaceGenesisBlockFile(t *testing.T) { outBlock := helper.GenesisBlock() outHeader := outBlock.Header - assert.Equal(t, expectedNumber2, outHeader.Number, "block header Number not read correctly.") - assert.Equal(t, []uint8([]byte(nil)), outHeader.PreviousHash, "block header PreviousHash not read correctly.") - assert.Equal(t, expectedBytes2, outHeader.DataHash, "block header DataHash not read correctly.") + require.Equal(t, expectedNumber2, outHeader.Number, "block header Number not read correctly.") + require.Equal(t, []uint8([]byte(nil)), outHeader.PreviousHash, "block header PreviousHash not read correctly.") + require.Equal(t, expectedBytes2, outHeader.DataHash, "block header DataHash not read correctly.") outData := outBlock.Data - assert.Equal(t, expectedDataLen2, len(outData.Data), "block len(data) not read correctly.") - assert.Equal(t, expectedBytes2, outData.Data[0], "block data not read correctly.") + require.Equal(t, expectedDataLen2, len(outData.Data), "block len(data) not read correctly.") + require.Equal(t, expectedBytes2, outData.Data[0], "block data not read correctly.") outMeta := outBlock.Metadata - assert.Equal(t, expectedMetaLen2, len(outMeta.Metadata), "block len(Metadata) not read correctly.") - assert.Equal(t, expectedBytes2, outMeta.Metadata[0], "block Metadata not read correctly.") + require.Equal(t, expectedMetaLen2, len(outMeta.Metadata), "block len(Metadata) not read correctly.") + require.Equal(t, expectedBytes2, outMeta.Metadata[0], "block Metadata not read correctly.") }) t.Run("Bad - No original", func(t *testing.T) { replacer := bootfile.NewReplacer(testFileFake) errWr := replacer.CheckReadWrite() - assert.Error(t, errWr, "no such file") - assert.Contains(t, errWr.Error(), "no such file or directory") + require.Error(t, errWr, "no such file") + require.Contains(t, errWr.Error(), "no such file or directory") errRep := replacer.ReplaceGenesisBlockFile(block2) - assert.Error(t, errRep, "no such file") - assert.Contains(t, errRep.Error(), "no such file or directory") + require.Error(t, errRep, "no such file") + require.Contains(t, errRep.Error(), "no such file or directory") }) t.Run("Bad - Not a regular file", func(t *testing.T) { replacer := bootfile.NewReplacer(testDir) errWr := replacer.CheckReadWrite() - assert.Error(t, errWr, "not a regular file") - assert.Contains(t, errWr.Error(), "not a regular file") + require.Error(t, errWr, "not a regular file") + require.Contains(t, errWr.Error(), "not a regular file") errRep := replacer.ReplaceGenesisBlockFile(block2) - assert.Error(t, errRep, "not a regular file") - assert.Contains(t, errRep.Error(), "not a regular file") + require.Error(t, errRep, "not a regular file") + require.Contains(t, errRep.Error(), "not a regular file") }) t.Run("Bad - backup not writable", func(t *testing.T) { @@ -204,57 +203,57 @@ func TestReplaceGenesisBlockFile(t *testing.T) { _, err := os.Create(testFileBak) defer os.Remove(testFileBak) - assert.NoErrorf(t, err, "Failed to create backup") + require.NoErrorf(t, err, "Failed to create backup") err = os.Chmod(testFileBak, 0400) - assert.NoErrorf(t, err, "Failed to change permission on backup") + require.NoErrorf(t, err, "Failed to change permission on backup") err = replacer.ReplaceGenesisBlockFile(block2) - assert.Errorf(t, err, "Fail to replace, backup") - assert.Contains(t, err.Error(), "permission denied") - assert.Contains(t, err.Error(), "could not copy genesis block file") + require.Errorf(t, err, "Fail to replace, backup") + require.Contains(t, err.Error(), "permission denied") + require.Contains(t, err.Error(), "could not copy genesis block file") err = os.Chmod(testFileBak, 0600) - assert.NoErrorf(t, err, "Failed to restore permission on backup") + require.NoErrorf(t, err, "Failed to restore permission on backup") }) t.Run("Bad - source not writable", func(t *testing.T) { replacer := bootfile.NewReplacer(testFile) errC := os.Chmod(testFile, 0400) - assert.NoErrorf(t, errC, "Failed to change permission on origin") + require.NoErrorf(t, errC, "Failed to change permission on origin") errWr := replacer.CheckReadWrite() - assert.Error(t, errWr, "not writable") - assert.Contains(t, errWr.Error(), "permission denied") - assert.Contains(t, errWr.Error(), "cannot be opened for read-write, check permissions") + require.Error(t, errWr, "not writable") + require.Contains(t, errWr.Error(), "permission denied") + require.Contains(t, errWr.Error(), "cannot be opened for read-write, check permissions") errRep := replacer.ReplaceGenesisBlockFile(block2) - assert.Errorf(t, errRep, "Fail to replace, unwritable origin") - assert.Contains(t, errRep.Error(), "permission denied") - assert.Contains(t, errRep.Error(), "could not write new genesis block into file") - assert.Contains(t, errRep.Error(), "use backup if necessary") + require.Errorf(t, errRep, "Fail to replace, unwritable origin") + require.Contains(t, errRep.Error(), "permission denied") + require.Contains(t, errRep.Error(), "could not write new genesis block into file") + require.Contains(t, errRep.Error(), "use backup if necessary") err = os.Chmod(testFile, 0600) - assert.NoErrorf(t, err, "Failed to restore permission, origin") + require.NoErrorf(t, err, "Failed to restore permission, origin") }) t.Run("Bad - source not readable", func(t *testing.T) { replacer := bootfile.NewReplacer(testFile) errC := os.Chmod(testFile, 0200) - assert.NoErrorf(t, errC, "Failed to change permission on origin") + require.NoErrorf(t, errC, "Failed to change permission on origin") errWr := replacer.CheckReadWrite() - assert.Error(t, errWr, "not writable") - assert.Contains(t, errWr.Error(), "permission denied") - assert.Contains(t, errWr.Error(), "cannot be opened for read-write, check permissions") + require.Error(t, errWr, "not writable") + require.Contains(t, errWr.Error(), "permission denied") + require.Contains(t, errWr.Error(), "cannot be opened for read-write, check permissions") errRep := replacer.ReplaceGenesisBlockFile(block2) - assert.Errorf(t, errRep, "Fail to replace, unwritable origin") - assert.Contains(t, errRep.Error(), "permission denied") - assert.Contains(t, errRep.Error(), "could not copy genesis block file") + require.Errorf(t, errRep, "Fail to replace, unwritable origin") + require.Contains(t, errRep.Error(), "permission denied") + require.Contains(t, errRep.Error(), "could not copy genesis block file") err = os.Chmod(testFile, 0600) - assert.NoErrorf(t, err, "Failed to restore permission, origin") + require.NoErrorf(t, err, "Failed to restore permission, origin") }) } diff --git a/orderer/common/channelparticipation/restapi_test.go b/orderer/common/channelparticipation/restapi_test.go index 65b6a602783..639bb782b70 100644 --- a/orderer/common/channelparticipation/restapi_test.go +++ b/orderer/common/channelparticipation/restapi_test.go @@ -24,7 +24,6 @@ import ( "github.com/hyperledger/fabric/orderer/common/types" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -34,7 +33,7 @@ func TestNewHTTPHandler(t *testing.T) { RemoveStorage: false, } h := channelparticipation.NewHTTPHandler(config, &mocks.ChannelManagement{}) - assert.NotNilf(t, h, "cannot create handler") + require.NotNilf(t, h, "cannot create handler") } func TestHTTPHandler_ServeHTTP_Disabled(t *testing.T) { @@ -58,7 +57,7 @@ func TestHTTPHandler_ServeHTTP_InvalidMethods(t *testing.T) { req := httptest.NewRequest(method, path.Join(channelparticipation.URLBaseV1Channels, "ch-id"), nil) h.ServeHTTP(resp, req) checkErrorResponse(t, http.StatusMethodNotAllowed, fmt.Sprintf("invalid request method: %s", method), resp) - assert.Equal(t, "GET, POST, DELETE", resp.Result().Header.Get("Allow"), "%s", method) + require.Equal(t, "GET, POST, DELETE", resp.Result().Header.Get("Allow"), "%s", method) } }) @@ -69,7 +68,7 @@ func TestHTTPHandler_ServeHTTP_InvalidMethods(t *testing.T) { req := httptest.NewRequest(method, channelparticipation.URLBaseV1Channels, nil) h.ServeHTTP(resp, req) checkErrorResponse(t, http.StatusMethodNotAllowed, fmt.Sprintf("invalid request method: %s", method), resp) - assert.Equal(t, "GET", resp.Result().Header.Get("Allow"), "%s", method) + require.Equal(t, "GET", resp.Result().Header.Get("Allow"), "%s", method) } }) } @@ -82,21 +81,21 @@ func TestHTTPHandler_ServeHTTP_ListErrors(t *testing.T) { resp := httptest.NewRecorder() req := httptest.NewRequest(http.MethodGet, "/oops", nil) h.ServeHTTP(resp, req) - assert.Equal(t, http.StatusNotFound, resp.Result().StatusCode) + require.Equal(t, http.StatusNotFound, resp.Result().StatusCode) }) t.Run("bad resource", func(t *testing.T) { resp := httptest.NewRecorder() req := httptest.NewRequest(http.MethodGet, channelparticipation.URLBaseV1+"oops", nil) h.ServeHTTP(resp, req) - assert.Equal(t, http.StatusNotFound, resp.Result().StatusCode) + require.Equal(t, http.StatusNotFound, resp.Result().StatusCode) }) t.Run("bad channel ID", func(t *testing.T) { resp := httptest.NewRecorder() req := httptest.NewRequest(http.MethodGet, channelparticipation.URLBaseV1Channels+"/no/slash", nil) h.ServeHTTP(resp, req) - assert.Equal(t, http.StatusNotFound, resp.Result().StatusCode) + require.Equal(t, http.StatusNotFound, resp.Result().StatusCode) }) t.Run("illegal character in channel ID", func(t *testing.T) { @@ -131,22 +130,22 @@ func TestHTTPHandler_ServeHTTP_ListAll(t *testing.T) { resp := httptest.NewRecorder() req := httptest.NewRequest(http.MethodGet, channelparticipation.URLBaseV1Channels, nil) h.ServeHTTP(resp, req) - assert.Equal(t, http.StatusOK, resp.Result().StatusCode) - assert.Equal(t, "application/json", resp.Result().Header.Get("Content-Type")) - assert.Equal(t, "no-store", resp.Result().Header.Get("Cache-Control")) + require.Equal(t, http.StatusOK, resp.Result().StatusCode) + require.Equal(t, "application/json", resp.Result().Header.Get("Content-Type")) + require.Equal(t, "no-store", resp.Result().Header.Get("Cache-Control")) listAll := &types.ChannelList{} err := json.Unmarshal(resp.Body.Bytes(), listAll) require.NoError(t, err, "cannot be unmarshaled") - assert.Equal(t, 2, len(listAll.Channels)) - assert.Equal(t, list.SystemChannel, listAll.SystemChannel) + require.Equal(t, 2, len(listAll.Channels)) + require.Equal(t, list.SystemChannel, listAll.SystemChannel) m := make(map[string]bool) for _, item := range listAll.Channels { m[item.Name] = true - assert.Equal(t, channelparticipation.URLBaseV1Channels+"/"+item.Name, item.URL) + require.Equal(t, channelparticipation.URLBaseV1Channels+"/"+item.Name, item.URL) } - assert.True(t, m["app-channel1"]) - assert.True(t, m["app-channel2"]) + require.True(t, m["app-channel1"]) + require.True(t, m["app-channel2"]) }) t.Run("no channels, empty channels", func(t *testing.T) { @@ -157,16 +156,16 @@ func TestHTTPHandler_ServeHTTP_ListAll(t *testing.T) { resp := httptest.NewRecorder() req := httptest.NewRequest(http.MethodGet, channelparticipation.URLBaseV1Channels, nil) h.ServeHTTP(resp, req) - assert.Equal(t, http.StatusOK, resp.Result().StatusCode) - assert.Equal(t, "application/json", resp.Result().Header.Get("Content-Type")) - assert.Equal(t, "no-store", resp.Result().Header.Get("Cache-Control")) + require.Equal(t, http.StatusOK, resp.Result().StatusCode) + require.Equal(t, "application/json", resp.Result().Header.Get("Content-Type")) + require.Equal(t, "no-store", resp.Result().Header.Get("Cache-Control")) listAll := &types.ChannelList{} err := json.Unmarshal(resp.Body.Bytes(), listAll) require.NoError(t, err, "cannot be unmarshaled") - assert.Equal(t, 0, len(listAll.Channels)) - assert.NotNil(t, listAll.Channels) - assert.Nil(t, listAll.SystemChannel) + require.Equal(t, 0, len(listAll.Channels)) + require.NotNil(t, listAll.Channels) + require.Nil(t, listAll.SystemChannel) }) t.Run("no channels, Accept ok", func(t *testing.T) { @@ -178,16 +177,16 @@ func TestHTTPHandler_ServeHTTP_ListAll(t *testing.T) { req := httptest.NewRequest(http.MethodGet, channelparticipation.URLBaseV1Channels, nil) req.Header.Set("Accept", accept) h.ServeHTTP(resp, req) - assert.Equal(t, http.StatusOK, resp.Result().StatusCode, "Accept: %s", accept) - assert.Equal(t, "application/json", resp.Result().Header.Get("Content-Type")) - assert.Equal(t, "no-store", resp.Result().Header.Get("Cache-Control")) + require.Equal(t, http.StatusOK, resp.Result().StatusCode, "Accept: %s", accept) + require.Equal(t, "application/json", resp.Result().Header.Get("Content-Type")) + require.Equal(t, "no-store", resp.Result().Header.Get("Cache-Control")) listAll := &types.ChannelList{} err := json.Unmarshal(resp.Body.Bytes(), listAll) require.NoError(t, err, "cannot be unmarshaled") - assert.Equal(t, 0, len(listAll.Channels)) - assert.Nil(t, listAll.Channels) - assert.Nil(t, listAll.SystemChannel) + require.Equal(t, 0, len(listAll.Channels)) + require.Nil(t, listAll.Channels) + require.Nil(t, listAll.SystemChannel) } }) @@ -195,8 +194,8 @@ func TestHTTPHandler_ServeHTTP_ListAll(t *testing.T) { resp := httptest.NewRecorder() req := httptest.NewRequest(http.MethodGet, channelparticipation.URLBaseV1, nil) h.ServeHTTP(resp, req) - assert.Equal(t, http.StatusFound, resp.Result().StatusCode) - assert.Equal(t, channelparticipation.URLBaseV1Channels, resp.Result().Header.Get("Location")) + require.Equal(t, http.StatusFound, resp.Result().StatusCode) + require.Equal(t, channelparticipation.URLBaseV1Channels, resp.Result().Header.Get("Location")) }) } @@ -215,14 +214,14 @@ func TestHTTPHandler_ServeHTTP_ListSingle(t *testing.T) { resp := httptest.NewRecorder() req := httptest.NewRequest(http.MethodGet, channelparticipation.URLBaseV1Channels+"/app-channel", nil) h.ServeHTTP(resp, req) - assert.Equal(t, http.StatusOK, resp.Result().StatusCode) - assert.Equal(t, "application/json", resp.Result().Header.Get("Content-Type")) - assert.Equal(t, "no-store", resp.Result().Header.Get("Cache-Control")) + require.Equal(t, http.StatusOK, resp.Result().StatusCode) + require.Equal(t, "application/json", resp.Result().Header.Get("Content-Type")) + require.Equal(t, "no-store", resp.Result().Header.Get("Cache-Control")) infoResp := types.ChannelInfo{} err := json.Unmarshal(resp.Body.Bytes(), &infoResp) require.NoError(t, err, "cannot be unmarshaled") - assert.Equal(t, types.ChannelInfo{ + require.Equal(t, types.ChannelInfo{ Name: "app-channel", URL: channelparticipation.URLBaseV1Channels + "/app-channel", ClusterRelation: "member", @@ -260,13 +259,13 @@ func TestHTTPHandler_ServeHTTP_Join(t *testing.T) { resp := httptest.NewRecorder() req := genJoinRequestFormData(t, validBlockBytes("ch-id")) h.ServeHTTP(resp, req) - assert.Equal(t, http.StatusCreated, resp.Result().StatusCode) - assert.Equal(t, "application/json", resp.Result().Header.Get("Content-Type")) + require.Equal(t, http.StatusCreated, resp.Result().StatusCode) + require.Equal(t, "application/json", resp.Result().Header.Get("Content-Type")) infoResp := types.ChannelInfo{} err := json.Unmarshal(resp.Body.Bytes(), &infoResp) require.NoError(t, err, "cannot be unmarshaled") - assert.Equal(t, types.ChannelInfo{ + require.Equal(t, types.ChannelInfo{ Name: "app-channel", URL: channelparticipation.URLBaseV1Channels + "/app-channel", ClusterRelation: "member", @@ -282,7 +281,7 @@ func TestHTTPHandler_ServeHTTP_Join(t *testing.T) { req := genJoinRequestFormData(t, validBlockBytes("ch-id")) h.ServeHTTP(resp, req) checkErrorResponse(t, http.StatusMethodNotAllowed, "cannot join: system channel exists", resp) - assert.Equal(t, "GET", resp.Result().Header.Get("Allow")) + require.Equal(t, "GET", resp.Result().Header.Get("Allow")) }) t.Run("Error: Channel Exists", func(t *testing.T) { @@ -292,7 +291,7 @@ func TestHTTPHandler_ServeHTTP_Join(t *testing.T) { req := genJoinRequestFormData(t, validBlockBytes("ch-id")) h.ServeHTTP(resp, req) checkErrorResponse(t, http.StatusMethodNotAllowed, "cannot join: channel already exists", resp) - assert.Equal(t, "GET, DELETE", resp.Result().Header.Get("Allow")) + require.Equal(t, "GET, DELETE", resp.Result().Header.Get("Allow")) }) t.Run("Error: App Channels Exist", func(t *testing.T) { @@ -516,8 +515,8 @@ func TestHTTPHandler_ServeHTTP_Remove(t *testing.T) { h.ServeHTTP(resp, req) if testCase.expectedErr == nil { - assert.Equal(t, testCase.expectedCode, resp.Result().StatusCode) - assert.Equal(t, 0, resp.Body.Len(), "empty body") + require.Equal(t, testCase.expectedCode, resp.Result().StatusCode) + require.Equal(t, 0, resp.Body.Len(), "empty body") } else { checkErrorResponse(t, testCase.expectedCode, testCase.expectedErr.Error(), resp) } @@ -531,7 +530,7 @@ func TestHTTPHandler_ServeHTTP_Remove(t *testing.T) { req := httptest.NewRequest(http.MethodDelete, path.Join(channelparticipation.URLBaseV1Channels, "my-channel"), nil) h.ServeHTTP(resp, req) checkErrorResponse(t, http.StatusMethodNotAllowed, "cannot remove: system channel exists", resp) - assert.Equal(t, "GET", resp.Result().Header.Get("Allow")) + require.Equal(t, "GET", resp.Result().Header.Get("Allow")) }) } @@ -543,18 +542,18 @@ func setup(config localconfig.ChannelParticipation, t *testing.T) (*mocks.Channe } func checkErrorResponse(t *testing.T, expectedCode int, expectedErrMsg string, resp *httptest.ResponseRecorder) { - assert.Equal(t, expectedCode, resp.Result().StatusCode) + require.Equal(t, expectedCode, resp.Result().StatusCode) headerArray, headerOK := resp.Result().Header["Content-Type"] - assert.True(t, headerOK) + require.True(t, headerOK) require.Len(t, headerArray, 1) - assert.Equal(t, "application/json", headerArray[0]) + require.Equal(t, "application/json", headerArray[0]) decoder := json.NewDecoder(resp.Body) respErr := &types.ErrorResponse{} err := decoder.Decode(respErr) - assert.NoError(t, err, "body: %s", resp.Body.String()) - assert.Equal(t, expectedErrMsg, respErr.Error) + require.NoError(t, err, "body: %s", resp.Body.String()) + require.Equal(t, expectedErrMsg, respErr.Error) } func genJoinRequestFormData(t *testing.T, blockBytes []byte) *http.Request { diff --git a/orderer/common/channelparticipation/validator_test.go b/orderer/common/channelparticipation/validator_test.go index b6e8d65f36e..83431278197 100644 --- a/orderer/common/channelparticipation/validator_test.go +++ b/orderer/common/channelparticipation/validator_test.go @@ -15,7 +15,7 @@ import ( "github.com/hyperledger/fabric/bccsp" "github.com/hyperledger/fabric/orderer/common/channelparticipation" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestValidateJoinBlock(t *testing.T) { @@ -96,9 +96,9 @@ func TestValidateJoinBlock(t *testing.T) { for _, test := range tests { t.Run(test.testName, func(t *testing.T) { isAppChannel, err := channelparticipation.ValidateJoinBlock(test.channelID, test.joinBlock) - assert.Equal(t, isAppChannel, test.expectedIsAppChannel) + require.Equal(t, isAppChannel, test.expectedIsAppChannel) if test.expectedErr != nil { - assert.EqualError(t, err, test.expectedErr.Error()) + require.EqualError(t, err, test.expectedErr.Error()) } }) } diff --git a/orderer/common/cluster/comm_test.go b/orderer/common/cluster/comm_test.go index a90f7f6e082..fe45a99ac3c 100644 --- a/orderer/common/cluster/comm_test.go +++ b/orderer/common/cluster/comm_test.go @@ -31,8 +31,8 @@ import ( "github.com/hyperledger/fabric/orderer/common/cluster/mocks" "github.com/onsi/gomega" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" "google.golang.org/grpc" @@ -217,7 +217,7 @@ func (cn *clusterNode) renewCertificates() { func newTestNodeWithMetrics(t *testing.T, metrics cluster.MetricsProvider, tlsConnGauge metrics.Gauge) *clusterNode { serverKeyPair, err := ca.NewServerCertKeyPair("127.0.0.1") - assert.NoError(t, err) + require.NoError(t, err) clientKeyPair, _ := ca.NewClientCertKeyPair() @@ -247,7 +247,7 @@ func newTestNodeWithMetrics(t *testing.T, metrics cluster.MetricsProvider, tlsCo }, } gRPCServer, err := comm_utils.NewGRPCServer("127.0.0.1:", srvConfig) - assert.NoError(t, err) + require.NoError(t, err) tstSrv := &clusterNode{ dialer: dialer, @@ -330,7 +330,7 @@ func TestSendBigMessage(t *testing.T) { } _, err := rand.Read(bigMsg.Payload) - assert.NoError(t, err) + require.NoError(t, err) wrappedMsg := &orderer.StepRequest{ Payload: &orderer.StepRequest_ConsensusRequest{ @@ -341,7 +341,7 @@ func TestSendBigMessage(t *testing.T) { for _, node := range []*clusterNode{node2, node3, node4, node5} { node.handler.On("OnConsensus", testChannel, node1.nodeInfo.ID, mock.Anything).Run(func(args mock.Arguments) { msg := args.Get(2).(*orderer.ConsensusRequest) - assert.Len(t, msg.Payload, msgSize) + require.Len(t, msg.Payload, msgSize) messageReceived.Done() }).Return(nil) } @@ -355,7 +355,7 @@ func TestSendBigMessage(t *testing.T) { for _, node := range []*clusterNode{node2, node3, node4, node5} { rm, err := node1.c.Remote(testChannel, node.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) stream := assertEventualEstablishStream(t, rm) streams[node.nodeInfo.ID] = stream @@ -367,7 +367,7 @@ func TestSendBigMessage(t *testing.T) { t1 := time.Now() err = stream.Send(wrappedMsg) - assert.NoError(t, err) + require.NoError(t, err) t.Log("Sending took", time.Since(t1)) // Unfreeze the node. It can now call Recv, and signal the messageReceived waitGroup. @@ -418,7 +418,7 @@ func TestBlockingSend(t *testing.T) { node2.c.Configure(testChannel, config) rm, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) client := &mocks.ClusterClient{} fakeStream := &mocks.StepClient{} @@ -442,18 +442,18 @@ func TestBlockingSend(t *testing.T) { }).Return(errors.New("oops")) stream, err := rm.NewStream(time.Hour) - assert.NoError(t, err) + require.NoError(t, err) // The first send doesn't block, even though the Send operation blocks. err = stream.Send(testCase.messageToSend) - assert.NoError(t, err) + require.NoError(t, err) // The second once doesn't either. // After this point, we have 1 goroutine which is blocked on Send(), // and one message in the buffer. sendInvoked.Wait() err = stream.Send(testCase.messageToSend) - assert.NoError(t, err) + require.NoError(t, err) // The third blocks, so we need to unblock it ourselves // in order for it to go through, unless the operation @@ -470,11 +470,11 @@ func TestBlockingSend(t *testing.T) { // The third send always overflows or blocks. // If we expect to receive an overflow error - assert it. if testCase.overflowErr != "" { - assert.EqualError(t, err, testCase.overflowErr) + require.EqualError(t, err, testCase.overflowErr) } elapsed := time.Since(t1) t.Log("Elapsed time:", elapsed) - assert.True(t, elapsed > testCase.elapsedGreaterThan) + require.True(t, elapsed > testCase.elapsedGreaterThan) if !testCase.streamUnblocks { close(unBlock) @@ -517,11 +517,11 @@ func TestUnavailableHosts(t *testing.T) { node1.c.Configure(testChannel, []cluster.RemoteNode{node2.nodeInfo}) remote, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) - assert.NotNil(t, remote) + require.NoError(t, err) + require.NotNil(t, remote) _, err = remote.NewStream(time.Millisecond * 100) - assert.Contains(t, err.Error(), "connection") + require.Contains(t, err.Error(), "connection") } func TestStreamAbort(t *testing.T) { @@ -586,15 +586,15 @@ func testStreamAbort(t *testing.T, node2 *clusterNode, newMembership []cluster.R }).Return(nil).Once() rm1, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) go func() { stream := assertEventualEstablishStream(t, rm1) // Signal the reconfiguration err = stream.Send(wrapSubmitReq(testReq)) - assert.NoError(t, err) + require.NoError(t, err) _, err := stream.Recv() - assert.Contains(t, err.Error(), expectedError) + require.Contains(t, err.Error(), expectedError) close(stopChan) }() @@ -622,13 +622,13 @@ func TestDoubleReconfigure(t *testing.T) { node1.c.Configure(testChannel, []cluster.RemoteNode{node2.nodeInfo}) rm1, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) node1.c.Configure(testChannel, []cluster.RemoteNode{node2.nodeInfo}) rm2, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) // Ensure the references are equal - assert.True(t, rm1 == rm2) + require.True(t, rm1 == rm2) } func TestInvalidChannel(t *testing.T) { @@ -641,7 +641,7 @@ func TestInvalidChannel(t *testing.T) { defer node1.stop() _, err := node1.c.Remote(testChannel, 0) - assert.EqualError(t, err, "channel test doesn't exist") + require.EqualError(t, err, "channel test doesn't exist") }) t.Run("channel cannot be extracted", func(t *testing.T) { @@ -656,20 +656,20 @@ func TestInvalidChannel(t *testing.T) { }, time.Minute).Should(gomega.BeTrue()) stub, err := node1.c.Remote(testChannel, node1.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) stream := assertEventualEstablishStream(t, stub) // An empty SubmitRequest has an empty channel which is invalid err = stream.Send(wrapSubmitReq(&orderer.SubmitRequest{})) - assert.NoError(t, err) + require.NoError(t, err) _, err = stream.Recv() - assert.EqualError(t, err, "rpc error: code = Unknown desc = badly formatted message, cannot extract channel") + require.EqualError(t, err, "rpc error: code = Unknown desc = badly formatted message, cannot extract channel") // Test directly without going through the gRPC stream err = node1.c.DispatchSubmit(context.Background(), &orderer.SubmitRequest{}) - assert.EqualError(t, err, "badly formatted message, cannot extract channel") + require.EqualError(t, err, "badly formatted message, cannot extract channel") }) } @@ -735,7 +735,7 @@ func testAbort(t *testing.T, abortFunc func(*cluster.RemoteContext), rpcTimeout }).Once() rm, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) go func() { onStepCalled.Wait() @@ -752,7 +752,7 @@ func testAbort(t *testing.T, abortFunc func(*cluster.RemoteContext), rpcTimeout stream.Send(wrapSubmitReq(testSubReq)) _, err = stream.Recv() - assert.EqualError(t, err, expectedErr) + require.EqualError(t, err, expectedErr) node2.handler.AssertNumberOfCalls(t, "OnSubmit", 1) } @@ -774,7 +774,7 @@ func TestNoTLSCertificate(t *testing.T) { }, } cl, err := comm_utils.NewGRPCClient(clientConfig) - assert.NoError(t, err) + require.NoError(t, err) var conn *grpc.ClientConn gt := gomega.NewGomegaWithT(t) @@ -785,12 +785,12 @@ func TestNoTLSCertificate(t *testing.T) { echoClient := orderer.NewClusterClient(conn) stream, err := echoClient.Step(context.Background()) - assert.NoError(t, err) + require.NoError(t, err) err = stream.Send(wrapSubmitReq(testSubReq)) - assert.NoError(t, err) + require.NoError(t, err) _, err = stream.Recv() - assert.EqualError(t, err, "rpc error: code = Unknown desc = no TLS certificate sent") + require.EqualError(t, err, "rpc error: code = Unknown desc = no TLS certificate sent") } func TestReconnect(t *testing.T) { @@ -819,7 +819,7 @@ func TestReconnect(t *testing.T) { // Obtain the stub for node 2. // Should succeed, because the connection was created at time of configuration stub, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) // Try to obtain a stream. Should not Succeed. gt := gomega.NewGomegaWithT(t) @@ -880,8 +880,8 @@ func TestRenewCertificates(t *testing.T) { // so it closed the connection to the remote node info2 := node2.nodeInfo remote, err := node1.c.Remote(testChannel, info2.ID) - assert.NoError(t, err) - assert.NotNil(t, remote) + require.NoError(t, err) + require.NotNil(t, remote) gt := gomega.NewGomegaWithT(t) gt.Eventually(func() string { @@ -917,7 +917,7 @@ func TestMembershipReconfiguration(t *testing.T) { // Node 1 can't connect to node 2 because it doesn't know its TLS certificate yet _, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.EqualError(t, err, fmt.Sprintf("node %d doesn't exist in channel test's membership", node2.nodeInfo.ID)) + require.EqualError(t, err, fmt.Sprintf("node %d doesn't exist in channel test's membership", node2.nodeInfo.ID)) // Node 2 can connect to node 1, but it can't send it messages because node 1 doesn't know node 2 yet. gt := gomega.NewGomegaWithT(t) @@ -927,14 +927,14 @@ func TestMembershipReconfiguration(t *testing.T) { }, time.Minute).Should(gomega.BeTrue()) stub, err := node2.c.Remote(testChannel, node1.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) stream := assertEventualEstablishStream(t, stub) err = stream.Send(wrapSubmitReq(testSubReq)) - assert.NoError(t, err) + require.NoError(t, err) _, err = stream.Recv() - assert.EqualError(t, err, "rpc error: code = Unknown desc = certificate extracted from TLS connection isn't authorized") + require.EqualError(t, err, "rpc error: code = Unknown desc = certificate extracted from TLS connection isn't authorized") // Next, configure node 1 to know about node 2 node1.c.Configure(testChannel, []cluster.RemoteNode{node2.nodeInfo}) @@ -947,12 +947,12 @@ func TestMembershipReconfiguration(t *testing.T) { node2.c.Configure(testChannel, []cluster.RemoteNode{}) // Node 1 can still connect to node 2 stub, err = node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) // But can't send a message because node 2 now doesn't authorized node 1 stream = assertEventualEstablishStream(t, stub) stream.Send(wrapSubmitReq(testSubReq)) _, err = stream.Recv() - assert.EqualError(t, err, "rpc error: code = Unknown desc = certificate extracted from TLS connection isn't authorized") + require.EqualError(t, err, "rpc error: code = Unknown desc = certificate extracted from TLS connection isn't authorized") } func TestShutdown(t *testing.T) { @@ -966,7 +966,7 @@ func TestShutdown(t *testing.T) { // Obtaining a RemoteContext cannot succeed because shutdown was called before _, err := node1.c.Remote(testChannel, node1.nodeInfo.ID) - assert.EqualError(t, err, "communication has been shut down") + require.EqualError(t, err, "communication has been shut down") node2 := newTestNode(t) defer node2.stop() @@ -982,7 +982,7 @@ func TestShutdown(t *testing.T) { }, time.Minute).Should(gomega.Succeed()) stub, err := node2.c.Remote(testChannel, node1.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) // Therefore, sending a message doesn't succeed because node 1 rejected the configuration change gt.Eventually(func() string { @@ -991,7 +991,7 @@ func TestShutdown(t *testing.T) { return err.Error() } err = stream.Send(wrapSubmitReq(testSubReq)) - assert.NoError(t, err) + require.NoError(t, err) _, err = stream.Recv() return err.Error() @@ -1033,9 +1033,9 @@ func TestMultiChannelConfig(t *testing.T) { }).Once() node2toNode1, err := node2.c.Remote("foo", node1.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) node3toNode1, err := node3.c.Remote("bar", node1.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) stream := assertEventualEstablishStream(t, node2toNode1) stream.Send(fooReq) @@ -1055,26 +1055,26 @@ func TestMultiChannelConfig(t *testing.T) { node1.handler.On("OnSubmit", "bar", node3.nodeInfo.ID, mock.Anything).Return(nil) node2toNode1, err := node2.c.Remote("foo", node1.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) node3toNode1, err := node3.c.Remote("bar", node1.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) assertEventualSendMessage(t, node2toNode1, &orderer.SubmitRequest{Channel: "foo"}) - assert.NoError(t, err) + require.NoError(t, err) stream, err := node2toNode1.NewStream(time.Hour) - assert.NoError(t, err) + require.NoError(t, err) err = stream.Send(barReq) - assert.NoError(t, err) + require.NoError(t, err) _, err = stream.Recv() - assert.EqualError(t, err, "rpc error: code = Unknown desc = certificate extracted from TLS connection isn't authorized") + require.EqualError(t, err, "rpc error: code = Unknown desc = certificate extracted from TLS connection isn't authorized") assertEventualSendMessage(t, node3toNode1, &orderer.SubmitRequest{Channel: "bar"}) stream, err = node3toNode1.NewStream(time.Hour) - assert.NoError(t, err) + require.NoError(t, err) err = stream.Send(fooReq) - assert.NoError(t, err) + require.NoError(t, err) _, err = stream.Recv() - assert.EqualError(t, err, "rpc error: code = Unknown desc = certificate extracted from TLS connection isn't authorized") + require.EqualError(t, err, "rpc error: code = Unknown desc = certificate extracted from TLS connection isn't authorized") }) } @@ -1093,7 +1093,7 @@ func TestConnectionFailure(t *testing.T) { node1.c.Configure(testChannel, []cluster.RemoteNode{node2.nodeInfo}) _, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.EqualError(t, err, "oops") + require.EqualError(t, err, "oops") } type testMetrics struct { @@ -1139,10 +1139,10 @@ func TestMetrics(t *testing.T) { name: "EgressQueueOccupancy", runTest: func(node1, node2 *clusterNode, testMetrics *testMetrics) { assertBiDiCommunication(t, node1, node2, testReq) - assert.Equal(t, []string{"host", node2.nodeInfo.Endpoint, "msg_type", "transaction", "channel", testChannel}, + require.Equal(t, []string{"host", node2.nodeInfo.Endpoint, "msg_type", "transaction", "channel", testChannel}, testMetrics.egressQueueLength.WithArgsForCall(0)) - assert.Equal(t, float64(0), testMetrics.egressQueueLength.SetArgsForCall(0)) - assert.Equal(t, float64(1), testMetrics.egressQueueCapacity.SetArgsForCall(0)) + require.Equal(t, float64(0), testMetrics.egressQueueLength.SetArgsForCall(0)) + require.Equal(t, float64(1), testMetrics.egressQueueCapacity.SetArgsForCall(0)) var messageReceived sync.WaitGroup messageReceived.Add(1) @@ -1151,67 +1151,67 @@ func TestMetrics(t *testing.T) { }).Return(nil) rm, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) stream := assertEventualEstablishStream(t, rm) stream.Send(testConsensusReq) messageReceived.Wait() - assert.Equal(t, []string{"host", node2.nodeInfo.Endpoint, "msg_type", "consensus", "channel", testChannel}, + require.Equal(t, []string{"host", node2.nodeInfo.Endpoint, "msg_type", "consensus", "channel", testChannel}, testMetrics.egressQueueLength.WithArgsForCall(1)) - assert.Equal(t, float64(0), testMetrics.egressQueueLength.SetArgsForCall(1)) - assert.Equal(t, float64(1), testMetrics.egressQueueCapacity.SetArgsForCall(1)) + require.Equal(t, float64(0), testMetrics.egressQueueLength.SetArgsForCall(1)) + require.Equal(t, float64(1), testMetrics.egressQueueCapacity.SetArgsForCall(1)) }, }, { name: "EgressStreamsCount", runTest: func(node1, node2 *clusterNode, testMetrics *testMetrics) { assertBiDiCommunication(t, node1, node2, testReq) - assert.Equal(t, 1, testMetrics.egressStreamCount.SetCallCount()) - assert.Equal(t, 1, testMetrics.egressStreamCount.WithCallCount()) - assert.Equal(t, []string{"channel", testChannel}, testMetrics.egressStreamCount.WithArgsForCall(0)) + require.Equal(t, 1, testMetrics.egressStreamCount.SetCallCount()) + require.Equal(t, 1, testMetrics.egressStreamCount.WithCallCount()) + require.Equal(t, []string{"channel", testChannel}, testMetrics.egressStreamCount.WithArgsForCall(0)) assertBiDiCommunicationForChannel(t, node1, node2, testReq2, testChannel2) - assert.Equal(t, 2, testMetrics.egressStreamCount.SetCallCount()) - assert.Equal(t, 2, testMetrics.egressStreamCount.WithCallCount()) - assert.Equal(t, []string{"channel", testChannel2}, testMetrics.egressStreamCount.WithArgsForCall(1)) + require.Equal(t, 2, testMetrics.egressStreamCount.SetCallCount()) + require.Equal(t, 2, testMetrics.egressStreamCount.WithCallCount()) + require.Equal(t, []string{"channel", testChannel2}, testMetrics.egressStreamCount.WithArgsForCall(1)) }, }, { name: "EgressTLSConnCount", runTest: func(node1, node2 *clusterNode, testMetrics *testMetrics) { assertBiDiCommunication(t, node1, node2, testReq) - assert.Equal(t, []string{"channel", testChannel}, testMetrics.egressStreamCount.WithArgsForCall(0)) + require.Equal(t, []string{"channel", testChannel}, testMetrics.egressStreamCount.WithArgsForCall(0)) assertBiDiCommunicationForChannel(t, node1, node2, testReq2, testChannel2) - assert.Equal(t, []string{"channel", testChannel2}, testMetrics.egressStreamCount.WithArgsForCall(1)) + require.Equal(t, []string{"channel", testChannel2}, testMetrics.egressStreamCount.WithArgsForCall(1)) // A single TLS connection despite 2 streams - assert.Equal(t, float64(1), testMetrics.egressTLSConnCount.SetArgsForCall(0)) - assert.Equal(t, 1, testMetrics.egressTLSConnCount.SetCallCount()) + require.Equal(t, float64(1), testMetrics.egressTLSConnCount.SetArgsForCall(0)) + require.Equal(t, 1, testMetrics.egressTLSConnCount.SetCallCount()) }, }, { name: "EgressWorkerSize", runTest: func(node1, node2 *clusterNode, testMetrics *testMetrics) { assertBiDiCommunication(t, node1, node2, testReq) - assert.Equal(t, []string{"channel", testChannel}, testMetrics.egressStreamCount.WithArgsForCall(0)) + require.Equal(t, []string{"channel", testChannel}, testMetrics.egressStreamCount.WithArgsForCall(0)) assertBiDiCommunicationForChannel(t, node1, node2, testReq2, testChannel2) - assert.Equal(t, []string{"channel", testChannel2}, testMetrics.egressStreamCount.WithArgsForCall(1)) + require.Equal(t, []string{"channel", testChannel2}, testMetrics.egressStreamCount.WithArgsForCall(1)) - assert.Equal(t, float64(1), testMetrics.egressWorkerSize.SetArgsForCall(0)) - assert.Equal(t, float64(1), testMetrics.egressWorkerSize.SetArgsForCall(1)) + require.Equal(t, float64(1), testMetrics.egressWorkerSize.SetArgsForCall(0)) + require.Equal(t, float64(1), testMetrics.egressWorkerSize.SetArgsForCall(1)) }, }, { name: "MgSendTime", runTest: func(node1, node2 *clusterNode, testMetrics *testMetrics) { assertBiDiCommunication(t, node1, node2, testReq) - assert.Equal(t, []string{"host", node2.nodeInfo.Endpoint, "channel", testChannel}, + require.Equal(t, []string{"host", node2.nodeInfo.Endpoint, "channel", testChannel}, testMetrics.msgSendTime.WithArgsForCall(0)) - assert.Equal(t, 1, testMetrics.msgSendTime.ObserveCallCount()) + require.Equal(t, 1, testMetrics.msgSendTime.ObserveCallCount()) }, }, { @@ -1239,7 +1239,7 @@ func TestMetrics(t *testing.T) { }).Return(nil) rm, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) stream := assertEventualEstablishStream(t, rm) // Send too many messages while the server side is not reading from the stream @@ -1249,9 +1249,9 @@ func TestMetrics(t *testing.T) { break } } - assert.Equal(t, []string{"host", node2.nodeInfo.Endpoint, "channel", testChannel}, + require.Equal(t, []string{"host", node2.nodeInfo.Endpoint, "channel", testChannel}, testMetrics.msgDropCount.WithArgsForCall(0)) - assert.Equal(t, 1, testMetrics.msgDropCount.AddCallCount()) + require.Equal(t, 1, testMetrics.msgDropCount.AddCallCount()) }, }, } { @@ -1290,8 +1290,8 @@ func TestCertExpirationWarningEgress(t *testing.T) { node2 := newTestNode(t) cert, err := x509.ParseCertificate(node2.nodeInfo.ServerTLSCert) - assert.NoError(t, err) - assert.NotNil(t, cert) + require.NoError(t, err) + require.NotNil(t, cert) // Let the NotAfter time of the certificate be T1, the current time be T0. // So time.Until is (T1 - T0), which means we have (T1 - T0) time left. @@ -1309,7 +1309,7 @@ func TestCertExpirationWarningEgress(t *testing.T) { node2.c.Configure(testChannel, config) stub, err := node1.c.Remote(testChannel, node2.nodeInfo.ID) - assert.NoError(t, err) + require.NoError(t, err) mockgRPC := &mocks.StepClient{} mockgRPC.On("Send", mock.Anything).Return(nil) @@ -1368,7 +1368,7 @@ func assertBiDiCommunicationForChannel(t *testing.T, node1, node2 *clusterNode, } { t.Run(tst.label, func(t *testing.T) { stub, err := tst.sender.c.Remote(channel, tst.target) - assert.NoError(t, err) + require.NoError(t, err) stream := assertEventualEstablishStream(t, stub) @@ -1376,12 +1376,12 @@ func assertBiDiCommunicationForChannel(t *testing.T, node1, node2 *clusterNode, wg.Add(1) tst.receiver.handler.On("OnSubmit", channel, tst.sender.nodeInfo.ID, mock.Anything).Return(nil).Once().Run(func(args mock.Arguments) { req := args.Get(2).(*orderer.SubmitRequest) - assert.True(t, proto.Equal(req, msgToSend)) + require.True(t, proto.Equal(req, msgToSend)) wg.Done() }) err = stream.Send(wrapSubmitReq(msgToSend)) - assert.NoError(t, err) + require.NoError(t, err) wg.Wait() }) diff --git a/orderer/common/cluster/connections_test.go b/orderer/common/cluster/connections_test.go index a7cf8474c24..491fe8b23ca 100644 --- a/orderer/common/cluster/connections_test.go +++ b/orderer/common/cluster/connections_test.go @@ -13,8 +13,8 @@ import ( "github.com/hyperledger/fabric/common/metrics/disabled" "github.com/hyperledger/fabric/orderer/common/cluster" "github.com/hyperledger/fabric/orderer/common/cluster/mocks" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -32,8 +32,8 @@ func TestConcurrentConnections(t *testing.T) { connect := func() { defer wg.Done() conn2, err := connStore.Connection("", nil) - assert.NoError(t, err) - assert.True(t, conn2 == conn) + require.NoError(t, err) + require.True(t, conn2 == conn) } for i := 0; i < n; i++ { go connect() @@ -85,10 +85,10 @@ func TestConcurrentLookupMiss(t *testing.T) { go func() { defer goroutinesExited.Done() conn2, err := connStore.Connection("", nil) - assert.NoError(t, err) + require.NoError(t, err) // Ensure all calls for Connection() return the same reference // of the gRPC connection. - assert.True(t, conn2 == conn) + require.True(t, conn2 == conn) }() } // Wait for the Lookup() to be invoked by both diff --git a/orderer/common/cluster/deliver_test.go b/orderer/common/cluster/deliver_test.go index 9fac70d77cf..1c9f531cf59 100644 --- a/orderer/common/cluster/deliver_test.go +++ b/orderer/common/cluster/deliver_test.go @@ -31,7 +31,6 @@ import ( "github.com/hyperledger/fabric/protoutil" "github.com/onsi/gomega" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" @@ -108,7 +107,7 @@ func (d *countingDialer) assertAllConnectionsClosed(t *testing.T) { for atomic.LoadUint32(&d.connectionCount) != uint32(0) && time.Now().Before(timeLimit) { time.Sleep(time.Millisecond) } - assert.Equal(t, uint32(0), atomic.LoadUint32(&d.connectionCount)) + require.Equal(t, uint32(0), atomic.LoadUint32(&d.connectionCount)) } func (d *countingDialer) Dial(address cluster.EndpointCriteria) (*grpc.ClientConn, error) { @@ -239,10 +238,10 @@ func (ds *deliverServer) setBlocks(blocks chan *orderer.DeliverResponse) { func (ds *deliverServer) port() int { _, portStr, err := net.SplitHostPort(ds.srv.Address()) - assert.NoError(ds.t, err) + require.NoError(ds.t, err) port, err := strconv.ParseInt(portStr, 10, 32) - assert.NoError(ds.t, err) + require.NoError(ds.t, err) return int(port) } @@ -257,7 +256,7 @@ func (ds *deliverServer) resurrect() { ds.srv.Stop() // And re-create the gRPC server on that port ds.srv, err = comm.NewGRPCServer(fmt.Sprintf("127.0.0.1:%d", ds.port()), comm.ServerConfig{}) - assert.NoError(ds.t, err) + require.NoError(ds.t, err) orderer.RegisterAtomicBroadcastServer(ds.srv.Server(), ds) go ds.srv.Start() } @@ -275,8 +274,8 @@ func (ds *deliverServer) enqueueResponse(seq uint64) { func (ds *deliverServer) addExpectProbeAssert() { ds.seekAssertions <- func(info *orderer.SeekInfo, _ string) { - assert.NotNil(ds.t, info.GetStart().GetNewest()) - assert.Equal(ds.t, info.ErrorResponse, orderer.SeekInfo_BEST_EFFORT) + require.NotNil(ds.t, info.GetStart().GetNewest()) + require.Equal(ds.t, info.ErrorResponse, orderer.SeekInfo_BEST_EFFORT) } } @@ -286,8 +285,8 @@ func (ds *deliverServer) addExpectPullAssert(seq uint64) { require.NotNil(ds.t, seekPosition) seekSpecified := seekPosition.GetSpecified() require.NotNil(ds.t, seekSpecified) - assert.Equal(ds.t, seq, seekSpecified.Number) - assert.Equal(ds.t, info.ErrorResponse, orderer.SeekInfo_BEST_EFFORT) + require.Equal(ds.t, seq, seekSpecified.Number) + require.Equal(ds.t, info.ErrorResponse, orderer.SeekInfo_BEST_EFFORT) } } @@ -350,9 +349,9 @@ func TestBlockPullerBasicHappyPath(t *testing.T) { } for i := 5; i <= 10; i++ { - assert.Equal(t, uint64(i), bp.PullBlock(uint64(i)).Header.Number) + require.Equal(t, uint64(i), bp.PullBlock(uint64(i)).Header.Number) } - assert.Len(t, osn.blockResponses, 0) + require.Len(t, osn.blockResponses, 0) bp.Close() dialer.assertAllConnectionsClosed(t) @@ -383,9 +382,9 @@ func TestBlockPullerDuplicate(t *testing.T) { } for i := 1; i <= 3; i++ { - assert.Equal(t, uint64(i), bp.PullBlock(uint64(i)).Header.Number) + require.Equal(t, uint64(i), bp.PullBlock(uint64(i)).Header.Number) } - assert.Len(t, osn.blockResponses, 0) + require.Len(t, osn.blockResponses, 0) bp.Close() dialer.assertAllConnectionsClosed(t) @@ -434,11 +433,11 @@ func TestBlockPullerHeavyBlocks(t *testing.T) { for i := uint64(0); i < 5; i++ { enqueueBlockBatch(i*10+uint64(1), i*10+uint64(10)) for seq := i*10 + uint64(1); seq <= i*10+uint64(10); seq++ { - assert.Equal(t, seq, bp.PullBlock(seq).Header.Number) + require.Equal(t, seq, bp.PullBlock(seq).Header.Number) } } - assert.Equal(t, 50, gotBlockMessageCount) + require.Equal(t, 50, gotBlockMessageCount) bp.Close() dialer.assertAllConnectionsClosed(t) } @@ -471,10 +470,10 @@ func TestBlockPullerClone(t *testing.T) { // and override its channel bpClone.Channel = "foo" // Ensure the channel change doesn't reflect in the original puller - assert.Equal(t, "mychannel", bp.Channel) + require.Equal(t, "mychannel", bp.Channel) block := bp.PullBlock(1) - assert.Equal(t, uint64(1), block.Header.Number) + require.Equal(t, uint64(1), block.Header.Number) // After the original block puller is closed, the // clone should not be affected @@ -490,7 +489,7 @@ func TestBlockPullerClone(t *testing.T) { osn1.enqueueResponse(2) block = bpClone.PullBlock(2) - assert.Equal(t, uint64(2), block.Header.Number) + require.Equal(t, uint64(2), block.Header.Number) bpClone.Close() dialer.assertAllConnectionsClosed(t) @@ -527,11 +526,11 @@ func TestBlockPullerHeightsByEndpoints(t *testing.T) { osn3.enqueueResponse(5) res, err := bp.HeightsByEndpoints() - assert.NoError(t, err) + require.NoError(t, err) expected := map[string]uint64{ osn3.srv.Address(): 6, } - assert.Equal(t, expected, res) + require.Equal(t, expected, res) bp.Close() dialer.assertAllConnectionsClosed(t) @@ -579,14 +578,14 @@ func TestBlockPullerMultipleOrderers(t *testing.T) { initialTotalBlockAmount := len(osn1.blockResponses) + len(osn2.blockResponses) + len(osn3.blockResponses) for i := 3; i <= 5; i++ { - assert.Equal(t, uint64(i), bp.PullBlock(uint64(i)).Header.Number) + require.Equal(t, uint64(i), bp.PullBlock(uint64(i)).Header.Number) } // Assert the cumulative amount of blocks in the OSNs went down by 6: // blocks 3, 4, 5 were pulled - that's 3 blocks. // block 5 was pulled 3 times at the probe phase. finalTotalBlockAmount := len(osn1.blockResponses) + len(osn2.blockResponses) + len(osn3.blockResponses) - assert.Equal(t, initialTotalBlockAmount-6, finalTotalBlockAmount) + require.Equal(t, initialTotalBlockAmount-6, finalTotalBlockAmount) bp.Close() dialer.assertAllConnectionsClosed(t) @@ -650,9 +649,9 @@ func TestBlockPullerFailover(t *testing.T) { }() // Assert reception of blocks 1 to 3 - assert.Equal(t, uint64(1), bp.PullBlock(uint64(1)).Header.Number) - assert.Equal(t, uint64(2), bp.PullBlock(uint64(2)).Header.Number) - assert.Equal(t, uint64(3), bp.PullBlock(uint64(3)).Header.Number) + require.Equal(t, uint64(1), bp.PullBlock(uint64(1)).Header.Number) + require.Equal(t, uint64(2), bp.PullBlock(uint64(2)).Header.Number) + require.Equal(t, uint64(3), bp.PullBlock(uint64(3)).Header.Number) bp.Close() dialer.assertAllConnectionsClosed(t) @@ -693,7 +692,7 @@ func TestBlockPullerNoneResponsiveOrderer(t *testing.T) { defer once.Do(waitForConnection.Done) s := entry.Message[len("Sending request for block [1] to 127.0.0.1:"):] port, err := strconv.ParseInt(s, 10, 32) - assert.NoError(t, err) + require.NoError(t, err) // If osn2 is the current orderer we're connected to, // the orderer we're not connected to, is osn1 if osn2.port() == int(port) { @@ -723,9 +722,9 @@ func TestBlockPullerNoneResponsiveOrderer(t *testing.T) { }() // Assert reception of blocks 1 to 3 - assert.Equal(t, uint64(1), bp.PullBlock(uint64(1)).Header.Number) - assert.Equal(t, uint64(2), bp.PullBlock(uint64(2)).Header.Number) - assert.Equal(t, uint64(3), bp.PullBlock(uint64(3)).Header.Number) + require.Equal(t, uint64(1), bp.PullBlock(uint64(1)).Header.Number) + require.Equal(t, uint64(2), bp.PullBlock(uint64(2)).Header.Number) + require.Equal(t, uint64(3), bp.PullBlock(uint64(3)).Header.Number) bp.Close() dialer.assertAllConnectionsClosed(t) @@ -765,8 +764,8 @@ func TestBlockPullerNoOrdererAliveAtStartup(t *testing.T) { osn.enqueueResponse(2) }() - assert.Equal(t, uint64(1), bp.PullBlock(1).Header.Number) - assert.Equal(t, uint64(2), bp.PullBlock(2).Header.Number) + require.Equal(t, uint64(1), bp.PullBlock(1).Header.Number) + require.Equal(t, uint64(2), bp.PullBlock(2).Header.Number) bp.Close() dialer.assertAllConnectionsClosed(t) @@ -906,9 +905,9 @@ func TestBlockPullerFailures(t *testing.T) { osn.enqueueResponse(2) osn.enqueueResponse(3) - assert.Equal(t, uint64(1), bp.PullBlock(uint64(1)).Header.Number) - assert.Equal(t, uint64(2), bp.PullBlock(uint64(2)).Header.Number) - assert.Equal(t, uint64(3), bp.PullBlock(uint64(3)).Header.Number) + require.Equal(t, uint64(1), bp.PullBlock(uint64(1)).Header.Number) + require.Equal(t, uint64(2), bp.PullBlock(uint64(2)).Header.Number) + require.Equal(t, uint64(3), bp.PullBlock(uint64(3)).Header.Number) bp.Close() dialer.assertAllConnectionsClosed(t) @@ -1073,7 +1072,7 @@ func TestImpatientStreamFailure(t *testing.T) { return } _, err = stream.Recv() - assert.Error(t, err) + require.Error(t, err) } func TestBlockPullerMaxRetriesExhausted(t *testing.T) { @@ -1138,11 +1137,11 @@ func TestBlockPullerMaxRetriesExhausted(t *testing.T) { bp.MaxTotalBufferBytes = 1 // Assert reception of blocks 1 to 3 - assert.Equal(t, uint64(1), bp.PullBlock(uint64(1)).Header.Number) - assert.Equal(t, uint64(2), bp.PullBlock(uint64(2)).Header.Number) - assert.Nil(t, bp.PullBlock(uint64(3))) + require.Equal(t, uint64(1), bp.PullBlock(uint64(1)).Header.Number) + require.Equal(t, uint64(2), bp.PullBlock(uint64(2)).Header.Number) + require.Nil(t, bp.PullBlock(uint64(3))) bp.Close() dialer.assertAllConnectionsClosed(t) - assert.True(t, exhaustedRetryAttemptsLogged) + require.True(t, exhaustedRetryAttemptsLogged) } diff --git a/orderer/common/cluster/replication_test.go b/orderer/common/cluster/replication_test.go index ac8861a00ce..d88fd527fe3 100644 --- a/orderer/common/cluster/replication_test.go +++ b/orderer/common/cluster/replication_test.go @@ -27,8 +27,8 @@ import ( "github.com/hyperledger/fabric/orderer/common/localconfig" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -82,10 +82,10 @@ func TestIsReplicationNeeded(t *testing.T) { ok, err := r.IsReplicationNeeded() if testCase.expectedError != "" { - assert.EqualError(t, err, testCase.expectedError) + require.EqualError(t, err, testCase.expectedError) } else { - assert.NoError(t, err) - assert.Equal(t, testCase.replicationNeeded, ok) + require.NoError(t, err) + require.Equal(t, testCase.replicationNeeded, ok) } }) } @@ -245,7 +245,7 @@ func TestReplicateChainsFailures(t *testing.T) { osn.blockResponses <- nil } - assert.PanicsWithValue(t, testCase.expectedPanic, func() { r.ReplicateChains() }) + require.PanicsWithValue(t, testCase.expectedPanic, func() { r.ReplicateChains() }) bp.Close() dialer.assertAllConnectionsClosed(t) }) @@ -318,7 +318,7 @@ func TestPullChannelFailure(t *testing.T) { enqueueBlock(testcase.thirdBlockSequence) err := r.PullChannel("mychannel") - assert.Equal(t, cluster.ErrRetryCountExhausted, err) + require.Equal(t, cluster.ErrRetryCountExhausted, err) }) } @@ -345,7 +345,7 @@ func TestPullerConfigFromTopLevelConfig(t *testing.T) { } config := cluster.PullerConfigFromTopLevelConfig("system", topLevelConfig, []byte{1, 2, 3}, []byte{3, 2, 1}, signer) - assert.Equal(t, expected, config) + require.Equal(t, expected, config) } func TestReplicateChainsChannelClassificationFailure(t *testing.T) { @@ -402,7 +402,7 @@ func TestReplicateChainsChannelClassificationFailure(t *testing.T) { Puller: bp, } - assert.PanicsWithValue(t, "Failed classifying whether I belong to channel A: oops, skipping chain retrieval", func() { + require.PanicsWithValue(t, "Failed classifying whether I belong to channel A: oops, skipping chain retrieval", func() { r.ReplicateChains() }) @@ -543,8 +543,8 @@ func TestReplicateChainsGreenPath(t *testing.T) { // Unfortunately, it's not available! osn.seekAssertions <- func(info *orderer.SeekInfo, actualChannel string) { // Ensure the seek came to the right channel - assert.NotNil(osn.t, info.GetStart().GetNewest()) - assert.Equal(t, "E", actualChannel) + require.NotNil(osn.t, info.GetStart().GetNewest()) + require.Equal(t, "E", actualChannel) } // Send an EOF down the stream. osn.blockResponses <- nil @@ -553,8 +553,8 @@ func TestReplicateChainsGreenPath(t *testing.T) { // which is followed by a response of service unavailable osn.seekAssertions <- func(info *orderer.SeekInfo, actualChannel string) { // Ensure the seek came to the right channel - assert.NotNil(osn.t, info.GetStart().GetNewest()) - assert.Equal(t, "D", actualChannel) + require.NotNil(osn.t, info.GetStart().GetNewest()) + require.Equal(t, "D", actualChannel) } osn.blockResponses <- &orderer.DeliverResponse{ Type: &orderer.DeliverResponse_Status{ @@ -566,8 +566,8 @@ func TestReplicateChainsGreenPath(t *testing.T) { // which is followed by a response of forbidden osn.seekAssertions <- func(info *orderer.SeekInfo, actualChannel string) { // Ensure the seek came to the right channel - assert.NotNil(osn.t, info.GetStart().GetNewest()) - assert.Equal(t, "C", actualChannel) + require.NotNil(osn.t, info.GetStart().GetNewest()) + require.Equal(t, "C", actualChannel) } osn.blockResponses <- &orderer.DeliverResponse{ @@ -585,8 +585,8 @@ func TestReplicateChainsGreenPath(t *testing.T) { // Orderer is expecting a poll for last block of the current channel osn.seekAssertions <- func(info *orderer.SeekInfo, actualChannel string) { // Ensure the seek came to the right channel - assert.NotNil(osn.t, info.GetStart().GetNewest()) - assert.Equal(t, channel, actualChannel) + require.NotNil(osn.t, info.GetStart().GetNewest()) + require.Equal(t, channel, actualChannel) } // Orderer returns its last block is 30. @@ -620,8 +620,8 @@ func TestReplicateChainsGreenPath(t *testing.T) { // We expect a probe for channel A only, because channel B isn't in the channel osn.seekAssertions <- func(info *orderer.SeekInfo, actualChannel string) { // Ensure the seek came to the right channel - assert.NotNil(osn.t, info.GetStart().GetNewest()) - assert.Equal(t, "A", actualChannel) + require.NotNil(osn.t, info.GetStart().GetNewest()) + require.Equal(t, "A", actualChannel) } osn.enqueueResponse(30) // From this point onwards, we pull the blocks for the chain. @@ -642,8 +642,8 @@ func TestReplicateChainsGreenPath(t *testing.T) { // Pull assertions for the system channel osn.seekAssertions <- func(info *orderer.SeekInfo, actualChannel string) { // Ensure the seek came to the system channel. - assert.NotNil(osn.t, info.GetStart().GetNewest()) - assert.Equal(t, "system", actualChannel) + require.NotNil(osn.t, info.GetStart().GetNewest()) + require.Equal(t, "system", actualChannel) } osn.blockResponses <- &orderer.DeliverResponse{ Type: &orderer.DeliverResponse_Block{Block: systemChannelBlocks[21]}, @@ -667,23 +667,23 @@ func TestReplicateChainsGreenPath(t *testing.T) { // to be committed (for channel A and the system channel) were committed. close(blocksCommittedToLedgerA) close(blocksCommittedToSystemLedger) - assert.Len(t, blocksCommittedToLedgerA, cap(blocksCommittedToLedgerA)) - assert.Len(t, blocksCommittedToSystemLedger, cap(blocksCommittedToSystemLedger)) - assert.Len(t, blocksCommittedToLedgerB, 1) - assert.Len(t, blocksCommittedToLedgerC, 1) - assert.Len(t, blocksCommittedToLedgerD, 1) - assert.Len(t, blocksCommittedToLedgerE, 1) + require.Len(t, blocksCommittedToLedgerA, cap(blocksCommittedToLedgerA)) + require.Len(t, blocksCommittedToSystemLedger, cap(blocksCommittedToSystemLedger)) + require.Len(t, blocksCommittedToLedgerB, 1) + require.Len(t, blocksCommittedToLedgerC, 1) + require.Len(t, blocksCommittedToLedgerD, 1) + require.Len(t, blocksCommittedToLedgerE, 1) // Count the blocks for channel A var expectedSequence uint64 for block := range blocksCommittedToLedgerA { - assert.Equal(t, expectedSequence, block.Header.Number) + require.Equal(t, expectedSequence, block.Header.Number) expectedSequence++ } // Count the blocks for the system channel expectedSequence = uint64(0) for block := range blocksCommittedToSystemLedger { - assert.Equal(t, expectedSequence, block.Header.Number) + require.Equal(t, expectedSequence, block.Header.Number) expectedSequence++ } @@ -829,11 +829,11 @@ func TestParticipant(t *testing.T) { err := cluster.Participant(puller, predicate) if testCase.expectedError != "" { - assert.EqualError(t, err, testCase.expectedError) - assert.Len(t, configBlocks, 0) + require.EqualError(t, err, testCase.expectedError) + require.Len(t, configBlocks, 0) } else { - assert.Len(t, configBlocks, 1) - assert.Equal(t, testCase.predicateReturns, err) + require.Len(t, configBlocks, 1) + require.Equal(t, testCase.predicateReturns, err) } }) } @@ -841,13 +841,13 @@ func TestParticipant(t *testing.T) { func TestBlockPullerFromConfigBlockFailures(t *testing.T) { blockBytes, err := ioutil.ReadFile("testdata/mychannel.block") - assert.NoError(t, err) + require.NoError(t, err) validBlock := &common.Block{} - assert.NoError(t, proto.Unmarshal(blockBytes, validBlock)) + require.NoError(t, proto.Unmarshal(blockBytes, validBlock)) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) for _, testCase := range []struct { name string @@ -891,8 +891,8 @@ func TestBlockPullerFromConfigBlockFailures(t *testing.T) { verifierRetriever := &mocks.VerifierRetriever{} verifierRetriever.On("RetrieveVerifier", mock.Anything).Return(&cluster.NoopBlockVerifier{}) bp, err := cluster.BlockPullerFromConfigBlock(testCase.pullerConfig, testCase.block, verifierRetriever, cryptoProvider) - assert.EqualError(t, err, testCase.expectedErr) - assert.Nil(t, bp) + require.EqualError(t, err, testCase.expectedErr) + require.Nil(t, bp) }) } } @@ -904,13 +904,13 @@ func testBlockPullerFromConfig(t *testing.T, blockVerifiers []cluster.BlockVerif } caCert, err := ioutil.ReadFile(filepath.Join("testdata", "ca.crt")) - assert.NoError(t, err) + require.NoError(t, err) tlsCert, err := ioutil.ReadFile(filepath.Join("testdata", "server.crt")) - assert.NoError(t, err) + require.NoError(t, err) tlsKey, err := ioutil.ReadFile(filepath.Join("testdata", "server.key")) - assert.NoError(t, err) + require.NoError(t, err) osn := newClusterNode(t) osn.srv.Stop() @@ -924,7 +924,7 @@ func testBlockPullerFromConfig(t *testing.T, blockVerifiers []cluster.BlockVerif UseTLS: true, }, }) - assert.NoError(t, err) + require.NoError(t, err) orderer.RegisterAtomicBroadcastServer(osn.srv.Server(), osn) // And start it go osn.srv.Start() @@ -932,10 +932,10 @@ func testBlockPullerFromConfig(t *testing.T, blockVerifiers []cluster.BlockVerif // Start from a valid configuration block blockBytes, err := ioutil.ReadFile(filepath.Join("testdata", "mychannel.block")) - assert.NoError(t, err) + require.NoError(t, err) validBlock := &common.Block{} - assert.NoError(t, proto.Unmarshal(blockBytes, validBlock)) + require.NoError(t, proto.Unmarshal(blockBytes, validBlock)) // And inject into it a 127.0.0.1 orderer endpoint endpoint and a new TLS CA certificate. injectTLSCACert(t, validBlock, caCert) @@ -962,7 +962,7 @@ func testBlockPullerFromConfig(t *testing.T, blockVerifiers []cluster.BlockVerif } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) bp, err := cluster.BlockPullerFromConfigBlock(cluster.PullerConfig{ TLSCert: tlsCert, @@ -973,7 +973,7 @@ func testBlockPullerFromConfig(t *testing.T, blockVerifiers []cluster.BlockVerif Timeout: time.Hour, }, validBlock, verifierRetriever, cryptoProvider) bp.RetryTimeout = time.Millisecond * 10 - assert.NoError(t, err) + require.NoError(t, err) defer bp.Close() var seenExpectedLogMsg bool @@ -986,8 +986,8 @@ func testBlockPullerFromConfig(t *testing.T, blockVerifiers []cluster.BlockVerif })) block := bp.PullBlock(0) - assert.Equal(t, uint64(0), block.Header.Number) - assert.True(t, seenExpectedLogMsg) + require.Equal(t, uint64(0), block.Header.Number) + require.True(t, seenExpectedLogMsg) } func TestSkipPullingPulledChannels(t *testing.T) { @@ -1038,8 +1038,8 @@ func TestSkipPullingPulledChannels(t *testing.T) { enqueueBlock(5) err := r.PullChannel("mychannel") - assert.NoError(t, err) - assert.True(t, detectedChannelPulled) + require.NoError(t, err) + require.True(t, detectedChannelPulled) } func TestBlockPullerFromConfigBlockGreenPath(t *testing.T) { @@ -1073,18 +1073,18 @@ func TestBlockPullerFromConfigBlockGreenPath(t *testing.T) { func TestNoopBlockVerifier(t *testing.T) { v := &cluster.NoopBlockVerifier{} - assert.Nil(t, v.VerifyBlockSignature(nil, nil)) + require.Nil(t, v.VerifyBlockSignature(nil, nil)) } func injectGlobalOrdererEndpoint(t *testing.T, block *common.Block, endpoint string) { ordererAddresses := channelconfig.OrdererAddressesValue([]string{endpoint}) // Unwrap the layers until we reach the orderer addresses env, err := protoutil.ExtractEnvelope(block, 0) - assert.NoError(t, err) + require.NoError(t, err) payload, err := protoutil.UnmarshalPayload(env.Payload) - assert.NoError(t, err) + require.NoError(t, err) confEnv, err := configtx.UnmarshalConfigEnvelope(payload.Data) - assert.NoError(t, err) + require.NoError(t, err) // Replace the orderer addresses confEnv.Config.ChannelGroup.Values[ordererAddresses.Key()] = &common.ConfigValue{ Value: protoutil.MarshalOrPanic(ordererAddresses.Value()), @@ -1107,11 +1107,11 @@ func injectGlobalOrdererEndpoint(t *testing.T, block *common.Block, endpoint str func injectTLSCACert(t *testing.T, block *common.Block, tlsCA []byte) { // Unwrap the layers until we reach the TLS CA certificates env, err := protoutil.ExtractEnvelope(block, 0) - assert.NoError(t, err) + require.NoError(t, err) payload, err := protoutil.UnmarshalPayload(env.Payload) - assert.NoError(t, err) + require.NoError(t, err) confEnv, err := configtx.UnmarshalConfigEnvelope(payload.Data) - assert.NoError(t, err) + require.NoError(t, err) mspKey := confEnv.Config.ChannelGroup.Groups[channelconfig.OrdererGroupKey].Groups["OrdererOrg"].Values[channelconfig.MSPKey] rawMSPConfig := mspKey.Value mspConf := &msp.MSPConfig{} @@ -1380,15 +1380,15 @@ func TestExtractGenesisBlock(t *testing.T) { t.Run(testCase.name, func(t *testing.T) { channelName, gb, err := cluster.ExtractGenesisBlock(flogging.MustGetLogger("test"), testCase.block) if testCase.expectedErr != "" { - assert.EqualError(t, err, testCase.expectedErr) + require.EqualError(t, err, testCase.expectedErr) } else { - assert.NoError(t, err) + require.NoError(t, err) } - assert.Equal(t, testCase.returnedName, channelName) + require.Equal(t, testCase.returnedName, channelName) if testCase.returnGenesisBlock { - assert.NotNil(t, gb) + require.NotNil(t, gb) } else { - assert.Nil(t, gb) + require.Nil(t, gb) } }) } @@ -1436,17 +1436,17 @@ func TestChannels(t *testing.T) { assertion: func(t *testing.T, ci *cluster.ChainInspector) { actual := cluster.GenesisBlocks(ci.Channels()) // Assert that the returned channels are returned in any order - assert.Contains(t, [][]string{{"mychannel", "mychannel2"}, {"mychannel2", "mychannel"}}, actual.Names()) + require.Contains(t, [][]string{{"mychannel", "mychannel2"}, {"mychannel2", "mychannel"}}, actual.Names()) }, }, { name: "happy path - one block is not artificial but real", prepareSystemChain: func(systemChain []*common.Block) { blockbytes, err := ioutil.ReadFile(filepath.Join("testdata", "block3.pb")) - assert.NoError(t, err) + require.NoError(t, err) block := &common.Block{} err = proto.Unmarshal(blockbytes, block) - assert.NoError(t, err) + require.NoError(t, err) systemChain[len(systemChain)/2-1] = block assignHashes(systemChain) @@ -1454,7 +1454,7 @@ func TestChannels(t *testing.T) { assertion: func(t *testing.T, ci *cluster.ChainInspector) { actual := cluster.GenesisBlocks(ci.Channels()) // Assert that the returned channels are returned in any order - assert.Contains(t, [][]string{{"mychannel2", "bar"}, {"bar", "mychannel2"}}, actual.Names()) + require.Contains(t, [][]string{{"mychannel2", "bar"}, {"bar", "mychannel2"}}, actual.Names()) }, }, { @@ -1467,7 +1467,7 @@ func TestChannels(t *testing.T) { panicValue := "System channel pulled doesn't match the boot last config block:" + " block [2]'s hash (bc4ef5cc8a61ac0747cc82df58bac9ad3278622c1cfc7a119b9b1068e422c9f1)" + " mismatches block [3]'s prev block hash ()" - assert.PanicsWithValue(t, panicValue, func() { + require.PanicsWithValue(t, panicValue, func() { ci.Channels() }) }, @@ -1481,7 +1481,7 @@ func TestChannels(t *testing.T) { assertion: func(t *testing.T, ci *cluster.ChainInspector) { panicValue := "Claimed previous hash of block [2] is but actual previous " + "hash is 920faeb0bd8a02b3f2553247359fb3b684819c75c6e5487bc7eed632841ddc5f" - assert.PanicsWithValue(t, panicValue, func() { + require.PanicsWithValue(t, panicValue, func() { ci.Channels() }) }, @@ -1496,7 +1496,7 @@ func TestChannels(t *testing.T) { panicValue := "Failed extracting channel genesis block from config block: " + "block data does not carry an envelope at index 0: error unmarshaling " + "Envelope: proto: common.Envelope: illegal tag 0 (wire type 1)" - assert.PanicsWithValue(t, panicValue, func() { + require.PanicsWithValue(t, panicValue, func() { ci.Channels() }) }, @@ -1511,7 +1511,7 @@ func TestChannels(t *testing.T) { }, assertion: func(t *testing.T, ci *cluster.ChainInspector) { panicValue := "Failed pulling block [2] from the system channel" - assert.PanicsWithValue(t, panicValue, func() { + require.PanicsWithValue(t, panicValue, func() { ci.Channels() }) }, @@ -1605,7 +1605,7 @@ func simulateNonParticipantChannelPull(osn *deliverServer) { func TestFilter(t *testing.T) { logger := flogging.MustGetLogger("test") logger = logger.WithOptions(zap.Hooks(func(entry zapcore.Entry) error { - assert.Equal(t, "Channel foo shouldn't be pulled. Skipping it", entry.Message) + require.Equal(t, "Channel foo shouldn't be pulled. Skipping it", entry.Message) return nil })) @@ -1615,5 +1615,5 @@ func TestFilter(t *testing.T) { }, Logger: logger, } - assert.Equal(t, cluster.ErrSkipped, r.PullChannel("foo")) + require.Equal(t, cluster.ErrSkipped, r.PullChannel("foo")) } diff --git a/orderer/common/cluster/rpc_test.go b/orderer/common/cluster/rpc_test.go index 1e7c3df1369..edf21f34832 100644 --- a/orderer/common/cluster/rpc_test.go +++ b/orderer/common/cluster/rpc_test.go @@ -21,8 +21,8 @@ import ( "github.com/hyperledger/fabric/orderer/common/cluster" "github.com/hyperledger/fabric/orderer/common/cluster/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -227,9 +227,9 @@ func TestSend(t *testing.T) { } if testCase.stepReturns[1] == nil && testCase.remoteError == nil { - assert.NoError(t, err) + require.NoError(t, err) } else { - assert.EqualError(t, err, testCase.expectedErr) + require.EqualError(t, err, testCase.expectedErr) } if testCase.remoteError == nil && testCase.expectedErr == "" && isSend { @@ -239,8 +239,8 @@ func TestSend(t *testing.T) { err := testCase.method(rpc) <-sent - assert.NoError(t, err) - assert.Equal(t, 2, int(atomic.LoadUint32(&sendCalls))) + require.NoError(t, err) + require.Equal(t, 2, int(atomic.LoadUint32(&sendCalls))) client.AssertNumberOfCalls(t, "Step", 1) } }) @@ -295,8 +295,8 @@ func TestRPCGarbageCollection(t *testing.T) { // Wait for the message to arrive sent.Wait() // Ensure the stream is initialized in the mapping - assert.Len(t, mapping[cluster.SubmitOperation], 1) - assert.Equal(t, uint64(1), mapping[cluster.SubmitOperation][1].ID) + require.Len(t, mapping[cluster.SubmitOperation], 1) + require.Equal(t, uint64(1), mapping[cluster.SubmitOperation][1].ID) // And the underlying gRPC stream indeed had Send invoked on it. stream.AssertNumberOfCalls(t, "Send", 1) @@ -304,8 +304,8 @@ func TestRPCGarbageCollection(t *testing.T) { remote.Abort() // The stream still exists, as it is not cleaned yet. - assert.Len(t, mapping[cluster.SubmitOperation], 1) - assert.Equal(t, uint64(1), mapping[cluster.SubmitOperation][1].ID) + require.Len(t, mapping[cluster.SubmitOperation], 1) + require.Equal(t, uint64(1), mapping[cluster.SubmitOperation][1].ID) // Prepare for the next transmission. defineMocks(2) @@ -313,6 +313,6 @@ func TestRPCGarbageCollection(t *testing.T) { // Send a message to a different node. rpc.SendSubmit(2, &orderer.SubmitRequest{Channel: "mychannel"}) // The mapping should be now cleaned from the previous stream. - assert.Len(t, mapping[cluster.SubmitOperation], 1) - assert.Equal(t, uint64(2), mapping[cluster.SubmitOperation][2].ID) + require.Len(t, mapping[cluster.SubmitOperation], 1) + require.Equal(t, uint64(2), mapping[cluster.SubmitOperation][2].ID) } diff --git a/orderer/common/cluster/service_test.go b/orderer/common/cluster/service_test.go index f4b771803be..c69ffac082f 100644 --- a/orderer/common/cluster/service_test.go +++ b/orderer/common/cluster/service_test.go @@ -21,8 +21,8 @@ import ( "github.com/hyperledger/fabric/orderer/common/cluster" "github.com/hyperledger/fabric/orderer/common/cluster/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -78,7 +78,7 @@ func TestStep(t *testing.T) { dispatcher.On("DispatchConsensus", mock.Anything, consensusRequest.GetConsensusRequest()).Return(nil).Once() dispatcher.On("DispatchConsensus", mock.Anything, consensusRequest.GetConsensusRequest()).Return(io.EOF).Once() err := svc.Step(stream) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Failure", func(t *testing.T) { @@ -87,7 +87,7 @@ func TestStep(t *testing.T) { stream.On("Recv").Return(consensusRequest, nil).Once() dispatcher.On("DispatchConsensus", mock.Anything, consensusRequest.GetConsensusRequest()).Return(errors.New("oops")).Once() err := svc.Step(stream) - assert.EqualError(t, err, "oops") + require.EqualError(t, err, "oops") }) } @@ -113,7 +113,7 @@ func TestSubmitSuccess(t *testing.T) { dispatcher.On("DispatchSubmit", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { expectedRequest := <-responses actualRequest := args.Get(1).(*orderer.StepRequest) - assert.True(t, expectedRequest == actualRequest) + require.True(t, expectedRequest == actualRequest) }) svc := &cluster.Service{ @@ -126,7 +126,7 @@ func TestSubmitSuccess(t *testing.T) { } err := svc.Step(stream) - assert.NoError(t, err) + require.NoError(t, err) dispatcher.AssertNumberOfCalls(t, "DispatchSubmit", 2) } @@ -187,7 +187,7 @@ func TestSubmitFailure(t *testing.T) { Dispatcher: dispatcher, } err := svc.Step(stream) - assert.EqualError(t, err, oops.Error()) + require.EqualError(t, err, oops.Error()) }) } } @@ -222,15 +222,15 @@ func TestIngresStreamsMetrics(t *testing.T) { svc.Step(stream) // The stream started so stream count incremented from 0 to 1 - assert.Equal(t, float64(1), testMetrics.ingressStreamsCount.SetArgsForCall(0)) + require.Equal(t, float64(1), testMetrics.ingressStreamsCount.SetArgsForCall(0)) // The stream ended so stream count is decremented from 1 to 0 - assert.Equal(t, float64(0), testMetrics.ingressStreamsCount.SetArgsForCall(1)) + require.Equal(t, float64(0), testMetrics.ingressStreamsCount.SetArgsForCall(1)) } func TestServiceGRPC(t *testing.T) { // Check that Service correctly implements the gRPC interface srv, err := comm.NewGRPCServer("127.0.0.1:0", comm.ServerConfig{}) - assert.NoError(t, err) + require.NoError(t, err) orderer.RegisterClusterServer(srv.Server(), &cluster.Service{ Logger: flogging.MustGetLogger("test"), StepLogger: flogging.MustGetLogger("test"), @@ -239,13 +239,13 @@ func TestServiceGRPC(t *testing.T) { func TestExpirationWarningIngress(t *testing.T) { ca, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) serverCert, err := ca.NewServerCertKeyPair("127.0.0.1") - assert.NoError(t, err) + require.NoError(t, err) clientCert, err := ca.NewClientCertKeyPair() - assert.NoError(t, err) + require.NoError(t, err) dispatcher := &mocks.Dispatcher{} dispatcher.On("DispatchConsensus", mock.Anything, mock.Anything).Return(nil) @@ -280,7 +280,7 @@ func TestExpirationWarningIngress(t *testing.T) { } srv, err := comm.NewGRPCServer("127.0.0.1:0", srvConf) - assert.NoError(t, err) + require.NoError(t, err) orderer.RegisterClusterServer(srv.Server(), svc) go srv.Start() defer srv.Stop() @@ -297,17 +297,17 @@ func TestExpirationWarningIngress(t *testing.T) { } client, err := comm.NewGRPCClient(clientConf) - assert.NoError(t, err) + require.NoError(t, err) conn, err := client.NewConnection(srv.Address()) - assert.NoError(t, err) + require.NoError(t, err) cl := orderer.NewClusterClient(conn) stream, err := cl.Step(context.Background()) - assert.NoError(t, err) + require.NoError(t, err) err = stream.Send(consensusRequest) - assert.NoError(t, err) + require.NoError(t, err) // An alert is logged at the first time. select { @@ -317,7 +317,7 @@ func TestExpirationWarningIngress(t *testing.T) { } err = stream.Send(consensusRequest) - assert.NoError(t, err) + require.NoError(t, err) // No alerts in a consecutive time. select { @@ -330,7 +330,7 @@ func TestExpirationWarningIngress(t *testing.T) { time.Sleep(svc.MinimumExpirationWarningInterval + time.Second) err = stream.Send(consensusRequest) - assert.NoError(t, err) + require.NoError(t, err) // An alert should be logged now after the timeout expired. select { diff --git a/orderer/common/cluster/util_test.go b/orderer/common/cluster/util_test.go index b98cea01e63..785ce7799a4 100644 --- a/orderer/common/cluster/util_test.go +++ b/orderer/common/cluster/util_test.go @@ -35,8 +35,8 @@ import ( "github.com/hyperledger/fabric/orderer/common/cluster" "github.com/hyperledger/fabric/orderer/common/cluster/mocks" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -77,17 +77,17 @@ func TestParallelStubActivation(t *testing.T) { // Ensure the instance is the reference we stored // and not any other reference, i.e - it wasn't // copied by value. - assert.True(t, activatedStub == instance) + require.True(t, activatedStub == instance) // Ensure the method was invoked only once. - assert.Equal(t, activationCount, 1) + require.Equal(t, activationCount, 1) } func TestDialerCustomKeepAliveOptions(t *testing.T) { ca, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) clientKeyPair, err := ca.NewClientCertKeyPair() - assert.NoError(t, err) + require.NoError(t, err) clientConfig := comm.ClientConfig{ KaOpts: comm.KeepaliveOptions{ ClientTimeout: time.Second * 12345, @@ -105,7 +105,7 @@ func TestDialerCustomKeepAliveOptions(t *testing.T) { dialer := &cluster.PredicateDialer{Config: clientConfig} timeout := dialer.Config.KaOpts.ClientTimeout - assert.Equal(t, time.Second*12345, timeout) + require.Equal(t, time.Second*12345, timeout) } func TestPredicateDialerUpdateRootCAs(t *testing.T) { @@ -113,7 +113,7 @@ func TestPredicateDialerUpdateRootCAs(t *testing.T) { defer node1.stop() anotherTLSCA, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) dialer := &cluster.PredicateDialer{ Config: node1.clientConfig.Clone(), @@ -123,7 +123,7 @@ func TestPredicateDialerUpdateRootCAs(t *testing.T) { dialer.Config.AsyncConnect = false _, err = dialer.Dial(node1.srv.Address(), nil) - assert.Error(t, err) + require.Error(t, err) // Update root TLS CAs asynchronously to make sure we don't have a data race. go func() { @@ -139,7 +139,7 @@ func TestPredicateDialerUpdateRootCAs(t *testing.T) { } } - assert.Fail(t, "could not connect after 10 attempts despite changing TLS CAs") + require.Fail(t, "could not connect after 10 attempts despite changing TLS CAs") } func TestDialerBadConfig(t *testing.T) { @@ -155,15 +155,15 @@ func TestDialerBadConfig(t *testing.T) { _, err := dialer.Dial("127.0.0.1:8080", func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error { return nil }) - assert.EqualError(t, err, "error adding root certificate: asn1: syntax error: sequence truncated") + require.EqualError(t, err, "error adding root certificate: asn1: syntax error: sequence truncated") } func TestDERtoPEM(t *testing.T) { ca, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) keyPair, err := ca.NewServerCertKeyPair("localhost") - assert.NoError(t, err) - assert.Equal(t, cluster.DERtoPEM(keyPair.TLSCert.Raw), string(keyPair.Cert)) + require.NoError(t, err) + require.Equal(t, cluster.DERtoPEM(keyPair.TLSCert.Raw), string(keyPair.Cert)) } func TestStandardDialer(t *testing.T) { @@ -174,7 +174,7 @@ func TestStandardDialer(t *testing.T) { Config: config, } _, err := standardDialer.Dial(cluster.EndpointCriteria{Endpoint: "127.0.0.1:8080", TLSRootCAs: certPool}) - assert.EqualError(t, + require.EqualError(t, err, "failed creating gRPC client: error adding root certificate: asn1: syntax error: sequence truncated", ) @@ -189,7 +189,7 @@ func TestVerifyBlockSignature(t *testing.T) { // The block should have a valid structure err := cluster.VerifyBlockSignature(block, verifier, nil) - assert.NoError(t, err) + require.NoError(t, err) for _, testCase := range []struct { name string @@ -236,11 +236,11 @@ func TestVerifyBlockSignature(t *testing.T) { // Create a copy of the block blockCopy := &common.Block{} err := proto.Unmarshal(protoutil.MarshalOrPanic(block), blockCopy) - assert.NoError(t, err) + require.NoError(t, err) // Mutate the block to sabotage it blockCopy = testCase.mutateBlock(blockCopy) err = cluster.VerifyBlockSignature(blockCopy, verifier, nil) - assert.Contains(t, err.Error(), testCase.errorContains) + require.Contains(t, err.Error(), testCase.errorContains) }) } } @@ -260,16 +260,16 @@ func TestVerifyBlockHash(t *testing.T) { } // Verify that createBlockChain() creates a valid blockchain - assert.NoError(t, verify(createBlockChain(start, end))) + require.NoError(t, verify(createBlockChain(start, end))) twoBlocks := createBlockChain(2, 3) twoBlocks[0].Header = nil - assert.EqualError(t, cluster.VerifyBlockHash(1, twoBlocks), "previous block header is nil") + require.EqualError(t, cluster.VerifyBlockHash(1, twoBlocks), "previous block header is nil") // Index out of bounds blockchain := createBlockChain(start, end) err := cluster.VerifyBlockHash(100, blockchain) - assert.EqualError(t, err, "index 100 out of bounds (total 21 blocks)") + require.EqualError(t, err, "index 100 out of bounds (total 21 blocks)") for _, testCase := range []struct { name string @@ -318,7 +318,7 @@ func TestVerifyBlockHash(t *testing.T) { blockchain := createBlockChain(start, end) blockchain = testCase.mutateBlockSequence(blockchain) err := verify(blockchain) - assert.EqualError(t, err, testCase.errorContains) + require.EqualError(t, err, testCase.errorContains) }) } } @@ -417,9 +417,9 @@ func TestVerifyBlocks(t *testing.T) { assignHashes(blockSequence) sigSet1, err = cluster.SignatureSetFromBlock(blockSequence[len(blockSequence)/4]) - assert.NoError(t, err) + require.NoError(t, err) sigSet2, err = cluster.SignatureSetFromBlock(blockSequence[len(blockSequence)/2]) - assert.NoError(t, err) + require.NoError(t, err) return blockSequence }, @@ -448,10 +448,10 @@ func TestVerifyBlocks(t *testing.T) { assignHashes(blockSequence) sigSet1, err = cluster.SignatureSetFromBlock(blockSequence[len(blockSequence)/4]) - assert.NoError(t, err) + require.NoError(t, err) sigSet2, err = cluster.SignatureSetFromBlock(blockSequence[len(blockSequence)-1]) - assert.NoError(t, err) + require.NoError(t, err) return blockSequence }, @@ -484,10 +484,10 @@ func TestVerifyBlocks(t *testing.T) { assignHashes(blockSequence) sigSet1, err = cluster.SignatureSetFromBlock(blockSequence[len(blockSequence)-2]) - assert.NoError(t, err) + require.NoError(t, err) sigSet2, err = cluster.SignatureSetFromBlock(blockSequence[len(blockSequence)-1]) - assert.NoError(t, err) + require.NoError(t, err) return blockSequence }, @@ -516,9 +516,9 @@ func TestVerifyBlocks(t *testing.T) { } err := cluster.VerifyBlocks(blockchain, verifier) if testCase.expectedError != "" { - assert.EqualError(t, err, testCase.expectedError) + require.EqualError(t, err, testCase.expectedError) } else { - assert.NoError(t, err) + require.NoError(t, err) } }) } @@ -569,28 +569,28 @@ func createBlockChain(start, end uint64) []*common.Block { func TestEndpointconfigFromConfigBlockGreenPath(t *testing.T) { t.Run("global endpoints", func(t *testing.T) { block, err := test.MakeGenesisBlock("mychannel") - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) // For a block that doesn't have per org endpoints, // we take the global endpoints injectGlobalOrdererEndpoint(t, block, "globalEndpoint") endpointConfig, err := cluster.EndpointconfigFromConfigBlock(block, cryptoProvider) - assert.NoError(t, err) - assert.Len(t, endpointConfig, 1) - assert.Equal(t, "globalEndpoint", endpointConfig[0].Endpoint) + require.NoError(t, err) + require.Len(t, endpointConfig, 1) + require.Equal(t, "globalEndpoint", endpointConfig[0].Endpoint) bl, _ := pem.Decode(endpointConfig[0].TLSRootCAs[0]) cert, err := x509.ParseCertificate(bl.Bytes) - assert.NoError(t, err) + require.NoError(t, err) - assert.True(t, cert.IsCA) + require.True(t, cert.IsCA) }) t.Run("per org endpoints", func(t *testing.T) { block, err := test.MakeGenesisBlock("mychannel") - assert.NoError(t, err) + require.NoError(t, err) // Make a second config. gConf := genesisconfig.Load(genesisconfig.SampleSingleMSPSoloProfile, configtest.GetDevConfigDir()) @@ -598,65 +598,65 @@ func TestEndpointconfigFromConfigBlockGreenPath(t *testing.T) { capabilities.OrdererV2_0: true, } channelGroup, err := encoder.NewChannelGroup(gConf) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) bundle, err := channelconfig.NewBundle("mychannel", &common.Config{ChannelGroup: channelGroup}, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) msps, err := bundle.MSPManager().GetMSPs() - assert.NoError(t, err) + require.NoError(t, err) caBytes := msps["SampleOrg"].GetTLSRootCerts()[0] - assert.NoError(t, err) + require.NoError(t, err) injectAdditionalTLSCAEndpointPair(t, block, "anotherEndpoint", caBytes, "fooOrg") endpointConfig, err := cluster.EndpointconfigFromConfigBlock(block, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) // And ensure that the endpoints that are taken, are the per org ones. - assert.Len(t, endpointConfig, 2) + require.Len(t, endpointConfig, 2) for _, endpoint := range endpointConfig { // If this is the original organization (and not the clone), // the TLS CA is 'caBytes' read from the second block. if endpoint.Endpoint == "anotherEndpoint" { - assert.Len(t, endpoint.TLSRootCAs, 1) - assert.Equal(t, caBytes, endpoint.TLSRootCAs[0]) + require.Len(t, endpoint.TLSRootCAs, 1) + require.Equal(t, caBytes, endpoint.TLSRootCAs[0]) continue } // Else, our endpoints are from the original org, and the TLS CA is something else. - assert.NotEqual(t, caBytes, endpoint.TLSRootCAs[0]) + require.NotEqual(t, caBytes, endpoint.TLSRootCAs[0]) // The endpoints we expect to see are something else. - assert.Equal(t, 0, strings.Index(endpoint.Endpoint, "127.0.0.1:")) + require.Equal(t, 0, strings.Index(endpoint.Endpoint, "127.0.0.1:")) bl, _ := pem.Decode(endpoint.TLSRootCAs[0]) cert, err := x509.ParseCertificate(bl.Bytes) - assert.NoError(t, err) - assert.True(t, cert.IsCA) + require.NoError(t, err) + require.True(t, cert.IsCA) } }) } func TestEndpointconfigFromConfigBlockFailures(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) t.Run("nil block", func(t *testing.T) { certs, err := cluster.EndpointconfigFromConfigBlock(nil, cryptoProvider) - assert.Nil(t, certs) - assert.EqualError(t, err, "nil block") + require.Nil(t, certs) + require.EqualError(t, err, "nil block") }) t.Run("nil block data", func(t *testing.T) { certs, err := cluster.EndpointconfigFromConfigBlock(&common.Block{}, cryptoProvider) - assert.Nil(t, certs) - assert.EqualError(t, err, "block data is nil") + require.Nil(t, certs) + require.EqualError(t, err, "block data is nil") }) t.Run("no envelope", func(t *testing.T) { certs, err := cluster.EndpointconfigFromConfigBlock(&common.Block{ Data: &common.BlockData{}, }, cryptoProvider) - assert.Nil(t, certs) - assert.EqualError(t, err, "envelope index out of bounds") + require.Nil(t, certs) + require.EqualError(t, err, "envelope index out of bounds") }) t.Run("bad envelope", func(t *testing.T) { @@ -665,8 +665,8 @@ func TestEndpointconfigFromConfigBlockFailures(t *testing.T) { Data: [][]byte{{}}, }, }, cryptoProvider) - assert.Nil(t, certs) - assert.EqualError(t, err, "failed extracting bundle from envelope: envelope header cannot be nil") + require.Nil(t, certs) + require.EqualError(t, err, "failed extracting bundle from envelope: envelope header cannot be nil") }) } @@ -750,8 +750,8 @@ func TestConfigFromBlockBadInput(t *testing.T) { } { t.Run(testCase.name, func(t *testing.T) { conf, err := cluster.ConfigFromBlock(testCase.block) - assert.Nil(t, conf) - assert.EqualError(t, err, testCase.expectedError) + require.Nil(t, conf) + require.EqualError(t, err, testCase.expectedError) }) } } @@ -759,10 +759,10 @@ func TestConfigFromBlockBadInput(t *testing.T) { func TestBlockValidationPolicyVerifier(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleInsecureSoloProfile, configtest.GetDevConfigDir()) group, err := encoder.NewChannelGroup(config) - assert.NoError(t, err) - assert.NotNil(t, group) + require.NoError(t, err) + require.NotNil(t, group) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) validConfigEnvelope := &common.ConfigEnvelope{ Config: &common.Config{ @@ -825,9 +825,9 @@ func TestBlockValidationPolicyVerifier(t *testing.T) { err := verifier.VerifyBlockSignature(nil, testCase.envelope) if testCase.expectedError != "" { - assert.EqualError(t, err, testCase.expectedError) + require.EqualError(t, err, testCase.expectedError) } else { - assert.NoError(t, err) + require.NoError(t, err) } }) } @@ -836,10 +836,10 @@ func TestBlockValidationPolicyVerifier(t *testing.T) { func TestBlockVerifierAssembler(t *testing.T) { config := genesisconfig.Load(genesisconfig.SampleInsecureSoloProfile, configtest.GetDevConfigDir()) group, err := encoder.NewChannelGroup(config) - assert.NoError(t, err) - assert.NotNil(t, group) + require.NoError(t, err) + require.NotNil(t, group) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) t.Run("Good config envelope", func(t *testing.T) { bva := &cluster.BlockVerifierAssembler{BCCSP: cryptoProvider} @@ -848,15 +848,15 @@ func TestBlockVerifierAssembler(t *testing.T) { ChannelGroup: group, }, }, "mychannel") - assert.NoError(t, err) + require.NoError(t, err) - assert.NoError(t, verifier.VerifyBlockSignature(nil, nil)) + require.NoError(t, verifier.VerifyBlockSignature(nil, nil)) }) t.Run("Bad config envelope", func(t *testing.T) { bva := &cluster.BlockVerifierAssembler{BCCSP: cryptoProvider} _, err := bva.VerifierFromConfig(&common.ConfigEnvelope{}, "mychannel") - assert.EqualError(t, err, "failed extracting bundle from envelope: channelconfig Config cannot be nil") + require.EqualError(t, err, "failed extracting bundle from envelope: channelconfig Config cannot be nil") }) } @@ -915,22 +915,22 @@ func TestLastConfigBlock(t *testing.T) { t.Run(testCase.name, func(t *testing.T) { block, err := cluster.LastConfigBlock(testCase.block, testCase.blockRetriever) if testCase.expectedError == "" { - assert.NoError(t, err) - assert.NotNil(t, block) + require.NoError(t, err) + require.NotNil(t, block) return } - assert.EqualError(t, err, testCase.expectedError) - assert.Nil(t, block) + require.EqualError(t, err, testCase.expectedError) + require.Nil(t, block) }) } } func TestVerificationRegistryRegisterVerifier(t *testing.T) { blockBytes, err := ioutil.ReadFile("testdata/mychannel.block") - assert.NoError(t, err) + require.NoError(t, err) block := &common.Block{} - assert.NoError(t, proto.Unmarshal(blockBytes, block)) + require.NoError(t, proto.Unmarshal(blockBytes, block)) verifier := &mocks.BlockVerifier{} @@ -946,30 +946,30 @@ func TestVerificationRegistryRegisterVerifier(t *testing.T) { var loadCount int registry.LoadVerifier = func(chain string) cluster.BlockVerifier { - assert.Equal(t, "mychannel", chain) + require.Equal(t, "mychannel", chain) loadCount++ return verifier } v := registry.RetrieveVerifier("mychannel") - assert.Nil(t, v) + require.Nil(t, v) registry.RegisterVerifier("mychannel") v = registry.RetrieveVerifier("mychannel") - assert.Equal(t, verifier, v) - assert.Equal(t, 1, loadCount) + require.Equal(t, verifier, v) + require.Equal(t, 1, loadCount) // If the verifier exists, this is a no-op registry.RegisterVerifier("mychannel") - assert.Equal(t, 1, loadCount) + require.Equal(t, 1, loadCount) } func TestVerificationRegistry(t *testing.T) { blockBytes, err := ioutil.ReadFile("testdata/mychannel.block") - assert.NoError(t, err) + require.NoError(t, err) block := &common.Block{} - assert.NoError(t, proto.Unmarshal(blockBytes, block)) + require.NoError(t, proto.Unmarshal(blockBytes, block)) flogging.ActivateSpec("test=DEBUG") defer flogging.Reset() @@ -1071,8 +1071,8 @@ func TestVerificationRegistry(t *testing.T) { registry.BlockCommitted(testCase.blockCommitted, testCase.channelCommitted) verifier := registry.RetrieveVerifier(testCase.channelRetrieved) - assert.Equal(t, testCase.loggedMessages, loggedEntriesByMethods) - assert.Equal(t, testCase.expectedVerifier, verifier) + require.Equal(t, testCase.loggedMessages, loggedEntriesByMethods) + require.Equal(t, testCase.expectedVerifier, verifier) }) } } @@ -1089,26 +1089,26 @@ func TestLedgerInterceptor(t *testing.T) { Channel: "mychannel", LedgerWriter: ledger, InterceptBlockCommit: func(b *common.Block, channel string) { - assert.Equal(t, block, b) - assert.Equal(t, "mychannel", channel) + require.Equal(t, block, b) + require.Equal(t, "mychannel", channel) intercepted = true }, } err := interceptedLedger.Append(block) - assert.NoError(t, err) - assert.True(t, intercepted) + require.NoError(t, err) + require.True(t, intercepted) ledger.AssertCalled(t, "Append", block) } func injectAdditionalTLSCAEndpointPair(t *testing.T, block *common.Block, endpoint string, tlsCA []byte, orgName string) { // Unwrap the layers until we reach the orderer addresses env, err := protoutil.ExtractEnvelope(block, 0) - assert.NoError(t, err) + require.NoError(t, err) payload, err := protoutil.UnmarshalPayload(env.Payload) - assert.NoError(t, err) + require.NoError(t, err) confEnv, err := configtx.UnmarshalConfigEnvelope(payload.Data) - assert.NoError(t, err) + require.NoError(t, err) ordererGrp := confEnv.Config.ChannelGroup.Groups[channelconfig.OrdererGroupKey].Groups // Get the first orderer org config var firstOrdererConfig *common.ConfigGroup @@ -1122,11 +1122,11 @@ func injectAdditionalTLSCAEndpointPair(t *testing.T, block *common.Block, endpoi // Reach the FabricMSPConfig buried in it. mspConfig := &msp.MSPConfig{} err = proto.Unmarshal(secondOrdererConfig.Values[channelconfig.MSPKey].Value, mspConfig) - assert.NoError(t, err) + require.NoError(t, err) fabricConfig := &msp.FabricMSPConfig{} err = proto.Unmarshal(mspConfig.Config, fabricConfig) - assert.NoError(t, err) + require.NoError(t, err) // Plant the given TLS CA in it. fabricConfig.TlsRootCerts = [][]byte{tlsCA} @@ -1185,5 +1185,5 @@ qz8bY+s6AiBvO0aOfE8M4ibjmRE4vSXo0+gkOIJKqZcmiRdnJSr8Xw== actual := fmt.Sprint(epc) expected := `{"CAs":[{"Expired":false,"Issuer":"self","Subject":"SERIALNUMBER=65764076798709079104397911007043976879"},{"Expired":true,"Issuer":"SERIALNUMBER=65764076798709079104397911007043976879","Subject":"SERIALNUMBER=187004237184026939685179573732217690720"}],"Endpoint":"orderer.example.com:7050"}` - assert.Equal(t, expected, actual) + require.Equal(t, expected, actual) } diff --git a/orderer/common/localconfig/config_test.go b/orderer/common/localconfig/config_test.go index 99fc5accbc5..8ff11e95e7b 100644 --- a/orderer/common/localconfig/config_test.go +++ b/orderer/common/localconfig/config_test.go @@ -13,7 +13,7 @@ import ( "github.com/hyperledger/fabric/core/config/configtest" "github.com/mitchellh/mapstructure" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestLoadGoodConfig(t *testing.T) { @@ -21,9 +21,9 @@ func TestLoadGoodConfig(t *testing.T) { defer cleanup() cc := &configCache{} cfg, err := cc.load() - assert.NoError(t, err) - assert.NotNil(t, cfg, "Could not load config") - assert.Nil(t, err, "Load good config returned unexpected error") + require.NoError(t, err) + require.NotNil(t, cfg, "Could not load config") + require.Nil(t, err, "Load good config returned unexpected error") } func TestMissingConfigValueOverridden(t *testing.T) { @@ -32,9 +32,9 @@ func TestMissingConfigValueOverridden(t *testing.T) { defer cleanup() cc := &configCache{} cfg, err := cc.load() - assert.NotNil(t, cfg, "Could not load config") - assert.NoError(t, err, "Load good config returned unexpected error") - assert.Nil(t, cfg.Kafka.TLS.ClientRootCAs) + require.NotNil(t, cfg, "Could not load config") + require.NoError(t, err, "Load good config returned unexpected error") + require.Nil(t, cfg.Kafka.TLS.ClientRootCAs) }) t.Run("when the value is missing and is overridden", func(t *testing.T) { @@ -43,9 +43,9 @@ func TestMissingConfigValueOverridden(t *testing.T) { defer cleanup() cache := &configCache{} cfg, err := cache.load() - assert.NotNil(t, cfg, "Could not load config") - assert.NoError(t, err, "Load good config returned unexpected error") - assert.NotNil(t, cfg.Kafka.TLS.ClientRootCAs) + require.NotNil(t, cfg, "Could not load config") + require.NoError(t, err, "Load good config returned unexpected error") + require.NotNil(t, cfg.Kafka.TLS.ClientRootCAs) }) } @@ -56,18 +56,18 @@ func TestLoadCached(t *testing.T) { // Load the initial config, update the environment, and load again. // With the caching behavior, the update should not be reflected initial, err := Load() - assert.NoError(t, err) + require.NoError(t, err) os.Setenv("ORDERER_KAFKA_RETRY_SHORTINTERVAL", "120s") updated, err := Load() - assert.NoError(t, err) - assert.Equal(t, initial, updated, "expected %#v to equal %#v", updated, initial) + require.NoError(t, err) + require.Equal(t, initial, updated, "expected %#v to equal %#v", updated, initial) // Change the configuration we got back and load again. // The new value should not contain the update to the initial initial.General.LocalMSPDir = "/test/bad/mspDir" updated, err = Load() - assert.NoError(t, err) - assert.NotEqual(t, initial, updated, "expected %#v to not equal %#v", updated, initial) + require.NoError(t, err) + require.NotEqual(t, initial, updated, "expected %#v to not equal %#v", updated, initial) } func TestLoadMissingConfigFile(t *testing.T) { @@ -78,23 +78,23 @@ func TestLoadMissingConfigFile(t *testing.T) { cc := &configCache{} cfg, err := cc.load() - assert.Nil(t, cfg, "Loaded missing config file") - assert.NotNil(t, err, "Loaded missing config file without error") + require.Nil(t, cfg, "Loaded missing config file") + require.NotNil(t, err, "Loaded missing config file without error") } func TestLoadMalformedConfigFile(t *testing.T) { name, err := ioutil.TempDir("", "hyperledger_fabric") - assert.Nil(t, err, "Error creating temp dir: %s", err) + require.Nil(t, err, "Error creating temp dir: %s", err) defer func() { err = os.RemoveAll(name) - assert.Nil(t, os.RemoveAll(name), "Error removing temp dir: %s", err) + require.Nil(t, os.RemoveAll(name), "Error removing temp dir: %s", err) }() // Create a malformed orderer.yaml file in temp dir f, err := os.OpenFile(filepath.Join(name, "orderer.yaml"), os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600) - assert.Nil(t, err, "Error creating file: %s", err) + require.Nil(t, err, "Error creating file: %s", err) f.WriteString("General: 42") - assert.NoError(t, f.Close(), "Error closing file") + require.NoError(t, f.Close(), "Error closing file") envVar1 := "FABRIC_CFG_PATH" envVal1 := name @@ -103,8 +103,8 @@ func TestLoadMalformedConfigFile(t *testing.T) { cc := &configCache{} cfg, err := cc.load() - assert.Nil(t, cfg, "Loaded missing config file") - assert.NotNil(t, err, "Loaded missing config file without error") + require.Nil(t, cfg, "Loaded missing config file") + require.NotNil(t, err, "Loaded missing config file without error") } // TestEnvInnerVar verifies that with the Unmarshal function that @@ -125,13 +125,13 @@ func TestEnvInnerVar(t *testing.T) { cc := &configCache{} config, err := cc.load() - assert.NoError(t, err) + require.NoError(t, err) - assert.NotNil(t, config, "Could not load config") - assert.Equal(t, config.General.ListenPort, envVal1, "Environmental override of inner config test 1 did not work") + require.NotNil(t, config, "Could not load config") + require.Equal(t, config.General.ListenPort, envVal1, "Environmental override of inner config test 1 did not work") v2, _ := time.ParseDuration(envVal2) - assert.Equal(t, config.Kafka.Retry.ShortInterval, v2, "Environmental override of inner config test 2 did not work") + require.Equal(t, config.Kafka.Retry.ShortInterval, v2, "Environmental override of inner config test 2 did not work") } func TestKafkaTLSConfig(t *testing.T) { @@ -149,9 +149,9 @@ func TestKafkaTLSConfig(t *testing.T) { t.Run(tc.name, func(t *testing.T) { uconf := &TopLevel{Kafka: Kafka{TLS: tc.tls}} if tc.shouldPanic { - assert.Panics(t, func() { uconf.completeInitialization("/dummy/path") }, "Should panic") + require.Panics(t, func() { uconf.completeInitialization("/dummy/path") }, "Should panic") } else { - assert.NotPanics(t, func() { uconf.completeInitialization("/dummy/path") }, "Should not panic") + require.NotPanics(t, func() { uconf.completeInitialization("/dummy/path") }, "Should not panic") } }) } @@ -173,9 +173,9 @@ func TestKafkaSASLPlain(t *testing.T) { t.Run(tc.name, func(t *testing.T) { uconf := &TopLevel{Kafka: Kafka{SASLPlain: tc.sasl}} if tc.shouldPanic { - assert.Panics(t, func() { uconf.completeInitialization("/dummy/path") }, "Should panic") + require.Panics(t, func() { uconf.completeInitialization("/dummy/path") }, "Should panic") } else { - assert.NotPanics(t, func() { uconf.completeInitialization("/dummy/path") }, "Should not panic") + require.NotPanics(t, func() { uconf.completeInitialization("/dummy/path") }, "Should not panic") } }) } @@ -187,16 +187,16 @@ func TestClusterDefaults(t *testing.T) { cc := &configCache{} cfg, err := cc.load() - assert.NoError(t, err) - assert.Equal(t, cfg.General.Cluster.ReplicationMaxRetries, Defaults.General.Cluster.ReplicationMaxRetries) + require.NoError(t, err) + require.Equal(t, cfg.General.Cluster.ReplicationMaxRetries, Defaults.General.Cluster.ReplicationMaxRetries) } func TestConsensusConfig(t *testing.T) { name, err := ioutil.TempDir("", "hyperledger_fabric") - assert.Nil(t, err, "Error creating temp dir: %s", err) + require.Nil(t, err, "Error creating temp dir: %s", err) defer func() { err = os.RemoveAll(name) - assert.Nil(t, os.RemoveAll(name), "Error removing temp dir: %s", err) + require.Nil(t, os.RemoveAll(name), "Error removing temp dir: %s", err) }() content := `--- @@ -207,9 +207,9 @@ Consensus: ` f, err := os.OpenFile(filepath.Join(name, "orderer.yaml"), os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600) - assert.Nil(t, err, "Error creating file: %s", err) + require.Nil(t, err, "Error creating file: %s", err) f.WriteString(content) - assert.NoError(t, f.Close(), "Error closing file") + require.NoError(t, f.Close(), "Error closing file") envVar1 := "FABRIC_CFG_PATH" envVal1 := name @@ -218,11 +218,11 @@ Consensus: cc := &configCache{} conf, err := cc.load() - assert.NoError(t, err, "Load good config returned unexpected error") - assert.NotNil(t, conf, "Could not load config") + require.NoError(t, err, "Load good config returned unexpected error") + require.NotNil(t, conf, "Could not load config") consensus := conf.Consensus - assert.IsType(t, map[string]interface{}{}, consensus, "Expected Consensus to be of type map[string]interface{}") + require.IsType(t, map[string]interface{}{}, consensus, "Expected Consensus to be of type map[string]interface{}") foo := &struct { Foo string @@ -231,9 +231,9 @@ Consensus: } }{} err = mapstructure.Decode(consensus, foo) - assert.NoError(t, err, "Failed to decode Consensus to struct") - assert.Equal(t, foo.Foo, "bar") - assert.Equal(t, foo.Hello.World, 42) + require.NoError(t, err, "Failed to decode Consensus to struct") + require.Equal(t, foo.Foo, "bar") + require.Equal(t, foo.Hello.World, 42) } func TestConnectionTimeout(t *testing.T) { @@ -242,9 +242,9 @@ func TestConnectionTimeout(t *testing.T) { defer cleanup() cc := &configCache{} cfg, err := cc.load() - assert.NotNil(t, cfg, "Could not load config") - assert.NoError(t, err, "Load good config returned unexpected error") - assert.Equal(t, cfg.General.ConnectionTimeout, time.Duration(0)) + require.NotNil(t, cfg, "Could not load config") + require.NoError(t, err, "Load good config returned unexpected error") + require.Equal(t, cfg.General.ConnectionTimeout, time.Duration(0)) }) t.Run("with connection timeout overridden", func(t *testing.T) { @@ -255,9 +255,9 @@ func TestConnectionTimeout(t *testing.T) { cc := &configCache{} cfg, err := cc.load() - assert.NotNil(t, cfg, "Could not load config") - assert.NoError(t, err, "Load good config returned unexpected error") - assert.Equal(t, cfg.General.ConnectionTimeout, 10*time.Second) + require.NotNil(t, cfg, "Could not load config") + require.NoError(t, err, "Load good config returned unexpected error") + require.Equal(t, cfg.General.ConnectionTimeout, 10*time.Second) }) } @@ -267,7 +267,7 @@ func TestChannelParticipationDefaults(t *testing.T) { cc := &configCache{} cfg, err := cc.load() - assert.NoError(t, err) - assert.Equal(t, cfg.ChannelParticipation.Enabled, Defaults.ChannelParticipation.Enabled) - assert.Equal(t, cfg.ChannelParticipation.RemoveStorage, Defaults.ChannelParticipation.RemoveStorage) + require.NoError(t, err) + require.Equal(t, cfg.ChannelParticipation.Enabled, Defaults.ChannelParticipation.Enabled) + require.Equal(t, cfg.ChannelParticipation.RemoveStorage, Defaults.ChannelParticipation.RemoveStorage) } diff --git a/orderer/common/localconfig/flatten_test.go b/orderer/common/localconfig/flatten_test.go index 4c72545381c..b148986211f 100644 --- a/orderer/common/localconfig/flatten_test.go +++ b/orderer/common/localconfig/flatten_test.go @@ -11,7 +11,7 @@ import ( "reflect" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) type A struct { @@ -49,9 +49,9 @@ func TestFlattenStruct(t *testing.T) { var x []string flatten("", &x, reflect.ValueOf(d)) - assert.Equal(t, 4, len(x), "expect 3 items") - assert.Equal(t, x[0], "B.A = I'm 'foo'") - assert.Equal(t, x[1], "B.i = 42") - assert.Equal(t, x[2], "B.X = \"bar \"") - assert.Equal(t, x[3], "c =") + require.Equal(t, 4, len(x), "expect 3 items") + require.Equal(t, x[0], "B.A = I'm 'foo'") + require.Equal(t, x[1], "B.i = 42") + require.Equal(t, x[2], "B.X = \"bar \"") + require.Equal(t, x[3], "c =") } diff --git a/orderer/common/metadata/metadata_test.go b/orderer/common/metadata/metadata_test.go index bcf047588a6..32beec2f028 100644 --- a/orderer/common/metadata/metadata_test.go +++ b/orderer/common/metadata/metadata_test.go @@ -13,7 +13,7 @@ import ( common "github.com/hyperledger/fabric/common/metadata" "github.com/hyperledger/fabric/orderer/common/metadata" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetVersionInfo(t *testing.T) { @@ -24,5 +24,5 @@ func TestGetVersionInfo(t *testing.T) { runtime.Version(), fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), ) - assert.Equal(t, expected, metadata.GetVersionInfo()) + require.Equal(t, expected, metadata.GetVersionInfo()) } diff --git a/orderer/common/msgprocessor/expiration_test.go b/orderer/common/msgprocessor/expiration_test.go index 7dba88b8dad..1b5086ef021 100644 --- a/orderer/common/msgprocessor/expiration_test.go +++ b/orderer/common/msgprocessor/expiration_test.go @@ -17,7 +17,7 @@ import ( "github.com/hyperledger/fabric/common/channelconfig" "github.com/hyperledger/fabric/orderer/common/msgprocessor/mocks" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mocks/config_resources.go --fake-name Resources . configResources @@ -45,7 +45,7 @@ func createEnvelope(t *testing.T, serializedIdentity []byte) *common.Envelope { Header: hdr, } payloadBytes, err := proto.Marshal(payload) - assert.NoError(t, err) + require.NoError(t, err) return &common.Envelope{ Payload: payloadBytes, Signature: []byte{1, 2, 3}, @@ -54,12 +54,12 @@ func createEnvelope(t *testing.T, serializedIdentity []byte) *common.Envelope { func createX509Identity(t *testing.T, certFileName string) []byte { certBytes, err := ioutil.ReadFile(filepath.Join("testdata", certFileName)) - assert.NoError(t, err) + require.NoError(t, err) sId := &msp.SerializedIdentity{ IdBytes: certBytes, } idBytes, err := proto.Marshal(sId) - assert.NoError(t, err) + require.NoError(t, err) return idBytes } @@ -70,12 +70,12 @@ func createIdemixIdentity(t *testing.T) []byte { Ou: []byte("OU1"), } idemixBytes, err := proto.Marshal(idemixId) - assert.NoError(t, err) + require.NoError(t, err) sId := &msp.SerializedIdentity{ IdBytes: idemixBytes, } idBytes, err := proto.Marshal(sId) - assert.NoError(t, err) + require.NoError(t, err) return idBytes } @@ -83,7 +83,7 @@ func TestExpirationRejectRule(t *testing.T) { mockResources := &mocks.Resources{} t.Run("NoOrdererConfig", func(t *testing.T) { - assert.Panics(t, func() { + require.Panics(t, func() { NewExpirationRejectRule(mockResources).Apply(&common.Envelope{}) }) }) @@ -96,37 +96,37 @@ func TestExpirationRejectRule(t *testing.T) { t.Run("BadEnvelope", func(t *testing.T) { mockCapabilities.ExpirationCheckReturns(true) err := NewExpirationRejectRule(mockResources).Apply(&common.Envelope{}) - assert.Error(t, err) - assert.Contains(t, err.Error(), "could not convert message to signedData") + require.Error(t, err) + require.Contains(t, err.Error(), "could not convert message to signedData") mockCapabilities.ExpirationCheckReturns(false) err = NewExpirationRejectRule(mockResources).Apply(&common.Envelope{}) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("ExpiredX509Identity", func(t *testing.T) { env := createEnvelope(t, createX509Identity(t, "expiredCert.pem")) mockCapabilities.ExpirationCheckReturns(true) err := NewExpirationRejectRule(mockResources).Apply(env) - assert.Error(t, err) - assert.Equal(t, err.Error(), "identity expired") + require.Error(t, err) + require.Equal(t, err.Error(), "identity expired") mockCapabilities.ExpirationCheckReturns(false) err = NewExpirationRejectRule(mockResources).Apply(env) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("IdemixIdentity", func(t *testing.T) { env := createEnvelope(t, createIdemixIdentity(t)) mockCapabilities.ExpirationCheckReturns(true) - assert.Nil(t, NewExpirationRejectRule(mockResources).Apply(env)) + require.Nil(t, NewExpirationRejectRule(mockResources).Apply(env)) mockCapabilities.ExpirationCheckReturns(false) - assert.Nil(t, NewExpirationRejectRule(mockResources).Apply(env)) + require.Nil(t, NewExpirationRejectRule(mockResources).Apply(env)) }) t.Run("NoneExpiredX509Identity", func(t *testing.T) { env := createEnvelope(t, createX509Identity(t, "cert.pem")) mockCapabilities.ExpirationCheckReturns(true) - assert.Nil(t, NewExpirationRejectRule(mockResources).Apply(env)) + require.Nil(t, NewExpirationRejectRule(mockResources).Apply(env)) mockCapabilities.ExpirationCheckReturns(false) - assert.Nil(t, NewExpirationRejectRule(mockResources).Apply(env)) + require.Nil(t, NewExpirationRejectRule(mockResources).Apply(env)) }) } diff --git a/orderer/common/msgprocessor/filter_test.go b/orderer/common/msgprocessor/filter_test.go index 4153baad724..4b40e1d1c64 100644 --- a/orderer/common/msgprocessor/filter_test.go +++ b/orderer/common/msgprocessor/filter_test.go @@ -11,7 +11,7 @@ import ( "testing" cb "github.com/hyperledger/fabric-protos-go/common" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var RejectRule = Rule(rejectRule{}) @@ -24,28 +24,28 @@ func (r rejectRule) Apply(message *cb.Envelope) error { func TestEmptyRejectRule(t *testing.T) { t.Run("Reject", func(t *testing.T) { - assert.NotNil(t, EmptyRejectRule.Apply(&cb.Envelope{})) + require.NotNil(t, EmptyRejectRule.Apply(&cb.Envelope{})) }) t.Run("Accept", func(t *testing.T) { - assert.Nil(t, EmptyRejectRule.Apply(&cb.Envelope{Payload: []byte("fakedata")})) + require.Nil(t, EmptyRejectRule.Apply(&cb.Envelope{Payload: []byte("fakedata")})) }) } func TestAcceptRule(t *testing.T) { - assert.Nil(t, AcceptRule.Apply(&cb.Envelope{})) + require.Nil(t, AcceptRule.Apply(&cb.Envelope{})) } func TestRuleSet(t *testing.T) { t.Run("RejectAccept", func(t *testing.T) { - assert.NotNil(t, NewRuleSet([]Rule{RejectRule, AcceptRule}).Apply(&cb.Envelope{})) + require.NotNil(t, NewRuleSet([]Rule{RejectRule, AcceptRule}).Apply(&cb.Envelope{})) }) t.Run("AcceptReject", func(t *testing.T) { - assert.NotNil(t, NewRuleSet([]Rule{AcceptRule, RejectRule}).Apply(&cb.Envelope{})) + require.NotNil(t, NewRuleSet([]Rule{AcceptRule, RejectRule}).Apply(&cb.Envelope{})) }) t.Run("AcceptAccept", func(t *testing.T) { - assert.Nil(t, NewRuleSet([]Rule{AcceptRule, AcceptRule}).Apply(&cb.Envelope{})) + require.Nil(t, NewRuleSet([]Rule{AcceptRule, AcceptRule}).Apply(&cb.Envelope{})) }) t.Run("Empty", func(t *testing.T) { - assert.Nil(t, NewRuleSet(nil).Apply(&cb.Envelope{})) + require.Nil(t, NewRuleSet(nil).Apply(&cb.Envelope{})) }) } diff --git a/orderer/common/msgprocessor/maintenancefilter_test.go b/orderer/common/msgprocessor/maintenancefilter_test.go index 0d67690abf0..ccced4d261d 100644 --- a/orderer/common/msgprocessor/maintenancefilter_test.go +++ b/orderer/common/msgprocessor/maintenancefilter_test.go @@ -21,7 +21,6 @@ import ( "github.com/hyperledger/fabric/internal/configtxlator/update" "github.com/hyperledger/fabric/orderer/common/msgprocessor/mocks" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -40,11 +39,11 @@ func TestMaintenanceNoConfig(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mf := NewMaintenanceFilter(ms, cryptoProvider) require.NotNil(t, mf) ms.OrdererConfigVal = nil - assert.Panics(t, func() { _ = mf.Apply(&common.Envelope{}) }, "No orderer config") + require.Panics(t, func() { _ = mf.Apply(&common.Envelope{}) }, "No orderer config") } func TestMaintenanceDisabled(t *testing.T) { @@ -52,7 +51,7 @@ func TestMaintenanceDisabled(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(false, orderer.ConsensusType_STATE_NORMAL), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mf := NewMaintenanceFilter(msInactive, cryptoProvider) require.NotNil(t, mf) current := consensusTypeInfo{ordererType: "kafka", metadata: []byte{}, state: orderer.ConsensusType_STATE_NORMAL} @@ -60,14 +59,14 @@ func TestMaintenanceDisabled(t *testing.T) { t.Run("Good", func(t *testing.T) { configTx := makeConfigEnvelopeWithExtraStuff(t, current, current, 3) err := mf.Apply(configTx) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Block entry to maintenance", func(t *testing.T) { next := consensusTypeInfo{ordererType: "kafka", metadata: []byte{}, state: orderer.ConsensusType_STATE_MAINTENANCE} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.EqualError(t, err, + require.EqualError(t, err, "config transaction inspection failed: next config attempted to change ConsensusType.State to STATE_MAINTENANCE, but capability is disabled") }) @@ -75,7 +74,7 @@ func TestMaintenanceDisabled(t *testing.T) { next := consensusTypeInfo{ordererType: "solo", metadata: []byte{}, state: orderer.ConsensusType_STATE_NORMAL} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.EqualError(t, err, + require.EqualError(t, err, "config transaction inspection failed: next config attempted to change ConsensusType.Type from kafka to solo, but capability is disabled") }) } @@ -85,7 +84,7 @@ func TestMaintenanceParseEnvelope(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_NORMAL), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mf := NewMaintenanceFilter(msActive, cryptoProvider) require.NotNil(t, mf) badBytes := []byte{1, 2, 3, 4} @@ -153,7 +152,7 @@ func TestMaintenanceParseEnvelope(t *testing.T) { t.Run(tCase.name, func(t *testing.T) { err := mf.Apply(tCase.envelope) require.Error(t, err) - assert.Contains(t, err.Error(), tCase.errMsg) + require.Contains(t, err.Error(), tCase.errMsg) }) } } @@ -163,7 +162,7 @@ func TestMaintenanceInspectEntry(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_NORMAL), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mf := NewMaintenanceFilter(msActive, cryptoProvider) require.NotNil(t, mf) bogusMetadata := []byte{1, 2, 3, 4} @@ -173,14 +172,14 @@ func TestMaintenanceInspectEntry(t *testing.T) { next := consensusTypeInfo{ordererType: "kafka", metadata: []byte{}, state: orderer.ConsensusType_STATE_MAINTENANCE} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Bad: concurrent change to consensus type & state", func(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: bogusMetadata, state: orderer.ConsensusType_STATE_MAINTENANCE} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.EqualError(t, err, + require.EqualError(t, err, "config transaction inspection failed: attempted to change ConsensusType.Type from kafka to etcdraft, but ConsensusType.State is changing from STATE_NORMAL to STATE_MAINTENANCE") }) @@ -188,7 +187,7 @@ func TestMaintenanceInspectEntry(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: bogusMetadata, state: orderer.ConsensusType_STATE_NORMAL} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.EqualError(t, err, + require.EqualError(t, err, "config transaction inspection failed: attempted to change consensus type from kafka to etcdraft, but current config ConsensusType.State is not in maintenance mode") }) } @@ -198,7 +197,7 @@ func TestMaintenanceInspectChange(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_MAINTENANCE), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mf := NewMaintenanceFilter(msActive, cryptoProvider) require.NotNil(t, mf) bogusMetadata := []byte{1, 2, 3, 4} @@ -209,21 +208,21 @@ func TestMaintenanceInspectChange(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: validMetadata, state: orderer.ConsensusType_STATE_MAINTENANCE} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Good exit, no change", func(t *testing.T) { next := consensusTypeInfo{ordererType: "kafka", metadata: []byte{}, state: orderer.ConsensusType_STATE_NORMAL} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Bad: unsupported consensus type", func(t *testing.T) { next := consensusTypeInfo{ordererType: "unsupported", metadata: bogusMetadata, state: orderer.ConsensusType_STATE_MAINTENANCE} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.EqualError(t, err, + require.EqualError(t, err, "config transaction inspection failed: attempted to change consensus type from kafka to unsupported, transition not supported") }) @@ -231,7 +230,7 @@ func TestMaintenanceInspectChange(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: validMetadata, state: orderer.ConsensusType_STATE_NORMAL} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.EqualError(t, err, + require.EqualError(t, err, "config transaction inspection failed: attempted to change ConsensusType.Type from kafka to etcdraft, but ConsensusType.State is changing from STATE_MAINTENANCE to STATE_NORMAL") }) @@ -240,7 +239,7 @@ func TestMaintenanceInspectChange(t *testing.T) { configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) require.Error(t, err) - assert.Contains(t, err.Error(), + require.Contains(t, err.Error(), "config transaction inspection failed: failed to unmarshal etcdraft metadata configuration") }) } @@ -255,7 +254,7 @@ func TestMaintenanceInspectExit(t *testing.T) { OrdererConfigVal: mockOrderer, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mf := NewMaintenanceFilter(msActive, cryptoProvider) require.NotNil(t, mf) current := consensusTypeInfo{ordererType: "etcdraft", metadata: validMetadata, state: orderer.ConsensusType_STATE_MAINTENANCE} @@ -264,14 +263,14 @@ func TestMaintenanceInspectExit(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: validMetadata, state: orderer.ConsensusType_STATE_NORMAL} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Bad: concurrent change to consensus type & state", func(t *testing.T) { next := consensusTypeInfo{ordererType: "kafka", metadata: []byte{}, state: orderer.ConsensusType_STATE_NORMAL} configTx := makeConfigEnvelope(t, current, next) err := mf.Apply(configTx) - assert.EqualError(t, err, + require.EqualError(t, err, "config transaction inspection failed: attempted to change ConsensusType.Type from etcdraft to kafka, but ConsensusType.State is changing from STATE_MAINTENANCE to STATE_NORMAL") }) @@ -279,21 +278,21 @@ func TestMaintenanceInspectExit(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: validMetadata, state: orderer.ConsensusType_STATE_NORMAL} configTx := makeConfigEnvelopeWithExtraStuff(t, current, next, 1) err := mf.Apply(configTx) - assert.EqualError(t, err, "config transaction inspection failed: config update contains changes to more than one group") + require.EqualError(t, err, "config transaction inspection failed: config update contains changes to more than one group") }) t.Run("Bad: exit with extra value", func(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: validMetadata, state: orderer.ConsensusType_STATE_NORMAL} configTx := makeConfigEnvelopeWithExtraStuff(t, current, next, 2) err := mf.Apply(configTx) - assert.EqualError(t, err, "config transaction inspection failed: config update contains changes to values in group Channel") + require.EqualError(t, err, "config transaction inspection failed: config update contains changes to values in group Channel") }) t.Run("Bad: exit with extra orderer value", func(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: validMetadata, state: orderer.ConsensusType_STATE_NORMAL} configTx := makeConfigEnvelopeWithExtraStuff(t, current, next, 3) err := mf.Apply(configTx) - assert.EqualError(t, err, "config transaction inspection failed: config update contain more then just the ConsensusType value in the Orderer group") + require.EqualError(t, err, "config transaction inspection failed: config update contain more then just the ConsensusType value in the Orderer group") }) } @@ -302,7 +301,7 @@ func TestMaintenanceExtra(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_MAINTENANCE), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mf := NewMaintenanceFilter(msActive, cryptoProvider) require.NotNil(t, mf) current := consensusTypeInfo{ordererType: "kafka", metadata: nil, state: orderer.ConsensusType_STATE_MAINTENANCE} @@ -312,21 +311,21 @@ func TestMaintenanceExtra(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: validMetadata, state: orderer.ConsensusType_STATE_MAINTENANCE} configTx := makeConfigEnvelopeWithExtraStuff(t, current, next, 1) err := mf.Apply(configTx) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Good: with extra value", func(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: validMetadata, state: orderer.ConsensusType_STATE_MAINTENANCE} configTx := makeConfigEnvelopeWithExtraStuff(t, current, next, 2) err := mf.Apply(configTx) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Good: with extra orderer value", func(t *testing.T) { next := consensusTypeInfo{ordererType: "etcdraft", metadata: validMetadata, state: orderer.ConsensusType_STATE_MAINTENANCE} configTx := makeConfigEnvelopeWithExtraStuff(t, current, next, 3) err := mf.Apply(configTx) - assert.NoError(t, err) + require.NoError(t, err) }) } @@ -335,14 +334,14 @@ func TestMaintenanceMissingConsensusType(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_MAINTENANCE), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mf := NewMaintenanceFilter(msActive, cryptoProvider) require.NotNil(t, mf) current := consensusTypeInfo{ordererType: "kafka", metadata: nil, state: orderer.ConsensusType_STATE_MAINTENANCE} for i := 1; i < 4; i++ { configTx := makeConfigEnvelopeWithExtraStuff(t, current, current, i) err := mf.Apply(configTx) - assert.NoError(t, err) + require.NoError(t, err) } } diff --git a/orderer/common/msgprocessor/sigfilter_test.go b/orderer/common/msgprocessor/sigfilter_test.go index 888736ee05e..4a5fafcfbd3 100644 --- a/orderer/common/msgprocessor/sigfilter_test.go +++ b/orderer/common/msgprocessor/sigfilter_test.go @@ -17,7 +17,7 @@ import ( "github.com/hyperledger/fabric/orderer/common/msgprocessor/mocks" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mocks/sig_filter_support.go --fake-name SigFilterSupport . sigFilterSupport @@ -66,28 +66,28 @@ func newMockResources(hasPolicy bool, policyErr error) *mocks.Resources { func TestAccept(t *testing.T) { mockResources := newMockResources(true, nil) - assert.Nil(t, NewSigFilter("foo", "bar", mockResources).Apply(makeEnvelope()), "Valid envelope and good policy") + require.Nil(t, NewSigFilter("foo", "bar", mockResources).Apply(makeEnvelope()), "Valid envelope and good policy") } func TestMissingPolicy(t *testing.T) { mockResources := newMockResources(false, nil) err := NewSigFilter("foo", "bar", mockResources).Apply(makeEnvelope()) - assert.Error(t, err) - assert.Regexp(t, "could not find policy", err.Error()) + require.Error(t, err) + require.Regexp(t, "could not find policy", err.Error()) } func TestEmptyPayload(t *testing.T) { mockResources := newMockResources(true, nil) err := NewSigFilter("foo", "bar", mockResources).Apply(&cb.Envelope{}) - assert.Error(t, err) - assert.Regexp(t, "could not convert message to signedData", err.Error()) + require.Error(t, err) + require.Regexp(t, "could not convert message to signedData", err.Error()) } func TestErrorOnPolicy(t *testing.T) { mockResources := newMockResources(true, fmt.Errorf("Error")) err := NewSigFilter("foo", "bar", mockResources).Apply(makeEnvelope()) - assert.Error(t, err) - assert.Equal(t, ErrPermissionDenied, errors.Cause(err)) + require.Error(t, err) + require.Equal(t, ErrPermissionDenied, errors.Cause(err)) } func TestMaintenance(t *testing.T) { @@ -104,15 +104,15 @@ func TestMaintenance(t *testing.T) { mockResources.OrdererConfigReturns(newMockOrdererConfig(true, orderer.ConsensusType_STATE_MAINTENANCE), true) err := NewSigFilter("foo", policies.ChannelOrdererWriters, mockResources).Apply(makeEnvelope()) - assert.Error(t, err) - assert.EqualError(t, err, "Error: permission denied") + require.Error(t, err) + require.EqualError(t, err, "Error: permission denied") err = NewSigFilter("bar", policies.ChannelOrdererWriters, mockResources).Apply(makeEnvelope()) - assert.Error(t, err) - assert.EqualError(t, err, "Error: permission denied") + require.Error(t, err) + require.EqualError(t, err, "Error: permission denied") mockResources.OrdererConfigReturns(newMockOrdererConfig(true, orderer.ConsensusType_STATE_NORMAL), true) err = NewSigFilter("foo", policies.ChannelOrdererWriters, mockResources).Apply(makeEnvelope()) - assert.NoError(t, err) + require.NoError(t, err) err = NewSigFilter("bar", policies.ChannelOrdererWriters, mockResources).Apply(makeEnvelope()) - assert.NoError(t, err) + require.NoError(t, err) } diff --git a/orderer/common/msgprocessor/sizefilter_test.go b/orderer/common/msgprocessor/sizefilter_test.go index 950bdc62751..3c1f4eef0b0 100644 --- a/orderer/common/msgprocessor/sizefilter_test.go +++ b/orderer/common/msgprocessor/sizefilter_test.go @@ -13,7 +13,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" ab "github.com/hyperledger/fabric-protos-go/orderer" "github.com/hyperledger/fabric/orderer/common/msgprocessor/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestMaxBytesRule(t *testing.T) { @@ -31,25 +31,25 @@ func TestMaxBytesRule(t *testing.T) { msf := NewSizeFilter(mockResources) t.Run("Less Than", func(t *testing.T) { - assert.Nil(t, msf.Apply(makeMessage(make([]byte, dataSize-1)))) + require.Nil(t, msf.Apply(makeMessage(make([]byte, dataSize-1)))) }) t.Run("Exact", func(t *testing.T) { - assert.Nil(t, msf.Apply(makeMessage(make([]byte, dataSize)))) + require.Nil(t, msf.Apply(makeMessage(make([]byte, dataSize)))) }) t.Run("Too Big", func(t *testing.T) { - assert.NotNil(t, msf.Apply(makeMessage(make([]byte, dataSize+1)))) + require.NotNil(t, msf.Apply(makeMessage(make([]byte, dataSize+1)))) }) t.Run("Dynamic Resources", func(t *testing.T) { - assert.NotNil(t, msf.Apply(makeMessage(make([]byte, dataSize+1)))) + require.NotNil(t, msf.Apply(makeMessage(make([]byte, dataSize+1)))) mockOrdererConfig.BatchSizeReturns( &ab.BatchSize{ AbsoluteMaxBytes: maxBytes + 2, }, ) - assert.Nil(t, msf.Apply(makeMessage(make([]byte, dataSize+1)))) + require.Nil(t, msf.Apply(makeMessage(make([]byte, dataSize+1)))) }) } diff --git a/orderer/common/msgprocessor/standardchannel_test.go b/orderer/common/msgprocessor/standardchannel_test.go index 34bdc1a09fd..79cbfa92f08 100644 --- a/orderer/common/msgprocessor/standardchannel_test.go +++ b/orderer/common/msgprocessor/standardchannel_test.go @@ -17,7 +17,7 @@ import ( "github.com/hyperledger/fabric/internal/pkg/identity" "github.com/hyperledger/fabric/orderer/common/msgprocessor/mocks" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const testChannelID = "foo" @@ -56,19 +56,19 @@ func (ms *mockSystemChannelFilterSupport) OrdererConfig() (channelconfig.Orderer func TestClassifyMsg(t *testing.T) { t.Run("ConfigUpdate", func(t *testing.T) { class := (&StandardChannel{}).ClassifyMsg(&cb.ChannelHeader{Type: int32(cb.HeaderType_CONFIG_UPDATE)}) - assert.Equal(t, class, ConfigUpdateMsg) + require.Equal(t, class, ConfigUpdateMsg) }) t.Run("OrdererTx", func(t *testing.T) { class := (&StandardChannel{}).ClassifyMsg(&cb.ChannelHeader{Type: int32(cb.HeaderType_ORDERER_TRANSACTION)}) - assert.Equal(t, class, ConfigMsg) + require.Equal(t, class, ConfigMsg) }) t.Run("ConfigTx", func(t *testing.T) { class := (&StandardChannel{}).ClassifyMsg(&cb.ChannelHeader{Type: int32(cb.HeaderType_CONFIG)}) - assert.Equal(t, class, ConfigMsg) + require.Equal(t, class, ConfigMsg) }) t.Run("EndorserTx", func(t *testing.T) { class := (&StandardChannel{}).ClassifyMsg(&cb.ChannelHeader{Type: int32(cb.HeaderType_ENDORSER_TRANSACTION)}) - assert.Equal(t, class, NormalMsg) + require.Equal(t, class, NormalMsg) }) } @@ -79,10 +79,10 @@ func TestProcessNormalMsg(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_NORMAL), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cs, err := NewStandardChannel(ms, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessNormalMsg(nil) - assert.Equal(t, cs, ms.SequenceVal) - assert.Nil(t, err) + require.Equal(t, cs, ms.SequenceVal) + require.Nil(t, err) }) t.Run("Maintenance", func(t *testing.T) { ms := &mockSystemChannelFilterSupport{ @@ -90,9 +90,9 @@ func TestProcessNormalMsg(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_MAINTENANCE), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, err = NewStandardChannel(ms, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessNormalMsg(nil) - assert.EqualError(t, err, "normal transactions are rejected: maintenance mode") + require.EqualError(t, err, "normal transactions are rejected: maintenance mode") }) } @@ -104,11 +104,11 @@ func TestConfigUpdateMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) config, cs, err := NewStandardChannel(ms, NewRuleSet(nil), cryptoProvider).ProcessConfigUpdateMsg(&cb.Envelope{}) - assert.Nil(t, config) - assert.Equal(t, uint64(0), cs) - assert.EqualError(t, err, "error applying config update to existing channel 'foo': An error") + require.Nil(t, config) + require.Equal(t, uint64(0), cs) + require.EqualError(t, err, "error applying config update to existing channel 'foo': An error") }) t.Run("BadMsg", func(t *testing.T) { ms := &mockSystemChannelFilterSupport{ @@ -117,23 +117,23 @@ func TestConfigUpdateMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) config, cs, err := NewStandardChannel(ms, NewRuleSet([]Rule{EmptyRejectRule}), cryptoProvider).ProcessConfigUpdateMsg(&cb.Envelope{}) - assert.Nil(t, config) - assert.Equal(t, uint64(0), cs) - assert.NotNil(t, err) + require.Nil(t, config) + require.Equal(t, uint64(0), cs) + require.NotNil(t, err) }) t.Run("SignedEnvelopeFailure", func(t *testing.T) { ms := &mockSystemChannelFilterSupport{ OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) config, cs, err := NewStandardChannel(ms, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigUpdateMsg(nil) - assert.Nil(t, config) - assert.Equal(t, uint64(0), cs) - assert.NotNil(t, err) - assert.Regexp(t, "Marshal called with nil", err) + require.Nil(t, config) + require.Equal(t, uint64(0), cs) + require.NotNil(t, err) + require.Regexp(t, "Marshal called with nil", err) }) t.Run("Success", func(t *testing.T) { ms := &mockSystemChannelFilterSupport{ @@ -142,13 +142,13 @@ func TestConfigUpdateMsg(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_NORMAL), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) stdChan := NewStandardChannel(ms, NewRuleSet([]Rule{AcceptRule}), cryptoProvider) stdChan.maintenanceFilter = AcceptRule config, cs, err := stdChan.ProcessConfigUpdateMsg(nil) - assert.NotNil(t, config) - assert.Equal(t, cs, ms.SequenceVal) - assert.Nil(t, err) + require.NotNil(t, config) + require.Equal(t, cs, ms.SequenceVal) + require.Nil(t, err) }) } @@ -160,7 +160,7 @@ func TestProcessConfigMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = NewStandardChannel(ms, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -171,7 +171,7 @@ func TestProcessConfigMsg(t *testing.T) { }, }), }) - assert.Error(t, err) + require.Error(t, err) }) t.Run("Success", func(t *testing.T) { @@ -181,7 +181,7 @@ func TestProcessConfigMsg(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_NORMAL), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) stdChan := NewStandardChannel(ms, NewRuleSet([]Rule{AcceptRule}), cryptoProvider) stdChan.maintenanceFilter = AcceptRule config, cs, err := stdChan.ProcessConfigMsg(&cb.Envelope{ @@ -194,12 +194,12 @@ func TestProcessConfigMsg(t *testing.T) { }, }), }) - assert.NotNil(t, config) - assert.Equal(t, cs, ms.SequenceVal) - assert.Nil(t, err) + require.NotNil(t, config) + require.Equal(t, cs, ms.SequenceVal) + require.Nil(t, err) hdr, err := protoutil.ChannelHeader(config) - assert.NoError(t, err) - assert.Equal( + require.NoError(t, err) + require.Equal( t, int32(cb.HeaderType_CONFIG), hdr.Type, diff --git a/orderer/common/msgprocessor/systemchannel_test.go b/orderer/common/msgprocessor/systemchannel_test.go index 12e4d8f42cc..3bb387d84aa 100644 --- a/orderer/common/msgprocessor/systemchannel_test.go +++ b/orderer/common/msgprocessor/systemchannel_test.go @@ -23,7 +23,6 @@ import ( "github.com/hyperledger/fabric/orderer/common/msgprocessor/mocks" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -51,10 +50,10 @@ func TestProcessSystemChannelNormalMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, err = NewSystemChannel(ms, mscs, nil, cryptoProvider).ProcessNormalMsg(&cb.Envelope{}) - assert.NotNil(t, err) - assert.Regexp(t, "header not set", err.Error()) + require.NotNil(t, err) + require.Regexp(t, "header not set", err.Error()) }) t.Run("Mismatched channel ID", func(t *testing.T) { mscs := &mockSystemChannelSupport{} @@ -62,7 +61,7 @@ func TestProcessSystemChannelNormalMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, err = NewSystemChannel(ms, mscs, nil, cryptoProvider).ProcessNormalMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -72,7 +71,7 @@ func TestProcessSystemChannelNormalMsg(t *testing.T) { }, }), }) - assert.Equal(t, ErrChannelDoesNotExist, err) + require.Equal(t, ErrChannelDoesNotExist, err) }) t.Run("Good", func(t *testing.T) { mscs := &mockSystemChannelSupport{} @@ -81,7 +80,7 @@ func TestProcessSystemChannelNormalMsg(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_NORMAL), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cs, err := NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessNormalMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -91,8 +90,8 @@ func TestProcessSystemChannelNormalMsg(t *testing.T) { }, }), }) - assert.Nil(t, err) - assert.Equal(t, ms.SequenceVal, cs) + require.Nil(t, err) + require.Equal(t, ms.SequenceVal, cs) }) } @@ -104,10 +103,10 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigUpdateMsg(&cb.Envelope{}) - assert.NotNil(t, err) - assert.Regexp(t, "header not set", err.Error()) + require.NotNil(t, err) + require.Regexp(t, "header not set", err.Error()) }) t.Run("NormalUpdate", func(t *testing.T) { mscs := &mockSystemChannelSupport{} @@ -117,7 +116,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(true, orderer.ConsensusType_STATE_NORMAL), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) sysChan := NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider) sysChan.maintenanceFilter = AcceptRule config, cs, err := sysChan.ProcessConfigUpdateMsg(&cb.Envelope{ @@ -129,9 +128,9 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { }, }), }) - assert.NotNil(t, config) - assert.Equal(t, cs, ms.SequenceVal) - assert.Nil(t, err) + require.NotNil(t, config) + require.Equal(t, cs, ms.SequenceVal) + require.Nil(t, err) }) t.Run("BadNewChannelConfig", func(t *testing.T) { mscs := &mockSystemChannelSupport{ @@ -142,7 +141,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigUpdateMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -152,7 +151,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { }, }), }) - assert.Equal(t, mscs.NewChannelConfigErr, err) + require.Equal(t, mscs.NewChannelConfigErr, err) }) t.Run("BadProposedUpdate", func(t *testing.T) { mscs := &mockSystemChannelSupport{ @@ -163,7 +162,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigUpdateMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -173,7 +172,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { }, }), }) - assert.EqualError(t, err, "error validating channel creation transaction for new channel 'foodifferent', could not successfully apply update to template configuration: An error") + require.EqualError(t, err, "error validating channel creation transaction for new channel 'foodifferent', could not successfully apply update to template configuration: An error") }) t.Run("BadSignEnvelope", func(t *testing.T) { mscs := &mockSystemChannelSupport{ @@ -184,7 +183,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigUpdateMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -194,7 +193,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { }, }), }) - assert.Regexp(t, "Marshal called with nil", err) + require.Regexp(t, "Marshal called with nil", err) }) t.Run("BadByFilter", func(t *testing.T) { mscs := &mockSystemChannelSupport{ @@ -206,7 +205,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = NewSystemChannel(ms, mscs, NewRuleSet([]Rule{RejectRule}), cryptoProvider).ProcessConfigUpdateMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -216,7 +215,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { }, }), }) - assert.Equal(t, RejectRule.Apply(nil), err) + require.Equal(t, RejectRule.Apply(nil), err) }) t.Run("RejectByMaintenance", func(t *testing.T) { mscs := &mockSystemChannelSupport{ @@ -228,7 +227,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) sysChan := NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider) sysChan.maintenanceFilter = RejectRule _, _, err = sysChan.ProcessConfigUpdateMsg(&cb.Envelope{ @@ -240,7 +239,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { }, }), }) - assert.Equal(t, RejectRule.Apply(nil), errors.Cause(err)) + require.Equal(t, RejectRule.Apply(nil), errors.Cause(err)) }) t.Run("Good", func(t *testing.T) { mscs := &mockSystemChannelSupport{ @@ -252,7 +251,7 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) config, cs, err := NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigUpdateMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -262,9 +261,9 @@ func TestSystemChannelConfigUpdateMsg(t *testing.T) { }, }), }) - assert.Equal(t, cs, ms.SequenceVal) - assert.NotNil(t, config) - assert.Nil(t, err) + require.Equal(t, cs, ms.SequenceVal) + require.NotNil(t, config) + require.Nil(t, err) }) } @@ -280,7 +279,7 @@ func TestSystemChannelConfigMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -292,7 +291,7 @@ func TestSystemChannelConfigMsg(t *testing.T) { Data: []byte("hello"), }), }) - assert.Error(t, err) + require.Error(t, err) }) t.Run("Good", func(t *testing.T) { @@ -305,7 +304,7 @@ func TestSystemChannelConfigMsg(t *testing.T) { OrdererConfigVal: newMockOrdererConfig(false, orderer.ConsensusType_STATE_NORMAL), } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) sysChan := NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider) sysChan.maintenanceFilter = AcceptRule config, seq, err := sysChan.ProcessConfigMsg(&cb.Envelope{ @@ -318,12 +317,12 @@ func TestSystemChannelConfigMsg(t *testing.T) { }, }), }) - assert.Equal(t, seq, ms.SequenceVal) - assert.NotNil(t, config) - assert.Nil(t, err) + require.Equal(t, seq, ms.SequenceVal) + require.NotNil(t, config) + require.Nil(t, err) hdr, err := protoutil.ChannelHeader(config) require.NoError(t, err) - assert.Equal( + require.Equal( t, int32(cb.HeaderType_CONFIG), hdr.Type, @@ -342,7 +341,7 @@ func TestSystemChannelConfigMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -354,7 +353,7 @@ func TestSystemChannelConfigMsg(t *testing.T) { Data: []byte("hello"), }), }) - assert.Error(t, err) + require.Error(t, err) }) t.Run("WrongEnvelopeType", func(t *testing.T) { @@ -367,7 +366,7 @@ func TestSystemChannelConfigMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -388,7 +387,7 @@ func TestSystemChannelConfigMsg(t *testing.T) { }), }), }) - assert.Error(t, err) + require.Error(t, err) }) t.Run("GoodConfigMsg", func(t *testing.T) { @@ -401,7 +400,7 @@ func TestSystemChannelConfigMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) config, seq, err := NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -434,12 +433,12 @@ func TestSystemChannelConfigMsg(t *testing.T) { }), }), }) - assert.Equal(t, seq, ms.SequenceVal) - assert.NotNil(t, config) - assert.Nil(t, err) + require.Equal(t, seq, ms.SequenceVal) + require.NotNil(t, config) + require.Nil(t, err) hdr, err := protoutil.ChannelHeader(config) - assert.NoError(t, err) - assert.Equal( + require.NoError(t, err) + require.Equal( t, int32(cb.HeaderType_ORDERER_TRANSACTION), hdr.Type, @@ -457,7 +456,7 @@ func TestSystemChannelConfigMsg(t *testing.T) { OrdererConfigVal: &mocks.OrdererConfig{}, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) _, _, err = NewSystemChannel(ms, mscs, NewRuleSet([]Rule{AcceptRule}), cryptoProvider).ProcessConfigMsg(&cb.Envelope{ Payload: protoutil.MarshalOrPanic(&cb.Payload{ Header: &cb.Header{ @@ -468,7 +467,7 @@ func TestSystemChannelConfigMsg(t *testing.T) { }, }), }) - assert.Error(t, err) + require.Error(t, err) }) } @@ -487,12 +486,12 @@ func TestNewChannelConfig(t *testing.T) { capabilities.OrdererV2_0: true, } channelGroup, err := encoder.NewChannelGroup(gConf) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) ctxm, err := channelconfig.NewBundle(channelID, &cb.Config{ChannelGroup: channelGroup}, cryptoProvider) - assert.NoError(t, err) + require.NoError(t, err) originalCG := proto.Clone(ctxm.ConfigtxValidator().ConfigProto().ChannelGroup).(*cb.ConfigGroup) @@ -502,7 +501,7 @@ func TestNewChannelConfig(t *testing.T) { t.Run("BadPayload", func(t *testing.T) { _, err := templator.NewChannelConfig(&cb.Envelope{Payload: []byte("bad payload")}) - assert.Error(t, err, "Should not be able to create new channel config from bad payload.") + require.Error(t, err, "Should not be able to create new channel config from bad payload.") }) for _, tc := range []struct { @@ -742,20 +741,19 @@ func TestNewChannelConfig(t *testing.T) { } { t.Run(tc.name, func(t *testing.T) { _, err := templator.NewChannelConfig(&cb.Envelope{Payload: protoutil.MarshalOrPanic(tc.payload)}) - if assert.Error(t, err) { - assert.Regexp(t, tc.regex, err.Error()) - } + require.Error(t, err) + require.Regexp(t, tc.regex, err.Error()) }) } // Successful t.Run("Success", func(t *testing.T) { createTx, err := encoder.MakeChannelCreationTransaction("foo", nil, genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir())) - assert.Nil(t, err) + require.Nil(t, err) res, err := templator.NewChannelConfig(createTx) - assert.Nil(t, err) - assert.NotEmpty(t, res.ConfigtxValidator().ConfigProto().ChannelGroup.ModPolicy) - assert.True(t, proto.Equal(originalCG, ctxm.ConfigtxValidator().ConfigProto().ChannelGroup), "Underlying system channel config proto was mutated") + require.Nil(t, err) + require.NotEmpty(t, res.ConfigtxValidator().ConfigProto().ChannelGroup.ModPolicy) + require.True(t, proto.Equal(originalCG, ctxm.ConfigtxValidator().ConfigProto().ChannelGroup), "Underlying system channel config proto was mutated") }) // Successful new channel config type @@ -766,9 +764,9 @@ func TestNewChannelConfig(t *testing.T) { genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir()), genesisconfig.Load(genesisconfig.SampleSingleMSPSoloProfile, configtest.GetDevConfigDir()), ) - assert.Nil(t, err) + require.Nil(t, err) _, err = templator.NewChannelConfig(createTx) - assert.Nil(t, err) + require.Nil(t, err) }) } @@ -834,5 +832,5 @@ func TestZeroVersions(t *testing.T) { zeroVersions(data) - assert.True(t, proto.Equal(expected, data)) + require.True(t, proto.Equal(expected, data)) } diff --git a/orderer/common/msgprocessor/systemchannelfilter_test.go b/orderer/common/msgprocessor/systemchannelfilter_test.go index a53b9e860e4..a6211dbec83 100644 --- a/orderer/common/msgprocessor/systemchannelfilter_test.go +++ b/orderer/common/msgprocessor/systemchannelfilter_test.go @@ -20,7 +20,7 @@ import ( "github.com/hyperledger/fabric/orderer/common/msgprocessor/mocks" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mocks/metadata_validator.go --fake-name MetadataValidator . metadataValidator @@ -166,12 +166,12 @@ func TestGoodProposal(t *testing.T) { mv := &mocks.MetadataValidator{} configUpdate, err := encoder.MakeChannelCreationTransaction(newChainID, nil, genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir())) - assert.Nil(t, err, "Error constructing configtx") + require.Nil(t, err, "Error constructing configtx") ingressTx := makeConfigTxFromConfigUpdateTx(configUpdate) wrapped := wrapConfigTx(ingressTx) - assert.NoError(t, NewSystemChannelFilter(mcc.ms, mcc, mv).Apply(wrapped), "Did not accept valid transaction") + require.NoError(t, NewSystemChannelFilter(mcc.ms, mcc, mv).Apply(wrapped), "Did not accept valid transaction") } func TestProposalRejectedByConfig(t *testing.T) { @@ -182,16 +182,16 @@ func TestProposalRejectedByConfig(t *testing.T) { mv := &mocks.MetadataValidator{} configUpdate, err := encoder.MakeChannelCreationTransaction(newChainID, nil, genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir())) - assert.Nil(t, err, "Error constructing configtx") + require.Nil(t, err, "Error constructing configtx") ingressTx := makeConfigTxFromConfigUpdateTx(configUpdate) wrapped := wrapConfigTx(ingressTx) err = NewSystemChannelFilter(mcc.ms, mcc, mv).Apply(wrapped) - assert.NotNil(t, err, "Did not accept valid transaction") - assert.Regexp(t, mcc.NewChannelConfigErr.Error(), err) - assert.Len(t, mcc.newChains, 0, "Proposal should not have created a new chain") + require.NotNil(t, err, "Did not accept valid transaction") + require.Regexp(t, mcc.NewChannelConfigErr.Error(), err) + require.Len(t, mcc.newChains, 0, "Proposal should not have created a new chain") } func TestNumChainsExceeded(t *testing.T) { @@ -203,15 +203,15 @@ func TestNumChainsExceeded(t *testing.T) { mv := &mocks.MetadataValidator{} configUpdate, err := encoder.MakeChannelCreationTransaction(newChainID, nil, genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir())) - assert.Nil(t, err, "Error constructing configtx") + require.Nil(t, err, "Error constructing configtx") ingressTx := makeConfigTxFromConfigUpdateTx(configUpdate) wrapped := wrapConfigTx(ingressTx) err = NewSystemChannelFilter(mcc.ms, mcc, mv).Apply(wrapped) - assert.NotNil(t, err, "Transaction had created too many channels") - assert.Regexp(t, "exceed maximimum number", err) + require.NotNil(t, err, "Transaction had created too many channels") + require.Regexp(t, "exceed maximimum number", err) } func TestMaintenanceMode(t *testing.T) { @@ -222,13 +222,13 @@ func TestMaintenanceMode(t *testing.T) { mv := &mocks.MetadataValidator{} configUpdate, err := encoder.MakeChannelCreationTransaction(newChainID, nil, genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir())) - assert.Nil(t, err, "Error constructing configtx") + require.Nil(t, err, "Error constructing configtx") ingressTx := makeConfigTxFromConfigUpdateTx(configUpdate) wrapped := wrapConfigTx(ingressTx) err = NewSystemChannelFilter(mcc.ms, mcc, mv).Apply(wrapped) - assert.EqualError(t, err, "channel creation is not permitted: maintenance mode") + require.EqualError(t, err, "channel creation is not permitted: maintenance mode") } func TestBadProposal(t *testing.T) { @@ -237,7 +237,7 @@ func TestBadProposal(t *testing.T) { sysFilter := NewSystemChannelFilter(mcc.ms, mcc, mv) t.Run("BadPayload", func(t *testing.T) { err := sysFilter.Apply(&cb.Envelope{Payload: []byte("garbage payload")}) - assert.Regexp(t, "bad payload", err) + require.Regexp(t, "bad payload", err) }) for _, tc := range []struct { @@ -426,8 +426,8 @@ func TestBadProposal(t *testing.T) { } { t.Run(tc.name, func(t *testing.T) { err := sysFilter.Apply(&cb.Envelope{Payload: protoutil.MarshalOrPanic(tc.payload)}) - assert.NotNil(t, err) - assert.Regexp(t, tc.regexp, err.Error()) + require.NotNil(t, err) + require.Regexp(t, tc.regexp, err.Error()) }) } } @@ -441,7 +441,7 @@ func TestFailedMetadataValidation(t *testing.T) { mcc := newMockChainCreator() configUpdate, err := encoder.MakeChannelCreationTransaction(newChainID, nil, genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir())) - assert.NoError(t, err, "Error constructing configtx") + require.NoError(t, err, "Error constructing configtx") ingressTx := makeConfigTxFromConfigUpdateTx(configUpdate) wrapped := wrapConfigTx(ingressTx) @@ -449,12 +449,12 @@ func TestFailedMetadataValidation(t *testing.T) { err = NewSystemChannelFilter(mcc.ms, mcc, mv).Apply(wrapped) // validate that the filter application returns error - assert.EqualError(t, err, "consensus metadata update for channel creation is invalid: bananas", "Transaction metadata validation fails") + require.EqualError(t, err, "consensus metadata update for channel creation is invalid: bananas", "Transaction metadata validation fails") // validate arguments to ValidateConsensusMetadata - assert.Equal(t, 1, mv.ValidateConsensusMetadataCallCount()) + require.Equal(t, 1, mv.ValidateConsensusMetadataCallCount()) om, nm, nc := mv.ValidateConsensusMetadataArgsForCall(0) - assert.True(t, nc) - assert.Equal(t, []byte("old consensus metadata"), om) - assert.Equal(t, []byte("new consensus metadata"), nm) + require.True(t, nc) + require.Equal(t, []byte("old consensus metadata"), om) + require.Equal(t, []byte("new consensus metadata"), nm) } diff --git a/orderer/common/multichannel/blockwriter_test.go b/orderer/common/multichannel/blockwriter_test.go index a9e8f4f434a..c51941dc9b0 100644 --- a/orderer/common/multichannel/blockwriter_test.go +++ b/orderer/common/multichannel/blockwriter_test.go @@ -29,7 +29,6 @@ import ( "github.com/hyperledger/fabric/orderer/common/blockcutter/mock" "github.com/hyperledger/fabric/orderer/common/multichannel/mocks" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -66,9 +65,9 @@ func TestCreateBlock(t *testing.T) { {Payload: []byte("some other bytes")}, }) - assert.Equal(t, seedBlock.Header.Number+1, block.Header.Number) - assert.Equal(t, protoutil.BlockDataHash(block.Data), block.Header.DataHash) - assert.Equal(t, protoutil.BlockHeaderHash(seedBlock.Header), block.Header.PreviousHash) + require.Equal(t, seedBlock.Header.Number+1, block.Header.Number) + require.Equal(t, protoutil.BlockDataHash(block.Data), block.Header.DataHash) + require.Equal(t, protoutil.BlockHeaderHash(seedBlock.Header), block.Header.PreviousHash) } func TestBlockSignature(t *testing.T) { @@ -80,7 +79,7 @@ func TestBlockSignature(t *testing.T) { require.NoError(t, err) l, err := rlf.GetOrCreate("mychannel") - assert.NoError(t, err) + require.NoError(t, err) lastBlock := protoutil.NewBlock(0, nil) l.Append(lastBlock) @@ -98,9 +97,9 @@ func TestBlockSignature(t *testing.T) { bw.commitBlock(consensusMetadata) it, seq := l.Iterator(&orderer.SeekPosition{Type: &orderer.SeekPosition_Newest{}}) - assert.Equal(t, uint64(1), seq) + require.Equal(t, uint64(1), seq) committedBlock, status := it.Next() - assert.Equal(t, cb.Status_SUCCESS, status) + require.Equal(t, cb.Status_SUCCESS, status) md := protoutil.GetMetadataFromBlockOrPanic(committedBlock, cb.BlockMetadataIndex_SIGNATURES) @@ -109,8 +108,8 @@ func TestBlockSignature(t *testing.T) { ConsenterMetadata: protoutil.MarshalOrPanic(&cb.Metadata{Value: consensusMetadata}), }) - assert.Equal(t, expectedMetadataValue, md.Value, "Value contains the consensus metadata and the last config") - assert.NotNil(t, md.Signatures, "Should have signature") + require.Equal(t, expectedMetadataValue, md.Value, "Value contains the consensus metadata and the last config") + require.NotNil(t, md.Signatures, "Should have signature") } func TestBlockLastConfig(t *testing.T) { @@ -131,24 +130,24 @@ func TestBlockLastConfig(t *testing.T) { block := protoutil.NewBlock(newBlockNum, []byte("foo")) bw.addLastConfig(block) - assert.Equal(t, newBlockNum, bw.lastConfigBlockNum) - assert.Equal(t, newConfigSeq, bw.lastConfigSeq) + require.Equal(t, newBlockNum, bw.lastConfigBlockNum) + require.Equal(t, newConfigSeq, bw.lastConfigSeq) md := protoutil.GetMetadataFromBlockOrPanic(block, cb.BlockMetadataIndex_LAST_CONFIG) - assert.NotNil(t, md.Value, "Value not be empty in this case") - assert.Nil(t, md.Signatures, "Should not have signature") + require.NotNil(t, md.Value, "Value not be empty in this case") + require.Nil(t, md.Signatures, "Should not have signature") lc := protoutil.GetLastConfigIndexFromBlockOrPanic(block) - assert.Equal(t, newBlockNum, lc) + require.Equal(t, newBlockNum, lc) } func TestWriteConfigBlock(t *testing.T) { // TODO, use assert.PanicsWithValue once available t.Run("EmptyBlock", func(t *testing.T) { - assert.Panics(t, func() { (&BlockWriter{}).WriteConfigBlock(&cb.Block{}, nil) }) + require.Panics(t, func() { (&BlockWriter{}).WriteConfigBlock(&cb.Block{}, nil) }) }) t.Run("BadPayload", func(t *testing.T) { - assert.Panics(t, func() { + require.Panics(t, func() { (&BlockWriter{}).WriteConfigBlock(&cb.Block{ Data: &cb.BlockData{ Data: [][]byte{ @@ -159,7 +158,7 @@ func TestWriteConfigBlock(t *testing.T) { }) }) t.Run("MissingHeader", func(t *testing.T) { - assert.Panics(t, func() { + require.Panics(t, func() { (&BlockWriter{}).WriteConfigBlock(&cb.Block{ Data: &cb.BlockData{ Data: [][]byte{ @@ -172,7 +171,7 @@ func TestWriteConfigBlock(t *testing.T) { }) }) t.Run("BadChannelHeader", func(t *testing.T) { - assert.Panics(t, func() { + require.Panics(t, func() { (&BlockWriter{}).WriteConfigBlock(&cb.Block{ Data: &cb.BlockData{ Data: [][]byte{ @@ -189,7 +188,7 @@ func TestWriteConfigBlock(t *testing.T) { }) }) t.Run("BadChannelHeaderType", func(t *testing.T) { - assert.Panics(t, func() { + require.Panics(t, func() { (&BlockWriter{}).WriteConfigBlock(&cb.Block{ Data: &cb.BlockData{ Data: [][]byte{ @@ -221,7 +220,7 @@ func TestGoodWriteConfig(t *testing.T) { fakeConfig.ConsensusTypeReturns("solo") cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockValidator := &mocks.ConfigTXValidator{} mockValidator.ChannelIDReturns("testchannelid") @@ -246,12 +245,12 @@ func TestGoodWriteConfig(t *testing.T) { bw.committingBlock.Unlock() cBlock := blockledger.GetBlock(l, block.Header.Number) - assert.Equal(t, block.Header, cBlock.Header) - assert.Equal(t, block.Data, cBlock.Data) + require.Equal(t, block.Header, cBlock.Header) + require.Equal(t, block.Data, cBlock.Data) omd, err := protoutil.GetConsenterMetadataFromBlock(block) require.NoError(t, err) - assert.Equal(t, consenterMetadata, omd.Value) + require.Equal(t, consenterMetadata, omd.Value) } func TestMigrationWriteConfig(t *testing.T) { @@ -269,7 +268,7 @@ func TestMigrationWriteConfig(t *testing.T) { fakeConfig.ConsensusStateReturns(orderer.ConsensusType_STATE_MAINTENANCE) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockValidator := &mocks.ConfigTXValidator{} mockValidator.ChannelIDReturns("testchannelid") @@ -295,11 +294,11 @@ func TestMigrationWriteConfig(t *testing.T) { bw.committingBlock.Unlock() cBlock := blockledger.GetBlock(l, block.Header.Number) - assert.Equal(t, block.Header, cBlock.Header) - assert.Equal(t, block.Data, cBlock.Data) + require.Equal(t, block.Header, cBlock.Header) + require.Equal(t, block.Data, cBlock.Data) omd := protoutil.GetMetadataFromBlockOrPanic(block, cb.BlockMetadataIndex_ORDERER) - assert.Equal(t, []byte(nil), omd.Value) + require.Equal(t, []byte(nil), omd.Value) } func TestRaceWriteConfig(t *testing.T) { @@ -316,7 +315,7 @@ func TestRaceWriteConfig(t *testing.T) { fakeConfig.ConsensusTypeReturns("solo") cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mockValidator := &mocks.ConfigTXValidator{} bw := newBlockWriter(genesisBlockSys, nil, @@ -349,36 +348,36 @@ func TestRaceWriteConfig(t *testing.T) { bw.committingBlock.Unlock() cBlock := blockledger.GetBlock(l, block1.Header.Number) - assert.Equal(t, block1.Header, cBlock.Header) - assert.Equal(t, block1.Data, cBlock.Data) + require.Equal(t, block1.Header, cBlock.Header) + require.Equal(t, block1.Data, cBlock.Data) expectedLastConfigBlockNumber := block1.Header.Number testLastConfigBlockNumber(t, block1, expectedLastConfigBlockNumber) cBlock = blockledger.GetBlock(l, block2.Header.Number) - assert.Equal(t, block2.Header, cBlock.Header) - assert.Equal(t, block2.Data, cBlock.Data) + require.Equal(t, block2.Header, cBlock.Header) + require.Equal(t, block2.Data, cBlock.Data) expectedLastConfigBlockNumber = block2.Header.Number testLastConfigBlockNumber(t, block2, expectedLastConfigBlockNumber) omd, err := protoutil.GetConsenterMetadataFromBlock(block1) require.NoError(t, err) - assert.Equal(t, consenterMetadata1, omd.Value) + require.Equal(t, consenterMetadata1, omd.Value) } func testLastConfigBlockNumber(t *testing.T, block *cb.Block, expectedBlockNumber uint64) { metadata := &cb.Metadata{} err := proto.Unmarshal(block.Metadata.Metadata[cb.BlockMetadataIndex_SIGNATURES], metadata) - assert.NoError(t, err, "Block should carry SIGNATURES metadata item") + require.NoError(t, err, "Block should carry SIGNATURES metadata item") obm := &cb.OrdererBlockMetadata{} err = proto.Unmarshal(metadata.Value, obm) - assert.NoError(t, err, "Block SIGNATURES should carry OrdererBlockMetadata") - assert.Equal(t, expectedBlockNumber, obm.LastConfig.Index, "SIGNATURES value should point to last config block") + require.NoError(t, err, "Block SIGNATURES should carry OrdererBlockMetadata") + require.Equal(t, expectedBlockNumber, obm.LastConfig.Index, "SIGNATURES value should point to last config block") metadata = &cb.Metadata{} err = proto.Unmarshal(block.Metadata.Metadata[cb.BlockMetadataIndex_LAST_CONFIG], metadata) - assert.NoError(t, err, "Block should carry LAST_CONFIG metadata item") + require.NoError(t, err, "Block should carry LAST_CONFIG metadata item") lastConfig := &cb.LastConfig{} err = proto.Unmarshal(metadata.Value, lastConfig) - assert.NoError(t, err, "LAST_CONFIG metadata item should carry last config value") - assert.Equal(t, expectedBlockNumber, lastConfig.Index, "LAST_CONFIG value should point to last config block") + require.NoError(t, err, "LAST_CONFIG metadata item should carry last config value") + require.Equal(t, expectedBlockNumber, lastConfig.Index, "LAST_CONFIG value should point to last config block") } diff --git a/orderer/common/multichannel/chainsupport_test.go b/orderer/common/multichannel/chainsupport_test.go index b11a7d8d68b..7d328f2804f 100644 --- a/orderer/common/multichannel/chainsupport_test.go +++ b/orderer/common/multichannel/chainsupport_test.go @@ -24,7 +24,7 @@ import ( "github.com/hyperledger/fabric/orderer/common/multichannel/mocks" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mocks/policy.go --fake-name Policy . policy @@ -42,14 +42,14 @@ func TestChainSupportBlock(t *testing.T) { iterator.NextReturns(&common.Block{Header: &common.BlockHeader{Number: 99}}, common.Status_SUCCESS) ledger.IteratorReturns(iterator, 99) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cs := &ChainSupport{ ledgerResources: &ledgerResources{ReadWriter: ledger}, BCCSP: cryptoProvider, } - assert.Nil(t, cs.Block(100)) - assert.Equal(t, uint64(99), cs.Block(99).Header.Number) + require.Nil(t, cs.Block(100)) + require.Equal(t, uint64(99), cs.Block(99).Header.Number) } type mutableResourcesMock struct { @@ -85,7 +85,7 @@ func TestVerifyBlockSignature(t *testing.T) { Resources: mockResources, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) cs := &ChainSupport{ ledgerResources: &ledgerResources{ configResources: &configResources{ @@ -100,25 +100,25 @@ func TestVerifyBlockSignature(t *testing.T) { // and thus policy cannot be found mockPolicyManager.GetPolicyReturns(nil, false) err = cs.VerifyBlockSignature([]*protoutil.SignedData{}, nil) - assert.EqualError(t, err, "policy /Channel/Orderer/BlockValidation wasn't found") + require.EqualError(t, err, "policy /Channel/Orderer/BlockValidation wasn't found") mockPolicyManager.GetPolicyReturns(mockPolicy, true) // Scenario II: Policy manager finds policy, but it evaluates // to error. mockPolicy.EvaluateSignedDataReturns(errors.New("invalid signature")) err = cs.VerifyBlockSignature([]*protoutil.SignedData{}, nil) - assert.EqualError(t, err, "block verification failed: invalid signature") + require.EqualError(t, err, "block verification failed: invalid signature") // Scenario III: Policy manager finds policy, and it evaluates to success mockPolicy.EvaluateSignedDataReturns(nil) - assert.NoError(t, cs.VerifyBlockSignature([]*protoutil.SignedData{}, nil)) + require.NoError(t, cs.VerifyBlockSignature([]*protoutil.SignedData{}, nil)) // Scenario IV: A bad config envelope is passed err = cs.VerifyBlockSignature([]*protoutil.SignedData{}, &common.ConfigEnvelope{}) - assert.EqualError(t, err, "channelconfig Config cannot be nil") + require.EqualError(t, err, "channelconfig Config cannot be nil") // Scenario V: A valid config envelope is passed - assert.NoError(t, cs.VerifyBlockSignature([]*protoutil.SignedData{}, testConfigEnvelope(t))) + require.NoError(t, cs.VerifyBlockSignature([]*protoutil.SignedData{}, testConfigEnvelope(t))) } @@ -139,7 +139,7 @@ func TestConsensusMetadataValidation(t *testing.T) { newConsensusMetadataVal: newConsensusMetadata, } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) mv := &msgprocessormocks.MetadataValidator{} cs := &ChainSupport{ ledgerResources: &ledgerResources{ @@ -154,30 +154,30 @@ func TestConsensusMetadataValidation(t *testing.T) { // case 1: valid consensus metadata update _, err = cs.ProposeConfigUpdate(&common.Envelope{}) - assert.NoError(t, err) + require.NoError(t, err) // validate arguments to ValidateConsensusMetadata - assert.Equal(t, 1, mv.ValidateConsensusMetadataCallCount()) + require.Equal(t, 1, mv.ValidateConsensusMetadataCallCount()) om, nm, nc := mv.ValidateConsensusMetadataArgsForCall(0) - assert.False(t, nc) - assert.Equal(t, oldConsensusMetadata, om) - assert.Equal(t, newConsensusMetadata, nm) + require.False(t, nc) + require.Equal(t, oldConsensusMetadata, om) + require.Equal(t, newConsensusMetadata, nm) // case 2: invalid consensus metadata update mv.ValidateConsensusMetadataReturns(errors.New("bananas")) _, err = cs.ProposeConfigUpdate(&common.Envelope{}) - assert.EqualError(t, err, "consensus metadata update for channel config update is invalid: bananas") + require.EqualError(t, err, "consensus metadata update for channel config update is invalid: bananas") } func testConfigEnvelope(t *testing.T) *common.ConfigEnvelope { conf := genesisconfig.Load(genesisconfig.SampleInsecureSoloProfile, configtest.GetDevConfigDir()) group, err := encoder.NewChannelGroup(conf) - assert.NoError(t, err) + require.NoError(t, err) group.Groups["Orderer"].Values["ConsensusType"].Value, err = proto.Marshal(&orderer.ConsensusType{ Metadata: []byte("new consensus metadata"), }) - assert.NoError(t, err) - assert.NotNil(t, group) + require.NoError(t, err) + require.NotNil(t, group) return &common.ConfigEnvelope{ Config: &common.Config{ ChannelGroup: group, diff --git a/orderer/common/multichannel/registrar_test.go b/orderer/common/multichannel/registrar_test.go index bfd4468bc4e..be59258bad4 100644 --- a/orderer/common/multichannel/registrar_test.go +++ b/orderer/common/multichannel/registrar_test.go @@ -34,7 +34,6 @@ import ( "github.com/hyperledger/fabric/orderer/consensus" "github.com/hyperledger/fabric/protoutil" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -109,9 +108,9 @@ func testMessageOrderAndRetrieval(maxMessageCount uint32, chainID string, chainS it, _ := lr.Iterator(&ab.SeekPosition{Type: &ab.SeekPosition_Specified{Specified: &ab.SeekSpecified{Number: 1}}}) defer it.Close() block, status := it.Next() - assert.Equal(t, cb.Status_SUCCESS, status, "Could not retrieve block") + require.Equal(t, cb.Status_SUCCESS, status, "Could not retrieve block") for i := uint32(0); i < maxMessageCount; i++ { - assert.True(t, proto.Equal(messages[i], protoutil.ExtractEnvelopeOrPanic(block, int(i))), "Block contents wrong at index %d", i) + require.True(t, proto.Equal(messages[i], protoutil.ExtractEnvelopeOrPanic(block, int(i))), "Block contents wrong at index %d", i) } } @@ -144,7 +143,7 @@ func TestConfigTx(t *testing.T) { rl.Append(block) pctx := configTx(rl) - assert.True(t, proto.Equal(pctx, ctx), "Did not select most recent config transaction") + require.True(t, proto.Equal(pctx, ctx), "Did not select most recent config transaction") }) } @@ -154,7 +153,7 @@ func TestNewRegistrar(t *testing.T) { genesisBlockSys := encoder.New(confSys).GenesisBlock() cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) // This test checks to make sure the orderer can come up if it cannot find any chains t.Run("No chains", func(t *testing.T) { @@ -169,16 +168,16 @@ func TestNewRegistrar(t *testing.T) { consenters["etcdraft"] = &mockConsenter{} var manager *Registrar - assert.NotPanics(t, func() { + require.NotPanics(t, func() { manager = NewRegistrar(localconfig.TopLevel{}, lf, mockCrypto(), &disabled.Provider{}, cryptoProvider) manager.Initialize(consenters) }, "Should not panic when starting without a system channel") require.NotNil(t, manager) list := manager.ChannelList() - assert.Equal(t, types.ChannelList{}, list) + require.Equal(t, types.ChannelList{}, list) info, err := manager.ChannelInfo("my-channel") - assert.EqualError(t, err, types.ErrChannelNotExist.Error()) - assert.Equal(t, types.ChannelInfo{}, info) + require.EqualError(t, err, types.ErrChannelNotExist.Error()) + require.Equal(t, types.ChannelInfo{}, info) }) // This test checks to make sure that the orderer refuses to come up if there are multiple system channels @@ -192,16 +191,16 @@ func TestNewRegistrar(t *testing.T) { for _, id := range []string{"foo", "bar"} { rl, err := lf.GetOrCreate(id) - assert.NoError(t, err) + require.NoError(t, err) err = rl.Append(encoder.New(confSys).GenesisBlockForChannel(id)) - assert.NoError(t, err) + require.NoError(t, err) } consenters := make(map[string]consensus.Consenter) consenters[confSys.Orderer.OrdererType] = &mockConsenter{} - assert.Panics(t, func() { + require.Panics(t, func() { NewRegistrar(localconfig.TopLevel{}, lf, mockCrypto(), &disabled.Provider{}, cryptoProvider).Initialize(consenters) }, "Two system channels should have caused panic") }) @@ -221,15 +220,15 @@ func TestNewRegistrar(t *testing.T) { manager.Initialize(consenters) chainSupport := manager.GetChain("Fake") - assert.Nilf(t, chainSupport, "Should not have found a chain that was not created") + require.Nilf(t, chainSupport, "Should not have found a chain that was not created") chainSupport = manager.GetChain("testchannelid") - assert.NotNilf(t, chainSupport, "Should have gotten chain which was initialized by ledger") + require.NotNilf(t, chainSupport, "Should have gotten chain which was initialized by ledger") list := manager.ChannelList() require.NotNil(t, list.SystemChannel) - assert.Equal( + require.Equal( t, types.ChannelList{ SystemChannel: &types.ChannelInfoShort{Name: "testchannelid", URL: ""}, @@ -238,8 +237,8 @@ func TestNewRegistrar(t *testing.T) { ) info, err := manager.ChannelInfo("testchannelid") - assert.NoError(t, err) - assert.Equal(t, + require.NoError(t, err) + require.Equal(t, types.ChannelInfo{Name: "testchannelid", URL: "", ClusterRelation: "none", Status: "active", Height: 1}, info, ) @@ -254,7 +253,7 @@ func TestCreateChain(t *testing.T) { genesisBlockSys := encoder.New(confSys).GenesisBlock() cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) t.Run("Create chain", func(t *testing.T) { tmpdir, err := ioutil.TempDir("", "registrar_test-") @@ -270,20 +269,20 @@ func TestCreateChain(t *testing.T) { manager.Initialize(consenters) ledger, err := lf.GetOrCreate("mychannel") - assert.NoError(t, err) + require.NoError(t, err) genesisBlock := encoder.New(confSys).GenesisBlockForChannel("mychannel") ledger.Append(genesisBlock) // Before creating the chain, it doesn't exist - assert.Nil(t, manager.GetChain("mychannel")) + require.Nil(t, manager.GetChain("mychannel")) // After creating the chain, it exists manager.CreateChain("mychannel") chain := manager.GetChain("mychannel") - assert.NotNil(t, chain) + require.NotNil(t, chain) list := manager.ChannelList() - assert.Equal( + require.Equal( t, types.ChannelList{ SystemChannel: &types.ChannelInfoShort{Name: "testchannelid", URL: ""}, @@ -292,15 +291,15 @@ func TestCreateChain(t *testing.T) { ) info, err := manager.ChannelInfo("testchannelid") - assert.NoError(t, err) - assert.Equal(t, + require.NoError(t, err) + require.Equal(t, types.ChannelInfo{Name: "testchannelid", URL: "", ClusterRelation: types.ClusterRelationMember, Status: types.StatusActive, Height: 1}, info, ) info, err = manager.ChannelInfo("mychannel") - assert.NoError(t, err) - assert.Equal(t, + require.NoError(t, err) + require.Equal(t, types.ChannelInfo{Name: "mychannel", URL: "", ClusterRelation: types.ClusterRelationMember, Status: types.StatusActive, Height: 1}, info, ) @@ -308,12 +307,12 @@ func TestCreateChain(t *testing.T) { // A subsequent creation, replaces the chain. manager.CreateChain("mychannel") chain2 := manager.GetChain("mychannel") - assert.NotNil(t, chain2) + require.NotNil(t, chain2) // They are not the same - assert.NotEqual(t, chain, chain2) + require.NotEqual(t, chain, chain2) // The old chain is halted _, ok := <-chain.Chain.(*mockChainCluster).queue - assert.False(t, ok) + require.False(t, ok) // The new chain is not halted: Close the channel to prove that. close(chain2.Chain.(*mockChainCluster).queue) @@ -338,22 +337,22 @@ func TestCreateChain(t *testing.T) { orglessChannelConf := genesisconfig.Load(genesisconfig.SampleSingleMSPChannelProfile, configtest.GetDevConfigDir()) orglessChannelConf.Application.Organizations = nil envConfigUpdate, err := encoder.MakeChannelCreationTransaction(newChainID, mockCrypto(), orglessChannelConf) - assert.NoError(t, err, "Constructing chain creation tx") + require.NoError(t, err, "Constructing chain creation tx") res, err := manager.NewChannelConfig(envConfigUpdate) - assert.NoError(t, err, "Constructing initial channel config") + require.NoError(t, err, "Constructing initial channel config") configEnv, err := res.ConfigtxValidator().ProposeConfigUpdate(envConfigUpdate) - assert.NoError(t, err, "Proposing initial update") - assert.Equal(t, expectedLastConfigSeq, configEnv.GetConfig().Sequence, "Sequence of config envelope for new channel should always be set to %d", expectedLastConfigSeq) + require.NoError(t, err, "Proposing initial update") + require.Equal(t, expectedLastConfigSeq, configEnv.GetConfig().Sequence, "Sequence of config envelope for new channel should always be set to %d", expectedLastConfigSeq) ingressTx, err := protoutil.CreateSignedEnvelope(cb.HeaderType_CONFIG, newChainID, mockCrypto(), configEnv, msgVersion, epoch) - assert.NoError(t, err, "Creating ingresstx") + require.NoError(t, err, "Creating ingresstx") wrapped := wrapConfigTx(ingressTx) chainSupport := manager.GetChain(manager.SystemChannelID()) - assert.NotNilf(t, chainSupport, "Could not find system channel") + require.NotNilf(t, chainSupport, "Could not find system channel") chainSupport.Configure(wrapped, 0) func() { @@ -367,7 +366,7 @@ func TestCreateChain(t *testing.T) { t.Fatalf("Should have had only one message in the orderer transaction block") } - assert.True(t, proto.Equal(wrapped, protoutil.UnmarshalEnvelopeOrPanic(block.Data.Data[0])), "Orderer config block contains wrong transaction") + require.True(t, proto.Equal(wrapped, protoutil.UnmarshalEnvelopeOrPanic(block.Data.Data[0])), "Orderer config block contains wrong transaction") }() chainSupport = manager.GetChain(newChainID) @@ -394,7 +393,7 @@ func TestCreateChain(t *testing.T) { t.Fatalf("Should have had only one message in the new genesis block") } - assert.True(t, proto.Equal(ingressTx, protoutil.UnmarshalEnvelopeOrPanic(block.Data.Data[0])), "Genesis block contains wrong transaction") + require.True(t, proto.Equal(ingressTx, protoutil.UnmarshalEnvelopeOrPanic(block.Data.Data[0])), "Genesis block contains wrong transaction") block, status = it.Next() if status != cb.Status_SUCCESS { @@ -407,10 +406,10 @@ func TestCreateChain(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) rcs, err := newChainSupport(manager, chainSupport.ledgerResources, consenters, mockCrypto(), blockcutter.NewMetrics(&disabled.Provider{}), cryptoProvider) - assert.NoError(t, err) - assert.Equal(t, expectedLastConfigSeq, rcs.lastConfigSeq, "On restart, incorrect lastConfigSeq") + require.NoError(t, err) + require.Equal(t, expectedLastConfigSeq, rcs.lastConfigSeq, "On restart, incorrect lastConfigSeq") }) } @@ -430,15 +429,15 @@ func TestResourcesCheck(t *testing.T) { mockResources.ChannelConfigReturns(mockChannel) err := checkResources(mockResources) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("MissingOrdererConfigPanic", func(t *testing.T) { mockResources.OrdererConfigReturns(nil, false) err := checkResources(mockResources) - assert.Error(t, err) - assert.Regexp(t, "config does not contain orderer config", err.Error()) + require.Error(t, err) + require.Regexp(t, "config does not contain orderer config", err.Error()) }) t.Run("MissingOrdererCapability", func(t *testing.T) { @@ -446,8 +445,8 @@ func TestResourcesCheck(t *testing.T) { mockOrdererCaps.SupportedReturns(errors.New("An error")) err := checkResources(mockResources) - assert.Error(t, err) - assert.Regexp(t, "config requires unsupported orderer capabilities:", err.Error()) + require.Error(t, err) + require.Regexp(t, "config requires unsupported orderer capabilities:", err.Error()) // reset mockOrdererCaps.SupportedReturns(nil) @@ -457,14 +456,14 @@ func TestResourcesCheck(t *testing.T) { mockChannelCaps.SupportedReturns(errors.New("An error")) err := checkResources(mockResources) - assert.Error(t, err) - assert.Regexp(t, "config requires unsupported channel capabilities:", err.Error()) + require.Error(t, err) + require.Regexp(t, "config requires unsupported channel capabilities:", err.Error()) }) t.Run("MissingOrdererConfigPanic", func(t *testing.T) { mockResources.OrdererConfigReturns(nil, false) - assert.Panics(t, func() { + require.Panics(t, func() { checkResourcesOrPanic(mockResources) }) }) @@ -477,7 +476,7 @@ func TestBroadcastChannelSupport(t *testing.T) { genesisBlockSys := encoder.New(confSys).GenesisBlock() cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) t.Run("Rejection", func(t *testing.T) { tmpdir, err := ioutil.TempDir("", "registrar_test-") @@ -491,7 +490,7 @@ func TestBroadcastChannelSupport(t *testing.T) { randomValue := 1 configTx := makeConfigTx("testchannelid", randomValue) _, _, _, err = registrar.BroadcastChannelSupport(configTx) - assert.Error(t, err, "Messages of type HeaderType_CONFIG should return an error.") + require.Error(t, err, "Messages of type HeaderType_CONFIG should return an error.") }) t.Run("No system channel", func(t *testing.T) { @@ -508,8 +507,8 @@ func TestBroadcastChannelSupport(t *testing.T) { registrar.Initialize(mockConsenters) configTx := makeConfigTxFull("testchannelid", 1) _, _, _, err = registrar.BroadcastChannelSupport(configTx) - assert.Error(t, err) - assert.Equal(t, "channel creation request not allowed because the orderer system channel is not defined", err.Error()) + require.Error(t, err) + require.Equal(t, "channel creation request not allowed because the orderer system channel is not defined", err.Error()) }) } @@ -523,7 +522,7 @@ func TestRegistrar_JoinChannel(t *testing.T) { genesisBlockApp := encoder.New(confApp).GenesisBlockForChannel("my-channel") cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) t.Run("Reject join when system channel exists", func(t *testing.T) { tmpdir, err := ioutil.TempDir("", "registrar_test-") @@ -536,8 +535,8 @@ func TestRegistrar_JoinChannel(t *testing.T) { registrar.Initialize(mockConsenters) info, err := registrar.JoinChannel("some-app-channel", &cb.Block{}, true) - assert.EqualError(t, err, "system channel exists") - assert.Equal(t, types.ChannelInfo{}, info) + require.EqualError(t, err, "system channel exists") + require.Equal(t, types.ChannelInfo{}, info) }) t.Run("Reject join when channel exists", func(t *testing.T) { @@ -554,18 +553,18 @@ func TestRegistrar_JoinChannel(t *testing.T) { registrar.Initialize(mockConsenters) ledger, err := ledgerFactory.GetOrCreate("my-channel") - assert.NoError(t, err) + require.NoError(t, err) ledger.Append(genesisBlockApp) // Before creating the chain, it doesn't exist - assert.Nil(t, registrar.GetChain("my-channel")) + require.Nil(t, registrar.GetChain("my-channel")) // After creating the chain, it exists registrar.CreateChain("my-channel") - assert.NotNil(t, registrar.GetChain("my-channel")) + require.NotNil(t, registrar.GetChain("my-channel")) info, err := registrar.JoinChannel("my-channel", &cb.Block{}, true) - assert.EqualError(t, err, "channel already exists") - assert.Equal(t, types.ChannelInfo{}, info) + require.EqualError(t, err, "channel already exists") + require.Equal(t, types.ChannelInfo{}, info) }) t.Run("Reject system channel join when app channels exist", func(t *testing.T) { @@ -582,18 +581,18 @@ func TestRegistrar_JoinChannel(t *testing.T) { registrar.Initialize(mockConsenters) ledger, err := ledgerFactory.GetOrCreate("my-channel") - assert.NoError(t, err) + require.NoError(t, err) ledger.Append(genesisBlockApp) // Before creating the chain, it doesn't exist - assert.Nil(t, registrar.GetChain("my-channel")) + require.Nil(t, registrar.GetChain("my-channel")) // After creating the chain, it exists registrar.CreateChain("my-channel") - assert.NotNil(t, registrar.GetChain("my-channel")) + require.NotNil(t, registrar.GetChain("my-channel")) info, err := registrar.JoinChannel("sys-channel", &cb.Block{}, false) - assert.EqualError(t, err, "application channels already exist") - assert.Equal(t, types.ChannelInfo{}, info) + require.EqualError(t, err, "application channels already exist") + require.Equal(t, types.ChannelInfo{}, info) }) t.Run("no etcdraft consenter without system channel", func(t *testing.T) { @@ -609,7 +608,7 @@ func TestRegistrar_JoinChannel(t *testing.T) { config.General.GenesisFile = "" registrar := NewRegistrar(config, ledgerFactory, mockCrypto(), &disabled.Provider{}, cryptoProvider) - assert.Panics(t, func() { registrar.Initialize(mockConsenters) }) + require.Panics(t, func() { registrar.Initialize(mockConsenters) }) }) t.Run("Join app channel as member without on boarding", func(t *testing.T) { @@ -637,13 +636,13 @@ func TestRegistrar_JoinChannel(t *testing.T) { registrar.Initialize(mockConsenters) // Before join the chain, it doesn't exist - assert.Nil(t, registrar.GetChain("my-raft-channel")) + require.Nil(t, registrar.GetChain("my-raft-channel")) info, err := registrar.JoinChannel("my-raft-channel", genesisBlockAppRaft, true) - assert.NoError(t, err) - assert.Equal(t, types.ChannelInfo{Name: "my-raft-channel", URL: "", ClusterRelation: "member", Status: "active", Height: 0x1}, info) + require.NoError(t, err) + require.Equal(t, types.ChannelInfo{Name: "my-raft-channel", URL: "", ClusterRelation: "member", Status: "active", Height: 0x1}, info) // After creating the chain, it exists - assert.NotNil(t, registrar.GetChain("my-raft-channel")) + require.NotNil(t, registrar.GetChain("my-raft-channel")) }) } diff --git a/orderer/common/onboarding/onboarding_test.go b/orderer/common/onboarding/onboarding_test.go index 9ad5561b8ed..46332246669 100644 --- a/orderer/common/onboarding/onboarding_test.go +++ b/orderer/common/onboarding/onboarding_test.go @@ -42,8 +42,8 @@ import ( "github.com/onsi/gomega/gbytes" "github.com/onsi/gomega/gexec" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -184,7 +184,7 @@ func (ds *deliverServer) deliverBlocks(stream orderer.AtomicBroadcast_DeliverSer func loadPEM(cryptoPath, suffix string, t *testing.T) []byte { ordererTLSPath := filepath.Join(cryptoPath, "ordererOrganizations", "example.com", "orderers", "127.0.0.1.example.com", "tls") b, err := ioutil.ReadFile(filepath.Join(ordererTLSPath, suffix)) - assert.NoError(t, err) + require.NoError(t, err) return b } @@ -245,14 +245,14 @@ func TestOnboardingChannelUnavailable(t *testing.T) { systemChannelBlockPath := generateBootstrapBlock(t, tempDir, configtxgen, "system", "SampleSoloSystemChannel") systemChannelBlockBytes, err := ioutil.ReadFile(systemChannelBlockPath) - assert.NoError(t, err) + require.NoError(t, err) applicationChannelBlockPath := generateBootstrapBlock(t, tempDir, configtxgen, "testchannel", "SampleOrgChannel") applicationChannelBlockBytes, err := ioutil.ReadFile(applicationChannelBlockPath) - assert.NoError(t, err) + require.NoError(t, err) testchannelGB := &common.Block{} - assert.NoError(t, proto.Unmarshal(applicationChannelBlockBytes, testchannelGB)) + require.NoError(t, proto.Unmarshal(applicationChannelBlockBytes, testchannelGB)) testchannelGB.Header.Number = 0 systemChannelGenesisBlock := &common.Block{ @@ -273,7 +273,7 @@ func TestOnboardingChannelUnavailable(t *testing.T) { channelCreationBlock := channelCreationBlock("system", "testchannel", systemChannelGenesisBlock) bootBlock := &common.Block{} - assert.NoError(t, proto.Unmarshal(systemChannelBlockBytes, bootBlock)) + require.NoError(t, proto.Unmarshal(systemChannelBlockBytes, bootBlock)) bootBlock.Header.Number = 2 bootBlock.Header.PreviousHash = protoutil.BlockHeaderHash(channelCreationBlock.Header) injectOrdererEndpoint(t, bootBlock, deliverServer.srv.Address()) @@ -327,7 +327,7 @@ func TestOnboardingChannelUnavailable(t *testing.T) { vr.On("RetrieveVerifier", mock.Anything).Return(verifier) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) r := &ReplicationInitiator{ verifierRetriever: vr, @@ -475,15 +475,15 @@ func TestOnboardingChannelUnavailable(t *testing.T) { r.ReplicateIfNeeded(bootBlock) // Ensure all events were invoked - assert.True(t, probe) - assert.True(t, pullSystemChannel) - assert.True(t, pullAppChannel) - assert.True(t, failedPulling) + require.True(t, probe) + require.True(t, pullSystemChannel) + require.True(t, pullAppChannel) + require.True(t, failedPulling) // Ensure system channel was fully pulled - assert.Len(t, blocksCommittedToSystemLedger, 3) + require.Len(t, blocksCommittedToSystemLedger, 3) // But the application channel only contains 1 block (the genesis block) - assert.Len(t, blocksCommittedToApplicationLedger, 1) + require.Len(t, blocksCommittedToApplicationLedger, 1) } func TestReplicate(t *testing.T) { @@ -508,7 +508,7 @@ func TestReplicate(t *testing.T) { applicationChannelBlockPath := generateBootstrapBlock(t, tempDir, configtxgen, "testchannel", "SampleOrgChannel") applicationChannelBlockBytes, err := ioutil.ReadFile(applicationChannelBlockPath) - assert.NoError(t, err) + require.NoError(t, err) caCert := loadPEM(cryptoPath, "ca.crt", t) key := loadPEM(cryptoPath, "server.key", t) @@ -517,22 +517,22 @@ func TestReplicate(t *testing.T) { prepareTestCase := func() *deliverServer { deliverServer := newServerNode(t, key, cert) - assert.NoError(t, proto.Unmarshal(applicationChannelBlockBytes, &bootBlock)) + require.NoError(t, proto.Unmarshal(applicationChannelBlockBytes, &bootBlock)) bootBlock.Header.Number = 10 injectOrdererEndpoint(t, &bootBlock, deliverServer.srv.Address()) copyBlock := func(block *common.Block, seq uint64) common.Block { res := common.Block{} - assert.NoError(t, proto.Unmarshal(protoutil.MarshalOrPanic(block), &res)) + require.NoError(t, proto.Unmarshal(protoutil.MarshalOrPanic(block), &res)) res.Header.Number = seq return res } bootBlockWithCorruptedPayload = copyBlock(&bootBlock, 100) env := &common.Envelope{} - assert.NoError(t, proto.Unmarshal(bootBlockWithCorruptedPayload.Data.Data[0], env)) + require.NoError(t, proto.Unmarshal(bootBlockWithCorruptedPayload.Data.Data[0], env)) payload := &common.Payload{} - assert.NoError(t, proto.Unmarshal(env.Payload, payload)) + require.NoError(t, proto.Unmarshal(env.Payload, payload)) payload.Data = []byte{1, 2, 3} deliverServer.blockResponses <- &orderer.DeliverResponse{ @@ -584,7 +584,7 @@ func TestReplicate(t *testing.T) { zapHooks: []func(entry zapcore.Entry) error{ func(entry zapcore.Entry) error { hooksActivated = true - assert.Equal(t, entry.Message, "Booted with a genesis block, replication isn't an option") + require.Equal(t, entry.Message, "Booted with a genesis block, replication isn't an option") return nil }, }, @@ -641,7 +641,7 @@ func TestReplicate(t *testing.T) { zapHooks: []func(entry zapcore.Entry) error{ func(entry zapcore.Entry) error { hooksActivated = true - assert.Equal(t, entry.Message, "Replication isn't needed") + require.Equal(t, entry.Message, "Replication isn't needed") return nil }, }, @@ -747,7 +747,7 @@ func TestReplicate(t *testing.T) { vr.On("RetrieveVerifier", mock.Anything).Return(verifier) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) r := &ReplicationInitiator{ verifierRetriever: vr, @@ -761,7 +761,7 @@ func TestReplicate(t *testing.T) { } if testCase.panicValue != "" { - assert.PanicsWithValue(t, testCase.panicValue, func() { + require.PanicsWithValue(t, testCase.panicValue, func() { testCase.replicateFunc(r, testCase.bootBlock) }) return @@ -774,13 +774,13 @@ func TestReplicate(t *testing.T) { testCase.replicateFunc(r, testCase.bootBlock) // Ensure we ran the hooks for a test case that doesn't panic - assert.True(t, hooksActivated) + require.True(t, hooksActivated) // Restore the flag for the next iteration defer func() { hooksActivated = false }() - assert.Equal(t, testCase.shouldConnect, atomic.LoadInt32(&deliverServer.isConnected) == int32(1)) + require.Equal(t, testCase.shouldConnect, atomic.LoadInt32(&deliverServer.isConnected) == int32(1)) verifier.AssertNumberOfCalls(t, "VerifyBlockSignature", testCase.verificationCount) }) } @@ -896,9 +896,9 @@ func TestInactiveChainReplicator(t *testing.T) { for chain := range trackedChains { replicatedChains = append(replicatedChains, chain) } - assert.Equal(t, testCase.chainsExpectedToBeReplicated, replicatedChains) + require.Equal(t, testCase.chainsExpectedToBeReplicated, replicatedChains) replicator.AssertNumberOfCalls(t, "ReplicateChains", testCase.ReplicateChainsExpectedCallCount) - assert.Equal(t, testCase.expectedRegisteredChains, registeredChains) + require.Equal(t, testCase.expectedRegisteredChains, registeredChains) }) } } @@ -909,21 +909,21 @@ func TestInactiveChainReplicatorChannels(t *testing.T) { chains2CreationCallbacks: make(map[string]chainCreation), } icr.TrackChain("foo", &common.Block{}, func() {}) - assert.Contains(t, icr.Channels(), cluster.ChannelGenesisBlock{ChannelName: "foo", GenesisBlock: &common.Block{}}) + require.Contains(t, icr.Channels(), cluster.ChannelGenesisBlock{ChannelName: "foo", GenesisBlock: &common.Block{}}) icr.TrackChain("bar", nil, func() {}) - assert.Contains(t, icr.Channels(), cluster.ChannelGenesisBlock{ChannelName: "bar", GenesisBlock: nil}) + require.Contains(t, icr.Channels(), cluster.ChannelGenesisBlock{ChannelName: "bar", GenesisBlock: nil}) icr.Close() } func injectConsenterCertificate(t *testing.T, block *common.Block, tlsCert []byte) { env, err := protoutil.ExtractEnvelope(block, 0) - assert.NoError(t, err) + require.NoError(t, err) payload, err := protoutil.UnmarshalPayload(env.Payload) - assert.NoError(t, err) + require.NoError(t, err) confEnv, err := configtx.UnmarshalConfigEnvelope(payload.Data) - assert.NoError(t, err) + require.NoError(t, err) consensus := confEnv.Config.ChannelGroup.Groups[channelconfig.OrdererGroupKey].Values[channelconfig.ConsensusTypeKey] consensus.Value = protoutil.MarshalOrPanic(&orderer.ConsensusType{ Type: "etcdraft", @@ -947,11 +947,11 @@ func injectOrdererEndpoint(t *testing.T, block *common.Block, endpoint string) { ordererAddresses := channelconfig.OrdererAddressesValue([]string{endpoint}) // Unwrap the layers until we reach the orderer addresses env, err := protoutil.ExtractEnvelope(block, 0) - assert.NoError(t, err) + require.NoError(t, err) payload, err := protoutil.UnmarshalPayload(env.Payload) - assert.NoError(t, err) + require.NoError(t, err) confEnv, err := configtx.UnmarshalConfigEnvelope(payload.Data) - assert.NoError(t, err) + require.NoError(t, err) // Replace the orderer addresses confEnv.Config.ChannelGroup.Values[ordererAddresses.Key()].Value = protoutil.MarshalOrPanic(ordererAddresses.Value()) // And put it back into the block @@ -967,10 +967,10 @@ func TestVerifierLoader(t *testing.T) { systemChannelBlockPath := generateBootstrapBlock(t, tempDir, configtxgen, "system", "SampleSoloSystemChannel") systemChannelBlockBytes, err := ioutil.ReadFile(systemChannelBlockPath) - assert.NoError(t, err) + require.NoError(t, err) configBlock := &common.Block{} - assert.NoError(t, proto.Unmarshal(systemChannelBlockBytes, configBlock)) + require.NoError(t, proto.Unmarshal(systemChannelBlockBytes, configBlock)) verifier := &cluster_mocks.BlockVerifier{} @@ -1095,14 +1095,14 @@ func TestVerifierLoader(t *testing.T) { f := func() { verifierLoader.loadVerifiers() } - assert.PanicsWithValue(t, testCase.expectedPanic, f) + require.PanicsWithValue(t, testCase.expectedPanic, f) } else { res := verifierLoader.loadVerifiers() - assert.Equal(t, testCase.expectedResult, res) + require.Equal(t, testCase.expectedResult, res) } - assert.Equal(t, testCase.onFailureInvoked, onFailureInvoked) - assert.Empty(t, testCase.expectedLoggedMessages) + require.Equal(t, testCase.onFailureInvoked, onFailureInvoked) + require.Empty(t, testCase.expectedLoggedMessages) }) } } @@ -1113,20 +1113,20 @@ func TestValidateBootstrapBlock(t *testing.T) { systemChannelBlockPath := generateBootstrapBlock(t, tempDir, configtxgen, "system", "SampleSoloSystemChannel") systemChannelBlockBytes, err := ioutil.ReadFile(systemChannelBlockPath) - assert.NoError(t, err) + require.NoError(t, err) applicationChannelBlockPath := generateBootstrapBlock(t, tempDir, configtxgen, "mychannel", "SampleOrgChannel") applicationChannelBlockBytes, err := ioutil.ReadFile(applicationChannelBlockPath) - assert.NoError(t, err) + require.NoError(t, err) appBlock := &common.Block{} - assert.NoError(t, proto.Unmarshal(applicationChannelBlockBytes, appBlock)) + require.NoError(t, proto.Unmarshal(applicationChannelBlockBytes, appBlock)) systemBlock := &common.Block{} - assert.NoError(t, proto.Unmarshal(systemChannelBlockBytes, systemBlock)) + require.NoError(t, proto.Unmarshal(systemChannelBlockBytes, systemBlock)) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) for _, testCase := range []struct { description string @@ -1165,11 +1165,11 @@ func TestValidateBootstrapBlock(t *testing.T) { t.Run(testCase.description, func(t *testing.T) { err := ValidateBootstrapBlock(testCase.block, cryptoProvider) if testCase.expectedError == "" { - assert.NoError(t, err) + require.NoError(t, err) return } - assert.EqualError(t, err, testCase.expectedError) + require.EqualError(t, err, testCase.expectedError) }) } } @@ -1230,14 +1230,14 @@ func TestCreateReplicator(t *testing.T) { ledgerFactory.On("ChannelIDs").Return([]string{"mychannel"}) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) signer := &onboarding_mocks.SignerSerializer{} r := NewReplicationInitiator(ledgerFactory, bootBlock, &localconfig.TopLevel{}, comm.SecureOptions{}, signer, cryptoProvider) err = r.verifierRetriever.RetrieveVerifier("mychannel").VerifyBlockSignature(nil, nil) - assert.EqualError(t, err, "implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Writers' sub-policies to be satisfied") + require.EqualError(t, err, "implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Writers' sub-policies to be satisfied") err = r.verifierRetriever.RetrieveVerifier("system").VerifyBlockSignature(nil, nil) - assert.NoError(t, err) + require.NoError(t, err) } diff --git a/orderer/common/onboarding/sched_test.go b/orderer/common/onboarding/sched_test.go index 2069e730961..8e99314f53d 100644 --- a/orderer/common/onboarding/sched_test.go +++ b/orderer/common/onboarding/sched_test.go @@ -12,7 +12,7 @@ import ( "time" "github.com/onsi/gomega" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestExponentialDuration(t *testing.T) { @@ -21,13 +21,13 @@ func TestExponentialDuration(t *testing.T) { prev := exp() for i := 0; i < 3; i++ { n := exp() - assert.Equal(t, prev*2, n) + require.Equal(t, prev*2, n) prev = n - assert.True(t, n < time.Second) + require.True(t, n < time.Second) } for i := 0; i < 10; i++ { - assert.Equal(t, time.Second, exp()) + require.Equal(t, time.Second, exp()) } } @@ -69,7 +69,7 @@ func TestTicker(t *testing.T) { tickerStopped.Wait() _, ok := <-ticker.C - assert.False(t, ok) + require.False(t, ok) }) diff --git a/orderer/common/server/main_test.go b/orderer/common/server/main_test.go index de83d71b38a..0a31bb82ed1 100644 --- a/orderer/common/server/main_test.go +++ b/orderer/common/server/main_test.go @@ -44,7 +44,6 @@ import ( . "github.com/onsi/gomega" "github.com/onsi/gomega/gexec" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zapcore" @@ -97,7 +96,7 @@ func TestInitializeLogging(t *testing.T) { origEnvValue := os.Getenv("FABRIC_LOGGING_SPEC") os.Setenv("FABRIC_LOGGING_SPEC", "foo=debug") initializeLogging() - assert.Equal(t, "debug", flogging.LoggerLevel("foo")) + require.Equal(t, "debug", flogging.LoggerLevel("foo")) os.Setenv("FABRIC_LOGGING_SPEC", origEnvValue) } @@ -147,17 +146,17 @@ func TestInitializeServerConfig(t *testing.T) { } sc := initializeServerConfig(conf, nil) expectedContent, _ := ioutil.ReadFile("main.go") - assert.Equal(t, expectedContent, sc.SecOpts.Certificate) - assert.Equal(t, expectedContent, sc.SecOpts.Key) - assert.Equal(t, [][]byte{expectedContent}, sc.SecOpts.ServerRootCAs) - assert.Equal(t, [][]byte{expectedContent}, sc.SecOpts.ClientRootCAs) + require.Equal(t, expectedContent, sc.SecOpts.Certificate) + require.Equal(t, expectedContent, sc.SecOpts.Key) + require.Equal(t, [][]byte{expectedContent}, sc.SecOpts.ServerRootCAs) + require.Equal(t, [][]byte{expectedContent}, sc.SecOpts.ClientRootCAs) sc = initializeServerConfig(conf, nil) defaultOpts := comm.DefaultKeepaliveOptions - assert.Equal(t, defaultOpts.ServerMinInterval, sc.KaOpts.ServerMinInterval) - assert.Equal(t, time.Duration(0), sc.KaOpts.ServerInterval) - assert.Equal(t, time.Duration(0), sc.KaOpts.ServerTimeout) - assert.Equal(t, 7*time.Second, sc.ConnectionTimeout) + require.Equal(t, defaultOpts.ServerMinInterval, sc.KaOpts.ServerMinInterval) + require.Equal(t, time.Duration(0), sc.KaOpts.ServerInterval) + require.Equal(t, time.Duration(0), sc.KaOpts.ServerTimeout) + require.Equal(t, 7*time.Second, sc.ConnectionTimeout) testDuration := 10 * time.Second conf.General.Keepalive = localconfig.Keepalive{ ServerMinInterval: testDuration, @@ -165,18 +164,18 @@ func TestInitializeServerConfig(t *testing.T) { ServerTimeout: testDuration, } sc = initializeServerConfig(conf, nil) - assert.Equal(t, testDuration, sc.KaOpts.ServerMinInterval) - assert.Equal(t, testDuration, sc.KaOpts.ServerInterval) - assert.Equal(t, testDuration, sc.KaOpts.ServerTimeout) + require.Equal(t, testDuration, sc.KaOpts.ServerMinInterval) + require.Equal(t, testDuration, sc.KaOpts.ServerInterval) + require.Equal(t, testDuration, sc.KaOpts.ServerTimeout) sc = initializeServerConfig(conf, nil) - assert.NotNil(t, sc.Logger) - assert.Equal(t, comm.NewServerStatsHandler(&disabled.Provider{}), sc.ServerStatsHandler) - assert.Len(t, sc.UnaryInterceptors, 2) - assert.Len(t, sc.StreamInterceptors, 2) + require.NotNil(t, sc.Logger) + require.Equal(t, comm.NewServerStatsHandler(&disabled.Provider{}), sc.ServerStatsHandler) + require.Len(t, sc.UnaryInterceptors, 2) + require.Len(t, sc.StreamInterceptors, 2) sc = initializeServerConfig(conf, &prometheus.Provider{}) - assert.NotNil(t, sc.ServerStatsHandler) + require.NotNil(t, sc.ServerStatsHandler) goodFile := "main.go" badFile := "does_not_exist" @@ -222,7 +221,7 @@ func TestInitializeServerConfig(t *testing.T) { }, }, } - assert.Panics(t, func() { + require.Panics(t, func() { if tc.clusterCert == "" { initializeServerConfig(conf, nil) } else { @@ -252,7 +251,7 @@ func TestInitializeBootstrapChannel(t *testing.T) { }, &disabled.Provider{}, ) - assert.NoError(t, err) + require.NoError(t, err) bootstrapConfig := &localconfig.TopLevel{ General: localconfig.General{ BootstrapMethod: "file", @@ -264,8 +263,8 @@ func TestInitializeBootstrapChannel(t *testing.T) { initializeBootstrapChannel(bootstrapBlock, ledgerFactory) ledger, err := ledgerFactory.GetOrCreate("testchannelid") - assert.NoError(t, err) - assert.Equal(t, uint64(1), ledger.Height()) + require.NoError(t, err) + require.Equal(t, uint64(1), ledger.Height()) } func TestExtractBootstrapBlock(t *testing.T) { @@ -294,7 +293,7 @@ func TestExtractBootstrapBlock(t *testing.T) { } for _, tt := range tests { b := extractBootstrapBlock(tt.config) - assert.Truef(t, proto.Equal(tt.block, b), "wanted %v, got %v", tt.block, b) + require.Truef(t, proto.Equal(tt.block, b), "wanted %v, got %v", tt.block, b) } } @@ -310,7 +309,7 @@ func TestExtractSysChanLastConfig(t *testing.T) { genesisBlock := encoder.New(conf).GenesisBlock() lastConf := extractSysChanLastConfig(rlf, genesisBlock) - assert.Nil(t, lastConf) + require.Nil(t, lastConf) rl, err := rlf.GetOrCreate("testchannelid") require.NoError(t, err) @@ -319,10 +318,10 @@ func TestExtractSysChanLastConfig(t *testing.T) { require.NoError(t, err) lastConf = extractSysChanLastConfig(rlf, genesisBlock) - assert.NotNil(t, lastConf) - assert.Equal(t, uint64(0), lastConf.Header.Number) + require.NotNil(t, lastConf) + require.Equal(t, uint64(0), lastConf.Header.Number) - assert.Panics(t, func() { + require.Panics(t, func() { _ = extractSysChanLastConfig(rlf, nil) }) @@ -342,8 +341,8 @@ func TestExtractSysChanLastConfig(t *testing.T) { require.NoError(t, err) lastConf = extractSysChanLastConfig(rlf, genesisBlock) - assert.NotNil(t, lastConf) - assert.Equal(t, uint64(1), lastConf.Header.Number) + require.NotNil(t, lastConf) + require.Equal(t, uint64(1), lastConf.Header.Number) } func TestSelectClusterBootBlock(t *testing.T) { @@ -351,26 +350,26 @@ func TestSelectClusterBootBlock(t *testing.T) { lastConfBlock := &common.Block{Header: &common.BlockHeader{Number: 100}} clusterBoot := selectClusterBootBlock(bootstrapBlock, nil) - assert.NotNil(t, clusterBoot) - assert.Equal(t, uint64(100), clusterBoot.Header.Number) - assert.True(t, bootstrapBlock == clusterBoot) + require.NotNil(t, clusterBoot) + require.Equal(t, uint64(100), clusterBoot.Header.Number) + require.True(t, bootstrapBlock == clusterBoot) clusterBoot = selectClusterBootBlock(bootstrapBlock, lastConfBlock) - assert.NotNil(t, clusterBoot) - assert.Equal(t, uint64(100), clusterBoot.Header.Number) - assert.True(t, bootstrapBlock == clusterBoot) + require.NotNil(t, clusterBoot) + require.Equal(t, uint64(100), clusterBoot.Header.Number) + require.True(t, bootstrapBlock == clusterBoot) lastConfBlock.Header.Number = 200 clusterBoot = selectClusterBootBlock(bootstrapBlock, lastConfBlock) - assert.NotNil(t, clusterBoot) - assert.Equal(t, uint64(200), clusterBoot.Header.Number) - assert.True(t, lastConfBlock == clusterBoot) + require.NotNil(t, clusterBoot) + require.Equal(t, uint64(200), clusterBoot.Header.Number) + require.True(t, lastConfBlock == clusterBoot) bootstrapBlock.Header.Number = 300 clusterBoot = selectClusterBootBlock(bootstrapBlock, lastConfBlock) - assert.NotNil(t, clusterBoot) - assert.Equal(t, uint64(300), clusterBoot.Header.Number) - assert.True(t, bootstrapBlock == clusterBoot) + require.NotNil(t, clusterBoot) + require.Equal(t, uint64(300), clusterBoot.Header.Number) + require.True(t, bootstrapBlock == clusterBoot) } func TestLoadLocalMSP(t *testing.T) { @@ -402,7 +401,7 @@ func TestLoadLocalMSP(t *testing.T) { defer func() { logger = oldLogger }() logger, _ = floggingtest.NewTestLogger(t) - assert.Panics(t, func() { + require.Panics(t, func() { loadLocalMSP( &localconfig.TopLevel{ General: localconfig.General{ @@ -423,13 +422,13 @@ func TestInitializeMultichannelRegistrar(t *testing.T) { conf := genesisConfig(t, genesisFile) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) signer := &server_mocks.SignerSerializer{} t.Run("registrar with a system channel", func(t *testing.T) { lf, _, err := createLedgerFactory(conf, &disabled.Provider{}) - assert.NoError(t, err) + require.NoError(t, err) bootBlock := file.New(genesisFile).GenesisBlock() initializeBootstrapChannel(bootBlock, lf) registrar := initializeMultichannelRegistrar( @@ -445,17 +444,17 @@ func TestInitializeMultichannelRegistrar(t *testing.T) { lf, cryptoProvider, ) - assert.NotNil(t, registrar) - assert.Equal(t, "testchannelid", registrar.SystemChannelID()) + require.NotNil(t, registrar) + require.Equal(t, "testchannelid", registrar.SystemChannelID()) }) t.Run("registrar without a system channel", func(t *testing.T) { conf.General.BootstrapMethod = "none" conf.General.GenesisFile = "" srv, err := comm.NewGRPCServer("127.0.0.1:0", comm.ServerConfig{}) - assert.NoError(t, err) + require.NoError(t, err) lf, _, err := createLedgerFactory(conf, &disabled.Provider{}) - assert.NoError(t, err) + require.NoError(t, err) registrar := initializeMultichannelRegistrar( nil, nil, @@ -469,8 +468,8 @@ func TestInitializeMultichannelRegistrar(t *testing.T) { lf, cryptoProvider, ) - assert.NotNil(t, registrar) - assert.Empty(t, registrar.SystemChannelID()) + require.NotNil(t, registrar) + require.Empty(t, registrar.SystemChannelID()) }) } @@ -493,7 +492,7 @@ func TestInitializeGrpcServer(t *testing.T) { }, }, } - assert.NotPanics(t, func() { + require.NotPanics(t, func() { grpcServer := initializeGrpcServer(conf, initializeServerConfig(conf, nil)) grpcServer.Listener().Close() }) @@ -559,13 +558,13 @@ func TestUpdateTrustedRoots(t *testing.T) { } } lf, _, err := createLedgerFactory(conf, &disabled.Provider{}) - assert.NoError(t, err) + require.NoError(t, err) bootBlock := file.New(genesisFile).GenesisBlock() initializeBootstrapChannel(bootBlock, lf) signer := &server_mocks.SignerSerializer{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) initializeMultichannelRegistrar( bootBlock, @@ -584,8 +583,8 @@ func TestUpdateTrustedRoots(t *testing.T) { t.Logf("# app CAs: %d", len(caMgr.appRootCAsByChain["testchannelid"])) t.Logf("# orderer CAs: %d", len(caMgr.ordererRootCAsByChain["testchannelid"])) // mutual TLS not required so no updates should have occurred - assert.Equal(t, 0, len(caMgr.appRootCAsByChain["testchannelid"])) - assert.Equal(t, 0, len(caMgr.ordererRootCAsByChain["testchannelid"])) + require.Equal(t, 0, len(caMgr.appRootCAsByChain["testchannelid"])) + require.Equal(t, 0, len(caMgr.ordererRootCAsByChain["testchannelid"])) grpcServer.Listener().Close() conf = &localconfig.TopLevel{ @@ -636,9 +635,9 @@ func TestUpdateTrustedRoots(t *testing.T) { t.Logf("# orderer CAs: %d", len(caMgr.ordererRootCAsByChain["testchannelid"])) // mutual TLS is required so updates should have occurred // we expect an intermediate and root CA for apps and orderers - assert.Equal(t, 2, len(caMgr.appRootCAsByChain["testchannelid"])) - assert.Equal(t, 2, len(caMgr.ordererRootCAsByChain["testchannelid"])) - assert.Len(t, predDialer.Config.SecOpts.ServerRootCAs, 2) + require.Equal(t, 2, len(caMgr.appRootCAsByChain["testchannelid"])) + require.Equal(t, 2, len(caMgr.ordererRootCAsByChain["testchannelid"])) + require.Len(t, predDialer.Config.SecOpts.ServerRootCAs, 2) grpcServer.Listener().Close() } @@ -647,12 +646,12 @@ func TestConfigureClusterListener(t *testing.T) { allocatePort := func() uint16 { l, err := net.Listen("tcp", "127.0.0.1:0") - assert.NoError(t, err) + require.NoError(t, err) _, portStr, err := net.SplitHostPort(l.Addr().String()) - assert.NoError(t, err) + require.NoError(t, err) port, err := strconv.ParseInt(portStr, 10, 64) - assert.NoError(t, err) - assert.NoError(t, l.Close()) + require.NoError(t, err) + require.NoError(t, l.Close()) t.Log("picked unused port", port) return uint16(port) } @@ -670,9 +669,9 @@ func TestConfigureClusterListener(t *testing.T) { }() ca, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) serverKeyPair, err := ca.NewServerCertKeyPair("127.0.0.1") - assert.NoError(t, err) + require.NoError(t, err) loadPEM := func(fileName string) ([]byte, error) { switch fileName { @@ -788,15 +787,15 @@ func TestConfigureClusterListener(t *testing.T) { t.Run(testCase.name, func(t *testing.T) { if testCase.shouldBeEqual { conf, srv := configureClusterListener(testCase.conf, testCase.generalConf, loadPEM) - assert.Equal(t, conf, testCase.generalConf) - assert.Equal(t, srv, testCase.generalSrv) + require.Equal(t, conf, testCase.generalConf) + require.Equal(t, srv, testCase.generalSrv) } if testCase.expectedPanic != "" { f := func() { configureClusterListener(testCase.conf, testCase.generalConf, loadPEM) } - assert.Contains(t, panicMsg(f), testCase.expectedPanic) + require.Contains(t, panicMsg(f), testCase.expectedPanic) } else { configureClusterListener(testCase.conf, testCase.generalConf, loadPEM) } @@ -806,7 +805,7 @@ func TestConfigureClusterListener(t *testing.T) { logEntry := <-logEntries loggedMessages = append(loggedMessages, logEntry) } - assert.Subset(t, loggedMessages, testCase.expectedLogEntries) + require.Subset(t, loggedMessages, testCase.expectedLogEntries) }) } } @@ -875,10 +874,10 @@ func TestInitializeEtcdraftConsenter(t *testing.T) { crt, _ := ca.NewServerCertKeyPair("127.0.0.1") srv, err := comm.NewGRPCServer("127.0.0.1:0", comm.ServerConfig{}) - assert.NoError(t, err) + require.NoError(t, err) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) initializeEtcdraftConsenter( consenters, @@ -899,7 +898,7 @@ func TestInitializeEtcdraftConsenter(t *testing.T) { &disabled.Provider{}, cryptoProvider, ) - assert.NotNil(t, consenters["etcdraft"]) + require.NotNil(t, consenters["etcdraft"]) } func genesisConfig(t *testing.T, genesisFile string) *localconfig.TopLevel { diff --git a/orderer/common/server/server_test.go b/orderer/common/server/server_test.go index faece291e7d..80e5daa9bb9 100644 --- a/orderer/common/server/server_test.go +++ b/orderer/common/server/server_test.go @@ -19,7 +19,7 @@ import ( localconfig "github.com/hyperledger/fabric/orderer/common/localconfig" "github.com/hyperledger/fabric/orderer/common/multichannel" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -89,21 +89,21 @@ func testMsgTrace(handler func(dir string, msg *cb.Envelope) recvr, t *testing.T r := handler(dir, msg) rMsg, err := r.Recv() - assert.Equal(t, msg, rMsg) - assert.Nil(t, err) + require.Equal(t, msg, rMsg) + require.Nil(t, err) var fileData []byte for i := 0; i < 100; i++ { // Writing the trace file is deliberately non-blocking, wait up to a second, checking every 10 ms to see if the file now exists. time.Sleep(10 * time.Millisecond) filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { - assert.Nil(t, err) + require.Nil(t, err) if path == dir { return nil } - assert.Nil(t, fileData, "Should only be one file") + require.Nil(t, fileData, "Should only be one file") fileData, err = ioutil.ReadFile(path) - assert.Nil(t, err) + require.Nil(t, err) return nil }) if fileData != nil { @@ -111,7 +111,7 @@ func testMsgTrace(handler func(dir string, msg *cb.Envelope) recvr, t *testing.T } } - assert.Equal(t, protoutil.MarshalOrPanic(msg), fileData) + require.Equal(t, protoutil.MarshalOrPanic(msg), fileData) } func TestBroadcastMsgTrace(t *testing.T) { @@ -150,6 +150,6 @@ func TestDeliverNoChannel(t *testing.T) { r := &multichannel.Registrar{} ds := &deliverSupport{Registrar: r} chain := ds.GetChain("mychannel") - assert.Nil(t, chain) - assert.True(t, chain == nil) + require.Nil(t, chain) + require.True(t, chain == nil) } diff --git a/orderer/common/server/util_test.go b/orderer/common/server/util_test.go index 3d4dd58b3f3..20fd3ae9ba9 100644 --- a/orderer/common/server/util_test.go +++ b/orderer/common/server/util_test.go @@ -14,7 +14,7 @@ import ( "github.com/hyperledger/fabric/common/metrics/disabled" "github.com/hyperledger/fabric/core/config/configtest" config "github.com/hyperledger/fabric/orderer/common/localconfig" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCreateLedgerFactory(t *testing.T) { @@ -50,7 +50,7 @@ func TestCreateLedgerFactory(t *testing.T) { conf.FileLedger.Location = tc.ledgerDir conf.FileLedger.Prefix = tc.ledgerDirPrefix lf, ld, err := createLedgerFactory(conf, &disabled.Provider{}) - assert.NoError(t, err) + require.NoError(t, err) defer func() { if ld != "" { os.RemoveAll(ld) diff --git a/orderer/common/types/channelinfo_test.go b/orderer/common/types/channelinfo_test.go index 4e4311f82bf..26ae373e730 100644 --- a/orderer/common/types/channelinfo_test.go +++ b/orderer/common/types/channelinfo_test.go @@ -11,22 +11,22 @@ import ( "testing" "github.com/hyperledger/fabric/orderer/common/types" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestErrorResponse(t *testing.T) { errResp := types.ErrorResponse{Error: "oops"} buff, err := json.Marshal(errResp) - assert.NoError(t, err) - assert.Equal(t, `{"error":"oops"}`, string(buff)) + require.NoError(t, err) + require.Equal(t, `{"error":"oops"}`, string(buff)) buff2 := []byte(`{"error":"oops again"}`) errResp2 := types.ErrorResponse{} err = json.Unmarshal(buff2, &errResp2) - assert.NoError(t, err) - assert.NotNil(t, errResp2) - assert.Equal(t, "oops again", errResp2.Error) + require.NoError(t, err) + require.NotNil(t, errResp2) + require.Equal(t, "oops again", errResp2.Error) } func TestChannelInfoShort(t *testing.T) { @@ -36,29 +36,29 @@ func TestChannelInfoShort(t *testing.T) { } buff, err := json.Marshal(info) - assert.NoError(t, err) - assert.Equal(t, `{"name":"my-channel","url":"/api/v1/channels/my-channel"}`, string(buff)) + require.NoError(t, err) + require.Equal(t, `{"name":"my-channel","url":"/api/v1/channels/my-channel"}`, string(buff)) buff2 := []byte(`{"name":"my-channel2","url":"/api/v1/channels/my-channel2"}`) var info2 types.ChannelInfoShort err = json.Unmarshal(buff2, &info2) - assert.NoError(t, err) - assert.NotNil(t, info2) - assert.Equal(t, "my-channel2", info2.Name) - assert.Equal(t, "/api/v1/channels/my-channel2", info2.URL) + require.NoError(t, err) + require.NotNil(t, info2) + require.Equal(t, "my-channel2", info2.Name) + require.Equal(t, "/api/v1/channels/my-channel2", info2.URL) buff3 := []byte(`{"name":"my-channel2","url":"/api/v1/channels/my-channel3","oops"}`) var info3 types.ChannelInfoShort err = json.Unmarshal(buff3, &info3) - assert.Error(t, err) + require.Error(t, err) } func TestChannelList(t *testing.T) { list := types.ChannelList{SystemChannel: nil, Channels: nil} buff, err := json.Marshal(list) - assert.NoError(t, err) - assert.Equal(t, `{"systemChannel":null,"channels":null}`, string(buff)) + require.NoError(t, err) + require.Equal(t, `{"systemChannel":null,"channels":null}`, string(buff)) list.SystemChannel = &types.ChannelInfoShort{Name: "s", URL: "/api/channels/s"} list.Channels = []types.ChannelInfoShort{ @@ -67,8 +67,8 @@ func TestChannelList(t *testing.T) { } buff, err = json.Marshal(list) - assert.NoError(t, err) - assert.Equal(t, `{"systemChannel":{"name":"s","url":"/api/channels/s"},"channels":[{"name":"a","url":"/api/channels/a"},{"name":"b","url":"/api/channels/b"}]}`, string(buff)) + require.NoError(t, err) + require.Equal(t, `{"systemChannel":{"name":"s","url":"/api/channels/s"},"channels":[{"name":"a","url":"/api/channels/a"},{"name":"b","url":"/api/channels/b"}]}`, string(buff)) } func TestChannelInfo(t *testing.T) { @@ -81,11 +81,11 @@ func TestChannelInfo(t *testing.T) { } buff, err := json.Marshal(info) - assert.NoError(t, err) - assert.Equal(t, `{"name":"a","url":"/api/channels/a","clusterRelation":"follower","status":"active","height":1152921504606846976}`, string(buff)) + require.NoError(t, err) + require.Equal(t, `{"name":"a","url":"/api/channels/a","clusterRelation":"follower","status":"active","height":1152921504606846976}`, string(buff)) var info2 types.ChannelInfo err = json.Unmarshal(buff, &info2) - assert.NoError(t, err) - assert.Equal(t, info.Height, info2.Height) + require.NoError(t, err) + require.Equal(t, info.Height, info2.Height) } diff --git a/orderer/consensus/cluster_status_test.go b/orderer/consensus/cluster_status_test.go index 69873f4d90b..faf72d1aa0e 100644 --- a/orderer/consensus/cluster_status_test.go +++ b/orderer/consensus/cluster_status_test.go @@ -11,7 +11,7 @@ import ( "github.com/hyperledger/fabric/orderer/common/types" "github.com/hyperledger/fabric/orderer/consensus" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestStaticStatusReporter(t *testing.T) { @@ -22,6 +22,6 @@ func TestStaticStatusReporter(t *testing.T) { var sr consensus.StatusReporter = staticSR // make sure it implements this interface cRel, status := sr.StatusReport() - assert.Equal(t, types.ClusterRelationNone, cRel) - assert.Equal(t, types.StatusActive, status) + require.Equal(t, types.ClusterRelationNone, cRel) + require.Equal(t, types.StatusActive, status) } diff --git a/orderer/consensus/etcdraft/blockcreator_test.go b/orderer/consensus/etcdraft/blockcreator_test.go index 40794904bb2..f0ae77506f8 100644 --- a/orderer/consensus/etcdraft/blockcreator_test.go +++ b/orderer/consensus/etcdraft/blockcreator_test.go @@ -12,7 +12,7 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/common/flogging" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/zap" ) @@ -25,12 +25,12 @@ func TestCreateNextBlock(t *testing.T) { } second := bc.createNextBlock([]*cb.Envelope{{Payload: []byte("some other bytes")}}) - assert.Equal(t, first.Header.Number+1, second.Header.Number) - assert.Equal(t, protoutil.BlockDataHash(second.Data), second.Header.DataHash) - assert.Equal(t, protoutil.BlockHeaderHash(first.Header), second.Header.PreviousHash) + require.Equal(t, first.Header.Number+1, second.Header.Number) + require.Equal(t, protoutil.BlockDataHash(second.Data), second.Header.DataHash) + require.Equal(t, protoutil.BlockHeaderHash(first.Header), second.Header.PreviousHash) third := bc.createNextBlock([]*cb.Envelope{{Payload: []byte("some other bytes")}}) - assert.Equal(t, second.Header.Number+1, third.Header.Number) - assert.Equal(t, protoutil.BlockDataHash(third.Data), third.Header.DataHash) - assert.Equal(t, protoutil.BlockHeaderHash(second.Header), third.Header.PreviousHash) + require.Equal(t, second.Header.Number+1, third.Header.Number) + require.Equal(t, protoutil.BlockDataHash(third.Data), third.Header.DataHash) + require.Equal(t, protoutil.BlockHeaderHash(second.Header), third.Header.PreviousHash) } diff --git a/orderer/consensus/etcdraft/blockpuller_test.go b/orderer/consensus/etcdraft/blockpuller_test.go index 9b87188455c..d540369ef60 100644 --- a/orderer/consensus/etcdraft/blockpuller_test.go +++ b/orderer/consensus/etcdraft/blockpuller_test.go @@ -22,18 +22,18 @@ import ( "github.com/hyperledger/fabric/orderer/consensus/etcdraft" "github.com/hyperledger/fabric/orderer/mocks/common/multichannel" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestEndpointconfigFromFromSupport(t *testing.T) { blockBytes, err := ioutil.ReadFile("testdata/mychannel.block") - assert.NoError(t, err) + require.NoError(t, err) goodConfigBlock := &common.Block{} - assert.NoError(t, proto.Unmarshal(blockBytes, goodConfigBlock)) + require.NoError(t, proto.Unmarshal(blockBytes, goodConfigBlock)) cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) for _, testCase := range []struct { name string @@ -101,25 +101,25 @@ func TestEndpointconfigFromFromSupport(t *testing.T) { certs, err := etcdraft.EndpointconfigFromSupport(cs, cryptoProvider) if testCase.expectedError == "" { - assert.NotNil(t, certs) - assert.NoError(t, err) + require.NotNil(t, certs) + require.NoError(t, err) return } - assert.EqualError(t, err, testCase.expectedError) - assert.Nil(t, certs) + require.EqualError(t, err, testCase.expectedError) + require.Nil(t, certs) }) } } func TestNewBlockPuller(t *testing.T) { ca, err := tlsgen.NewCA() - assert.NoError(t, err) + require.NoError(t, err) blockBytes, err := ioutil.ReadFile("testdata/mychannel.block") - assert.NoError(t, err) + require.NoError(t, err) goodConfigBlock := &common.Block{} - assert.NoError(t, proto.Unmarshal(blockBytes, goodConfigBlock)) + require.NoError(t, proto.Unmarshal(blockBytes, goodConfigBlock)) lastBlock := &common.Block{ Metadata: &common.BlockMetadata{ @@ -146,11 +146,11 @@ func TestNewBlockPuller(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) bp, err := etcdraft.NewBlockPuller(cs, dialer, localconfig.Cluster{}, cryptoProvider) - assert.NoError(t, err) - assert.NotNil(t, bp) + require.NoError(t, err) + require.NotNil(t, bp) // From here on, we test failures. for _, testCase := range []struct { @@ -180,8 +180,8 @@ func TestNewBlockPuller(t *testing.T) { t.Run(testCase.name, func(t *testing.T) { testCase.dialer.Config.SecOpts.Certificate = testCase.certificate bp, err := etcdraft.NewBlockPuller(testCase.cs, testCase.dialer, localconfig.Cluster{}, cryptoProvider) - assert.Nil(t, bp) - assert.EqualError(t, err, testCase.expectedError) + require.Nil(t, bp) + require.EqualError(t, err, testCase.expectedError) }) } } @@ -206,6 +206,6 @@ func TestLedgerBlockPuller(t *testing.T) { BlockPuller: puller, } - assert.Equal(t, genesisBlock, lbp.PullBlock(0)) - assert.Equal(t, notGenesisBlock, lbp.PullBlock(1)) + require.Equal(t, genesisBlock, lbp.PullBlock(0)) + require.Equal(t, notGenesisBlock, lbp.PullBlock(1)) } diff --git a/orderer/consensus/etcdraft/dispatcher_test.go b/orderer/consensus/etcdraft/dispatcher_test.go index 94aa3093bf3..e7fc9fea609 100644 --- a/orderer/consensus/etcdraft/dispatcher_test.go +++ b/orderer/consensus/etcdraft/dispatcher_test.go @@ -14,7 +14,7 @@ import ( "github.com/hyperledger/fabric/orderer/consensus/etcdraft" "github.com/hyperledger/fabric/orderer/consensus/etcdraft/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestDispatchConsensus(t *testing.T) { @@ -33,12 +33,12 @@ func TestDispatchConsensus(t *testing.T) { t.Run("Channel exists", func(t *testing.T) { err := disp.OnConsensus("mychannel", 1, expectedRequest) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Channel does not exist", func(t *testing.T) { err := disp.OnConsensus("notmychannel", 1, expectedRequest) - assert.EqualError(t, err, "channel notmychannel doesn't exist") + require.EqualError(t, err, "channel notmychannel doesn't exist") }) } @@ -63,11 +63,11 @@ func TestDispatchSubmit(t *testing.T) { t.Run("Channel exists", func(t *testing.T) { err := disp.OnSubmit("mychannel", 1, expectedRequest) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("Channel does not exist", func(t *testing.T) { err := disp.OnSubmit("notmychannel", 1, expectedRequest) - assert.EqualError(t, err, "channel notmychannel doesn't exist") + require.EqualError(t, err, "channel notmychannel doesn't exist") }) } diff --git a/orderer/consensus/etcdraft/eviction_test.go b/orderer/consensus/etcdraft/eviction_test.go index c5632ca3e43..9a304b5cab1 100644 --- a/orderer/consensus/etcdraft/eviction_test.go +++ b/orderer/consensus/etcdraft/eviction_test.go @@ -19,7 +19,7 @@ import ( "github.com/hyperledger/fabric/protoutil" "github.com/onsi/gomega" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.etcd.io/etcd/raft/raftpb" "go.uber.org/zap" "go.uber.org/zap/zapcore" @@ -234,7 +234,7 @@ func TestEvictionSuspector(t *testing.T) { } if testCase.expectedPanic != "" { - assert.PanicsWithValue(t, testCase.expectedPanic, runTestCase) + require.PanicsWithValue(t, testCase.expectedPanic, runTestCase) } else { runTestCase() // Run the test case again. @@ -245,8 +245,8 @@ func TestEvictionSuspector(t *testing.T) { runTestCase() } - assert.True(t, foundExpectedLog, "expected to find %s but didn't", testCase.expectedLog) - assert.Equal(t, testCase.expectedCommittedBlockCount, len(committedBlocks)) + require.True(t, foundExpectedLog, "expected to find %s but didn't", testCase.expectedLog) + require.Equal(t, testCase.expectedCommittedBlockCount, len(committedBlocks)) }) } } diff --git a/orderer/consensus/etcdraft/initialization_test.go b/orderer/consensus/etcdraft/initialization_test.go index a24a6af65d0..f8e5d0fb8f8 100644 --- a/orderer/consensus/etcdraft/initialization_test.go +++ b/orderer/consensus/etcdraft/initialization_test.go @@ -17,16 +17,16 @@ import ( "github.com/hyperledger/fabric/orderer/common/multichannel" "github.com/hyperledger/fabric/orderer/consensus/etcdraft" "github.com/hyperledger/fabric/orderer/consensus/etcdraft/mocks" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewEtcdRaftConsenter(t *testing.T) { srv, err := comm.NewGRPCServer("127.0.0.1:0", comm.ServerConfig{}) - assert.NoError(t, err) + require.NoError(t, err) defer srv.Stop() dialer := &cluster.PredicateDialer{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) consenter := etcdraft.New(dialer, &localconfig.TopLevel{}, comm.ServerConfig{ @@ -40,22 +40,22 @@ func TestNewEtcdRaftConsenter(t *testing.T) { ) // Assert that the certificate from the gRPC server was passed to the consenter - assert.Equal(t, []byte{1, 2, 3}, consenter.Cert) + require.Equal(t, []byte{1, 2, 3}, consenter.Cert) // Assert that all dependencies for the consenter were populated - assert.NotNil(t, consenter.Communication) - assert.NotNil(t, consenter.Chains) - assert.NotNil(t, consenter.ChainSelector) - assert.NotNil(t, consenter.Dispatcher) - assert.NotNil(t, consenter.Logger) + require.NotNil(t, consenter.Communication) + require.NotNil(t, consenter.Chains) + require.NotNil(t, consenter.ChainSelector) + require.NotNil(t, consenter.Dispatcher) + require.NotNil(t, consenter.Logger) } func TestNewEtcdRaftConsenterNoSystemChannel(t *testing.T) { srv, err := comm.NewGRPCServer("127.0.0.1:0", comm.ServerConfig{}) - assert.NoError(t, err) + require.NoError(t, err) defer srv.Stop() dialer := &cluster.PredicateDialer{} cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) consenter := etcdraft.New( dialer, &localconfig.TopLevel{}, @@ -70,12 +70,12 @@ func TestNewEtcdRaftConsenterNoSystemChannel(t *testing.T) { ) // Assert that the certificate from the gRPC server was passed to the consenter - assert.Equal(t, []byte{1, 2, 3}, consenter.Cert) + require.Equal(t, []byte{1, 2, 3}, consenter.Cert) // Assert that all dependencies for the consenter were populated - assert.NotNil(t, consenter.Communication) - assert.NotNil(t, consenter.Chains) - assert.NotNil(t, consenter.ChainSelector) - assert.NotNil(t, consenter.Dispatcher) - assert.NotNil(t, consenter.Logger) - assert.Nil(t, consenter.InactiveChainRegistry) + require.NotNil(t, consenter.Communication) + require.NotNil(t, consenter.Chains) + require.NotNil(t, consenter.ChainSelector) + require.NotNil(t, consenter.Dispatcher) + require.NotNil(t, consenter.Logger) + require.Nil(t, consenter.InactiveChainRegistry) } diff --git a/orderer/consensus/etcdraft/storage_test.go b/orderer/consensus/etcdraft/storage_test.go index cd7233f4a46..1115fce4367 100644 --- a/orderer/consensus/etcdraft/storage_test.go +++ b/orderer/consensus/etcdraft/storage_test.go @@ -16,7 +16,6 @@ import ( "testing" "github.com/hyperledger/fabric/common/flogging" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.etcd.io/etcd/pkg/fileutil" "go.etcd.io/etcd/raft" @@ -39,17 +38,17 @@ func setup(t *testing.T) { logger = flogging.NewFabricLogger(zap.NewExample()) ram = raft.NewMemoryStorage() dataDir, err = ioutil.TempDir("", "etcdraft-") - assert.NoError(t, err) + require.NoError(t, err) walDir, snapDir = path.Join(dataDir, "wal"), path.Join(dataDir, "snapshot") store, err = CreateStorage(logger, walDir, snapDir, ram) - assert.NoError(t, err) + require.NoError(t, err) } func clean(t *testing.T) { err = store.Close() - assert.NoError(t, err) + require.NoError(t, err) err = os.RemoveAll(dataDir) - assert.NoError(t, err) + require.NoError(t, err) } func fileCount(files []string, suffix string) (c int) { @@ -63,12 +62,12 @@ func fileCount(files []string, suffix string) (c int) { func assertFileCount(t *testing.T, wal, snap int) { files, err := fileutil.ReadDir(walDir) - assert.NoError(t, err) - assert.Equal(t, wal, fileCount(files, ".wal"), "WAL file count mismatch") + require.NoError(t, err) + require.Equal(t, wal, fileCount(files, ".wal"), "WAL file count mismatch") files, err = fileutil.ReadDir(snapDir) - assert.NoError(t, err) - assert.Equal(t, snap, fileCount(files, ".snap"), "Snap file count mismatch") + require.NoError(t, err) + require.Equal(t, snap, fileCount(files, ".snap"), "Snap file count mismatch") } func TestOpenWAL(t *testing.T) { @@ -89,12 +88,12 @@ func TestOpenWAL(t *testing.T) { // close current storage err = store.Close() - assert.NoError(t, err) + require.NoError(t, err) // truncate wal file w := func() string { files, err := fileutil.ReadDir(walDir) - assert.NoError(t, err) + require.NoError(t, err) for _, f := range files { if strings.HasSuffix(f, ".wal") { return path.Join(walDir, f) @@ -104,15 +103,15 @@ func TestOpenWAL(t *testing.T) { return "" }() err = os.Truncate(w, 200) - assert.NoError(t, err) + require.NoError(t, err) // create new storage ram = raft.NewMemoryStorage() store, err = CreateStorage(logger, walDir, snapDir, ram) require.NoError(t, err) lastI, _ := store.ram.LastIndex() - assert.True(t, lastI > 0) // we are still able to read some entries - assert.True(t, lasti > lastI) // but less than before because some are broken + require.True(t, lastI > 0) // we are still able to read some entries + require.True(t, lasti > lastI) // but less than before because some are broken }) } @@ -163,13 +162,13 @@ func TestTakeSnapshot(t *testing.T) { assertFileCount(t, 11, 0) err = store.TakeSnapshot(uint64(3), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) // Snapshot is taken at index 3, which releases lock up to 2 (excl.). // This results in wal files with index [0, 1] being purged (2 files) assertFileCount(t, 9, 1) err = store.TakeSnapshot(uint64(5), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) // Snapshot is taken at index 5, which releases lock up to 4 (excl.). // This results in wal files with index [2, 3] being purged (2 files) assertFileCount(t, 7, 1) @@ -177,19 +176,19 @@ func TestTakeSnapshot(t *testing.T) { t.Logf("Close the storage and create a new one based on existing files") err = store.Close() - assert.NoError(t, err) + require.NoError(t, err) ram := raft.NewMemoryStorage() store, err = CreateStorage(logger, walDir, snapDir, ram) - assert.NoError(t, err) + require.NoError(t, err) err = store.TakeSnapshot(uint64(7), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) // Snapshot is taken at index 7, which releases lock up to 6 (excl.). // This results in wal files with index [4, 5] being purged (2 file) assertFileCount(t, 5, 1) err = store.TakeSnapshot(uint64(9), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) // Snapshot is taken at index 9, which releases lock up to 8 (excl.). // This results in wal files with index [6, 7] being purged (2 file) assertFileCount(t, 3, 1) @@ -225,33 +224,33 @@ func TestTakeSnapshot(t *testing.T) { // Only one snapshot is taken, no wal pruning happened err = store.TakeSnapshot(uint64(3), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 11, 1) // Two snapshots at index 3, 5. And we keep one extra wal file prior to oldest snapshot. // So we should have pruned wal file with index [0, 1] err = store.TakeSnapshot(uint64(5), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 9, 2) t.Logf("Close the storage and create a new one based on existing files") err = store.Close() - assert.NoError(t, err) + require.NoError(t, err) ram := raft.NewMemoryStorage() store, err = CreateStorage(logger, walDir, snapDir, ram) - assert.NoError(t, err) + require.NoError(t, err) // Two snapshots at index 5, 7. And we keep one extra wal file prior to oldest snapshot. // So we should have pruned wal file with index [2, 3] err = store.TakeSnapshot(uint64(7), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 7, 2) // Two snapshots at index 7, 9. And we keep one extra wal file prior to oldest snapshot. // So we should have pruned wal file with index [4, 5] err = store.TakeSnapshot(uint64(9), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 5, 2) }) }) @@ -291,28 +290,28 @@ func TestTakeSnapshot(t *testing.T) { // Only one snapshot is taken, no wal pruning happened err = store.TakeSnapshot(uint64(3), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 11, 1) // Two snapshots at index 3, 5. And we keep one extra wal file prior to oldest snapshot. // So we should have pruned wal file with index [0, 1] err = store.TakeSnapshot(uint64(5), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 9, 2) d, err := os.Open(snapDir) - assert.NoError(t, err) + require.NoError(t, err) defer d.Close() names, err := d.Readdirnames(-1) - assert.NoError(t, err) + require.NoError(t, err) sort.Sort(sort.Reverse(sort.StringSlice(names))) corrupted := filepath.Join(snapDir, names[0]) t.Logf("Corrupt latest snapshot file: %s", corrupted) f, err := os.OpenFile(corrupted, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) - assert.NoError(t, err) + require.NoError(t, err) _, err = f.WriteString("Corrupted Snapshot") - assert.NoError(t, err) + require.NoError(t, err) f.Close() // Corrupted snapshot file should've been renamed by ListSnapshots @@ -322,30 +321,30 @@ func TestTakeSnapshot(t *testing.T) { // Rollback the rename broken := corrupted + ".broken" err = os.Rename(broken, corrupted) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 9, 2) t.Logf("Close the storage and create a new one based on existing files") err = store.Close() - assert.NoError(t, err) + require.NoError(t, err) ram := raft.NewMemoryStorage() store, err = CreateStorage(logger, walDir, snapDir, ram) - assert.NoError(t, err) + require.NoError(t, err) // Corrupted snapshot file should've been renamed by CreateStorage assertFileCount(t, 9, 1) files, err := fileutil.ReadDir(snapDir) - assert.NoError(t, err) - assert.Equal(t, 1, fileCount(files, ".broken")) + require.NoError(t, err) + require.Equal(t, 1, fileCount(files, ".broken")) err = store.TakeSnapshot(uint64(7), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 9, 2) err = store.TakeSnapshot(uint64(9), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 5, 2) }) }) @@ -376,11 +375,11 @@ func TestApplyOutOfDateSnapshot(t *testing.T) { assertFileCount(t, 11, 0) err = store.TakeSnapshot(uint64(3), raftpb.ConfState{Nodes: []uint64{1}}, make([]byte, 10)) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 11, 1) snapshot := store.Snapshot() - assert.NotNil(t, snapshot) + require.NotNil(t, snapshot) // Applying old snapshot should have no effect store.ApplySnapshot(snapshot) @@ -391,7 +390,7 @@ func TestApplyOutOfDateSnapshot(t *testing.T) { raftpb.HardState{}, snapshot, ) - assert.NoError(t, err) + require.NoError(t, err) assertFileCount(t, 12, 1) }) } diff --git a/orderer/consensus/etcdraft/util_test.go b/orderer/consensus/etcdraft/util_test.go index 20508007ab9..25545432d6c 100644 --- a/orderer/consensus/etcdraft/util_test.go +++ b/orderer/consensus/etcdraft/util_test.go @@ -19,7 +19,7 @@ import ( "github.com/hyperledger/fabric/common/crypto/tlsgen" "github.com/hyperledger/fabric/orderer/common/cluster" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestIsConsenterOfChannel(t *testing.T) { @@ -36,14 +36,14 @@ func TestIsConsenterOfChannel(t *testing.T) { "BQUFBQUFBQUFBQUFBQUFBQUFBQUFCTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFckJZRFVzV0JwOHB0ZVFSaTZyNjNVelhJQi81Sn" + "YxK0RlTkRIUHc3aDljQWlCakYrM3V5TzBvMEdRclB4MEUKUWptYlI5T3BVREN2LzlEUkNXWU9GZitkVlE9PQotLS0tLUVORCBDRVJUSU" + "ZJQ0FURS0tLS0tCg==") - assert.NoError(t, err) + require.NoError(t, err) validBlock := func() *common.Block { b, err := ioutil.ReadFile(filepath.Join("testdata", "etcdraftgenesis.block")) - assert.NoError(t, err) + require.NoError(t, err) block := &common.Block{} err = proto.Unmarshal(b, block) - assert.NoError(t, err) + require.NoError(t, err) return block } for _, testCase := range []struct { @@ -87,7 +87,7 @@ func TestIsConsenterOfChannel(t *testing.T) { } { t.Run(testCase.name, func(t *testing.T) { cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) consenterCertificate := &ConsenterCertificate{ ConsenterCertificate: testCase.certificate, @@ -95,9 +95,9 @@ func TestIsConsenterOfChannel(t *testing.T) { } err = consenterCertificate.IsConsenterOfChannel(testCase.configBlock) if testCase.expectedError != "" { - assert.EqualError(t, err, testCase.expectedError) + require.EqualError(t, err, testCase.expectedError) } else { - assert.NoError(t, err) + require.NoError(t, err) } }) } @@ -139,7 +139,7 @@ func TestCheckConfigMetadata(t *testing.T) { singleConsenter, }, } - assert.Nil(t, CheckConfigMetadata(goodMetadata)) + require.Nil(t, CheckConfigMetadata(goodMetadata)) // test variety of bad metadata for _, testCase := range []struct { @@ -279,7 +279,7 @@ func TestCheckConfigMetadata(t *testing.T) { }, } { err := CheckConfigMetadata(testCase.metadata) - assert.NotNil(t, err, testCase.description) - assert.Regexp(t, testCase.errRegex, err) + require.NotNil(t, err, testCase.description) + require.Regexp(t, testCase.errRegex, err) } } diff --git a/orderer/consensus/follower/block_puller_test.go b/orderer/consensus/follower/block_puller_test.go index 2486361e8aa..8dd5c5c78fe 100644 --- a/orderer/consensus/follower/block_puller_test.go +++ b/orderer/consensus/follower/block_puller_test.go @@ -24,7 +24,6 @@ import ( "github.com/hyperledger/fabric/orderer/common/localconfig" "github.com/hyperledger/fabric/orderer/consensus/follower" "github.com/hyperledger/fabric/orderer/consensus/follower/mocks" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -45,7 +44,7 @@ func TestBlockPullerFromJoinBlock(t *testing.T) { } cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore()) - assert.NoError(t, err) + require.NoError(t, err) t.Run("good", func(t *testing.T) { mockSupport.ChannelIDReturns(channelID) @@ -56,8 +55,8 @@ func TestBlockPullerFromJoinBlock(t *testing.T) { localconfig.Cluster{}, cryptoProvider, ) - assert.NoError(t, err) - assert.NotNil(t, bp) + require.NoError(t, err) + require.NotNil(t, bp) }) t.Run("dialer is nil", func(t *testing.T) { @@ -69,8 +68,8 @@ func TestBlockPullerFromJoinBlock(t *testing.T) { localconfig.Cluster{}, cryptoProvider, ) - assert.EqualError(t, err, "base dialer is nil") - assert.Nil(t, bp) + require.EqualError(t, err, "base dialer is nil") + require.Nil(t, bp) }) t.Run("dialer has bad cert", func(t *testing.T) { @@ -86,8 +85,8 @@ func TestBlockPullerFromJoinBlock(t *testing.T) { localconfig.Cluster{}, cryptoProvider, ) - assert.EqualError(t, err, "client certificate isn't in PEM format: not-a-certificate") - assert.Nil(t, bp) + require.EqualError(t, err, "client certificate isn't in PEM format: not-a-certificate") + require.Nil(t, bp) }) t.Run("bad join block", func(t *testing.T) { @@ -99,8 +98,8 @@ func TestBlockPullerFromJoinBlock(t *testing.T) { localconfig.Cluster{}, cryptoProvider, ) - assert.EqualError(t, err, "error extracting endpoints from config block: block data is nil") - assert.Nil(t, bp) + require.EqualError(t, err, "error extracting endpoints from config block: block data is nil") + require.Nil(t, bp) }) } diff --git a/orderer/consensus/follower/follower_chain_test.go b/orderer/consensus/follower/follower_chain_test.go index 0420cd57a5d..3f2a34335ac 100644 --- a/orderer/consensus/follower/follower_chain_test.go +++ b/orderer/consensus/follower/follower_chain_test.go @@ -16,7 +16,6 @@ import ( "github.com/hyperledger/fabric/orderer/consensus/follower" "github.com/hyperledger/fabric/orderer/consensus/follower/mocks" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -44,51 +43,51 @@ func TestFollowerNewChain(t *testing.T) { t.Run("with join block, not in channel", func(t *testing.T) { chain, err := follower.NewChain(mockSupport, joinBlockAppRaft, options, nil, nil, nil, iAmNotInChannel) - assert.NoError(t, err) + require.NoError(t, err) err = chain.Order(nil, 0) - assert.EqualError(t, err, "orderer is a follower of channel my-channel") + require.EqualError(t, err, "orderer is a follower of channel my-channel") err = chain.Configure(nil, 0) - assert.EqualError(t, err, "orderer is a follower of channel my-channel") + require.EqualError(t, err, "orderer is a follower of channel my-channel") err = chain.WaitReady() - assert.EqualError(t, err, "orderer is a follower of channel my-channel") + require.EqualError(t, err, "orderer is a follower of channel my-channel") _, open := <-chain.Errored() - assert.False(t, open) + require.False(t, open) cRel, status := chain.StatusReport() - assert.Equal(t, types.ClusterRelationFollower, cRel) - assert.Equal(t, types.StatusOnBoarding, status) + require.Equal(t, types.ClusterRelationFollower, cRel) + require.Equal(t, types.StatusOnBoarding, status) }) t.Run("with join block, in channel", func(t *testing.T) { chain, err := follower.NewChain(mockSupport, joinBlockAppRaft, options, nil, nil, nil, iAmInChannel) - assert.NoError(t, err) + require.NoError(t, err) cRel, status := chain.StatusReport() - assert.Equal(t, types.ClusterRelationMember, cRel) - assert.Equal(t, types.StatusOnBoarding, status) - - assert.NotPanics(t, chain.Start) - assert.NotPanics(t, chain.Start) - assert.NotPanics(t, chain.Halt) - assert.NotPanics(t, chain.Halt) - assert.NotPanics(t, chain.Start) + require.Equal(t, types.ClusterRelationMember, cRel) + require.Equal(t, types.StatusOnBoarding, status) + + require.NotPanics(t, chain.Start) + require.NotPanics(t, chain.Start) + require.NotPanics(t, chain.Halt) + require.NotPanics(t, chain.Halt) + require.NotPanics(t, chain.Start) }) t.Run("bad join block", func(t *testing.T) { chain, err := follower.NewChain(mockSupport, &common.Block{}, options, nil, nil, nil, nil) - assert.EqualError(t, err, "block header is nil") - assert.Nil(t, chain) + require.EqualError(t, err, "block header is nil") + require.Nil(t, chain) chain, err = follower.NewChain(mockSupport, &common.Block{Header: &common.BlockHeader{}}, options, nil, nil, nil, nil) - assert.EqualError(t, err, "block data is nil") - assert.Nil(t, chain) + require.EqualError(t, err, "block data is nil") + require.Nil(t, chain) }) t.Run("without join block", func(t *testing.T) { chain, err := follower.NewChain(mockSupport, nil, options, nil, nil, nil, nil) - assert.NoError(t, err) + require.NoError(t, err) cRel, status := chain.StatusReport() - assert.Equal(t, types.ClusterRelationFollower, cRel) - assert.True(t, status == types.StatusActive) + require.Equal(t, types.ClusterRelationFollower, cRel) + require.True(t, status == types.StatusActive) }) } diff --git a/orderer/consensus/inactive/inactive_chain_test.go b/orderer/consensus/inactive/inactive_chain_test.go index 66c85716c31..ccd0f8fd6af 100644 --- a/orderer/consensus/inactive/inactive_chain_test.go +++ b/orderer/consensus/inactive/inactive_chain_test.go @@ -12,22 +12,22 @@ import ( "github.com/hyperledger/fabric/orderer/common/types" "github.com/hyperledger/fabric/orderer/consensus/inactive" "github.com/pkg/errors" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestInactiveChain(t *testing.T) { err := errors.New("foo") chain := &inactive.Chain{Err: err} - assert.Equal(t, err, chain.Order(nil, 0)) - assert.Equal(t, err, chain.Configure(nil, 0)) - assert.Equal(t, err, chain.WaitReady()) - assert.NotPanics(t, chain.Start) - assert.NotPanics(t, chain.Halt) + require.Equal(t, err, chain.Order(nil, 0)) + require.Equal(t, err, chain.Configure(nil, 0)) + require.Equal(t, err, chain.WaitReady()) + require.NotPanics(t, chain.Start) + require.NotPanics(t, chain.Halt) _, open := <-chain.Errored() - assert.False(t, open) + require.False(t, open) cRel, status := chain.StatusReport() - assert.Equal(t, types.ClusterRelationConfigTracker, cRel) - assert.Equal(t, types.StatusInactive, status) + require.Equal(t, types.ClusterRelationConfigTracker, cRel) + require.Equal(t, types.StatusInactive, status) } diff --git a/orderer/consensus/kafka/chain_test.go b/orderer/consensus/kafka/chain_test.go index 12cb33465d3..fb701257ba1 100644 --- a/orderer/consensus/kafka/chain_test.go +++ b/orderer/consensus/kafka/chain_test.go @@ -27,7 +27,6 @@ import ( mockmultichannel "github.com/hyperledger/fabric/orderer/mocks/common/multichannel" "github.com/hyperledger/fabric/protoutil" . "github.com/onsi/gomega" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" ) @@ -117,7 +116,7 @@ func TestChain(t *testing.T) { mockConsenter.(*consenterImpl).metrics.LastOffsetPersisted = fakeLastOffsetPersisted chain, err := newChain(mockConsenter, mockSupport, newestOffset-1, lastOriginalOffsetProcessed, lastResubmittedConfigOffset) - assert.NoError(t, err, "Expected newChain to return without errors") + require.NoError(t, err, "Expected newChain to return without errors") select { case <-chain.Errored(): logger.Debug("Errored() returned a closed channel as expected") @@ -140,9 +139,9 @@ func TestChain(t *testing.T) { } require.Equal(t, fakeLastOffsetPersisted.WithCallCount(), 1) - assert.Equal(t, fakeLastOffsetPersisted.WithArgsForCall(0), []string{"channel", channelNameForTest(t)}) + require.Equal(t, fakeLastOffsetPersisted.WithArgsForCall(0), []string{"channel", channelNameForTest(t)}) require.Equal(t, fakeLastOffsetPersisted.SetCallCount(), 1) - assert.Equal(t, fakeLastOffsetPersisted.SetArgsForCall(0), float64(newestOffset-1)) + require.Equal(t, fakeLastOffsetPersisted.SetArgsForCall(0), float64(newestOffset-1)) }) t.Run("Start", func(t *testing.T) { @@ -209,7 +208,7 @@ func TestChain(t *testing.T) { chain.Halt() - assert.NotPanics(t, func() { chain.Halt() }, "Calling Halt() more than once shouldn't panic") + require.NotPanics(t, func() { chain.Halt() }, "Calling Halt() more than once shouldn't panic") }) t.Run("StartWithProducerForChannelError", func(t *testing.T) { @@ -223,7 +222,7 @@ func TestChain(t *testing.T) { // The production path will actually call chain.Start(). This is // functionally equivalent and allows us to run assertions on it. - assert.Panics(t, func() { startThread(chain) }, "Expected the Start() call to panic") + require.Panics(t, func() { startThread(chain) }, "Expected the Start() call to panic") }) t.Run("StartWithConnectMessageError", func(t *testing.T) { @@ -249,7 +248,7 @@ func TestChain(t *testing.T) { SetMessage(mockChannel.topic(), mockChannel.partition(), newestOffset, message), }) - assert.Panics(t, func() { startThread(chain) }, "Expected the Start() call to panic") + require.Panics(t, func() { startThread(chain) }, "Expected the Start() call to panic") }) t.Run("enqueueIfNotStarted", func(t *testing.T) { @@ -274,7 +273,7 @@ func TestChain(t *testing.T) { }) // We don't need to create a legit envelope here as it's not inspected during this test - assert.False(t, chain.enqueue(newRegularMessage([]byte("fooMessage"))), "Expected enqueue call to return false") + require.False(t, chain.enqueue(newRegularMessage([]byte("fooMessage"))), "Expected enqueue call to return false") }) t.Run("StartWithConsumerForChannelError", func(t *testing.T) { @@ -302,7 +301,7 @@ func TestChain(t *testing.T) { SetMessage(mockChannel.topic(), mockChannel.partition(), newestOffset, message), }) - assert.Panics(t, func() { startThread(chain) }, "Expected the Start() call to panic") + require.Panics(t, func() { startThread(chain) }, "Expected the Start() call to panic") }) t.Run("enqueueProper", func(t *testing.T) { @@ -333,7 +332,7 @@ func TestChain(t *testing.T) { // enqueue should have access to the post path, and its ProduceRequest should go by without error. // We don't need to create a legit envelope here as it's not inspected during this test - assert.True(t, chain.enqueue(newRegularMessage([]byte("fooMessage"))), "Expected enqueue call to return true") + require.True(t, chain.enqueue(newRegularMessage([]byte("fooMessage"))), "Expected enqueue call to return true") chain.Halt() }) @@ -367,7 +366,7 @@ func TestChain(t *testing.T) { // haltChan should close access to the post path. // We don't need to create a legit envelope here as it's not inspected during this test - assert.False(t, chain.enqueue(newRegularMessage([]byte("fooMessage"))), "Expected enqueue call to return false") + require.False(t, chain.enqueue(newRegularMessage([]byte("fooMessage"))), "Expected enqueue call to return false") }) t.Run("enqueueError", func(t *testing.T) { @@ -406,7 +405,7 @@ func TestChain(t *testing.T) { }) // We don't need to create a legit envelope here as it's not inspected during this test - assert.False(t, chain.enqueue(newRegularMessage([]byte("fooMessage"))), "Expected enqueue call to return false") + require.False(t, chain.enqueue(newRegularMessage([]byte("fooMessage"))), "Expected enqueue call to return false") }) t.Run("Order", func(t *testing.T) { @@ -416,7 +415,7 @@ func TestChain(t *testing.T) { chain, _ := newChain(mockConsenter, mockSupport, newestOffset-1, lastOriginalOffsetProcessed, lastResubmittedConfigOffset) // We don't need to create a legit envelope here as it's not inspected during this test - assert.Error(t, chain.Order(&cb.Envelope{}, uint64(0))) + require.Error(t, chain.Order(&cb.Envelope{}, uint64(0))) }) t.Run("Proper", func(t *testing.T) { @@ -448,7 +447,7 @@ func TestChain(t *testing.T) { } // We don't need to create a legit envelope here as it's not inspected during this test - assert.NoError(t, chain.Order(&cb.Envelope{}, uint64(0)), "Expect Order successfully") + require.NoError(t, chain.Order(&cb.Envelope{}, uint64(0)), "Expect Order successfully") }) }) @@ -459,7 +458,7 @@ func TestChain(t *testing.T) { chain, _ := newChain(mockConsenter, mockSupport, newestOffset-1, lastOriginalOffsetProcessed, lastResubmittedConfigOffset) // We don't need to create a legit envelope here as it's not inspected during this test - assert.Error(t, chain.Configure(&cb.Envelope{}, uint64(0))) + require.Error(t, chain.Configure(&cb.Envelope{}, uint64(0))) }) t.Run("Proper", func(t *testing.T) { @@ -491,7 +490,7 @@ func TestChain(t *testing.T) { } // We don't need to create a legit envelope here as it's not inspected during this test - assert.NoError(t, chain.Configure(&cb.Envelope{}, uint64(0)), "Expect Configure successfully") + require.NoError(t, chain.Configure(&cb.Envelope{}, uint64(0)), "Expect Configure successfully") }) }) } @@ -642,9 +641,9 @@ func TestSetupTopicForChannel(t *testing.T) { ReplicationFactor: 2}, mockChannel) if test.expectErr { - assert.Contains(t, err.Error(), test.errorMsg) + require.Contains(t, err.Error(), test.errorMsg) } else { - assert.NoError(t, err) + require.NoError(t, err) } }) } @@ -670,13 +669,13 @@ func TestSetupProducerForChannel(t *testing.T) { mockBroker.Returns(metadataResponse) producer, err := setupProducerForChannel(mockConsenter.retryOptions(), haltChan, []string{mockBroker.Addr()}, mockBrokerConfig, mockChannel) - assert.NoError(t, err, "Expected the setupProducerForChannel call to return without errors") - assert.NoError(t, producer.Close(), "Expected to close the producer without errors") + require.NoError(t, err, "Expected the setupProducerForChannel call to return without errors") + require.NoError(t, producer.Close(), "Expected to close the producer without errors") }) t.Run("WithError", func(t *testing.T) { _, err := setupProducerForChannel(mockConsenter.retryOptions(), haltChan, []string{}, mockBrokerConfig, mockChannel) - assert.Error(t, err, "Expected the setupProducerForChannel call to return an error") + require.Error(t, err, "Expected the setupProducerForChannel call to return an error") }) } @@ -696,13 +695,13 @@ func TestGetHealthyClusterReplicaInfo(t *testing.T) { mockBroker.Returns(metadataResponse) replicaIDs, err := getHealthyClusterReplicaInfo(mockConsenter.retryOptions(), haltChan, []string{mockBroker.Addr()}, mockBrokerConfig, mockChannel) - assert.NoError(t, err, "Expected the getHealthyClusterReplicaInfo call to return without errors") - assert.Equal(t, replicaIDs, ids) + require.NoError(t, err, "Expected the getHealthyClusterReplicaInfo call to return without errors") + require.Equal(t, replicaIDs, ids) }) t.Run("WithError", func(t *testing.T) { _, err := getHealthyClusterReplicaInfo(mockConsenter.retryOptions(), haltChan, []string{}, mockBrokerConfig, mockChannel) - assert.Error(t, err, "Expected the getHealthyClusterReplicaInfo call to return an error") + require.Error(t, err, "Expected the getHealthyClusterReplicaInfo call to return an error") }) } @@ -733,22 +732,22 @@ func TestSetupConsumerForChannel(t *testing.T) { t.Run("ProperParent", func(t *testing.T) { parentConsumer, err := setupParentConsumerForChannel(mockConsenter.retryOptions(), haltChan, []string{mockBroker.Addr()}, mockBrokerConfig, mockChannel) - assert.NoError(t, err, "Expected the setupParentConsumerForChannel call to return without errors") - assert.NoError(t, parentConsumer.Close(), "Expected to close the parentConsumer without errors") + require.NoError(t, err, "Expected the setupParentConsumerForChannel call to return without errors") + require.NoError(t, parentConsumer.Close(), "Expected to close the parentConsumer without errors") }) t.Run("ProperChannel", func(t *testing.T) { parentConsumer, _ := setupParentConsumerForChannel(mockConsenter.retryOptions(), haltChan, []string{mockBroker.Addr()}, mockBrokerConfig, mockChannel) defer func() { parentConsumer.Close() }() channelConsumer, err := setupChannelConsumerForChannel(mockConsenter.retryOptions(), haltChan, parentConsumer, mockChannel, newestOffset) - assert.NoError(t, err, "Expected the setupChannelConsumerForChannel call to return without errors") - assert.NoError(t, channelConsumer.Close(), "Expected to close the channelConsumer without errors") + require.NoError(t, err, "Expected the setupChannelConsumerForChannel call to return without errors") + require.NoError(t, channelConsumer.Close(), "Expected to close the channelConsumer without errors") }) t.Run("WithParentConsumerError", func(t *testing.T) { // Provide an empty brokers list _, err := setupParentConsumerForChannel(mockConsenter.retryOptions(), haltChan, []string{}, mockBrokerConfig, mockChannel) - assert.Error(t, err, "Expected the setupParentConsumerForChannel call to return an error") + require.Error(t, err, "Expected the setupParentConsumerForChannel call to return an error") }) t.Run("WithChannelConsumerError", func(t *testing.T) { @@ -756,7 +755,7 @@ func TestSetupConsumerForChannel(t *testing.T) { parentConsumer, _ := setupParentConsumerForChannel(mockConsenter.retryOptions(), haltChan, []string{mockBroker.Addr()}, mockBrokerConfig, mockChannel) _, err := setupChannelConsumerForChannel(mockConsenter.retryOptions(), haltChan, parentConsumer, mockChannel, newestOffset+1) defer func() { parentConsumer.Close() }() - assert.Error(t, err, "Expected the setupChannelConsumerForChannel call to return an error") + require.Error(t, err, "Expected the setupChannelConsumerForChannel call to return an error") }) } @@ -805,13 +804,13 @@ func TestCloseKafkaObjects(t *testing.T) { errs := bareMinimumChain.closeKafkaObjects() - assert.Len(t, errs, 0, "Expected zero errors") + require.Len(t, errs, 0, "Expected zero errors") - assert.NotPanics(t, func() { + require.NotPanics(t, func() { channelConsumer.Close() }) - assert.NotPanics(t, func() { + require.NotPanics(t, func() { parentConsumer.Close() }) @@ -833,7 +832,7 @@ func TestCloseKafkaObjects(t *testing.T) { mockParentConsumer := mocks.NewConsumer(t, nil) mockParentConsumer.ExpectConsumePartition(mockChannel.topic(), mockChannel.partition(), startFrom).YieldError(sarama.ErrOutOfBrokers) mockChannelConsumer, err := mockParentConsumer.ConsumePartition(mockChannel.topic(), mockChannel.partition(), startFrom) - assert.NoError(t, err, "Expected no error when setting up the mock partition consumer") + require.NoError(t, err, "Expected no error when setting up the mock partition consumer") bareMinimumChain := &chainImpl{ ConsenterSupport: mockSupport, @@ -844,13 +843,13 @@ func TestCloseKafkaObjects(t *testing.T) { errs := bareMinimumChain.closeKafkaObjects() - assert.Len(t, errs, 1, "Expected 1 error returned") + require.Len(t, errs, 1, "Expected 1 error returned") - assert.NotPanics(t, func() { + require.NotPanics(t, func() { mockChannelConsumer.Close() }) - assert.NotPanics(t, func() { + require.NotPanics(t, func() { mockParentConsumer.Close() }) }) @@ -867,7 +866,7 @@ func TestGetLastCutBlockNumber(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - assert.Equal(t, tc.expected, getLastCutBlockNumber(tc.input)) + require.Equal(t, tc.expected, getLastCutBlockNumber(tc.input)) }) } } @@ -897,11 +896,11 @@ func TestGetLastOffsetPersisted(t *testing.T) { t.Run(tc.name, func(t *testing.T) { if !tc.panics { persisted, processed, resubmitted := getOffsets(tc.md, mockChannel.String()) - assert.Equal(t, tc.expectedPersisted, persisted) - assert.Equal(t, tc.expectedProcessed, processed) - assert.Equal(t, tc.expectedResubmitted, resubmitted) + require.Equal(t, tc.expectedPersisted, persisted) + require.Equal(t, tc.expectedProcessed, processed) + require.Equal(t, tc.expectedResubmitted, resubmitted) } else { - assert.Panics(t, func() { + require.Panics(t, func() { getOffsets(tc.md, mockChannel.String()) }, "Expected getOffsets call to panic") } @@ -930,7 +929,7 @@ func TestSendConnectMessage(t *testing.T) { successResponse.AddTopicPartition(mockChannel.topic(), mockChannel.partition(), sarama.ErrNoError) mockBroker.Returns(successResponse) - assert.NoError(t, sendConnectMessage(mockConsenter.retryOptions(), haltChan, producer, mockChannel), "Expected the sendConnectMessage call to return without errors") + require.NoError(t, sendConnectMessage(mockConsenter.retryOptions(), haltChan, producer, mockChannel), "Expected the sendConnectMessage call to return without errors") }) t.Run("WithError", func(t *testing.T) { @@ -944,7 +943,7 @@ func TestSendConnectMessage(t *testing.T) { failureResponse.AddTopicPartition(mockChannel.topic(), mockChannel.partition(), sarama.ErrNotEnoughReplicas) mockBroker.Returns(failureResponse) - assert.Error(t, sendConnectMessage(mockConsenter.retryOptions(), haltChan, producer, mockChannel), "Expected the sendConnectMessage call to return an error") + require.Error(t, sendConnectMessage(mockConsenter.retryOptions(), haltChan, producer, mockChannel), "Expected the sendConnectMessage call to return an error") }) } @@ -960,7 +959,7 @@ func TestSendTimeToCut(t *testing.T) { mockBroker.Returns(metadataResponse) producer, err := sarama.NewSyncProducer([]string{mockBroker.Addr()}, mockBrokerConfig) - assert.NoError(t, err, "Expected no error when setting up the sarama SyncProducer") + require.NoError(t, err, "Expected no error when setting up the sarama SyncProducer") defer func() { producer.Close() }() timeToCutBlockNumber := uint64(3) @@ -973,8 +972,8 @@ func TestSendTimeToCut(t *testing.T) { timer = time.After(longTimeout) - assert.NoError(t, sendTimeToCut(producer, mockChannel, timeToCutBlockNumber, &timer), "Expected the sendTimeToCut call to return without errors") - assert.Nil(t, timer, "Expected the sendTimeToCut call to nil the timer") + require.NoError(t, sendTimeToCut(producer, mockChannel, timeToCutBlockNumber, &timer), "Expected the sendTimeToCut call to return without errors") + require.Nil(t, timer, "Expected the sendTimeToCut call to nil the timer") }) t.Run("WithError", func(t *testing.T) { @@ -988,8 +987,8 @@ func TestSendTimeToCut(t *testing.T) { timer = time.After(longTimeout) - assert.Error(t, sendTimeToCut(producer, mockChannel, timeToCutBlockNumber, &timer), "Expected the sendTimeToCut call to return an error") - assert.Nil(t, timer, "Expected the sendTimeToCut call to nil the timer") + require.Error(t, sendTimeToCut(producer, mockChannel, timeToCutBlockNumber, &timer), "Expected the sendTimeToCut call to return an error") + require.Nil(t, timer, "Expected the sendTimeToCut call to nil the timer") }) } @@ -1012,7 +1011,7 @@ func TestProcessMessagesToBlocks(t *testing.T) { mockParentConsumer := mocks.NewConsumer(t, &mockBrokerConfigCopy) mpc := mockParentConsumer.ExpectConsumePartition(mockChannel.topic(), mockChannel.partition(), int64(0)) mockChannelConsumer, err := mockParentConsumer.ConsumePartition(mockChannel.topic(), mockChannel.partition(), int64(0)) - assert.NoError(t, err, "Expected no error when setting up the mock partition consumer") + require.NoError(t, err, "Expected no error when setting up the mock partition consumer") t.Run("TimeToCut", func(t *testing.T) { t.Run("PendingMsgToCutProper", func(t *testing.T) { @@ -1085,8 +1084,8 @@ func TestProcessMessagesToBlocks(t *testing.T) { }() } - assert.NotEmpty(t, mockSupport.BlockCutterVal.CurBatch, "Expected the blockCutter to be non-empty") - assert.NotNil(t, bareMinimumChain.timer, "Expected the cutTimer to be non-nil when there are pending envelopes") + require.NotEmpty(t, mockSupport.BlockCutterVal.CurBatch, "Expected the blockCutter to be non-empty") + require.NotNil(t, bareMinimumChain.timer, "Expected the cutTimer to be non-nil when there are pending envelopes") }) @@ -1145,10 +1144,10 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessTimeToCutPass], "Expected 1 TIMETOCUT message processed") - assert.Equal(t, lastCutBlockNumber+1, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be bumped up by one") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessTimeToCutPass], "Expected 1 TIMETOCUT message processed") + require.Equal(t, lastCutBlockNumber+1, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be bumped up by one") }) t.Run("ReceiveTimeToCutZeroBatch", func(t *testing.T) { @@ -1195,10 +1194,10 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.Error(t, err, "Expected the processMessagesToBlocks call to return an error") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessTimeToCutError], "Expected 1 faulty TIMETOCUT message processed") - assert.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to stay the same") + require.Error(t, err, "Expected the processMessagesToBlocks call to return an error") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessTimeToCutError], "Expected 1 faulty TIMETOCUT message processed") + require.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to stay the same") }) t.Run("ReceiveTimeToCutLargerThanExpected", func(t *testing.T) { @@ -1245,10 +1244,10 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.Error(t, err, "Expected the processMessagesToBlocks call to return an error") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessTimeToCutError], "Expected 1 faulty TIMETOCUT message processed") - assert.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to stay the same") + require.Error(t, err, "Expected the processMessagesToBlocks call to return an error") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessTimeToCutError], "Expected 1 faulty TIMETOCUT message processed") + require.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to stay the same") }) t.Run("ReceiveTimeToCutStale", func(t *testing.T) { @@ -1295,10 +1294,10 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessTimeToCutPass], "Expected 1 TIMETOCUT message processed") - assert.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to stay the same") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessTimeToCutPass], "Expected 1 TIMETOCUT message processed") + require.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to stay the same") }) }) @@ -1340,9 +1339,9 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessConnectPass], "Expected 1 CONNECT message processed") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessConnectPass], "Expected 1 CONNECT message processed") }) }) @@ -1384,9 +1383,9 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 damaged REGULAR message processed") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 damaged REGULAR message processed") }) // This ensures regular kafka messages of type UNKNOWN are handled properly @@ -1440,9 +1439,9 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") }) t.Run("CutBlock", func(t *testing.T) { @@ -1500,15 +1499,15 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") - assert.Equal(t, lastCutBlockNumber+1, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be bumped up by one") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") + require.Equal(t, lastCutBlockNumber+1, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be bumped up by one") require.Equal(t, fakeLastOffsetPersisted.WithCallCount(), 1) - assert.Equal(t, fakeLastOffsetPersisted.WithArgsForCall(0), []string{"channel", "mockChannelFoo"}) + require.Equal(t, fakeLastOffsetPersisted.WithArgsForCall(0), []string{"channel", "mockChannelFoo"}) require.Equal(t, fakeLastOffsetPersisted.SetCallCount(), 1) - assert.Equal(t, fakeLastOffsetPersisted.SetArgsForCall(0), float64(9)) + require.Equal(t, fakeLastOffsetPersisted.SetArgsForCall(0), float64(9)) }) // This test ensures the corner case in FAB-5709 is taken care of @@ -1589,12 +1588,12 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(3), counts[indexRecvPass], "Expected 2 messages received and unmarshaled") - assert.Equal(t, uint64(3), counts[indexProcessRegularPass], "Expected 2 REGULAR messages processed") - assert.Equal(t, lastCutBlockNumber+2, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be bumped up by two") - assert.Equal(t, block1LastOffset, extractEncodedOffset(block1.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in first block to be %d", block1LastOffset) - assert.Equal(t, block2LastOffset, extractEncodedOffset(block2.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in second block to be %d", block2LastOffset) + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(3), counts[indexRecvPass], "Expected 2 messages received and unmarshaled") + require.Equal(t, uint64(3), counts[indexProcessRegularPass], "Expected 2 REGULAR messages processed") + require.Equal(t, lastCutBlockNumber+2, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be bumped up by two") + require.Equal(t, block1LastOffset, extractEncodedOffset(block1.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in first block to be %d", block1LastOffset) + require.Equal(t, block2LastOffset, extractEncodedOffset(block2.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in second block to be %d", block2LastOffset) }) t.Run("InvalidConfigEnv", func(t *testing.T) { @@ -1645,10 +1644,10 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message error") - assert.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber not to be incremented") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message error") + require.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber not to be incremented") }) t.Run("InvalidOrdererTxEnv", func(t *testing.T) { @@ -1699,10 +1698,10 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message error") - assert.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber not to be incremented") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message error") + require.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber not to be incremented") }) t.Run("InvalidNormalEnv", func(t *testing.T) { @@ -1749,9 +1748,9 @@ func TestProcessMessagesToBlocks(t *testing.T) { close(haltChan) // Identical to chain.Halt() <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message processed") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message processed") }) t.Run("CutConfigEnv", func(t *testing.T) { @@ -1807,11 +1806,11 @@ func TestProcessMessagesToBlocks(t *testing.T) { close(haltChan) // Identical to chain.Halt() <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") - assert.Equal(t, lastCutBlockNumber+1, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be incremented by 1") - assert.Equal(t, configBlkOffset, extractEncodedOffset(configBlk.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in second block to be %d", configBlkOffset) + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") + require.Equal(t, lastCutBlockNumber+1, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be incremented by 1") + require.Equal(t, configBlkOffset, extractEncodedOffset(configBlk.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in second block to be %d", configBlkOffset) }) // We are not expecting this type of message from Kafka @@ -1858,9 +1857,9 @@ func TestProcessMessagesToBlocks(t *testing.T) { close(haltChan) // Identical to chain.Halt() <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message processed") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message processed") }) t.Run("SendTimeToCut", func(t *testing.T) { @@ -1924,11 +1923,11 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") - assert.Equal(t, uint64(1), counts[indexSendTimeToCutPass], "Expected 1 TIMER event processed") - assert.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to stay the same") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") + require.Equal(t, uint64(1), counts[indexSendTimeToCutPass], "Expected 1 TIMER event processed") + require.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to stay the same") }) t.Run("SendTimeToCutError", func(t *testing.T) { @@ -1998,11 +1997,11 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") - assert.Equal(t, uint64(1), counts[indexSendTimeToCutError], "Expected 1 faulty TIMER event processed") - assert.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to stay the same") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") + require.Equal(t, uint64(1), counts[indexSendTimeToCutError], "Expected 1 faulty TIMER event processed") + require.Equal(t, lastCutBlockNumber, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to stay the same") }) }) @@ -2087,12 +2086,12 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(2), counts[indexRecvPass], "Expected 2 messages received and unmarshaled") - assert.Equal(t, uint64(2), counts[indexProcessRegularPass], "Expected 2 REGULAR messages processed") - assert.Equal(t, lastCutBlockNumber+2, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be bumped up by two") - assert.Equal(t, block1LastOffset, extractEncodedOffset(block1.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in first block to be %d", block1LastOffset) - assert.Equal(t, block2LastOffset, extractEncodedOffset(block2.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in second block to be %d", block2LastOffset) + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(2), counts[indexRecvPass], "Expected 2 messages received and unmarshaled") + require.Equal(t, uint64(2), counts[indexProcessRegularPass], "Expected 2 REGULAR messages processed") + require.Equal(t, lastCutBlockNumber+2, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be bumped up by two") + require.Equal(t, block1LastOffset, extractEncodedOffset(block1.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in first block to be %d", block1LastOffset) + require.Equal(t, block2LastOffset, extractEncodedOffset(block2.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in second block to be %d", block2LastOffset) }) t.Run("ReceiveRegularAndQueue", func(t *testing.T) { @@ -2148,9 +2147,9 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 2 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 2 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") }) }) @@ -2227,19 +2226,19 @@ func TestProcessMessagesToBlocks(t *testing.T) { close(haltChan) // Identical to chain.Halt() <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(2), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(2), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") - assert.Equal(t, lastCutBlockNumber+2, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be incremented by 2") - assert.Equal(t, normalBlkOffset, extractEncodedOffset(normalBlk.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in first block to be %d", normalBlkOffset) - assert.Equal(t, configBlkOffset, extractEncodedOffset(configBlk.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in second block to be %d", configBlkOffset) + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(2), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(2), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") + require.Equal(t, lastCutBlockNumber+2, bareMinimumChain.lastCutBlockNumber, "Expected lastCutBlockNumber to be incremented by 2") + require.Equal(t, normalBlkOffset, extractEncodedOffset(normalBlk.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in first block to be %d", normalBlkOffset) + require.Equal(t, configBlkOffset, extractEncodedOffset(configBlk.GetMetadata().Metadata[cb.BlockMetadataIndex_ORDERER]), "Expected encoded offset in second block to be %d", configBlkOffset) require.Equal(t, fakeLastOffsetPersisted.WithCallCount(), 2) - assert.Equal(t, fakeLastOffsetPersisted.WithArgsForCall(0), []string{"channel", "mockChannelFoo"}) - assert.Equal(t, fakeLastOffsetPersisted.WithArgsForCall(1), []string{"channel", "mockChannelFoo"}) + require.Equal(t, fakeLastOffsetPersisted.WithArgsForCall(0), []string{"channel", "mockChannelFoo"}) + require.Equal(t, fakeLastOffsetPersisted.WithArgsForCall(1), []string{"channel", "mockChannelFoo"}) require.Equal(t, fakeLastOffsetPersisted.SetCallCount(), 2) - assert.Equal(t, fakeLastOffsetPersisted.SetArgsForCall(0), float64(normalBlkOffset)) - assert.Equal(t, fakeLastOffsetPersisted.SetArgsForCall(1), float64(configBlkOffset)) + require.Equal(t, fakeLastOffsetPersisted.SetArgsForCall(0), float64(normalBlkOffset)) + require.Equal(t, fakeLastOffsetPersisted.SetArgsForCall(1), float64(configBlkOffset)) }) // This ensures config message is re-validated if config seq has advanced @@ -2300,9 +2299,9 @@ func TestProcessMessagesToBlocks(t *testing.T) { close(haltChan) // Identical to chain.Halt() <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message error") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message error") }) }) }) @@ -2362,8 +2361,8 @@ func TestProcessMessagesToBlocks(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvError], "Expected 1 Kafka error received") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvError], "Expected 1 Kafka error received") select { case <-bareMinimumChain.errorChan: @@ -2491,7 +2490,7 @@ func TestResubmission(t *testing.T) { mockParentConsumer := mocks.NewConsumer(t, &mockBrokerConfigCopy) mpc := mockParentConsumer.ExpectConsumePartition(mockChannel.topic(), mockChannel.partition(), int64(0)) mockChannelConsumer, err := mockParentConsumer.ConsumePartition(mockChannel.topic(), mockChannel.partition(), int64(0)) - assert.NoError(t, err, "Expected no error when setting up the mock partition consumer") + require.NoError(t, err, "Expected no error when setting up the mock partition consumer") t.Run("Normal", func(t *testing.T) { // This test lets kafka emit a mock re-submitted message that does not require reprocessing @@ -2553,9 +2552,9 @@ func TestResubmission(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 2 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 2 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") }) // This test lets kafka emit a mock re-submitted message that requires reprocessing @@ -2629,7 +2628,7 @@ func TestResubmission(t *testing.T) { proto.Unmarshal(block.Metadata.Metadata[cb.BlockMetadataIndex_ORDERER], metadata) kafkaMetadata := &ab.KafkaMetadata{} proto.Unmarshal(metadata.Value, kafkaMetadata) - assert.Equal(t, kafkaMetadata.LastOriginalOffsetProcessed, int64(4)) + require.Equal(t, kafkaMetadata.LastOriginalOffsetProcessed, int64(4)) case <-time.After(shortTimeout): t.Fatalf("Expected one block being cut") } @@ -2638,9 +2637,9 @@ func TestResubmission(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(2), counts[indexRecvPass], "Expected 2 message received and unmarshaled") - assert.Equal(t, uint64(2), counts[indexProcessRegularPass], "Expected 2 REGULAR message processed") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(2), counts[indexRecvPass], "Expected 2 message received and unmarshaled") + require.Equal(t, uint64(2), counts[indexProcessRegularPass], "Expected 2 REGULAR message processed") }) t.Run("InvalidDiscard", func(t *testing.T) { @@ -2699,9 +2698,9 @@ func TestResubmission(t *testing.T) { close(haltChan) // Identical to chain.Halt() <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message error") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message error") }) // This tests resubmission path with following steps: @@ -2834,9 +2833,9 @@ func TestResubmission(t *testing.T) { close(haltChan) // Identical to chain.Halt() <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(2), counts[indexRecvPass], "Expected 2 message received and unmarshaled") - assert.Equal(t, uint64(2), counts[indexProcessRegularPass], "Expected 2 REGULAR message error") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(2), counts[indexRecvPass], "Expected 2 message received and unmarshaled") + require.Equal(t, uint64(2), counts[indexProcessRegularPass], "Expected 2 REGULAR message error") }) }) @@ -2898,9 +2897,9 @@ func TestResubmission(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 2 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 2 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") }) // This test simulated the non-deterministic case, where somebody resubmitted message at offset X, @@ -2990,13 +2989,13 @@ func TestResubmission(t *testing.T) { select { case block := <-mockSupport.Blocks: metadata, err := protoutil.GetMetadataFromBlock(block, cb.BlockMetadataIndex_ORDERER) - assert.NoError(t, err, "Failed to get metadata from block") + require.NoError(t, err, "Failed to get metadata from block") kafkaMetadata := &ab.KafkaMetadata{} err = proto.Unmarshal(metadata.Value, kafkaMetadata) - assert.NoError(t, err, "Failed to unmarshal metadata") + require.NoError(t, err, "Failed to unmarshal metadata") - assert.Equal(t, kafkaMetadata.LastResubmittedConfigOffset, int64(5), "LastResubmittedConfigOffset didn't catch up") - assert.Equal(t, kafkaMetadata.LastOriginalOffsetProcessed, int64(5), "LastOriginalOffsetProcessed doesn't match") + require.Equal(t, kafkaMetadata.LastResubmittedConfigOffset, int64(5), "LastResubmittedConfigOffset didn't catch up") + require.Equal(t, kafkaMetadata.LastOriginalOffsetProcessed, int64(5), "LastOriginalOffsetProcessed doesn't match") case <-time.After(shortTimeout): t.Fatalf("Expected one block being cut") } @@ -3004,9 +3003,9 @@ func TestResubmission(t *testing.T) { close(haltChan) // Identical to chain.Halt() <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(2), counts[indexRecvPass], "Expected 2 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 2 REGULAR message error") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(2), counts[indexRecvPass], "Expected 2 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 2 REGULAR message error") }) // This test lets kafka emit a mock re-submitted message whose config seq is still behind @@ -3083,9 +3082,9 @@ func TestResubmission(t *testing.T) { logger.Debug("haltChan closed") <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularPass], "Expected 1 REGULAR message processed") }) t.Run("InvalidDiscard", func(t *testing.T) { @@ -3144,9 +3143,9 @@ func TestResubmission(t *testing.T) { close(haltChan) // Identical to chain.Halt() <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") - assert.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message error") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(1), counts[indexRecvPass], "Expected 1 message received and unmarshaled") + require.Equal(t, uint64(1), counts[indexProcessRegularError], "Expected 1 REGULAR message error") }) // This tests resubmission path with following steps: @@ -3275,9 +3274,9 @@ func TestResubmission(t *testing.T) { close(haltChan) // Identical to chain.Halt() <-done - assert.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") - assert.Equal(t, uint64(2), counts[indexRecvPass], "Expected 2 message received and unmarshaled") - assert.Equal(t, uint64(2), counts[indexProcessRegularPass], "Expected 2 REGULAR message error") + require.NoError(t, err, "Expected the processMessagesToBlocks call to return without errors") + require.Equal(t, uint64(2), counts[indexRecvPass], "Expected 2 message received and unmarshaled") + require.Equal(t, uint64(2), counts[indexProcessRegularPass], "Expected 2 REGULAR message error") }) }) } diff --git a/orderer/consensus/kafka/channel_test.go b/orderer/consensus/kafka/channel_test.go index 88cdef0cb11..c1d90c63135 100644 --- a/orderer/consensus/kafka/channel_test.go +++ b/orderer/consensus/kafka/channel_test.go @@ -19,7 +19,7 @@ package kafka import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestChannel(t *testing.T) { @@ -27,9 +27,9 @@ func TestChannel(t *testing.T) { expectedTopic := channelNameForTest(t) actualTopic := chn.topic() - assert.Equal(t, expectedTopic, actualTopic, "Got the wrong topic, expected %s, got %s instead", expectedTopic, actualTopic) + require.Equal(t, expectedTopic, actualTopic, "Got the wrong topic, expected %s, got %s instead", expectedTopic, actualTopic) expectedPartition := int32(defaultPartition) actualPartition := chn.partition() - assert.Equal(t, expectedPartition, actualPartition, "Got the wrong partition, expected %d, got %d instead", expectedPartition, actualPartition) + require.Equal(t, expectedPartition, actualPartition, "Got the wrong partition, expected %d, got %d instead", expectedPartition, actualPartition) } diff --git a/orderer/consensus/kafka/config_test.go b/orderer/consensus/kafka/config_test.go index d483d3303f9..54fc20c893e 100644 --- a/orderer/consensus/kafka/config_test.go +++ b/orderer/consensus/kafka/config_test.go @@ -13,7 +13,7 @@ import ( "github.com/Shopify/sarama" localconfig "github.com/hyperledger/fabric/orderer/common/localconfig" "github.com/hyperledger/fabric/orderer/mocks/util" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestBrokerConfig(t *testing.T) { @@ -35,7 +35,7 @@ func TestBrokerConfig(t *testing.T) { t.Run("New", func(t *testing.T) { producer, err := sarama.NewSyncProducer([]string{mockBroker.Addr()}, mockBrokerConfig) - assert.NoError(t, err, "Failed to create producer with given config:", err) + require.NoError(t, err, "Failed to create producer with given config:", err) producer.Close() }) @@ -51,8 +51,8 @@ func TestBrokerConfig(t *testing.T) { for i := 0; i < 10; i++ { assignedPartition, _, err := producer.SendMessage(&sarama.ProducerMessage{Topic: mockChannel2.topic()}) - assert.NoError(t, err, "Failed to send message:", err) - assert.Equal(t, differentPartition, assignedPartition, "Message wasn't posted to the right partition - expected %d, got %v", differentPartition, assignedPartition) + require.NoError(t, err, "Failed to send message:", err) + require.Equal(t, differentPartition, assignedPartition, "Message wasn't posted to the right partition - expected %d, got %v", differentPartition, assignedPartition) } }) @@ -74,7 +74,7 @@ func TestBrokerConfig(t *testing.T) { Topic: mockChannel1.topic(), Value: sarama.ByteEncoder(make([]byte, tc.size)), }) - assert.Equal(t, tc.err, err) + require.Equal(t, tc.err, err) }) } } @@ -95,12 +95,12 @@ func TestBrokerConfigTLSConfigEnabled(t *testing.T) { mockLocalConfig.Kafka.Version, defaultPartition) - assert.True(t, testBrokerConfig.Net.TLS.Enable) - assert.NotNil(t, testBrokerConfig.Net.TLS.Config) - assert.Len(t, testBrokerConfig.Net.TLS.Config.Certificates, 1) - assert.Len(t, testBrokerConfig.Net.TLS.Config.RootCAs.Subjects(), 1) - assert.Equal(t, uint16(0), testBrokerConfig.Net.TLS.Config.MaxVersion) - assert.Equal(t, uint16(tls.VersionTLS12), testBrokerConfig.Net.TLS.Config.MinVersion) + require.True(t, testBrokerConfig.Net.TLS.Enable) + require.NotNil(t, testBrokerConfig.Net.TLS.Config) + require.Len(t, testBrokerConfig.Net.TLS.Config.Certificates, 1) + require.Len(t, testBrokerConfig.Net.TLS.Config.RootCAs.Subjects(), 1) + require.Equal(t, uint16(0), testBrokerConfig.Net.TLS.Config.MaxVersion) + require.Equal(t, uint16(tls.VersionTLS12), testBrokerConfig.Net.TLS.Config.MinVersion) }) t.Run("Disabled", func(t *testing.T) { @@ -115,8 +115,8 @@ func TestBrokerConfigTLSConfigEnabled(t *testing.T) { mockLocalConfig.Kafka.Version, defaultPartition) - assert.False(t, testBrokerConfig.Net.TLS.Enable) - assert.Zero(t, testBrokerConfig.Net.TLS.Config) + require.False(t, testBrokerConfig.Net.TLS.Enable) + require.Zero(t, testBrokerConfig.Net.TLS.Config) }) } @@ -125,7 +125,7 @@ func TestBrokerConfigTLSConfigBadCert(t *testing.T) { caPublicKey, _, _ := util.GenerateMockPublicPrivateKeyPairPEM(true) t.Run("BadPrivateKey", func(t *testing.T) { - assert.Panics(t, func() { + require.Panics(t, func() { newBrokerConfig(localconfig.TLS{ Enabled: true, PrivateKey: privateKey, @@ -139,7 +139,7 @@ func TestBrokerConfigTLSConfigBadCert(t *testing.T) { }) }) t.Run("BadPublicKey", func(t *testing.T) { - assert.Panics(t, func() { + require.Panics(t, func() { newBrokerConfig(localconfig.TLS{ Enabled: true, PrivateKey: "TRASH", @@ -153,7 +153,7 @@ func TestBrokerConfigTLSConfigBadCert(t *testing.T) { }) }) t.Run("BadRootCAs", func(t *testing.T) { - assert.Panics(t, func() { + require.Panics(t, func() { newBrokerConfig(localconfig.TLS{ Enabled: true, PrivateKey: privateKey, diff --git a/orderer/consensus/kafka/consenter_test.go b/orderer/consensus/kafka/consenter_test.go index 64617f41f31..042760b0a41 100644 --- a/orderer/consensus/kafka/consenter_test.go +++ b/orderer/consensus/kafka/consenter_test.go @@ -24,7 +24,7 @@ import ( "github.com/hyperledger/fabric/orderer/consensus/kafka/mock" mockmultichannel "github.com/hyperledger/fabric/orderer/mocks/common/multichannel" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mock/orderer_config.go --fake-name OrdererConfig . ordererConfig @@ -113,7 +113,7 @@ func TestHandleChain(t *testing.T) { mockMetadata := &cb.Metadata{Value: protoutil.MarshalOrPanic(&ab.KafkaMetadata{LastOffsetPersisted: newestOffset - 1})} _, err := consenter.HandleChain(mockSupport, mockMetadata) - assert.NoError(t, err, "Expected the HandleChain call to return without errors") + require.NoError(t, err, "Expected the HandleChain call to return without errors") } // Test helper functions and mock objects defined here diff --git a/orderer/consensus/kafka/logger_test.go b/orderer/consensus/kafka/logger_test.go index 6ac180e98f8..2d222dbaf70 100644 --- a/orderer/consensus/kafka/logger_test.go +++ b/orderer/consensus/kafka/logger_test.go @@ -14,13 +14,13 @@ import ( "github.com/Shopify/sarama" "github.com/hyperledger/fabric/common/flogging" "github.com/onsi/gomega/gbytes" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestLoggerInit(t *testing.T) { - assert.IsType(t, &saramaLoggerImpl{}, sarama.Logger, "Sarama logger (sarama.Logger) is not properly initialized.") - assert.NotNil(t, saramaLogger, "Event logger (saramaLogger) is not properly initialized, it's Nil.") - assert.Equal(t, sarama.Logger, saramaLogger, "Sarama logger (sarama.Logger) and Event logger (saramaLogger) should be the same.") + require.IsType(t, &saramaLoggerImpl{}, sarama.Logger, "Sarama logger (sarama.Logger) is not properly initialized.") + require.NotNil(t, saramaLogger, "Event logger (saramaLogger) is not properly initialized, it's Nil.") + require.Equal(t, sarama.Logger, saramaLogger, "Sarama logger (sarama.Logger) and Event logger (saramaLogger) should be the same.") } func TestEventLogger(t *testing.T) { @@ -41,7 +41,7 @@ func TestEventLogger(t *testing.T) { select { // expect event from first listener case receivedEvent := <-eventChan: - assert.Equal(t, eventMessage, receivedEvent, "") + require.Equal(t, eventMessage, receivedEvent, "") case <-time.After(100 * time.Millisecond): t.Fatal("expected event on eventChan") } @@ -49,7 +49,7 @@ func TestEventLogger(t *testing.T) { // expect event from sesond listener select { case receivedEvent := <-eventChan2: - assert.Equal(t, eventMessage, receivedEvent, "") + require.Equal(t, eventMessage, receivedEvent, "") case <-time.After(100 * time.Millisecond): t.Fatal("expected event on eventChan2") } @@ -70,7 +70,7 @@ func TestEventLogger(t *testing.T) { // expect event from sesond listener select { case receivedEvent := <-eventChan2: - assert.Equal(t, eventMessage, receivedEvent, "") + require.Equal(t, eventMessage, receivedEvent, "") case <-time.After(100 * time.Millisecond): t.Fatal("expected event on eventChan2") } @@ -180,6 +180,6 @@ func TestLogPossibleKafkaVersionMismatch(t *testing.T) { t.Fatalf("did not expect to receive message") case <-time.After(shortTimeout): t.Logf("buffer:\n%s", buf.Contents()) - assert.Contains(t, string(buf.Contents()), "Kafka.Version specified in the orderer configuration is incorrectly set") + require.Contains(t, string(buf.Contents()), "Kafka.Version specified in the orderer configuration is incorrectly set") } } diff --git a/orderer/consensus/kafka/partitioner_test.go b/orderer/consensus/kafka/partitioner_test.go index 8e9fc434032..ece11da3cd0 100644 --- a/orderer/consensus/kafka/partitioner_test.go +++ b/orderer/consensus/kafka/partitioner_test.go @@ -10,7 +10,7 @@ import ( "testing" "github.com/Shopify/sarama" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestStaticPartitioner(t *testing.T) { @@ -22,7 +22,7 @@ func TestStaticPartitioner(t *testing.T) { for i := 0; i < 10; i++ { assignedPartition, err := partitioner.Partition(new(sarama.ProducerMessage), numberOfPartitions) - assert.NoError(t, err, "Partitioner not functioning as expected:", err) - assert.Equal(t, partition, assignedPartition, "Partitioner not returning the expected partition - expected %d, got %v", partition, assignedPartition) + require.NoError(t, err, "Partitioner not functioning as expected:", err) + require.Equal(t, partition, assignedPartition, "Partitioner not returning the expected partition - expected %d, got %v", partition, assignedPartition) } } diff --git a/orderer/consensus/kafka/retry_test.go b/orderer/consensus/kafka/retry_test.go index a4d872f1e39..8773d8d53c0 100644 --- a/orderer/consensus/kafka/retry_test.go +++ b/orderer/consensus/kafka/retry_test.go @@ -10,7 +10,7 @@ import ( "fmt" "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestRetry(t *testing.T) { @@ -29,13 +29,13 @@ func TestRetry(t *testing.T) { t.Run("Proper", func(t *testing.T) { exitChan := make(chan struct{}) rp = newRetryProcess(mockRetryOptions, exitChan, mockChannel, "foo", noErrorFn) - assert.NoError(t, rp.retry(), "Expected retry to return no errors") - assert.Equal(t, true, flag, "Expected flag to be set to true") + require.NoError(t, rp.retry(), "Expected retry to return no errors") + require.Equal(t, true, flag, "Expected flag to be set to true") }) t.Run("WithError", func(t *testing.T) { exitChan := make(chan struct{}) rp = newRetryProcess(mockRetryOptions, exitChan, mockChannel, "foo", errorFn) - assert.Error(t, rp.retry(), "Expected retry to return an error") + require.Error(t, rp.retry(), "Expected retry to return an error") }) } diff --git a/orderer/consensus/solo/consensus_test.go b/orderer/consensus/solo/consensus_test.go index 0dd4f16c7c3..42f7b7272f3 100644 --- a/orderer/consensus/solo/consensus_test.go +++ b/orderer/consensus/solo/consensus_test.go @@ -18,7 +18,7 @@ import ( mockblockcutter "github.com/hyperledger/fabric/orderer/mocks/common/blockcutter" mockmultichannel "github.com/hyperledger/fabric/orderer/mocks/common/multichannel" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o mocks/orderer_config.go --fake-name OrdererConfig . ordererConfig @@ -95,7 +95,7 @@ func TestStart(t *testing.T) { defer bs.Halt() support.BlockCutterVal.CutNext = true - assert.Nil(t, bs.Order(testMessage, 0)) + require.Nil(t, bs.Order(testMessage, 0)) select { case <-support.Blocks: case <-bs.Errored(): @@ -114,7 +114,7 @@ func TestOrderAfterHalt(t *testing.T) { defer close(support.BlockCutterVal.Block) bs := newChain(support) bs.Halt() - assert.NotNil(t, bs.Order(testMessage, 0), "Order should not be accepted after halt") + require.NotNil(t, bs.Order(testMessage, 0), "Order should not be accepted after halt") select { case <-bs.Errored(): default: @@ -261,7 +261,7 @@ func TestConfigMsg(t *testing.T) { defer bs.Halt() syncQueueMessage(testMessage, bs, support.BlockCutterVal) - assert.Nil(t, bs.Configure(testMessage, 0)) + require.Nil(t, bs.Configure(testMessage, 0)) select { case <-support.Blocks: @@ -336,7 +336,7 @@ func TestRevalidation(t *testing.T) { support.ProcessConfigMsgVal = testMessage t.Run("Valid", func(t *testing.T) { - assert.Nil(t, bs.Configure(testMessage, 0)) + require.Nil(t, bs.Configure(testMessage, 0)) select { case <-support.Blocks: @@ -347,7 +347,7 @@ func TestRevalidation(t *testing.T) { t.Run("Invalid", func(t *testing.T) { support.ProcessConfigMsgErr = fmt.Errorf("Config message is not valid") - assert.Nil(t, bs.Configure(testMessage, 0)) + require.Nil(t, bs.Configure(testMessage, 0)) select { case <-support.Blocks: @@ -376,7 +376,7 @@ func TestRevalidation(t *testing.T) { // We are not calling `syncQueueMessage` here because we don't expect // `Ordered` to be invoked at all in this case, so we don't need to // synchronize on `support.BlockCutterVal.Block`. - assert.Nil(t, bs.Order(testMessage, 0)) + require.Nil(t, bs.Order(testMessage, 0)) select { case <-support.Blocks: diff --git a/orderer/mocks/util/util_test.go b/orderer/mocks/util/util_test.go index e7fc98d0866..023b65a43c5 100644 --- a/orderer/mocks/util/util_test.go +++ b/orderer/mocks/util/util_test.go @@ -9,15 +9,15 @@ package util import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGenerateMockPublicPrivateKeyPairPEM(t *testing.T) { _, _, err := GenerateMockPublicPrivateKeyPairPEM(false) - assert.NoError(t, err, "Unable to generate a public/private key pair: %v", err) + require.NoError(t, err, "Unable to generate a public/private key pair: %v", err) } func TestGenerateMockPublicPrivateKeyPairPEMWhenCASet(t *testing.T) { _, _, err := GenerateMockPublicPrivateKeyPairPEM(true) - assert.NoError(t, err, "Unable to generate a signer certificate: %v", err) + require.NoError(t, err, "Unable to generate a signer certificate: %v", err) } diff --git a/protoutil/blockutils_test.go b/protoutil/blockutils_test.go index e798749a198..280189f2031 100644 --- a/protoutil/blockutils_test.go +++ b/protoutil/blockutils_test.go @@ -17,7 +17,6 @@ import ( cb "github.com/hyperledger/fabric-protos-go/common" configtxtest "github.com/hyperledger/fabric/common/configtx/test" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -25,17 +24,17 @@ var testChannelID = "myuniquetestchainid" func TestNewBlock(t *testing.T) { var block *cb.Block - assert.Nil(t, block.GetHeader()) - assert.Nil(t, block.GetData()) - assert.Nil(t, block.GetMetadata()) + require.Nil(t, block.GetHeader()) + require.Nil(t, block.GetData()) + require.Nil(t, block.GetMetadata()) data := &cb.BlockData{ Data: [][]byte{{0, 1, 2}}, } block = protoutil.NewBlock(uint64(0), []byte("datahash")) - assert.Equal(t, []byte("datahash"), block.Header.PreviousHash, "Incorrect previous hash") - assert.NotNil(t, block.GetData()) - assert.NotNil(t, block.GetMetadata()) + require.Equal(t, []byte("datahash"), block.Header.PreviousHash, "Incorrect previous hash") + require.NotNil(t, block.GetData()) + require.NotNil(t, block.GetMetadata()) block.GetHeader().DataHash = protoutil.BlockDataHash(data) asn1Bytes, err := asn1.Marshal(struct { @@ -48,9 +47,9 @@ func TestNewBlock(t *testing.T) { PreviousHash: []byte("datahash"), }) headerHash := sha256.Sum256(asn1Bytes) - assert.NoError(t, err) - assert.Equal(t, asn1Bytes, protoutil.BlockHeaderBytes(block.Header), "Incorrect marshaled blockheader bytes") - assert.Equal(t, headerHash[:], protoutil.BlockHeaderHash(block.Header), "Incorrect blockheader hash") + require.NoError(t, err) + require.Equal(t, asn1Bytes, protoutil.BlockHeaderBytes(block.Header), "Incorrect marshaled blockheader bytes") + require.Equal(t, headerHash[:], protoutil.BlockHeaderHash(block.Header), "Incorrect blockheader hash") } func TestGoodBlockHeaderBytes(t *testing.T) { @@ -73,16 +72,16 @@ func TestGoodBlockHeaderBytes(t *testing.T) { func TestGetChannelIDFromBlockBytes(t *testing.T) { gb, err := configtxtest.MakeGenesisBlock(testChannelID) - assert.NoError(t, err, "Failed to create test configuration block") + require.NoError(t, err, "Failed to create test configuration block") bytes, err := proto.Marshal(gb) - assert.NoError(t, err) + require.NoError(t, err) cid, err := protoutil.GetChannelIDFromBlockBytes(bytes) - assert.NoError(t, err) - assert.Equal(t, testChannelID, cid, "Failed to return expected chain ID") + require.NoError(t, err) + require.Equal(t, testChannelID, cid, "Failed to return expected chain ID") // bad block bytes _, err = protoutil.GetChannelIDFromBlockBytes([]byte("bad block")) - assert.Error(t, err, "Expected error with malformed block bytes") + require.Error(t, err, "Expected error with malformed block bytes") } func TestGetChannelIDFromBlock(t *testing.T) { @@ -92,20 +91,20 @@ func TestGetChannelIDFromBlock(t *testing.T) { // nil block _, err = protoutil.GetChannelIDFromBlock(gb) - assert.Error(t, err, "Expected error getting channel id from nil block") + require.Error(t, err, "Expected error getting channel id from nil block") gb, err = configtxtest.MakeGenesisBlock(testChannelID) - assert.NoError(t, err, "Failed to create test configuration block") + require.NoError(t, err, "Failed to create test configuration block") cid, err = protoutil.GetChannelIDFromBlock(gb) - assert.NoError(t, err, "Failed to get chain ID from block") - assert.Equal(t, testChannelID, cid, "Failed to return expected chain ID") + require.NoError(t, err, "Failed to get chain ID from block") + require.Equal(t, testChannelID, cid, "Failed to return expected chain ID") // missing data badBlock := gb badBlock.Data = nil _, err = protoutil.GetChannelIDFromBlock(badBlock) - assert.Error(t, err, "Expected error with missing block data") + require.Error(t, err, "Expected error with missing block data") // no envelope badBlock = &cb.Block{ @@ -114,7 +113,7 @@ func TestGetChannelIDFromBlock(t *testing.T) { }, } _, err = protoutil.GetChannelIDFromBlock(badBlock) - assert.Error(t, err, "Expected error with no envelope in data") + require.Error(t, err, "Expected error with no envelope in data") // bad payload env, _ := proto.Marshal(&cb.Envelope{ @@ -126,7 +125,7 @@ func TestGetChannelIDFromBlock(t *testing.T) { }, } _, err = protoutil.GetChannelIDFromBlock(badBlock) - assert.Error(t, err, "Expected error - malformed payload") + require.Error(t, err, "Expected error - malformed payload") // bad channel header payload, _ := proto.Marshal(&cb.Payload{ @@ -143,7 +142,7 @@ func TestGetChannelIDFromBlock(t *testing.T) { }, } _, err = protoutil.GetChannelIDFromBlock(badBlock) - assert.Error(t, err, "Expected error with malformed channel header") + require.Error(t, err, "Expected error with malformed channel header") // nil payload header payload, _ = proto.Marshal(&cb.Payload{}) @@ -156,54 +155,54 @@ func TestGetChannelIDFromBlock(t *testing.T) { }, } _, err = protoutil.GetChannelIDFromBlock(badBlock) - assert.Error(t, err, "Expected error when payload header is nil") + require.Error(t, err, "Expected error when payload header is nil") } func TestGetBlockFromBlockBytes(t *testing.T) { testChainID := "myuniquetestchainid" gb, err := configtxtest.MakeGenesisBlock(testChainID) - assert.NoError(t, err, "Failed to create test configuration block") + require.NoError(t, err, "Failed to create test configuration block") blockBytes, err := protoutil.Marshal(gb) - assert.NoError(t, err, "Failed to marshal block") + require.NoError(t, err, "Failed to marshal block") _, err = protoutil.UnmarshalBlock(blockBytes) - assert.NoError(t, err, "to get block from block bytes") + require.NoError(t, err, "to get block from block bytes") // bad block bytes _, err = protoutil.UnmarshalBlock([]byte("bad block")) - assert.Error(t, err, "Expected error for malformed block bytes") + require.Error(t, err, "Expected error for malformed block bytes") } func TestGetMetadataFromBlock(t *testing.T) { t.Run("new block", func(t *testing.T) { block := protoutil.NewBlock(0, nil) md, err := protoutil.GetMetadataFromBlock(block, cb.BlockMetadataIndex_ORDERER) - assert.NoError(t, err, "Unexpected error extracting metadata from new block") - assert.Nil(t, md.Value, "Expected metadata field value to be nil") - assert.Equal(t, 0, len(md.Value), "Expected length of metadata field value to be 0") + require.NoError(t, err, "Unexpected error extracting metadata from new block") + require.Nil(t, md.Value, "Expected metadata field value to be nil") + require.Equal(t, 0, len(md.Value), "Expected length of metadata field value to be 0") md = protoutil.GetMetadataFromBlockOrPanic(block, cb.BlockMetadataIndex_ORDERER) - assert.NotNil(t, md, "Expected to get metadata from block") + require.NotNil(t, md, "Expected to get metadata from block") }) t.Run("no metadata", func(t *testing.T) { block := protoutil.NewBlock(0, nil) block.Metadata = nil _, err := protoutil.GetMetadataFromBlock(block, cb.BlockMetadataIndex_ORDERER) - assert.Error(t, err, "Expected error with nil metadata") - assert.Contains(t, err.Error(), "no metadata in block") + require.Error(t, err, "Expected error with nil metadata") + require.Contains(t, err.Error(), "no metadata in block") }) t.Run("no metadata at index", func(t *testing.T) { block := protoutil.NewBlock(0, nil) block.Metadata.Metadata = [][]byte{{1, 2, 3}} _, err := protoutil.GetMetadataFromBlock(block, cb.BlockMetadataIndex_LAST_CONFIG) - assert.Error(t, err, "Expected error with nil metadata") - assert.Contains(t, err.Error(), "no metadata at index") + require.Error(t, err, "Expected error with nil metadata") + require.Contains(t, err.Error(), "no metadata at index") }) t.Run("malformed metadata", func(t *testing.T) { block := protoutil.NewBlock(0, nil) block.Metadata.Metadata[cb.BlockMetadataIndex_ORDERER] = []byte("bad metadata") _, err := protoutil.GetMetadataFromBlock(block, cb.BlockMetadataIndex_ORDERER) - assert.Error(t, err, "Expected error with malformed metadata") - assert.Contains(t, err.Error(), "error unmarshaling metadata at index [ORDERER]") - assert.Panics(t, func() { + require.Error(t, err, "Expected error with malformed metadata") + require.Contains(t, err.Error(), "error unmarshaling metadata at index [ORDERER]") + require.Panics(t, func() { _ = protoutil.GetMetadataFromBlockOrPanic(block, cb.BlockMetadataIndex_ORDERER) }, "Expected panic with malformed metadata") }) @@ -281,7 +280,7 @@ func TestInitBlockMeta(t *testing.T) { block := &cb.Block{} protoutil.InitBlockMetadata(block) // should have 3 entries - assert.Equal(t, 5, len(block.Metadata.Metadata), "Expected block to have 5 metadata entries") + require.Equal(t, 5, len(block.Metadata.Metadata), "Expected block to have 5 metadata entries") // block with a single entry block = &cb.Block{ @@ -290,7 +289,7 @@ func TestInitBlockMeta(t *testing.T) { block.Metadata.Metadata = append(block.Metadata.Metadata, []byte{}) protoutil.InitBlockMetadata(block) // should have 3 entries - assert.Equal(t, 5, len(block.Metadata.Metadata), "Expected block to have 5 metadata entries") + require.Equal(t, 5, len(block.Metadata.Metadata), "Expected block to have 5 metadata entries") } func TestCopyBlockMetadata(t *testing.T) { @@ -304,9 +303,9 @@ func TestCopyBlockMetadata(t *testing.T) { protoutil.CopyBlockMetadata(srcBlock, dstBlock) // check that the copy worked - assert.Equal(t, len(srcBlock.Metadata.Metadata), len(dstBlock.Metadata.Metadata), + require.Equal(t, len(srcBlock.Metadata.Metadata), len(dstBlock.Metadata.Metadata), "Expected target block to have same number of metadata entries after copy") - assert.Equal(t, metadata, dstBlock.Metadata.Metadata[cb.BlockMetadataIndex_ORDERER], + require.Equal(t, metadata, dstBlock.Metadata.Metadata[cb.BlockMetadataIndex_ORDERER], "Unexpected metadata from target block") } @@ -321,24 +320,24 @@ func TestGetLastConfigIndexFromBlock(t *testing.T) { }), }) result, err := protoutil.GetLastConfigIndexFromBlock(block) - assert.NoError(t, err, "Unexpected error returning last config index") - assert.Equal(t, index, result, "Unexpected last config index returned from block") + require.NoError(t, err, "Unexpected error returning last config index") + require.Equal(t, index, result, "Unexpected last config index returned from block") result = protoutil.GetLastConfigIndexFromBlockOrPanic(block) - assert.Equal(t, index, result, "Unexpected last config index returned from block") + require.Equal(t, index, result, "Unexpected last config index returned from block") }) t.Run("block with malformed signatures", func(t *testing.T) { block.Metadata.Metadata[cb.BlockMetadataIndex_SIGNATURES] = []byte("apple") _, err := protoutil.GetLastConfigIndexFromBlock(block) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to retrieve metadata: error unmarshaling metadata at index [SIGNATURES]") + require.Error(t, err) + require.Contains(t, err.Error(), "failed to retrieve metadata: error unmarshaling metadata at index [SIGNATURES]") }) t.Run("block with malformed orderer block metadata", func(t *testing.T) { block.Metadata.Metadata[cb.BlockMetadataIndex_SIGNATURES] = protoutil.MarshalOrPanic(&cb.Metadata{Value: []byte("banana")}) _, err := protoutil.GetLastConfigIndexFromBlock(block) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to unmarshal orderer block metadata") + require.Error(t, err) + require.Contains(t, err.Error(), "failed to unmarshal orderer block metadata") }) // TODO: FAB-15864 remove the tests below when we stop supporting upgrade from @@ -351,17 +350,17 @@ func TestGetLastConfigIndexFromBlock(t *testing.T) { }), }) result, err := protoutil.GetLastConfigIndexFromBlock(block) - assert.NoError(t, err, "Unexpected error returning last config index") - assert.Equal(t, index, result, "Unexpected last config index returned from block") + require.NoError(t, err, "Unexpected error returning last config index") + require.Equal(t, index, result, "Unexpected last config index returned from block") result = protoutil.GetLastConfigIndexFromBlockOrPanic(block) - assert.Equal(t, index, result, "Unexpected last config index returned from block") + require.Equal(t, index, result, "Unexpected last config index returned from block") }) t.Run("malformed metadata", func(t *testing.T) { block.Metadata.Metadata[cb.BlockMetadataIndex_LAST_CONFIG] = []byte("bad metadata") _, err := protoutil.GetLastConfigIndexFromBlock(block) - assert.Error(t, err) - assert.Contains(t, err.Error(), "failed to retrieve metadata: error unmarshaling metadata at index [LAST_CONFIG]") + require.Error(t, err) + require.Contains(t, err.Error(), "failed to retrieve metadata: error unmarshaling metadata at index [LAST_CONFIG]") }) t.Run("malformed last config", func(t *testing.T) { @@ -369,9 +368,9 @@ func TestGetLastConfigIndexFromBlock(t *testing.T) { Value: []byte("bad last config"), }) _, err := protoutil.GetLastConfigIndexFromBlock(block) - assert.Error(t, err, "Expected error with malformed last config metadata") - assert.Contains(t, err.Error(), "error unmarshaling LastConfig") - assert.Panics(t, func() { + require.Error(t, err, "Expected error with malformed last config metadata") + require.Contains(t, err.Error(), "error unmarshaling LastConfig") + require.Panics(t, func() { _ = protoutil.GetLastConfigIndexFromBlockOrPanic(block) }, "Expected panic with malformed last config metadata") }) diff --git a/protoutil/commonutils_test.go b/protoutil/commonutils_test.go index 8c5db5d8e3d..c90d5120fac 100644 --- a/protoutil/commonutils_test.go +++ b/protoutil/commonutils_test.go @@ -16,7 +16,7 @@ import ( pb "github.com/hyperledger/fabric-protos-go/peer" "github.com/hyperledger/fabric/common/crypto" "github.com/hyperledger/fabric/protoutil/fakes" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) //go:generate counterfeiter -o fakes/signer_serializer.go --fake-name SignerSerializer . signerSerializer @@ -58,13 +58,13 @@ func TestUnmarshalPayload(t *testing.T) { Data: []byte("payload"), }) payload, err := UnmarshalPayload(good) - assert.NoError(t, err, "Unexpected error unmarshaling payload") - assert.NotNil(t, payload, "Payload should not be nil") + require.NoError(t, err, "Unexpected error unmarshaling payload") + require.NotNil(t, payload, "Payload should not be nil") payload = UnmarshalPayloadOrPanic(good) - assert.NotNil(t, payload, "Payload should not be nil") + require.NotNil(t, payload, "Payload should not be nil") bad := []byte("bad payload") - assert.Panics(t, func() { + require.Panics(t, func() { _ = UnmarshalPayloadOrPanic(bad) }, "Expected panic unmarshaling malformed payload") @@ -74,16 +74,16 @@ func TestUnmarshalSignatureHeader(t *testing.T) { t.Run("invalid header", func(t *testing.T) { sighdrBytes := []byte("invalid signature header") _, err := UnmarshalSignatureHeader(sighdrBytes) - assert.Error(t, err, "Expected unmarshaling error") + require.Error(t, err, "Expected unmarshaling error") }) t.Run("valid empty header", func(t *testing.T) { sighdr := &cb.SignatureHeader{} sighdrBytes := MarshalOrPanic(sighdr) sighdr, err := UnmarshalSignatureHeader(sighdrBytes) - assert.NoError(t, err, "Unexpected error unmarshaling signature header") - assert.Nil(t, sighdr.Creator) - assert.Nil(t, sighdr.Nonce) + require.NoError(t, err, "Unexpected error unmarshaling signature header") + require.Nil(t, sighdr.Creator) + require.Nil(t, sighdr.Nonce) }) t.Run("valid header", func(t *testing.T) { @@ -93,9 +93,9 @@ func TestUnmarshalSignatureHeader(t *testing.T) { } sighdrBytes := MarshalOrPanic(sighdr) sighdr, err := UnmarshalSignatureHeader(sighdrBytes) - assert.NoError(t, err, "Unexpected error unmarshaling signature header") - assert.Equal(t, []byte("creator"), sighdr.Creator) - assert.Equal(t, []byte("nonce"), sighdr.Nonce) + require.NoError(t, err, "Unexpected error unmarshaling signature header") + require.Equal(t, []byte("creator"), sighdr.Creator) + require.Equal(t, []byte("nonce"), sighdr.Nonce) }) } @@ -103,7 +103,7 @@ func TestUnmarshalSignatureHeaderOrPanic(t *testing.T) { t.Run("panic due to invalid header", func(t *testing.T) { sighdrBytes := []byte("invalid signature header") - assert.Panics(t, func() { + require.Panics(t, func() { UnmarshalSignatureHeaderOrPanic(sighdrBytes) }, "Expected panic with invalid header") }) @@ -112,8 +112,8 @@ func TestUnmarshalSignatureHeaderOrPanic(t *testing.T) { sighdr := &cb.SignatureHeader{} sighdrBytes := MarshalOrPanic(sighdr) sighdr = UnmarshalSignatureHeaderOrPanic(sighdrBytes) - assert.Nil(t, sighdr.Creator) - assert.Nil(t, sighdr.Nonce) + require.Nil(t, sighdr.Creator) + require.Nil(t, sighdr.Nonce) }) } @@ -121,13 +121,13 @@ func TestUnmarshalEnvelope(t *testing.T) { var env *cb.Envelope good, _ := proto.Marshal(&cb.Envelope{}) env, err := UnmarshalEnvelope(good) - assert.NoError(t, err, "Unexpected error unmarshaling envelope") - assert.NotNil(t, env, "Envelope should not be nil") + require.NoError(t, err, "Unexpected error unmarshaling envelope") + require.NotNil(t, env, "Envelope should not be nil") env = UnmarshalEnvelopeOrPanic(good) - assert.NotNil(t, env, "Envelope should not be nil") + require.NotNil(t, env, "Envelope should not be nil") bad := []byte("bad envelope") - assert.Panics(t, func() { + require.Panics(t, func() { _ = UnmarshalEnvelopeOrPanic(bad) }, "Expected panic unmarshaling malformed envelope") @@ -137,13 +137,13 @@ func TestUnmarshalBlock(t *testing.T) { var env *cb.Block good, _ := proto.Marshal(&cb.Block{}) env, err := UnmarshalBlock(good) - assert.NoError(t, err, "Unexpected error unmarshaling block") - assert.NotNil(t, env, "Block should not be nil") + require.NoError(t, err, "Unexpected error unmarshaling block") + require.NotNil(t, env, "Block should not be nil") env = UnmarshalBlockOrPanic(good) - assert.NotNil(t, env, "Block should not be nil") + require.NotNil(t, env, "Block should not be nil") bad := []byte("bad block") - assert.Panics(t, func() { + require.Panics(t, func() { _ = UnmarshalBlockOrPanic(bad) }, "Expected panic unmarshaling malformed block") @@ -154,14 +154,14 @@ func TestUnmarshalEnvelopeOfType(t *testing.T) { env.Payload = []byte("bad payload") _, err := UnmarshalEnvelopeOfType(env, cb.HeaderType_CONFIG, nil) - assert.Error(t, err, "Expected error unmarshaling malformed envelope") + require.Error(t, err, "Expected error unmarshaling malformed envelope") payload, _ := proto.Marshal(&cb.Payload{ Header: nil, }) env.Payload = payload _, err = UnmarshalEnvelopeOfType(env, cb.HeaderType_CONFIG, nil) - assert.Error(t, err, "Expected error with missing payload header") + require.Error(t, err, "Expected error with missing payload header") payload, _ = proto.Marshal(&cb.Payload{ Header: &cb.Header{ @@ -170,7 +170,7 @@ func TestUnmarshalEnvelopeOfType(t *testing.T) { }) env.Payload = payload _, err = UnmarshalEnvelopeOfType(env, cb.HeaderType_CONFIG, nil) - assert.Error(t, err, "Expected error for malformed channel header") + require.Error(t, err, "Expected error for malformed channel header") chdr, _ := proto.Marshal(&cb.ChannelHeader{ Type: int32(cb.HeaderType_CHAINCODE_PACKAGE), @@ -182,7 +182,7 @@ func TestUnmarshalEnvelopeOfType(t *testing.T) { }) env.Payload = payload _, err = UnmarshalEnvelopeOfType(env, cb.HeaderType_CONFIG, nil) - assert.Error(t, err, "Expected error for wrong channel header type") + require.Error(t, err, "Expected error for wrong channel header type") chdr, _ = proto.Marshal(&cb.ChannelHeader{ Type: int32(cb.HeaderType_CONFIG), @@ -195,7 +195,7 @@ func TestUnmarshalEnvelopeOfType(t *testing.T) { }) env.Payload = payload _, err = UnmarshalEnvelopeOfType(env, cb.HeaderType_CONFIG, &cb.ConfigEnvelope{}) - assert.Error(t, err, "Expected error for malformed payload data") + require.Error(t, err, "Expected error for malformed payload data") chdr, _ = proto.Marshal(&cb.ChannelHeader{ Type: int32(cb.HeaderType_CONFIG), @@ -209,14 +209,14 @@ func TestUnmarshalEnvelopeOfType(t *testing.T) { }) env.Payload = payload _, err = UnmarshalEnvelopeOfType(env, cb.HeaderType_CONFIG, &cb.ConfigEnvelope{}) - assert.NoError(t, err, "Unexpected error unmarshaling envelope") + require.NoError(t, err, "Unexpected error unmarshaling envelope") } func TestExtractEnvelopeNilData(t *testing.T) { block := &cb.Block{} _, err := ExtractEnvelope(block, 0) - assert.Error(t, err, "Nil data") + require.Error(t, err, "Nil data") } func TestExtractEnvelopeWrongIndex(t *testing.T) { @@ -285,12 +285,12 @@ func TestUnmarshalChaincodeID(t *testing.T) { Version: ccversion, }) ccid, err := UnmarshalChaincodeID(ccidbytes) - assert.NoError(t, err) - assert.Equal(t, ccname, ccid.Name, "Expected ccid names to match") - assert.Equal(t, ccversion, ccid.Version, "Expected ccid versions to match") + require.NoError(t, err) + require.Equal(t, ccname, ccid.Name, "Expected ccid names to match") + require.Equal(t, ccversion, ccid.Version, "Expected ccid versions to match") _, err = UnmarshalChaincodeID([]byte("bad chaincodeID")) - assert.Error(t, err, "Expected error marshaling malformed chaincode ID") + require.Error(t, err, "Expected error marshaling malformed chaincode ID") } func TestNewSignatureHeaderOrPanic(t *testing.T) { @@ -300,13 +300,13 @@ func TestNewSignatureHeaderOrPanic(t *testing.T) { id.SerializeReturnsOnCall(0, []byte("serialized"), nil) id.SerializeReturnsOnCall(1, nil, errors.New("serialize failed")) sigHeader = NewSignatureHeaderOrPanic(id) - assert.NotNil(t, sigHeader, "Signature header should not be nil") + require.NotNil(t, sigHeader, "Signature header should not be nil") - assert.Panics(t, func() { + require.Panics(t, func() { _ = NewSignatureHeaderOrPanic(nil) }, "Expected panic with nil signer") - assert.Panics(t, func() { + require.Panics(t, func() { _ = NewSignatureHeaderOrPanic(id) }, "Expected panic with signature header error") } @@ -318,13 +318,13 @@ func TestSignOrPanic(t *testing.T) { signer.SignReturnsOnCall(1, nil, errors.New("bad signature")) sig := SignOrPanic(signer, msg) // mock signer returns message to be signed - assert.Equal(t, msg, sig, "Signature does not match expected value") + require.Equal(t, msg, sig, "Signature does not match expected value") - assert.Panics(t, func() { + require.Panics(t, func() { _ = SignOrPanic(nil, []byte("sign me")) }, "Expected panic with nil signer") - assert.Panics(t, func() { + require.Panics(t, func() { _ = SignOrPanic(signer, []byte("sign me")) }, "Expected panic with sign error") } @@ -368,18 +368,18 @@ func TestChannelHeader(t *testing.T) { }), }, })) - assert.NoError(t, err, "Channel header was present") + require.NoError(t, err, "Channel header was present") _, err = ChannelHeader(makeEnvelope(&cb.Payload{ Header: &cb.Header{}, })) - assert.Error(t, err, "ChannelHeader was missing") + require.Error(t, err, "ChannelHeader was missing") _, err = ChannelHeader(makeEnvelope(&cb.Payload{})) - assert.Error(t, err, "Header was missing") + require.Error(t, err, "Header was missing") _, err = ChannelHeader(&cb.Envelope{}) - assert.Error(t, err, "Payload was missing") + require.Error(t, err, "Payload was missing") } func TestIsConfigBlock(t *testing.T) { @@ -411,7 +411,7 @@ func TestIsConfigBlock(t *testing.T) { block := newBlock(env) result := IsConfigBlock(block) - assert.True(t, result, "IsConfigBlock returns true for blocks with CONFIG envelope") + require.True(t, result, "IsConfigBlock returns true for blocks with CONFIG envelope") // scenario 2: ORDERER_TRANSACTION envelope envType = int32(cb.HeaderType_ORDERER_TRANSACTION) @@ -419,7 +419,7 @@ func TestIsConfigBlock(t *testing.T) { block = newBlock(env) result = IsConfigBlock(block) - assert.True(t, result, "IsConfigBlock returns true for blocks with ORDERER_TRANSACTION envelope") + require.True(t, result, "IsConfigBlock returns true for blocks with ORDERER_TRANSACTION envelope") // scenario 3: MESSAGE envelope envType = int32(cb.HeaderType_MESSAGE) @@ -427,7 +427,7 @@ func TestIsConfigBlock(t *testing.T) { block = newBlock(env) result = IsConfigBlock(block) - assert.False(t, result, "IsConfigBlock returns false for blocks with MESSAGE envelope") + require.False(t, result, "IsConfigBlock returns false for blocks with MESSAGE envelope") } func TestEnvelopeToConfigUpdate(t *testing.T) { @@ -450,18 +450,18 @@ func TestEnvelopeToConfigUpdate(t *testing.T) { env := makeEnv(MarshalOrPanic(configUpdateEnv)) result, err := EnvelopeToConfigUpdate(env) - assert.NoError(t, err, "EnvelopeToConfigUpdate runs without error for valid CONFIG_UPDATE envelope") - assert.Equal(t, configUpdateEnv, result, "Correct configUpdateEnvelope returned") + require.NoError(t, err, "EnvelopeToConfigUpdate runs without error for valid CONFIG_UPDATE envelope") + require.Equal(t, configUpdateEnv, result, "Correct configUpdateEnvelope returned") // scenario 2: for invalid envelopes env = makeEnv([]byte("test bytes")) _, err = EnvelopeToConfigUpdate(env) - assert.Error(t, err, "EnvelopeToConfigUpdate fails with error for invalid CONFIG_UPDATE envelope") + require.Error(t, err, "EnvelopeToConfigUpdate fails with error for invalid CONFIG_UPDATE envelope") } func TestGetRandomNonce(t *testing.T) { key1, err := getRandomNonce() - assert.NoErrorf(t, err, "error getting random bytes") - assert.Len(t, key1, crypto.NonceSize) + require.NoErrorf(t, err, "error getting random bytes") + require.Len(t, key1, crypto.NonceSize) } diff --git a/protoutil/configtxutils_test.go b/protoutil/configtxutils_test.go index 667c1d941ca..39c368061c4 100644 --- a/protoutil/configtxutils_test.go +++ b/protoutil/configtxutils_test.go @@ -11,11 +11,11 @@ import ( "github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewConfigGroup(t *testing.T) { - assert.Equal(t, + require.Equal(t, &common.ConfigGroup{ Groups: make(map[string]*common.ConfigGroup), Values: make(map[string]*common.ConfigValue), diff --git a/protoutil/proputils_test.go b/protoutil/proputils_test.go index 4f62ffd6bb8..26348f255be 100644 --- a/protoutil/proputils_test.go +++ b/protoutil/proputils_test.go @@ -22,7 +22,7 @@ import ( mspmgmt "github.com/hyperledger/fabric/msp/mgmt" msptesttools "github.com/hyperledger/fabric/msp/mgmt/testtools" "github.com/hyperledger/fabric/protoutil" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func createCIS() *pb.ChaincodeInvocationSpec { @@ -35,7 +35,7 @@ func createCIS() *pb.ChaincodeInvocationSpec { func TestGetChaincodeDeploymentSpec(t *testing.T) { _, err := protoutil.UnmarshalChaincodeDeploymentSpec([]byte("bad spec")) - assert.Error(t, err, "Expected error with malformed spec") + require.Error(t, err, "Expected error with malformed spec") cds, _ := proto.Marshal(&pb.ChaincodeDeploymentSpec{ ChaincodeSpec: &pb.ChaincodeSpec{ @@ -43,7 +43,7 @@ func TestGetChaincodeDeploymentSpec(t *testing.T) { }, }) _, err = protoutil.UnmarshalChaincodeDeploymentSpec(cds) - assert.NoError(t, err, "Unexpected error getting deployment spec") + require.NoError(t, err, "Unexpected error getting deployment spec") } func TestCDSProposals(t *testing.T) { @@ -63,21 +63,21 @@ func TestCDSProposals(t *testing.T) { // install prop, txid, err = protoutil.CreateInstallProposalFromCDS(cds, creator) - assert.NotNil(t, prop, "Install proposal should not be nil") - assert.NoError(t, err, "Unexpected error creating install proposal") - assert.NotEqual(t, "", txid, "txid should not be empty") + require.NotNil(t, prop, "Install proposal should not be nil") + require.NoError(t, err, "Unexpected error creating install proposal") + require.NotEqual(t, "", txid, "txid should not be empty") // deploy prop, txid, err = protoutil.CreateDeployProposalFromCDS(chainID, cds, creator, policy, escc, vscc, nil) - assert.NotNil(t, prop, "Deploy proposal should not be nil") - assert.NoError(t, err, "Unexpected error creating deploy proposal") - assert.NotEqual(t, "", txid, "txid should not be empty") + require.NotNil(t, prop, "Deploy proposal should not be nil") + require.NoError(t, err, "Unexpected error creating deploy proposal") + require.NotEqual(t, "", txid, "txid should not be empty") // upgrade prop, txid, err = protoutil.CreateUpgradeProposalFromCDS(chainID, cds, creator, policy, escc, vscc, nil) - assert.NotNil(t, prop, "Upgrade proposal should not be nil") - assert.NoError(t, err, "Unexpected error creating upgrade proposal") - assert.NotEqual(t, "", txid, "txid should not be empty") + require.NotNil(t, prop, "Upgrade proposal should not be nil") + require.NoError(t, err, "Unexpected error creating upgrade proposal") + require.NotEqual(t, "", txid, "txid should not be empty") } @@ -204,9 +204,9 @@ func TestProposalWithTxID(t *testing.T) { "testtx", map[string][]byte{"certx": []byte("transient")}, ) - assert.Nil(t, err) - assert.NotNil(t, prop) - assert.Equal(t, txid, "testtx") + require.Nil(t, err) + require.NotNil(t, prop) + require.Equal(t, txid, "testtx") prop, txid, err = protoutil.CreateChaincodeProposalWithTxIDAndTransient( common.HeaderType_ENDORSER_TRANSACTION, @@ -216,9 +216,9 @@ func TestProposalWithTxID(t *testing.T) { "", map[string][]byte{"certx": []byte("transient")}, ) - assert.Nil(t, err) - assert.NotNil(t, prop) - assert.NotEmpty(t, txid) + require.Nil(t, err) + require.NotNil(t, prop) + require.NotEmpty(t, txid) } func TestProposalResponse(t *testing.T) { @@ -408,7 +408,7 @@ func TestEnvelope(t *testing.T) { t.Fatalf("Could not unmarshal ChaincodeActionPayload, err %s\n", err) return } - assert.NotNil(t, cap) + require.NotNil(t, cap) prp, err := protoutil.UnmarshalProposalResponsePayload(cap.Action.ProposalResponsePayload) if err != nil { @@ -442,12 +442,12 @@ func TestProposalTxID(t *testing.T) { creator := []byte{2} txid := protoutil.ComputeTxID(nonce, creator) - assert.NotEmpty(t, txid, "TxID cannot be empty.") - assert.Nil(t, protoutil.CheckTxID(txid, nonce, creator)) - assert.Error(t, protoutil.CheckTxID("", nonce, creator)) + require.NotEmpty(t, txid, "TxID cannot be empty.") + require.Nil(t, protoutil.CheckTxID(txid, nonce, creator)) + require.Error(t, protoutil.CheckTxID("", nonce, creator)) txid = protoutil.ComputeTxID(nil, nil) - assert.NotEmpty(t, txid, "TxID cannot be empty.") + require.NotEmpty(t, txid, "TxID cannot be empty.") } func TestComputeProposalTxID(t *testing.T) { @@ -465,7 +465,7 @@ func TestComputeProposalTxID(t *testing.T) { t.Logf("% s\n", txid) t.Logf("% s\n", txid2) - assert.Equal(t, txid, txid2) + require.Equal(t, txid, txid2) } var signer msp.SigningIdentity @@ -515,20 +515,20 @@ func TestInvokedChaincodeName(t *testing.T) { }), }), })) - assert.NoError(t, err) - assert.Equal(t, "cscc", name) + require.NoError(t, err) + require.Equal(t, "cscc", name) }) t.Run("BadProposalBytes", func(t *testing.T) { _, err := protoutil.InvokedChaincodeName([]byte("garbage")) - assert.EqualError(t, err, "could not unmarshal proposal: proto: can't skip unknown wire type 7") + require.EqualError(t, err, "could not unmarshal proposal: proto: can't skip unknown wire type 7") }) t.Run("BadChaincodeProposalBytes", func(t *testing.T) { _, err := protoutil.InvokedChaincodeName(protoutil.MarshalOrPanic(&pb.Proposal{ Payload: []byte("garbage"), })) - assert.EqualError(t, err, "could not unmarshal chaincode proposal payload: proto: can't skip unknown wire type 7") + require.EqualError(t, err, "could not unmarshal chaincode proposal payload: proto: can't skip unknown wire type 7") }) t.Run("BadChaincodeInvocationSpec", func(t *testing.T) { @@ -537,7 +537,7 @@ func TestInvokedChaincodeName(t *testing.T) { Input: []byte("garbage"), }), })) - assert.EqualError(t, err, "could not unmarshal chaincode invocation spec: proto: can't skip unknown wire type 7") + require.EqualError(t, err, "could not unmarshal chaincode invocation spec: proto: can't skip unknown wire type 7") }) t.Run("NilChaincodeSpec", func(t *testing.T) { @@ -546,7 +546,7 @@ func TestInvokedChaincodeName(t *testing.T) { Input: protoutil.MarshalOrPanic(&pb.ChaincodeInvocationSpec{}), }), })) - assert.EqualError(t, err, "chaincode spec is nil") + require.EqualError(t, err, "chaincode spec is nil") }) t.Run("NilChaincodeID", func(t *testing.T) { @@ -557,6 +557,6 @@ func TestInvokedChaincodeName(t *testing.T) { }), }), })) - assert.EqualError(t, err, "chaincode id is nil") + require.EqualError(t, err, "chaincode id is nil") }) } diff --git a/protoutil/txutils_test.go b/protoutil/txutils_test.go index ca62d97d46a..042999244e6 100644 --- a/protoutil/txutils_test.go +++ b/protoutil/txutils_test.go @@ -18,7 +18,7 @@ import ( "github.com/hyperledger/fabric/protoutil" "github.com/hyperledger/fabric/protoutil/fakes" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestGetPayloads(t *testing.T) { @@ -33,7 +33,7 @@ func TestGetPayloads(t *testing.T) { Extension: ccActionBytes, } proposalResponseBytes, err := proto.Marshal(proposalResponsePayload) - assert.NoError(t, err) + require.NoError(t, err) ccActionPayload := &pb.ChaincodeActionPayload{ Action: &pb.ChaincodeEndorsedAction{ ProposalResponsePayload: proposalResponseBytes, @@ -44,14 +44,14 @@ func TestGetPayloads(t *testing.T) { Payload: ccActionPayloadBytes, } _, _, err = protoutil.GetPayloads(txAction) - assert.NoError(t, err, "Unexpected error getting payload bytes") + require.NoError(t, err, "Unexpected error getting payload bytes") t.Logf("error1 [%s]", err) // nil proposal response extension proposalResponseBytes, err = proto.Marshal(&pb.ProposalResponsePayload{ Extension: nil, }) - assert.NoError(t, err) + require.NoError(t, err) ccActionPayloadBytes, _ = proto.Marshal(&pb.ChaincodeActionPayload{ Action: &pb.ChaincodeEndorsedAction{ ProposalResponsePayload: proposalResponseBytes, @@ -61,7 +61,7 @@ func TestGetPayloads(t *testing.T) { Payload: ccActionPayloadBytes, } _, _, err = protoutil.GetPayloads(txAction) - assert.Error(t, err, "Expected error with nil proposal response extension") + require.Error(t, err, "Expected error with nil proposal response extension") t.Logf("error2 [%s]", err) // malformed proposal response payload @@ -74,7 +74,7 @@ func TestGetPayloads(t *testing.T) { Payload: ccActionPayloadBytes, } _, _, err = protoutil.GetPayloads(txAction) - assert.Error(t, err, "Expected error with malformed proposal response payload") + require.Error(t, err, "Expected error with malformed proposal response payload") t.Logf("error3 [%s]", err) // malformed proposal response payload extension @@ -90,7 +90,7 @@ func TestGetPayloads(t *testing.T) { Payload: ccActionPayloadBytes, } _, _, err = protoutil.GetPayloads(txAction) - assert.Error(t, err, "Expected error with malformed proposal response extension") + require.Error(t, err, "Expected error with malformed proposal response extension") t.Logf("error4 [%s]", err) // nil proposal response payload extension @@ -106,7 +106,7 @@ func TestGetPayloads(t *testing.T) { Payload: ccActionPayloadBytes, } _, _, err = protoutil.GetPayloads(txAction) - assert.Error(t, err, "Expected error with nil proposal response extension") + require.Error(t, err, "Expected error with nil proposal response extension") t.Logf("error5 [%s]", err) // malformed transaction action payload @@ -114,7 +114,7 @@ func TestGetPayloads(t *testing.T) { Payload: []byte("bad payload"), } _, _, err = protoutil.GetPayloads(txAction) - assert.Error(t, err, "Expected error with malformed transaction action payload") + require.Error(t, err, "Expected error with malformed transaction action payload") t.Logf("error6 [%s]", err) } @@ -126,7 +126,7 @@ func TestCreateSignedTx(t *testing.T) { signID := &fakes.SignerSerializer{} signID.SerializeReturns([]byte("signer"), nil) signerBytes, err := signID.Serialize() - assert.NoError(t, err, "Unexpected error serializing signing identity") + require.NoError(t, err, "Unexpected error serializing signing identity") ccHeaderExtensionBytes := protoutil.MarshalOrPanic(&pb.ChaincodeHeaderExtension{}) chdrBytes := protoutil.MarshalOrPanic(&cb.ChannelHeader{ @@ -143,7 +143,7 @@ func TestCreateSignedTx(t *testing.T) { }) prop.Header = headerBytes _, err = protoutil.CreateSignedTx(prop, signID, responses...) - assert.Error(t, err, "Expected error with malformed signature header") + require.Error(t, err, "Expected error with malformed signature header") // set up the header bytes for the remaining tests headerBytes, _ = proto.Marshal(&cb.Header{ @@ -183,7 +183,7 @@ func TestCreateSignedTx(t *testing.T) { } for i, nonMatchingTest := range nonMatchingTests { _, err = protoutil.CreateSignedTx(prop, signID, nonMatchingTest.responses...) - assert.EqualErrorf(t, err, nonMatchingTest.expectedError, "Expected non-matching response error '%v' for test %d", nonMatchingTest.expectedError, i) + require.EqualErrorf(t, err, nonMatchingTest.expectedError, "Expected non-matching response error '%v' for test %d", nonMatchingTest.expectedError, i) } // no endorsement @@ -194,7 +194,7 @@ func TestCreateSignedTx(t *testing.T) { }, }} _, err = protoutil.CreateSignedTx(prop, signID, responses...) - assert.Error(t, err, "Expected error with no endorsements") + require.Error(t, err, "Expected error with no endorsements") // success responses = []*pb.ProposalResponse{{ @@ -205,7 +205,7 @@ func TestCreateSignedTx(t *testing.T) { }, }} _, err = protoutil.CreateSignedTx(prop, signID, responses...) - assert.NoError(t, err, "Unexpected error creating signed transaction") + require.NoError(t, err, "Unexpected error creating signed transaction") t.Logf("error: [%s]", err) // @@ -215,41 +215,41 @@ func TestCreateSignedTx(t *testing.T) { responses = []*pb.ProposalResponse{} // no proposal responses _, err = protoutil.CreateSignedTx(prop, signID, responses...) - assert.Error(t, err, "Expected error with no proposal responses") + require.Error(t, err, "Expected error with no proposal responses") // missing proposal header responses = append(responses, &pb.ProposalResponse{}) _, err = protoutil.CreateSignedTx(prop, signID, responses...) - assert.Error(t, err, "Expected error with no proposal header") + require.Error(t, err, "Expected error with no proposal header") // bad proposal payload prop.Payload = []byte("bad payload") _, err = protoutil.CreateSignedTx(prop, signID, responses...) - assert.Error(t, err, "Expected error with malformed proposal payload") + require.Error(t, err, "Expected error with malformed proposal payload") // bad payload header prop.Header = []byte("bad header") _, err = protoutil.CreateSignedTx(prop, signID, responses...) - assert.Error(t, err, "Expected error with malformed proposal header") + require.Error(t, err, "Expected error with malformed proposal header") } func TestCreateSignedTxStatus(t *testing.T) { serializedExtension, err := proto.Marshal(&pb.ChaincodeHeaderExtension{}) - assert.NoError(t, err) + require.NoError(t, err) serializedChannelHeader, err := proto.Marshal(&cb.ChannelHeader{ Extension: serializedExtension, }) - assert.NoError(t, err) + require.NoError(t, err) signingID := &fakes.SignerSerializer{} signingID.SerializeReturns([]byte("signer"), nil) serializedSigningID, err := signingID.Serialize() - assert.NoError(t, err) + require.NoError(t, err) serializedSignatureHeader, err := proto.Marshal(&cb.SignatureHeader{ Creator: serializedSigningID, }) - assert.NoError(t, err) + require.NoError(t, err) header := &cb.Header{ ChannelHeader: serializedChannelHeader, @@ -257,7 +257,7 @@ func TestCreateSignedTxStatus(t *testing.T) { } serializedHeader, err := proto.Marshal(header) - assert.NoError(t, err) + require.NoError(t, err) proposal := &pb.Proposal{ Header: serializedHeader, @@ -287,9 +287,9 @@ func TestCreateSignedTxStatus(t *testing.T) { _, err := protoutil.CreateSignedTx(proposal, signingID, response) if tc.expectedErr == "" { - assert.NoError(t, err) + require.NoError(t, err) } else { - assert.EqualError(t, err, tc.expectedErr) + require.EqualError(t, err, tc.expectedErr) } }) } @@ -305,21 +305,21 @@ func TestCreateSignedEnvelope(t *testing.T) { id.SignReturnsOnCall(1, nil, errors.New("bad signature")) env, err := protoutil.CreateSignedEnvelope(cb.HeaderType_CONFIG, channelID, id, msg, int32(1), uint64(1)) - assert.NoError(t, err, "Unexpected error creating signed envelope") - assert.NotNil(t, env, "Envelope should not be nil") + require.NoError(t, err, "Unexpected error creating signed envelope") + require.NotNil(t, env, "Envelope should not be nil") // mock sign returns the bytes to be signed - assert.Equal(t, []byte("goodsig"), env.Signature, "Unexpected signature returned") + require.Equal(t, []byte("goodsig"), env.Signature, "Unexpected signature returned") payload := &cb.Payload{} err = proto.Unmarshal(env.Payload, payload) - assert.NoError(t, err, "Failed to unmarshal payload") + require.NoError(t, err, "Failed to unmarshal payload") data := &cb.ConfigEnvelope{} err = proto.Unmarshal(payload.Data, data) - assert.NoError(t, err, "Expected payload data to be a config envelope") - assert.Equal(t, msg, data, "Payload data does not match expected value") + require.NoError(t, err, "Expected payload data to be a config envelope") + require.Equal(t, msg, data, "Payload data does not match expected value") _, err = protoutil.CreateSignedEnvelope(cb.HeaderType_CONFIG, channelID, id, &cb.ConfigEnvelope{}, int32(1), uint64(1)) - assert.Error(t, err, "Expected sign error") + require.Error(t, err, "Expected sign error") } func TestCreateSignedEnvelopeNilSigner(t *testing.T) { @@ -329,16 +329,16 @@ func TestCreateSignedEnvelopeNilSigner(t *testing.T) { env, err := protoutil.CreateSignedEnvelope(cb.HeaderType_CONFIG, channelID, nil, msg, int32(1), uint64(1)) - assert.NoError(t, err, "Unexpected error creating signed envelope") - assert.NotNil(t, env, "Envelope should not be nil") - assert.Empty(t, env.Signature, "Signature should have been empty") + require.NoError(t, err, "Unexpected error creating signed envelope") + require.NotNil(t, env, "Envelope should not be nil") + require.Empty(t, env.Signature, "Signature should have been empty") payload := &cb.Payload{} err = proto.Unmarshal(env.Payload, payload) - assert.NoError(t, err, "Failed to unmarshal payload") + require.NoError(t, err, "Failed to unmarshal payload") data := &cb.ConfigEnvelope{} err = proto.Unmarshal(payload.Data, data) - assert.NoError(t, err, "Expected payload data to be a config envelope") - assert.Equal(t, msg, data, "Payload data does not match expected value") + require.NoError(t, err, "Expected payload data to be a config envelope") + require.Equal(t, msg, data, "Payload data does not match expected value") } func TestGetSignedProposal(t *testing.T) { @@ -353,16 +353,16 @@ func TestGetSignedProposal(t *testing.T) { prop := &pb.Proposal{} propBytes, _ := proto.Marshal(prop) signedProp, err = protoutil.GetSignedProposal(prop, signID) - assert.NoError(t, err, "Unexpected error getting signed proposal") - assert.Equal(t, propBytes, signedProp.ProposalBytes, + require.NoError(t, err, "Unexpected error getting signed proposal") + require.Equal(t, propBytes, signedProp.ProposalBytes, "Proposal bytes did not match expected value") - assert.Equal(t, sig, signedProp.Signature, + require.Equal(t, sig, signedProp.Signature, "Signature did not match expected value") _, err = protoutil.GetSignedProposal(nil, signID) - assert.Error(t, err, "Expected error with nil proposal") + require.Error(t, err, "Expected error with nil proposal") _, err = protoutil.GetSignedProposal(prop, nil) - assert.Error(t, err, "Expected error with nil signing identity") + require.Error(t, err, "Expected error with nil signing identity") } @@ -383,16 +383,16 @@ func TestMockSignedEndorserProposalOrPanic(t *testing.T) { signedProp, prop = protoutil.MockSignedEndorserProposalOrPanic(chainID, cs, creator, sig) - assert.Equal(t, sig, signedProp.Signature, + require.Equal(t, sig, signedProp.Signature, "Signature did not match expected result") propBytes, _ := proto.Marshal(prop) - assert.Equal(t, propBytes, signedProp.ProposalBytes, + require.Equal(t, propBytes, signedProp.ProposalBytes, "Proposal bytes do not match expected value") err := proto.Unmarshal(prop.Payload, ccProposal) - assert.NoError(t, err, "Expected ChaincodeProposalPayload") + require.NoError(t, err, "Expected ChaincodeProposalPayload") err = proto.Unmarshal(ccProposal.Input, cis) - assert.NoError(t, err, "Expected ChaincodeInvocationSpec") - assert.Equal(t, cs.ChaincodeId.Name, cis.ChaincodeSpec.ChaincodeId.Name, + require.NoError(t, err, "Expected ChaincodeInvocationSpec") + require.Equal(t, cs.ChaincodeId.Name, cis.ChaincodeSpec.ChaincodeId.Name, "Chaincode name did not match expected value") } @@ -409,15 +409,15 @@ func TestMockSignedEndorserProposal2OrPanic(t *testing.T) { signedProp, prop = protoutil.MockSignedEndorserProposal2OrPanic(chainID, &pb.ChaincodeSpec{}, signID) - assert.Equal(t, sig, signedProp.Signature, + require.Equal(t, sig, signedProp.Signature, "Signature did not match expected result") propBytes, _ := proto.Marshal(prop) - assert.Equal(t, propBytes, signedProp.ProposalBytes, + require.Equal(t, propBytes, signedProp.ProposalBytes, "Proposal bytes do not match expected value") err := proto.Unmarshal(prop.Payload, ccProposal) - assert.NoError(t, err, "Expected ChaincodeProposalPayload") + require.NoError(t, err, "Expected ChaincodeProposalPayload") err = proto.Unmarshal(ccProposal.Input, cis) - assert.NoError(t, err, "Expected ChaincodeInvocationSpec") + require.NoError(t, err, "Expected ChaincodeInvocationSpec") } func TestGetBytesProposalPayloadForTx(t *testing.T) { @@ -430,11 +430,11 @@ func TestGetBytesProposalPayloadForTx(t *testing.T) { }) result, err := protoutil.GetBytesProposalPayloadForTx(input) - assert.NoError(t, err, "Unexpected error getting proposal payload") - assert.Equal(t, expected, result, "Payload does not match expected value") + require.NoError(t, err, "Unexpected error getting proposal payload") + require.Equal(t, expected, result, "Payload does not match expected value") _, err = protoutil.GetBytesProposalPayloadForTx(nil) - assert.Error(t, err, "Expected error with nil proposal payload") + require.Error(t, err, "Expected error with nil proposal payload") } func TestGetProposalHash2(t *testing.T) { @@ -445,11 +445,11 @@ func TestGetProposalHash2(t *testing.T) { SignatureHeader: []byte("shdr"), } propHash, err := protoutil.GetProposalHash2(hdr, []byte("ccproppayload")) - assert.NoError(t, err, "Unexpected error getting hash2 for proposal") - assert.Equal(t, expectedHash, propHash, "Proposal hash did not match expected hash") + require.NoError(t, err, "Unexpected error getting hash2 for proposal") + require.Equal(t, expectedHash, propHash, "Proposal hash did not match expected hash") _, err = protoutil.GetProposalHash2(&cb.Header{}, []byte("ccproppayload")) - assert.Error(t, err, "Expected error with nil arguments") + require.Error(t, err, "Expected error with nil arguments") } func TestGetProposalHash1(t *testing.T) { @@ -463,14 +463,14 @@ func TestGetProposalHash1(t *testing.T) { ccProposal, _ := proto.Marshal(&pb.ChaincodeProposalPayload{}) propHash, err := protoutil.GetProposalHash1(hdr, ccProposal) - assert.NoError(t, err, "Unexpected error getting hash for proposal") - assert.Equal(t, expectedHash, propHash, "Proposal hash did not match expected hash") + require.NoError(t, err, "Unexpected error getting hash for proposal") + require.Equal(t, expectedHash, propHash, "Proposal hash did not match expected hash") _, err = protoutil.GetProposalHash1(hdr, []byte("ccproppayload")) - assert.Error(t, err, "Expected error with malformed chaincode proposal payload") + require.Error(t, err, "Expected error with malformed chaincode proposal payload") _, err = protoutil.GetProposalHash1(&cb.Header{}, []byte("ccproppayload")) - assert.Error(t, err, "Expected error with nil arguments") + require.Error(t, err, "Expected error with nil arguments") } func TestCreateProposalResponseFailure(t *testing.T) { @@ -490,15 +490,15 @@ func TestCreateProposalResponseFailure(t *testing.T) { return } - assert.Equal(t, int32(502), prespFailure.Response.Status) + require.Equal(t, int32(502), prespFailure.Response.Status) // drilldown into the response to find the chaincode response pRespPayload, err := protoutil.UnmarshalProposalResponsePayload(prespFailure.Payload) - assert.NoError(t, err, "Error while unmarshaling proposal response payload: %s", err) + require.NoError(t, err, "Error while unmarshaling proposal response payload: %s", err) ca, err := protoutil.UnmarshalChaincodeAction(pRespPayload.Extension) - assert.NoError(t, err, "Error while unmarshaling chaincode action: %s", err) + require.NoError(t, err, "Error while unmarshaling chaincode action: %s", err) - assert.Equal(t, int32(502), ca.Response.Status) - assert.Equal(t, "Invalid function name", string(ca.Response.Payload)) + require.Equal(t, int32(502), ca.Response.Status) + require.Equal(t, "Invalid function name", string(ca.Response.Payload)) } func TestGetorComputeTxIDFromEnvelope(t *testing.T) { @@ -506,16 +506,16 @@ func TestGetorComputeTxIDFromEnvelope(t *testing.T) { txID := "709184f9d24f6ade8fcd4d6521a6eef295fef6c2e67216c58b68ac15e8946492" envelopeBytes := createSampleTxEnvelopeBytes(txID) actualTxID, err := protoutil.GetOrComputeTxIDFromEnvelope(envelopeBytes) - assert.Nil(t, err) - assert.Equal(t, "709184f9d24f6ade8fcd4d6521a6eef295fef6c2e67216c58b68ac15e8946492", actualTxID) + require.Nil(t, err) + require.Equal(t, "709184f9d24f6ade8fcd4d6521a6eef295fef6c2e67216c58b68ac15e8946492", actualTxID) }) t.Run("txID is not present in the envelope", func(t *testing.T) { txID := "" envelopeBytes := createSampleTxEnvelopeBytes(txID) actualTxID, err := protoutil.GetOrComputeTxIDFromEnvelope(envelopeBytes) - assert.Nil(t, err) - assert.Equal(t, "709184f9d24f6ade8fcd4d6521a6eef295fef6c2e67216c58b68ac15e8946492", actualTxID) + require.Nil(t, err) + require.Equal(t, "709184f9d24f6ade8fcd4d6521a6eef295fef6c2e67216c58b68ac15e8946492", actualTxID) }) }