From 856778a8d972d46551fba444aef00ee67df3a5ed Mon Sep 17 00:00:00 2001 From: Raven Black Date: Tue, 14 Jul 2026 22:03:26 +0000 Subject: [PATCH 1/5] Use status matchers where appropriate (14) Signed-off-by: Raven Black --- test/extensions/common/aws/BUILD | 4 + .../common/aws/aws_cluster_manager_test.cc | 13 ++-- .../aws/credential_provider_chains_test.cc | 21 +++--- .../common/aws/credential_providers/BUILD | 3 + ...oles_anywhere_credentials_provider_test.cc | 16 ++-- ...anywhere_x509_credentials_provider_test.cc | 70 ++++++++--------- .../webidentity_credentials_provider_test.cc | 3 +- .../common/aws/credentials_provider_test.cc | 5 +- test/extensions/common/aws/eventstream/BUILD | 1 + .../eventstream/eventstream_parser_test.cc | 75 ++++++++++--------- test/extensions/common/aws/signers/BUILD | 3 + .../aws/signers/sigv4_signer_impl_test.cc | 23 +++--- .../aws/signers/sigv4a_signer_corpus_test.cc | 3 +- .../aws/signers/sigv4a_signer_impl_test.cc | 25 ++++--- test/extensions/common/aws/utility_test.cc | 17 +++-- test/extensions/compression/zstd/BUILD | 1 + .../compression/zstd/zstd_compression_test.cc | 13 ++-- .../filters/http/json_to_metadata/BUILD | 1 + .../http/json_to_metadata/config_test.cc | 6 +- .../filters/network/dubbo_proxy/BUILD | 1 + .../network/dubbo_proxy/config_test.cc | 6 +- .../load_balancing_policies/random/BUILD | 1 + .../random/config_test.cc | 3 +- 23 files changed, 172 insertions(+), 142 deletions(-) diff --git a/test/extensions/common/aws/BUILD b/test/extensions/common/aws/BUILD index e1ccda24b87e1..b1ac67e22d2ef 100644 --- a/test/extensions/common/aws/BUILD +++ b/test/extensions/common/aws/BUILD @@ -40,6 +40,7 @@ envoy_cc_test( "//test/mocks/server:factory_context_mocks", "//test/mocks/upstream:cluster_manager_mocks", "//test/test_common:environment_lib", + "//test/test_common:status_utility_lib", "//test/test_common:test_runtime_lib", ], ) @@ -51,6 +52,7 @@ envoy_cc_test( deps = [ "//source/extensions/common/aws:aws_cluster_manager_lib", "//test/mocks/server:server_factory_context_mocks", + "//test/test_common:status_utility_lib", "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto", ], ) @@ -63,6 +65,7 @@ envoy_cc_test( "//source/extensions/common/aws:utility_lib", "//test/extensions/common/aws:aws_mocks", "//test/mocks/server:server_factory_context_mocks", + "//test/test_common:status_utility_lib", "//test/test_common:utility_lib", ], ) @@ -107,5 +110,6 @@ envoy_cc_test( "//source/extensions/common/aws/signers:sigv4_signer_impl_lib", "//test/extensions/common/aws:aws_mocks", "//test/mocks/server:factory_context_mocks", + "//test/test_common:status_utility_lib", ], ) diff --git a/test/extensions/common/aws/aws_cluster_manager_test.cc b/test/extensions/common/aws/aws_cluster_manager_test.cc index 3836f335f4c5e..2b52bb736d7ec 100644 --- a/test/extensions/common/aws/aws_cluster_manager_test.cc +++ b/test/extensions/common/aws/aws_cluster_manager_test.cc @@ -3,10 +3,13 @@ #include "source/extensions/common/aws/aws_cluster_manager.h" #include "test/mocks/server/server_factory_context.h" +#include "test/test_common/status_utility.h" #include "gtest/gtest.h" +using ::Envoy::StatusHelpers::IsOk; using testing::NiceMock; +using ::testing::Not; using testing::Return; namespace Envoy { namespace Extensions { @@ -57,11 +60,11 @@ TEST_F(AwsClusterManagerTest, AddClusters) { "cluster_3", envoy::config::cluster::v3::Cluster::DiscoveryType::Cluster_DiscoveryType_STRICT_DNS, "uri_3"); - EXPECT_TRUE(aws_cluster_manager->getUriFromClusterName("cluster_1").ok()); + EXPECT_OK(aws_cluster_manager->getUriFromClusterName("cluster_1")); EXPECT_EQ(aws_cluster_manager->getUriFromClusterName("cluster_1").value(), "uri_1"); - EXPECT_TRUE(aws_cluster_manager->getUriFromClusterName("cluster_2").ok()); + EXPECT_OK(aws_cluster_manager->getUriFromClusterName("cluster_2")); EXPECT_EQ(aws_cluster_manager->getUriFromClusterName("cluster_2").value(), "uri_2"); - EXPECT_TRUE(aws_cluster_manager->getUriFromClusterName("cluster_3").ok()); + EXPECT_OK(aws_cluster_manager->getUriFromClusterName("cluster_3")); EXPECT_EQ(aws_cluster_manager->getUriFromClusterName("cluster_3").value(), "uri_3"); // Adding an extra with the same cluster name has no effect status = aws_cluster_manager->addManagedCluster( @@ -158,7 +161,7 @@ TEST_F(AwsClusterManagerTest, CreateQueuedViaInitManagerWithFailedCluster) { "new_url"); // Cluster creation should be queued at this point init_target_->initialize(init_watcher_); - EXPECT_FALSE(aws_cluster_manager->getUriFromClusterName("cluster_1").ok()); + EXPECT_THAT(aws_cluster_manager->getUriFromClusterName("cluster_1"), Not(IsOk())); } // Checks that aws cluster manager constructor does not add an init target if the init manager is @@ -208,7 +211,7 @@ TEST_F(AwsClusterManagerTest, ClusterManagerCannotAdd) { envoy::config::cluster::v3::Cluster::DiscoveryType::Cluster_DiscoveryType_STRICT_DNS, "new_url"); EXPECT_EQ(absl::StatusCode::kInternal, status.code()); - EXPECT_FALSE(aws_cluster_manager->getUriFromClusterName("cluster_1").ok()); + EXPECT_THAT(aws_cluster_manager->getUriFromClusterName("cluster_1"), Not(IsOk())); } // Noop test for coverage diff --git a/test/extensions/common/aws/credential_provider_chains_test.cc b/test/extensions/common/aws/credential_provider_chains_test.cc index ef01c2bcb5579..0c95152418264 100644 --- a/test/extensions/common/aws/credential_provider_chains_test.cc +++ b/test/extensions/common/aws/credential_provider_chains_test.cc @@ -5,12 +5,15 @@ #include "test/mocks/server/server_factory_context.h" #include "test/mocks/upstream/cluster_manager.h" #include "test/test_common/environment.h" +#include "test/test_common/status_utility.h" #include "test/test_common/test_runtime.h" #include "gtest/gtest.h" +using ::Envoy::StatusHelpers::IsOk; using testing::_; using testing::NiceMock; +using ::testing::Not; using testing::Ref; using testing::Return; using testing::ReturnRef; @@ -342,7 +345,7 @@ TEST_F(CustomCredentialsProviderChainTest, NoProvider) { credential_provider_config.set_custom_credential_provider_chain(true); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_FALSE(chain.ok()); + EXPECT_THAT(chain, Not(IsOk())); } TEST_F(CustomCredentialsProviderChainTest, InstanceProfileOnly) { @@ -351,7 +354,7 @@ TEST_F(CustomCredentialsProviderChainTest, InstanceProfileOnly) { credential_provider_config.mutable_instance_profile_credential_provider(); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_TRUE(chain.ok()); + EXPECT_OK(chain); EXPECT_EQ(1, chain.value()->getNumProviders()); } @@ -362,7 +365,7 @@ TEST_F(CustomCredentialsProviderChainTest, InstanceProfileAndEnvironmentOnly) { credential_provider_config.mutable_environment_credential_provider(); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_TRUE(chain.ok()); + EXPECT_OK(chain); EXPECT_EQ(2, chain.value()->getNumProviders()); } @@ -375,7 +378,7 @@ TEST_F(CustomCredentialsProviderChainTest, WebIdentityOnly) { ->set_environment_variable("TEST"); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_TRUE(chain.ok()); + EXPECT_OK(chain); EXPECT_EQ(1, chain.value()->getNumProviders()); } @@ -385,7 +388,7 @@ TEST_F(CustomCredentialsProviderChainTest, CredentialFileOnly) { credential_provider_config.mutable_credentials_file_provider(); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_TRUE(chain.ok()); + EXPECT_OK(chain); EXPECT_EQ(1, chain.value()->getNumProviders()); } @@ -397,7 +400,7 @@ TEST_F(CustomCredentialsProviderChainTest, ContainerOnly) { credential_provider_config.mutable_container_credential_provider(); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_TRUE(chain.ok()); + EXPECT_OK(chain); EXPECT_EQ(1, chain.value()->getNumProviders()); } @@ -411,7 +414,7 @@ TEST_F(CustomCredentialsProviderChainTest, AssumeRoleOnly) { auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "us-east-1", credential_provider_config); - EXPECT_TRUE(chain.ok()); + EXPECT_OK(chain); EXPECT_EQ(1, chain.value()->getNumProviders()); } @@ -426,7 +429,7 @@ TEST_F(CustomCredentialsProviderChainTest, AssumeRoleWithEnvironment) { auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "us-east-1", credential_provider_config); - EXPECT_TRUE(chain.ok()); + EXPECT_OK(chain); EXPECT_EQ(2, chain.value()->getNumProviders()); } @@ -573,7 +576,7 @@ TEST_F(CustomCredentialsProviderChainTest, AssumeRoleInnerChainSubscriptionsSetu auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "us-east-1", credential_provider_config); - EXPECT_TRUE(chain.ok()); + EXPECT_OK(chain); EXPECT_EQ(1, chain.value()->getNumProviders()); auto instance_profile_provider = diff --git a/test/extensions/common/aws/credential_providers/BUILD b/test/extensions/common/aws/credential_providers/BUILD index 31b59abacb0ab..0577b3ad2a2c6 100644 --- a/test/extensions/common/aws/credential_providers/BUILD +++ b/test/extensions/common/aws/credential_providers/BUILD @@ -41,6 +41,7 @@ envoy_cc_test( "//test/extensions/common/aws:aws_mocks", "//test/mocks/server:factory_context_mocks", "//test/test_common:environment_lib", + "//test/test_common:status_utility_lib", "//test/test_common:test_runtime_lib", "@envoy_api//envoy/extensions/common/aws/v3:pkg_cc_proto", ], @@ -126,6 +127,7 @@ envoy_cc_test( "//test/extensions/common/aws:aws_mocks", "//test/mocks/server:factory_context_mocks", "//test/test_common:environment_lib", + "//test/test_common:status_utility_lib", "//test/test_common:test_runtime_lib", "@envoy_api//envoy/config/core/v3:pkg_cc_proto", "@envoy_api//envoy/extensions/common/aws/v3:pkg_cc_proto", @@ -145,6 +147,7 @@ envoy_cc_test( "//test/extensions/common/aws:aws_mocks", "//test/mocks/server:factory_context_mocks", "//test/test_common:environment_lib", + "//test/test_common:status_utility_lib", "//test/test_common:test_runtime_lib", "@envoy_api//envoy/config/core/v3:pkg_cc_proto", ], diff --git a/test/extensions/common/aws/credential_providers/iam_roles_anywhere_credentials_provider_test.cc b/test/extensions/common/aws/credential_providers/iam_roles_anywhere_credentials_provider_test.cc index f5f7c94c3c416..be16c43d866f8 100644 --- a/test/extensions/common/aws/credential_providers/iam_roles_anywhere_credentials_provider_test.cc +++ b/test/extensions/common/aws/credential_providers/iam_roles_anywhere_credentials_provider_test.cc @@ -18,6 +18,7 @@ #include "test/mocks/upstream/cluster_manager.h" #include "test/test_common/environment.h" #include "test/test_common/simulated_time_system.h" +#include "test/test_common/status_utility.h" #include "test/test_common/utility.h" #include "gtest/gtest.h" @@ -26,10 +27,13 @@ // Please see iam_roles_anywhere_test_generator.py in this directory to replicate these test cases using Envoy::Extensions::Common::Aws::MetadataFetcherPtr; +using ::Envoy::StatusHelpers::HasStatusMessage; +using ::Envoy::StatusHelpers::IsOk; using testing::Eq; using testing::InvokeWithoutArgs; using testing::MockFunction; using testing::NiceMock; +using ::testing::Not; using testing::Return; using testing::ReturnRef; @@ -1226,7 +1230,7 @@ TEST_F(IamRolesAnywhereCredentialsProviderBasicTests, SignEmptyPayload) { headers.addCopy(Http::LowerCaseString("host"), "www.example.com"); status = roles_anywhere_signer->signEmptyPayload(headers, "ap-southeast-2"); // Will fail because credentials are invalid - EXPECT_FALSE(status.ok()); + EXPECT_THAT(status, Not(IsOk())); } TEST_F(IamRolesAnywhereCredentialsProviderBasicTests, SignUnsignedPayload) { @@ -1250,7 +1254,7 @@ TEST_F(IamRolesAnywhereCredentialsProviderBasicTests, SignUnsignedPayload) { headers.addCopy(Http::LowerCaseString("host"), "www.example.com"); status = roles_anywhere_signer->signUnsignedPayload(headers, "ap-southeast-2"); // Will fail because credentials are invalid - EXPECT_FALSE(status.ok()); + EXPECT_THAT(status, Not(IsOk())); mock_credentials_provider.reset(); } @@ -1273,8 +1277,7 @@ TEST_F(IamRolesAnywhereCredentialsProviderBasicTests, NoMethod) { headers.setPath("/"); headers.addCopy(Http::LowerCaseString("host"), "www.example.com"); status = roles_anywhere_signer->signUnsignedPayload(headers, "ap-southeast-2"); - EXPECT_FALSE(status.ok()); - EXPECT_EQ(status.message(), "Message is missing :method header"); + EXPECT_THAT(status, HasStatusMessage("Message is missing :method header")); } TEST_F(IamRolesAnywhereCredentialsProviderBasicTests, NoPath) { @@ -1296,8 +1299,7 @@ TEST_F(IamRolesAnywhereCredentialsProviderBasicTests, NoPath) { headers.setMethod("GET"); headers.addCopy(Http::LowerCaseString("host"), "www.example.com"); status = roles_anywhere_signer->signUnsignedPayload(headers, "ap-southeast-2"); - EXPECT_FALSE(status.ok()); - EXPECT_EQ(status.message(), "Message is missing :path header"); + EXPECT_THAT(status, HasStatusMessage("Message is missing :path header")); } TEST_F(IamRolesAnywhereCredentialsProviderBasicTests, NoCredentials) { @@ -1318,7 +1320,7 @@ TEST_F(IamRolesAnywhereCredentialsProviderBasicTests, NoCredentials) { headers.setPath("/"); headers.addCopy(Http::LowerCaseString("host"), "www.example.com"); status = roles_anywhere_signer->signEmptyPayload(headers, "ap-southeast-2"); - EXPECT_FALSE(status.ok()); + EXPECT_THAT(status, Not(IsOk())); EXPECT_EQ(status.message(), "Unable to sign IAM Roles Anywhere payload - no x509 credentials found"); } diff --git a/test/extensions/common/aws/credential_providers/iam_roles_anywhere_x509_credentials_provider_test.cc b/test/extensions/common/aws/credential_providers/iam_roles_anywhere_x509_credentials_provider_test.cc index de7d0dde36dcb..ae6bae24c7a16 100644 --- a/test/extensions/common/aws/credential_providers/iam_roles_anywhere_x509_credentials_provider_test.cc +++ b/test/extensions/common/aws/credential_providers/iam_roles_anywhere_x509_credentials_provider_test.cc @@ -13,11 +13,15 @@ #include "test/mocks/filesystem/mocks.h" #include "test/mocks/server/server_factory_context.h" #include "test/test_common/environment.h" +#include "test/test_common/status_utility.h" #include "gmock/gmock.h" #include "gtest/gtest.h" +using ::Envoy::StatusHelpers::HasStatusMessage; +using ::Envoy::StatusHelpers::IsOk; using testing::InvokeWithoutArgs; +using ::testing::Not; using testing::Return; using testing::StartsWith; @@ -511,7 +515,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, InvalidSource) { auto provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); auto status = provider->initialize(); - EXPECT_FALSE(status.ok()); + EXPECT_THAT(status, Not(IsOk())); EXPECT_FALSE(provider->getCredentials().certificateChainDerB64().has_value()); } @@ -527,7 +531,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, InvalidPath) { auto provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); auto status = provider->initialize(); - EXPECT_FALSE(status.ok()); + EXPECT_THAT(status, Not(IsOk())); EXPECT_FALSE(provider->getCredentials().certificateChainDerB64().has_value()); } @@ -551,7 +555,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, PrivateKeyInvalidPath) { auto provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); auto status = provider->initialize(); - EXPECT_FALSE(status.ok()); + EXPECT_THAT(status, Not(IsOk())); EXPECT_FALSE(provider->getCredentials().certificatePrivateKey().has_value()); } @@ -618,7 +622,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, UnsupportedAlgorithm) { auto provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); auto status = provider->initialize(); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); auto credentials = provider->getCredentials(); EXPECT_FALSE(credentials.certificateDerB64().has_value()); @@ -656,7 +660,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, MissingSerial) { auto provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); auto status = provider->initialize(); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); auto credentials = provider->getCredentials(); EXPECT_FALSE(credentials.certificateDerB64().has_value()); @@ -683,7 +687,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, LoadChainFailed) { auto provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); auto status = provider->initialize(); - EXPECT_FALSE(status.ok()); + EXPECT_THAT(status, Not(IsOk())); } TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, LoadPrivateKeyFailed) { @@ -708,7 +712,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, LoadPrivateKeyFailed) { auto provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); auto status = provider->initialize(); - EXPECT_FALSE(status.ok()); + EXPECT_THAT(status, Not(IsOk())); } TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, LoadCredentials) { @@ -741,7 +745,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, LoadCredentials) { auto provider = std::make_unique( context_, certificate_data_source, private_key_data_source, std::nullopt); auto status = provider->initialize(); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); auto credentials = provider->getCredentials(); EXPECT_TRUE(credentials.certificateDerB64().has_value()); @@ -792,7 +796,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, LoadCredentials) { provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); status = provider->initialize(); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); credentials = provider->getCredentials(); @@ -851,7 +855,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, LoadCredentials) { provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); status = provider->initialize(); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); credentials = provider->getCredentials(); EXPECT_TRUE(credentials.certificateDerB64().has_value()); @@ -898,7 +902,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, LoadCredentials) { provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); status = provider->initialize(); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); credentials = provider->getCredentials(); EXPECT_TRUE(credentials.certificateDerB64().has_value()); @@ -947,7 +951,7 @@ TEST_F(IAMRolesAnywhereX509CredentialsProviderTest, LoadCredentials) { provider = std::make_unique( context_, certificate_data_source, private_key_data_source, cert_chain_data_source); status = provider->initialize(); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); credentials = provider->getCredentials(); EXPECT_TRUE(credentials.certificateDerB64().has_value()); @@ -980,8 +984,7 @@ TEST(EmptyPem, PemToAlgorithmSerialExpiration) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToAlgorithmSerialExpiration("", algorithm, serial, time); - EXPECT_FALSE(status.ok()); - EXPECT_EQ(status.message(), "Invalid certificate size"); + EXPECT_THAT(status, HasStatusMessage("Invalid certificate size")); } TEST(ExpiredPem, PemToAlgorithmSerialExpiration) { @@ -999,8 +1002,7 @@ TEST(ExpiredPem, PemToAlgorithmSerialExpiration) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToAlgorithmSerialExpiration(expired_cert, algorithm, serial, time); - EXPECT_FALSE(status.ok()); - EXPECT_EQ(status.message(), "Certificate has already expired"); + EXPECT_THAT(status, HasStatusMessage("Certificate has already expired")); } TEST(PemTooLarge, PemToAlgorithmSerialExpiration) { @@ -1019,8 +1021,7 @@ TEST(PemTooLarge, PemToAlgorithmSerialExpiration) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToAlgorithmSerialExpiration(large_cert, algorithm, serial, time); - EXPECT_FALSE(status.ok()); - EXPECT_EQ(status.message(), "Invalid certificate size"); + EXPECT_THAT(status, HasStatusMessage("Invalid certificate size")); } TEST(JunkPem, PemToAlgorithmSerialExpiration) { @@ -1039,8 +1040,7 @@ TEST(JunkPem, PemToAlgorithmSerialExpiration) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToAlgorithmSerialExpiration(junk_pem, algorithm, serial, time); - EXPECT_FALSE(status.ok()); - EXPECT_THAT(status.message(), StartsWith("Invalid certificate - PEM read x509 failed")); + EXPECT_THAT(status, HasStatusMessage(StartsWith("Invalid certificate - PEM read x509 failed"))); } TEST(ValidPemWithAppendedJunk, PemToAlgorithmSerialExpiration) { @@ -1061,7 +1061,7 @@ TEST(ValidPemWithAppendedJunk, PemToAlgorithmSerialExpiration) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToAlgorithmSerialExpiration(junk_pem, algorithm, serial, time); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ(serial, "131827979019394590882466519576505238184"); EXPECT_EQ(algorithm, X509Credentials::PublicKeySignatureAlgorithm::RSA); EXPECT_EQ(time, SystemTime(std::chrono::seconds(8070142567))); @@ -1081,8 +1081,7 @@ TEST(JunkPem, PemToDerB64) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToDerB64(in_cert, out_cert, false); - EXPECT_FALSE(status.ok()); - EXPECT_EQ(status.message(), "No certificates found in PEM data"); + EXPECT_THAT(status, HasStatusMessage("No certificates found in PEM data")); } TEST(JunkPemChain, PemToDerB64) { @@ -1099,8 +1098,7 @@ TEST(JunkPemChain, PemToDerB64) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToDerB64(in_cert, out_cert, true); - EXPECT_FALSE(status.ok()); - EXPECT_EQ(status.message(), "No certificates found in PEM data"); + EXPECT_THAT(status, HasStatusMessage("No certificates found in PEM data")); } TEST(JunkCertStartLine, PemToDerB64) { @@ -1118,8 +1116,7 @@ TEST(JunkCertStartLine, PemToDerB64) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToDerB64(in_cert, out_cert, false); - EXPECT_FALSE(status.ok()); - EXPECT_THAT(status.message(), StartsWith("Certificate could not be parsed")); + EXPECT_THAT(status, HasStatusMessage(StartsWith("Certificate could not be parsed"))); } TEST(JunkChainStartLine, PemToDerB64) { @@ -1138,8 +1135,7 @@ TEST(JunkChainStartLine, PemToDerB64) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToDerB64(in_cert, out_cert, true); - EXPECT_FALSE(status.ok()); - EXPECT_THAT(status.message(), StartsWith("Certificate chain PEM #0 could not be parsed")); + EXPECT_THAT(status, HasStatusMessage(StartsWith("Certificate chain PEM #0 could not be parsed"))); } TEST(SingleCertTooLarge, PemToDerB64) { @@ -1156,8 +1152,7 @@ TEST(SingleCertTooLarge, PemToDerB64) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToDerB64(in_cert, out_cert, false); - EXPECT_FALSE(status.ok()); - EXPECT_EQ(status.message(), "Invalid certificate size"); + EXPECT_THAT(status, HasStatusMessage("Invalid certificate size")); } TEST(ChainTooLarge, PemToDerB64) { @@ -1175,8 +1170,7 @@ TEST(ChainTooLarge, PemToDerB64) { auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto status = provider_friend.pemToDerB64(in_chain, out_chain, true); - EXPECT_FALSE(status.ok()); - EXPECT_EQ(status.message(), "Invalid certificate chain size"); + EXPECT_THAT(status, HasStatusMessage("Invalid certificate chain size")); } TEST(ChainParse, PemToDerB64) { @@ -1215,10 +1209,10 @@ TEST(ChainParse, PemToDerB64) { auto provider = std::make_unique( context, certificate_data_source, private_key_data_source, std::nullopt); auto status = provider->initialize(); - EXPECT_FALSE(status.ok()); + EXPECT_THAT(status, Not(IsOk())); auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); status = provider_friend.pemToDerB64(chain, out_chain, true); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ(out_chain, converted_pem); } @@ -1240,7 +1234,7 @@ TEST(Refresh, InvalidChainInsideRefresh) { auto provider = std::make_unique( context, certificate_data_source, private_key_data_source, cert_chain_data_source); auto status = provider->initialize(); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto a = provider_friend.getCredentials(); EXPECT_FALSE(provider_friend.getCredentials().certificateChainDerB64().has_value()); @@ -1262,7 +1256,7 @@ TEST(Refresh, InvalidKeyInsideRefresh) { auto provider = std::make_unique( context, certificate_data_source, private_key_data_source, cert_chain_data_source); auto status = provider->initialize(); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); auto a = provider_friend.getCredentials(); EXPECT_FALSE(provider_friend.getCredentials().certificatePrivateKey().has_value()); @@ -1283,7 +1277,7 @@ TEST(NeedsRefresh, ExpirationTimeInPast) { auto provider = std::make_unique( context, certificate_data_source, private_key_data_source, cert_chain_data_source); auto status = provider->initialize(); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); auto provider_friend = IAMRolesAnywhereX509CredentialsProviderFriend(std::move(provider)); diff --git a/test/extensions/common/aws/credential_providers/webidentity_credentials_provider_test.cc b/test/extensions/common/aws/credential_providers/webidentity_credentials_provider_test.cc index 3b9ffd7a80db4..0ecc5c846a7bb 100644 --- a/test/extensions/common/aws/credential_providers/webidentity_credentials_provider_test.cc +++ b/test/extensions/common/aws/credential_providers/webidentity_credentials_provider_test.cc @@ -8,6 +8,7 @@ #include "test/mocks/filesystem/mocks.h" #include "test/mocks/server/server_factory_context.h" #include "test/test_common/environment.h" +#include "test/test_common/status_utility.h" #include "test/test_common/test_runtime.h" #include "gtest/gtest.h" @@ -745,7 +746,7 @@ TEST_F(WebIdentityCredentialsProviderTest, TokenFileWatcherRefresh) { // Write new token TestEnvironment::writeStringToFileForTest("web_token", "new_file_token", false); // Trigger file watcher callback - EXPECT_TRUE(watcher_callback(Filesystem::Watcher::Events::MovedTo).ok()); + EXPECT_OK(watcher_callback(Filesystem::Watcher::Events::MovedTo)); // Refresh should pick up new token timer_->invokeCallback(); diff --git a/test/extensions/common/aws/credentials_provider_test.cc b/test/extensions/common/aws/credentials_provider_test.cc index 48bddfcd7cd8c..34f00df16b847 100644 --- a/test/extensions/common/aws/credentials_provider_test.cc +++ b/test/extensions/common/aws/credentials_provider_test.cc @@ -5,6 +5,7 @@ #include "test/extensions/common/aws/mocks.h" #include "test/mocks/event/mocks.h" #include "test/mocks/server/server_factory_context.h" +#include "test/test_common/status_utility.h" #include "gtest/gtest.h" @@ -200,7 +201,7 @@ TEST_F(AsyncCredentialHandlingTest, ChainCallbackCalledWhenCredentialsReturned) timer_->invokeCallback(); // We now have credentials so sign should complete immediately auto result = signer->sign(*message_, false, ""); - ASSERT_TRUE(result.ok()); + ASSERT_OK(result); } TEST_F(AsyncCredentialHandlingTest, ExpirationWithGracePeriod) { @@ -393,7 +394,7 @@ TEST_F(AsyncCredentialHandlingTest, SubscriptionsCleanedUp) { timer_->invokeCallback(); // We now have credentials so sign should complete immediately auto result = signer->sign(*message_, false, ""); - ASSERT_TRUE(result.ok()); + ASSERT_OK(result); } // Mock WebIdentityCredentialsProvider to track refresh calls diff --git a/test/extensions/common/aws/eventstream/BUILD b/test/extensions/common/aws/eventstream/BUILD index 2ebc548630070..a5e1c59e22699 100644 --- a/test/extensions/common/aws/eventstream/BUILD +++ b/test/extensions/common/aws/eventstream/BUILD @@ -14,6 +14,7 @@ envoy_cc_test( srcs = ["eventstream_parser_test.cc"], deps = [ "//source/extensions/common/aws/eventstream:eventstream_parser_lib", + "//test/test_common:status_utility_lib", "@abseil-cpp//absl/strings", ], ) diff --git a/test/extensions/common/aws/eventstream/eventstream_parser_test.cc b/test/extensions/common/aws/eventstream/eventstream_parser_test.cc index f6e8f48d33c4d..311ab1277498c 100644 --- a/test/extensions/common/aws/eventstream/eventstream_parser_test.cc +++ b/test/extensions/common/aws/eventstream/eventstream_parser_test.cc @@ -2,6 +2,8 @@ #include "source/extensions/common/aws/eventstream/eventstream_parser.h" +#include "test/test_common/status_utility.h" + #include "absl/strings/match.h" #include "gtest/gtest.h" @@ -12,6 +14,10 @@ namespace Aws { namespace Eventstream { namespace { +using ::Envoy::StatusHelpers::HasStatusCode; +using ::Envoy::StatusHelpers::IsOk; +using ::testing::Not; + // Test helper: compute CRC32 using zlib directly (since EventstreamParser::computeCrc32 is private) uint32_t testComputeCrc32(absl::string_view data, uint32_t initial_crc = 0) { return crc32(initial_crc, reinterpret_cast(data.data()), @@ -69,7 +75,7 @@ class EventstreamParserTest : public testing::Test {}; TEST_F(EventstreamParserTest, ParseMessageTooSmall) { const std::string buffer(10, '\0'); // Less than 12 bytes (prelude size) auto result = EventstreamParser::parseMessage(buffer); - ASSERT_TRUE(result.ok()); + ASSERT_OK(result); EXPECT_FALSE(result->message.has_value()); EXPECT_EQ(result->bytes_consumed, 0); } @@ -97,7 +103,7 @@ TEST_F(EventstreamParserTest, ParseMessageIncomplete) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 50)); - ASSERT_TRUE(result.ok()); + ASSERT_OK(result); EXPECT_FALSE(result->message.has_value()); EXPECT_EQ(result->bytes_consumed, 0); } @@ -125,7 +131,7 @@ TEST_F(EventstreamParserTest, ParseMessageBadPreludeCrc) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Prelude CRC")); } @@ -133,7 +139,7 @@ TEST_F(EventstreamParserTest, ParseMessageBadPreludeCrc) { TEST_F(EventstreamParserTest, ParseMessageMinimal) { std::string msg = createEventstreamMessage("", ""); auto result = EventstreamParser::parseMessage(msg); - ASSERT_TRUE(result.ok()) << result.status().message(); + ASSERT_OK(result) << result.status().message(); ASSERT_TRUE(result->message.has_value()); EXPECT_TRUE(result->message->headers.empty()); EXPECT_TRUE(result->message->payload_bytes.empty()); @@ -145,7 +151,7 @@ TEST_F(EventstreamParserTest, ParseMessageWithPayload) { std::string payload = R"({"type":"message_delta","usage":{"output_tokens":42}})"; std::string msg = createEventstreamMessage("", payload); auto result = EventstreamParser::parseMessage(msg); - ASSERT_TRUE(result.ok()) << result.status().message(); + ASSERT_OK(result) << result.status().message(); ASSERT_TRUE(result->message.has_value()); EXPECT_TRUE(result->message->headers.empty()); EXPECT_EQ(result->message->payload_bytes, payload); @@ -174,7 +180,7 @@ TEST_F(EventstreamParserTest, ParseMessageWithHeadersAndPayload) { std::string msg = createEventstreamMessage(headers_data, payload); auto result = EventstreamParser::parseMessage(msg); - ASSERT_TRUE(result.ok()) << result.status().message(); + ASSERT_OK(result) << result.status().message(); ASSERT_TRUE(result->message.has_value()); ASSERT_EQ(result->message->headers.size(), 1); EXPECT_EQ(result->message->headers[0].name, ":message-type"); @@ -190,7 +196,7 @@ TEST_F(EventstreamParserTest, ParseMessageBadMessageCrc) { msg[msg.size() - 1] ^= 0xFF; auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Message CRC")); } @@ -272,7 +278,7 @@ TEST_F(EventstreamParserTest, ParseMessageAllHeaderTypes) { std::string headers_data(reinterpret_cast(header_bytes.data()), header_bytes.size()); std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - ASSERT_TRUE(result.ok()) << result.status().message(); + ASSERT_OK(result) << result.status().message(); ASSERT_TRUE(result->message.has_value()); const auto& headers = result->message->headers; ASSERT_EQ(headers.size(), 8); @@ -316,7 +322,7 @@ TEST_F(EventstreamParserTest, ParseMessageMultipleMessages) { // Parse first message auto result1 = EventstreamParser::parseMessage(buffer); - ASSERT_TRUE(result1.ok()); + ASSERT_OK(result1); ASSERT_TRUE(result1->message.has_value()); EXPECT_EQ(result1->message->payload_bytes, "first"); EXPECT_EQ(result1->bytes_consumed, msg1.size()); @@ -324,7 +330,7 @@ TEST_F(EventstreamParserTest, ParseMessageMultipleMessages) { // Parse remaining buffer absl::string_view remaining = absl::string_view(buffer).substr(result1->bytes_consumed); auto result2 = EventstreamParser::parseMessage(remaining); - ASSERT_TRUE(result2.ok()); + ASSERT_OK(result2); ASSERT_TRUE(result2->message.has_value()); EXPECT_EQ(result2->message->payload_bytes, "second"); EXPECT_EQ(result2->bytes_consumed, msg2.size()); @@ -353,8 +359,7 @@ TEST_F(EventstreamParserTest, ParseMessagePayloadExceedsMax) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_FALSE(result.ok()); - EXPECT_EQ(result.status().code(), absl::StatusCode::kResourceExhausted); + EXPECT_THAT(result, HasStatusCode(absl::StatusCode::kResourceExhausted)); EXPECT_TRUE(absl::StrContains(result.status().message(), "Payload exceeds maximum")); } @@ -380,7 +385,7 @@ TEST_F(EventstreamParserTest, ParseMessageTotalLengthTooSmall) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Invalid message length")); } @@ -407,8 +412,7 @@ TEST_F(EventstreamParserTest, ParseMessageTotalLengthExceedsMax) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_FALSE(result.ok()); - EXPECT_EQ(result.status().code(), absl::StatusCode::kResourceExhausted); + EXPECT_THAT(result, HasStatusCode(absl::StatusCode::kResourceExhausted)); EXPECT_TRUE(absl::StrContains(result.status().message(), "Message length exceeds maximum")); } @@ -434,7 +438,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeadersLengthExceedsMessage) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Headers length exceeds message")); } @@ -462,8 +466,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeadersLengthExceedsMax) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_FALSE(result.ok()); - EXPECT_EQ(result.status().code(), absl::StatusCode::kResourceExhausted); + EXPECT_THAT(result, HasStatusCode(absl::StatusCode::kResourceExhausted)); EXPECT_TRUE(absl::StrContains(result.status().message(), "Headers length exceeds maximum")); } @@ -474,7 +477,7 @@ TEST_F(EventstreamParserTest, ParseMessageBedrockLikePayload) { std::string msg = createEventstreamMessage("", payload); auto result = EventstreamParser::parseMessage(msg); - ASSERT_TRUE(result.ok()); + ASSERT_OK(result); ASSERT_TRUE(result->message.has_value()); EXPECT_EQ(result->message->payload_bytes, payload); } @@ -488,7 +491,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderNameLengthZero) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Invalid header name length")); } @@ -503,7 +506,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderUnknownType) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Unknown header value type")); } @@ -523,7 +526,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderInt32) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - ASSERT_TRUE(result.ok()) << result.status().message(); + ASSERT_OK(result) << result.status().message(); ASSERT_TRUE(result->message.has_value()); ASSERT_EQ(result->message->headers.size(), 1); EXPECT_EQ(result->message->headers[0].name, "i"); @@ -542,7 +545,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedName) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); } @@ -558,7 +561,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedByteValue) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); } @@ -574,7 +577,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedShortValue) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); } @@ -591,7 +594,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedInt32Value) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); } @@ -610,7 +613,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedInt64Value) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); } @@ -626,7 +629,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedStringLength) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); } @@ -645,7 +648,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedStringData) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); } @@ -663,7 +666,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedUuidValue) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); } @@ -681,7 +684,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderValueTooLong) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "Header value too long")); } @@ -698,7 +701,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderStringLengthZero) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "must not be empty")); } @@ -715,7 +718,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderByteArrayLengthZero) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); + EXPECT_THAT(result, Not(IsOk())); EXPECT_TRUE(absl::StrContains(result.status().message(), "must not be empty")); } @@ -732,8 +735,7 @@ TEST_F(EventstreamParserTest, ParseMessageCrcErrorsReturnDataLoss) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_FALSE(result.ok()); - EXPECT_EQ(result.status().code(), absl::StatusCode::kDataLoss); + EXPECT_THAT(result, HasStatusCode(absl::StatusCode::kDataLoss)); } // Bad message CRC @@ -742,8 +744,7 @@ TEST_F(EventstreamParserTest, ParseMessageCrcErrorsReturnDataLoss) { msg[msg.size() - 1] ^= 0xFF; auto result = EventstreamParser::parseMessage(msg); - EXPECT_FALSE(result.ok()); - EXPECT_EQ(result.status().code(), absl::StatusCode::kDataLoss); + EXPECT_THAT(result, HasStatusCode(absl::StatusCode::kDataLoss)); } } diff --git a/test/extensions/common/aws/signers/BUILD b/test/extensions/common/aws/signers/BUILD index cf0567a9bd0e1..588b267d5ecfc 100644 --- a/test/extensions/common/aws/signers/BUILD +++ b/test/extensions/common/aws/signers/BUILD @@ -20,6 +20,7 @@ envoy_cc_test( "//test/extensions/common/aws:aws_mocks", "//test/mocks/server:server_factory_context_mocks", "//test/test_common:simulated_time_system_lib", + "//test/test_common:status_utility_lib", "//test/test_common:utility_lib", ], ) @@ -54,6 +55,7 @@ envoy_cc_test( "//test/extensions/common/aws:aws_mocks", "//test/mocks/server:server_factory_context_mocks", "//test/test_common:simulated_time_system_lib", + "//test/test_common:status_utility_lib", "//test/test_common:utility_lib", ], ) @@ -70,6 +72,7 @@ envoy_cc_test( "//test/extensions/common/aws:aws_mocks", "//test/mocks/server:server_factory_context_mocks", "//test/test_common:simulated_time_system_lib", + "//test/test_common:status_utility_lib", "//test/test_common:utility_lib", ], ) diff --git a/test/extensions/common/aws/signers/sigv4_signer_impl_test.cc b/test/extensions/common/aws/signers/sigv4_signer_impl_test.cc index 36bf31ce2875d..a23b2f1de2ff0 100644 --- a/test/extensions/common/aws/signers/sigv4_signer_impl_test.cc +++ b/test/extensions/common/aws/signers/sigv4_signer_impl_test.cc @@ -4,6 +4,7 @@ #include "test/extensions/common/aws/mocks.h" #include "test/mocks/server/server_factory_context.h" #include "test/test_common/simulated_time_system.h" +#include "test/test_common/status_utility.h" #include "test/test_common/utility.h" using testing::NiceMock; @@ -63,7 +64,7 @@ class SigV4SignerImplTest : public testing::Test { } else { status = signer.signEmptyPayload(headers, override_region); } - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ(fmt::format("AWS4-HMAC-SHA256 Credential=akid/20180102/{}/{}/aws4_request, " "SignedHeaders=host;x-amz-content-sha256;x-amz-date, " @@ -91,7 +92,7 @@ class SigV4SignerImplTest : public testing::Test { Extensions::Common::Aws::AwsSigningHeaderMatcherVector{}, true, 5); auto status = signer.signUnsignedPayload(extra_headers, override_region); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); auto query_parameters = Http::Utility::QueryParamsMulti::parseQueryString( extra_headers.Path()->value().getStringView()); EXPECT_EQ(query_parameters.getFirstValue("X-Amz-Signature"), signature_to_match); @@ -112,7 +113,7 @@ class SigV4SignerImplTest : public testing::Test { TEST_F(SigV4SignerImplTest, AnonymousCredentials) { EXPECT_CALL(*credentials_provider_, getCredentials()).WillOnce(Return(Credentials())); auto status = signer_->sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_TRUE(message_->headers().get(Http::CustomHeaders::get().Authorization).empty()); } @@ -181,7 +182,7 @@ TEST_F(SigV4SignerImplTest, SignDateHeader) { addMethod("GET"); addPath("/"); auto status = signer_->sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_FALSE(message_->headers().get(SigV4SignatureHeaders::get().ContentSha256).empty()); EXPECT_EQ("20180102T030400Z", message_->headers().get(SigV4SignatureHeaders::get().Date)[0]->value().getStringView()); @@ -203,7 +204,7 @@ TEST_F(SigV4SignerImplTest, SignSecurityTokenHeader) { addMethod("GET"); addPath("/"); auto status = signer_->sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ("token", message_->headers() .get(SigV4SignatureHeaders::get().SecurityToken)[0] ->value() @@ -225,7 +226,7 @@ TEST_F(SigV4SignerImplTest, SignEmptyContentHeader) { addMethod("GET"); addPath("/"); auto status = signer_->sign(*message_, true); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ(SigV4SignatureConstants::HashedEmptyString, message_->headers() .get(SigV4SignatureHeaders::get().ContentSha256)[0] @@ -249,7 +250,7 @@ TEST_F(SigV4SignerImplTest, SignContentHeader) { addPath("/"); setBody("test1234"); auto status = signer_->sign(*message_, true); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ("937e8d5fbb48bd4949536cd65b8d35c426b80d2f830c5c308e2cdec422ae2244", message_->headers() .get(SigV4SignatureHeaders::get().ContentSha256)[0] @@ -273,7 +274,7 @@ TEST_F(SigV4SignerImplTest, SignContentHeaderOverrideRegion) { addPath("/"); setBody("test1234"); auto status = signer_->sign(*message_, true, "region1"); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ("937e8d5fbb48bd4949536cd65b8d35c426b80d2f830c5c308e2cdec422ae2244", message_->headers() .get(SigV4SignatureHeaders::get().ContentSha256)[0] @@ -300,7 +301,7 @@ TEST_F(SigV4SignerImplTest, SignExtraHeaders) { addHeader("b", "b_value"); addHeader("c", "c_value"); auto status = signer_->sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ("AWS4-HMAC-SHA256 Credential=akid/20180102/region/service/aws4_request, " "SignedHeaders=a;b;c;x-amz-content-sha256;x-amz-date, " "Signature=0940025fcecfef5d7ee30e0a26a0957e116560e374878cd86ef4316c53ae9e81", @@ -319,7 +320,7 @@ TEST_F(SigV4SignerImplTest, SignHostHeader) { addPath("/"); addHeader("host", "www.example.com"); auto status = signer_->sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ("AWS4-HMAC-SHA256 Credential=akid/20180102/region/service/aws4_request, " "SignedHeaders=host;x-amz-content-sha256;x-amz-date, " "Signature=d9fd9be575a254c924d843964b063d770181d938ae818f5b603ef0575a5ce2cd", @@ -348,7 +349,7 @@ TEST_F(SigV4SignerImplTest, QueryStringDefault5s) { Extensions::Common::Aws::AwsSigningHeaderMatcherVector{}, true, 5); auto status = querysigner.signUnsignedPayload(headers); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_TRUE(absl::StrContains(headers.getPathValue(), "X-Amz-Expires=5&")); } diff --git a/test/extensions/common/aws/signers/sigv4a_signer_corpus_test.cc b/test/extensions/common/aws/signers/sigv4a_signer_corpus_test.cc index 968955fbafc6d..1287907e4fd0d 100644 --- a/test/extensions/common/aws/signers/sigv4a_signer_corpus_test.cc +++ b/test/extensions/common/aws/signers/sigv4a_signer_corpus_test.cc @@ -12,6 +12,7 @@ #include "test/mocks/server/server_factory_context.h" #include "test/test_common/environment.h" #include "test/test_common/simulated_time_system.h" +#include "test/test_common/status_utility.h" #include "test/test_common/utility.h" using testing::ReturnRef; @@ -178,7 +179,7 @@ class SigV4ASignerCorpusTest : public ::testing::TestWithParam { auto ec_key_or = sigv4a_key_derivation->derivePrivateKey(absl::string_view(akid), absl::string_view(skid)); - EXPECT_TRUE(ec_key_or.ok()); + EXPECT_OK(ec_key_or); sigv4a_key_derivation->derivePublicKey(ec_key_or.value()); signature = Hex::decode(calculated_signature); diff --git a/test/extensions/common/aws/signers/sigv4a_signer_impl_test.cc b/test/extensions/common/aws/signers/sigv4a_signer_impl_test.cc index ef078832909b1..6e044d6d395a9 100644 --- a/test/extensions/common/aws/signers/sigv4a_signer_impl_test.cc +++ b/test/extensions/common/aws/signers/sigv4a_signer_impl_test.cc @@ -10,6 +10,7 @@ #include "test/extensions/common/aws/mocks.h" #include "test/mocks/server/server_factory_context.h" #include "test/test_common/simulated_time_system.h" +#include "test/test_common/status_utility.h" #include "test/test_common/utility.h" using testing::NiceMock; @@ -72,7 +73,7 @@ class SigV4ASignerImplTest : public testing::Test { absl::string_view(credentials_.accessKeyId()->data(), credentials_.accessKeyId()->size()), absl::string_view(credentials_.secretAccessKey()->data(), credentials_.secretAccessKey()->size())); - EXPECT_TRUE(ec_key_or.ok()); + EXPECT_OK(ec_key_or); sigv4a_key_derivation->derivePublicKey(ec_key_or.value()); absl::Status status; @@ -91,7 +92,7 @@ class SigV4ASignerImplTest : public testing::Test { status = signer_.signUnsignedPayload(message->headers(), override_region); break; } - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); std::string short_date = "20180102"; std::string credential_scope = fmt::format("{}/service/aws4_request", short_date); @@ -153,7 +154,7 @@ TEST_F(SigV4ASignerImplTest, AnonymousCredentials) { auto signer_ = getTestSigner(false); auto status = signer_.sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_TRUE(message_->headers().get(Http::CustomHeaders::get().Authorization).empty()); } @@ -221,7 +222,7 @@ TEST_F(SigV4ASignerImplTest, QueryStringDoesntModifyAuthorization) { addHeader("Authorization", "testValue"); auto signer_ = getTestSigner(true); auto status = signer_.sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ(message_->headers().get(Http::CustomHeaders::get().Authorization)[0]->value(), "testValue"); } @@ -233,7 +234,7 @@ TEST_F(SigV4ASignerImplTest, SignDateHeader) { addPath("/"); auto signer_ = getTestSigner(false); auto status = signer_.sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_FALSE(message_->headers().get(SigV4ASignatureHeaders::get().ContentSha256).empty()); EXPECT_EQ( "20180102T030405Z", @@ -252,7 +253,7 @@ TEST_F(SigV4ASignerImplTest, SignSecurityTokenHeader) { addPath("/"); auto signer_ = getTestSigner(false); auto status = signer_.sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ("token", message_->headers() .get(SigV4ASignatureHeaders::get().SecurityToken)[0] ->value() @@ -272,7 +273,7 @@ TEST_F(SigV4ASignerImplTest, SignEmptyContentHeader) { addPath("/"); auto signer_ = getTestSigner(false); auto status = signer_.sign(*message_, true); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ(SigV4ASignatureConstants::HashedEmptyString, message_->headers() .get(SigV4ASignatureHeaders::get().ContentSha256)[0] @@ -293,7 +294,7 @@ TEST_F(SigV4ASignerImplTest, SignContentHeader) { setBody("test1234"); auto signer_ = getTestSigner(false); auto status = signer_.sign(*message_, true); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ("937e8d5fbb48bd4949536cd65b8d35c426b80d2f830c5c308e2cdec422ae2244", message_->headers() .get(SigV4ASignatureHeaders::get().ContentSha256)[0] @@ -314,7 +315,7 @@ TEST_F(SigV4ASignerImplTest, SignContentHeaderOverrideRegion) { setBody("test1234"); auto signer_ = getTestSigner(false); auto status = signer_.sign(*message_, true, "region1"); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_EQ("937e8d5fbb48bd4949536cd65b8d35c426b80d2f830c5c308e2cdec422ae2244", message_->headers() .get(SigV4ASignatureHeaders::get().ContentSha256)[0] @@ -337,7 +338,7 @@ TEST_F(SigV4ASignerImplTest, SignExtraHeaders) { addHeader("c", "c_value"); auto signer_ = getTestSigner(false); auto status = signer_.sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_THAT( message_->headers().get(Http::CustomHeaders::get().Authorization)[0]->value().getStringView(), testing::StartsWith("AWS4-ECDSA-P256-SHA256 Credential=akid/20180102/service/aws4_request, " @@ -353,7 +354,7 @@ TEST_F(SigV4ASignerImplTest, SignHostHeader) { addHeader("host", "www.example.com"); auto signer_ = getTestSigner(false); auto status = signer_.sign(*message_); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_THAT( message_->headers().get(Http::CustomHeaders::get().Authorization)[0]->value().getStringView(), testing::StartsWith("AWS4-ECDSA-P256-SHA256 Credential=akid/20180102/service/aws4_request, " @@ -538,7 +539,7 @@ TEST_F(SigV4ASignerImplTest, QueryStringDefault5s) { Extensions::Common::Aws::AwsSigningHeaderMatcherVector{}, true); auto status = querysigner.signUnsignedPayload(headers); - EXPECT_TRUE(status.ok()); + EXPECT_OK(status); EXPECT_TRUE(absl::StrContains(headers.getPathValue(), "X-Amz-Expires=5&")); } diff --git a/test/extensions/common/aws/utility_test.cc b/test/extensions/common/aws/utility_test.cc index d8d1f67294296..d65c937d311c6 100644 --- a/test/extensions/common/aws/utility_test.cc +++ b/test/extensions/common/aws/utility_test.cc @@ -4,6 +4,7 @@ #include "test/mocks/server/server_factory_context.h" #include "test/test_common/environment.h" +#include "test/test_common/status_utility.h" #include "test/test_common/utility.h" #include "gtest/gtest.h" @@ -491,7 +492,7 @@ TEST(UtilityTest, CorrectlyConvertRegionSet) { TEST(UtilityTest, JsonStringFound) { auto test_json = Json::Factory::loadFromString("{\"access_key_id\":\"testvalue\"}"); - EXPECT_TRUE(test_json.ok()); + EXPECT_OK(test_json); const auto expiration = Utility::getStringFromJsonOrDefault(test_json.value(), "access_key_id", "notfound"); EXPECT_EQ(expiration, "testvalue"); @@ -499,7 +500,7 @@ TEST(UtilityTest, JsonStringFound) { TEST(UtilityTest, JsonStringNotFound) { auto test_json = Json::Factory::loadFromString("{\"no_access_key_id\":\"testvalue\"}"); - EXPECT_TRUE(test_json.ok()); + EXPECT_OK(test_json); const auto expiration = Utility::getStringFromJsonOrDefault(test_json.value(), "access_key_id", "notfound"); EXPECT_EQ(expiration, "notfound"); @@ -507,14 +508,14 @@ TEST(UtilityTest, JsonStringNotFound) { TEST(UtilityTest, JsonIntegerFound) { auto test_json = Json::Factory::loadFromString("{\"expiration\":5}"); - EXPECT_TRUE(test_json.ok()); + EXPECT_OK(test_json); const auto expiration = Utility::getIntegerFromJsonOrDefault(test_json.value(), "expiration", 0); EXPECT_EQ(expiration, 5); } TEST(UtilityTest, JsonIntegerNotFound) { auto test_json = Json::Factory::loadFromString("{\"noexpiration\":5}"); - EXPECT_TRUE(test_json.ok()); + EXPECT_OK(test_json); const auto expiration = Utility::getIntegerFromJsonOrDefault(test_json.value(), "expiration", 0); // Should return default value EXPECT_EQ(expiration, 0); @@ -523,9 +524,9 @@ TEST(UtilityTest, JsonIntegerNotFound) { // Check we handle double formatted integer > 0 TEST(UtilityTest, JsonIntegerExponent) { auto test_json = Json::Factory::loadFromString("{\"expiration\":1.714449238E9}"); - EXPECT_TRUE(test_json.ok()); + EXPECT_OK(test_json); auto value_or_error = test_json.value()->getValue("expiration"); - EXPECT_TRUE(value_or_error.ok()); + EXPECT_OK(value_or_error); EXPECT_FALSE(absl::holds_alternative(value_or_error.value())); EXPECT_TRUE(absl::holds_alternative(value_or_error.value())); const auto expiration = Utility::getIntegerFromJsonOrDefault(test_json.value(), "expiration", 0); @@ -536,9 +537,9 @@ TEST(UtilityTest, JsonIntegerExponent) { // Check we handle double formatted integer < 0 TEST(UtilityTest, JsonIntegerExponentInvalid) { auto test_json = Json::Factory::loadFromString("{\"expiration\":-0.17144492389}"); - EXPECT_TRUE(test_json.ok()); + EXPECT_OK(test_json); auto value_or_error = test_json.value()->getValue("expiration"); - EXPECT_TRUE(value_or_error.ok()); + EXPECT_OK(value_or_error); EXPECT_FALSE(absl::holds_alternative(value_or_error.value())); EXPECT_TRUE(absl::holds_alternative(value_or_error.value())); const auto expiration = diff --git a/test/extensions/compression/zstd/BUILD b/test/extensions/compression/zstd/BUILD index ef3e3394b72c6..38aa89ddbb513 100644 --- a/test/extensions/compression/zstd/BUILD +++ b/test/extensions/compression/zstd/BUILD @@ -30,6 +30,7 @@ envoy_extension_cc_test( "//test/mocks/event:event_mocks", "//test/mocks/server:factory_context_mocks", "//test/test_common:environment_lib", + "//test/test_common:status_utility_lib", "//test/test_common:utility_lib", ], ) diff --git a/test/extensions/compression/zstd/zstd_compression_test.cc b/test/extensions/compression/zstd/zstd_compression_test.cc index 46dc531677fa9..5f988aa56251d 100644 --- a/test/extensions/compression/zstd/zstd_compression_test.cc +++ b/test/extensions/compression/zstd/zstd_compression_test.cc @@ -6,6 +6,7 @@ #include "test/mocks/filesystem/mocks.h" #include "test/mocks/server/factory_context.h" #include "test/test_common/environment.h" +#include "test/test_common/status_utility.h" #include "test/test_common/utility.h" #include "gmock/gmock.h" @@ -245,7 +246,7 @@ TEST_F(ZstdCompressionDictionaryTest, UpdateCompressorDictionary) { verifyByDictPath(compressor_dictionary_, dictionary_1_path_, true); writeTmpFile(dictionary_2_path_, compressor_dictionary_); - ASSERT_TRUE(watch_cbs_[0](Filesystem::Watcher::Events::MovedTo).ok()); + ASSERT_OK(watch_cbs_[0](Filesystem::Watcher::Events::MovedTo)); verifyByCompressions(false); } @@ -254,7 +255,7 @@ TEST_F(ZstdCompressionDictionaryTest, UpdateDecompressorDictionary) { verifyByDictPath(dictionary_1_path_, decompressor_dictionary_, true); writeTmpFile(dictionary_2_path_, decompressor_dictionary_); - ASSERT_TRUE(watch_cbs_[1](Filesystem::Watcher::Events::MovedTo).ok()); + ASSERT_OK(watch_cbs_[1](Filesystem::Watcher::Events::MovedTo)); verifyByCompressions(true); } @@ -264,11 +265,11 @@ TEST_F(ZstdCompressionDictionaryTest, UpdateCompressorBeforeDecompressorDictiona verifyByDictPath(compressor_dictionary_, decompressor_dictionary_, true); writeTmpFile(dictionary_2_path_, compressor_dictionary_); - ASSERT_TRUE(watch_cbs_[0](Filesystem::Watcher::Events::MovedTo).ok()); + ASSERT_OK(watch_cbs_[0](Filesystem::Watcher::Events::MovedTo)); verifyByCompressions(false); writeTmpFile(dictionary_2_path_, decompressor_dictionary_); - ASSERT_TRUE(watch_cbs_[1](Filesystem::Watcher::Events::MovedTo).ok()); + ASSERT_OK(watch_cbs_[1](Filesystem::Watcher::Events::MovedTo)); verifyByCompressions(true); } @@ -278,11 +279,11 @@ TEST_F(ZstdCompressionDictionaryTest, UpdateCompressorAfterDecompressorDictionar verifyByDictPath(compressor_dictionary_, decompressor_dictionary_, true); writeTmpFile(dictionary_2_path_, decompressor_dictionary_); - ASSERT_TRUE(watch_cbs_[1](Filesystem::Watcher::Events::MovedTo).ok()); + ASSERT_OK(watch_cbs_[1](Filesystem::Watcher::Events::MovedTo)); verifyByCompressions(true); writeTmpFile(dictionary_2_path_, compressor_dictionary_); - ASSERT_TRUE(watch_cbs_[0](Filesystem::Watcher::Events::MovedTo).ok()); + ASSERT_OK(watch_cbs_[0](Filesystem::Watcher::Events::MovedTo)); verifyByCompressions(true); } diff --git a/test/extensions/filters/http/json_to_metadata/BUILD b/test/extensions/filters/http/json_to_metadata/BUILD index 4aaf9b15cc350..902ffac81d5bd 100644 --- a/test/extensions/filters/http/json_to_metadata/BUILD +++ b/test/extensions/filters/http/json_to_metadata/BUILD @@ -31,6 +31,7 @@ envoy_extension_cc_test( deps = [ "//source/extensions/filters/http/json_to_metadata:config", "//test/mocks/server:server_mocks", + "//test/test_common:status_utility_lib", ], ) diff --git a/test/extensions/filters/http/json_to_metadata/config_test.cc b/test/extensions/filters/http/json_to_metadata/config_test.cc index 5ae8ae290a9a5..7854a8f724d98 100644 --- a/test/extensions/filters/http/json_to_metadata/config_test.cc +++ b/test/extensions/filters/http/json_to_metadata/config_test.cc @@ -2,6 +2,7 @@ #include "source/extensions/filters/http/json_to_metadata/filter.h" #include "test/mocks/server/mocks.h" +#include "test/test_common/status_utility.h" #include "gmock/gmock.h" #include "gtest/gtest.h" @@ -11,6 +12,9 @@ namespace Extensions { namespace HttpFilters { namespace JsonToMetadata { +using ::Envoy::StatusHelpers::IsOk; +using ::testing::Not; + TEST(Factory, Basic) { const std::string yaml_request = R"( request_rules: @@ -188,7 +192,7 @@ TEST(Factory, NoRuleInRouteConfig) { .createRouteSpecificFilterConfig(*proto_config, context, ProtobufMessage::getNullValidationVisitor()) .status(); - EXPECT_FALSE(status.ok()); + EXPECT_THAT(status, Not(IsOk())); EXPECT_EQ(status.message(), "json_to_metadata_filter: Per route configs must at least specify one of request_rules " "or response_rules."); diff --git a/test/extensions/filters/network/dubbo_proxy/BUILD b/test/extensions/filters/network/dubbo_proxy/BUILD index 7b650afd70e41..e034a0d62da7a 100644 --- a/test/extensions/filters/network/dubbo_proxy/BUILD +++ b/test/extensions/filters/network/dubbo_proxy/BUILD @@ -108,6 +108,7 @@ envoy_extension_cc_test( "//source/extensions/filters/network/dubbo_proxy/filters:filter_config_interface", "//test/mocks/server:factory_context_mocks", "//test/test_common:registry_lib", + "//test/test_common:status_utility_lib", "@envoy_api//envoy/admin/v3:pkg_cc_proto", "@envoy_api//envoy/extensions/filters/network/dubbo_proxy/v3:pkg_cc_proto", ], diff --git a/test/extensions/filters/network/dubbo_proxy/config_test.cc b/test/extensions/filters/network/dubbo_proxy/config_test.cc index 2e0da6484cc48..018e3b0e0e062 100644 --- a/test/extensions/filters/network/dubbo_proxy/config_test.cc +++ b/test/extensions/filters/network/dubbo_proxy/config_test.cc @@ -11,6 +11,7 @@ #include "test/extensions/filters/network/dubbo_proxy/mocks.h" #include "test/mocks/server/factory_context.h" #include "test/test_common/registry.h" +#include "test/test_common/status_utility.h" #include "gmock/gmock.h" #include "gtest/gtest.h" @@ -205,9 +206,8 @@ version_info: "1" TestUtility::parseYaml(response_yaml); const auto decoded_resources = TestUtility::decodeResources< envoy::extensions::filters::network::dubbo_proxy::v3::MultipleRouteConfiguration>(response); - EXPECT_TRUE(context_.server_factory_context_.cluster_manager_.subscription_factory_.callbacks_ - ->onConfigUpdate(decoded_resources.refvec_, response.version_info()) - .ok()); + EXPECT_OK(context_.server_factory_context_.cluster_manager_.subscription_factory_.callbacks_ + ->onConfigUpdate(decoded_resources.refvec_, response.version_info())); auto message_ptr = context_.server_factory_context_.admin_.config_tracker_ .config_tracker_callbacks_["drds_routes"](universal_name_matcher); const auto& dump = diff --git a/test/extensions/load_balancing_policies/random/BUILD b/test/extensions/load_balancing_policies/random/BUILD index 174c24166009a..7ef02e07cb060 100644 --- a/test/extensions/load_balancing_policies/random/BUILD +++ b/test/extensions/load_balancing_policies/random/BUILD @@ -25,6 +25,7 @@ envoy_extension_cc_test( "//test/mocks/server:server_factory_context_mocks", "//test/mocks/upstream:cluster_info_mocks", "//test/mocks/upstream:priority_set_mocks", + "//test/test_common:status_utility_lib", "@envoy_api//envoy/config/core/v3:pkg_cc_proto", ], ) diff --git a/test/extensions/load_balancing_policies/random/config_test.cc b/test/extensions/load_balancing_policies/random/config_test.cc index b3b2034517654..6cec3c0d3428d 100644 --- a/test/extensions/load_balancing_policies/random/config_test.cc +++ b/test/extensions/load_balancing_policies/random/config_test.cc @@ -5,6 +5,7 @@ #include "test/mocks/server/server_factory_context.h" #include "test/mocks/upstream/cluster_info.h" #include "test/mocks/upstream/priority_set.h" +#include "test/test_common/status_utility.h" #include "gtest/gtest.h" @@ -34,7 +35,7 @@ TEST(RandomConfigTest, ValidateFail) { context.api_.random_, context.time_system_); EXPECT_NE(nullptr, thread_aware_lb); - ASSERT_TRUE(thread_aware_lb->initialize().ok()); + ASSERT_OK(thread_aware_lb->initialize()); auto thread_local_lb_factory = thread_aware_lb->factory(); EXPECT_NE(nullptr, thread_local_lb_factory); From db2fbc14856fa4454a6bf766976ec449f1af99d9 Mon Sep 17 00:00:00 2001 From: Raven Black Date: Thu, 16 Jul 2026 15:40:23 +0000 Subject: [PATCH 2/5] Unify status check Signed-off-by: Raven Black --- ...oles_anywhere_credentials_provider_test.cc | 5 +- .../eventstream/eventstream_parser_test.cc | 54 +++++++------------ .../http/json_to_metadata/config_test.cc | 12 ++--- 3 files changed, 26 insertions(+), 45 deletions(-) diff --git a/test/extensions/common/aws/credential_providers/iam_roles_anywhere_credentials_provider_test.cc b/test/extensions/common/aws/credential_providers/iam_roles_anywhere_credentials_provider_test.cc index be16c43d866f8..5d78d547fb85a 100644 --- a/test/extensions/common/aws/credential_providers/iam_roles_anywhere_credentials_provider_test.cc +++ b/test/extensions/common/aws/credential_providers/iam_roles_anywhere_credentials_provider_test.cc @@ -1320,9 +1320,8 @@ TEST_F(IamRolesAnywhereCredentialsProviderBasicTests, NoCredentials) { headers.setPath("/"); headers.addCopy(Http::LowerCaseString("host"), "www.example.com"); status = roles_anywhere_signer->signEmptyPayload(headers, "ap-southeast-2"); - EXPECT_THAT(status, Not(IsOk())); - EXPECT_EQ(status.message(), - "Unable to sign IAM Roles Anywhere payload - no x509 credentials found"); + EXPECT_THAT(status, HasStatusMessage( + "Unable to sign IAM Roles Anywhere payload - no x509 credentials found")); } class ControlledCredentialsProvider : public CredentialsProvider { diff --git a/test/extensions/common/aws/eventstream/eventstream_parser_test.cc b/test/extensions/common/aws/eventstream/eventstream_parser_test.cc index 311ab1277498c..bcd2ebff64090 100644 --- a/test/extensions/common/aws/eventstream/eventstream_parser_test.cc +++ b/test/extensions/common/aws/eventstream/eventstream_parser_test.cc @@ -15,8 +15,7 @@ namespace Eventstream { namespace { using ::Envoy::StatusHelpers::HasStatusCode; -using ::Envoy::StatusHelpers::IsOk; -using ::testing::Not; +using ::Envoy::StatusHelpers::HasStatusMessage; // Test helper: compute CRC32 using zlib directly (since EventstreamParser::computeCrc32 is private) uint32_t testComputeCrc32(absl::string_view data, uint32_t initial_crc = 0) { @@ -131,8 +130,7 @@ TEST_F(EventstreamParserTest, ParseMessageBadPreludeCrc) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Prelude CRC")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Prelude CRC"))); } // Test parseMessage with no headers and no payload @@ -196,8 +194,7 @@ TEST_F(EventstreamParserTest, ParseMessageBadMessageCrc) { msg[msg.size() - 1] ^= 0xFF; auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Message CRC")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Message CRC"))); } // Test all header value types via parseMessage @@ -385,8 +382,7 @@ TEST_F(EventstreamParserTest, ParseMessageTotalLengthTooSmall) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Invalid message length")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Invalid message length"))); } // Test total_length exceeds MAX_TOTAL_LENGTH @@ -438,8 +434,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeadersLengthExceedsMessage) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Headers length exceeds message")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Headers length exceeds message"))); } // Test headers_length exceeds maximum allowed @@ -491,8 +486,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderNameLengthZero) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Invalid header name length")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Invalid header name length"))); } // Test header with unknown type @@ -506,8 +500,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderUnknownType) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Unknown header value type")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Unknown header value type"))); } // Test Int32 header type @@ -545,8 +538,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedName) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Header truncated"))); } // Test header truncation: missing byte value @@ -561,8 +553,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedByteValue) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Header truncated"))); } // Test header truncation: missing short value @@ -577,8 +568,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedShortValue) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Header truncated"))); } // Test header truncation: missing int32 value @@ -594,8 +584,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedInt32Value) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Header truncated"))); } // Test header truncation: missing int64 value @@ -613,8 +602,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedInt64Value) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Header truncated"))); } // Test header truncation: missing string length @@ -629,8 +617,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedStringLength) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Header truncated"))); } // Test header truncation: missing string data @@ -648,8 +635,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedStringData) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Header truncated"))); } // Test header truncation: missing uuid value @@ -666,8 +652,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderTruncatedUuidValue) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Header truncated")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Header truncated"))); } // Test header value too long (> MAX_HEADER_STRING_LENGTH) @@ -684,8 +669,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderValueTooLong) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Header value too long")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("Header value too long"))); } // Test string with length 0 (spec requires minimum length 1) @@ -701,8 +685,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderStringLengthZero) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "must not be empty")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("must not be empty"))); } // Test byte_array with length 0 (spec requires minimum length 1) @@ -718,8 +701,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderByteArrayLengthZero) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - EXPECT_THAT(result, Not(IsOk())); - EXPECT_TRUE(absl::StrContains(result.status().message(), "must not be empty")); + EXPECT_THAT(result, HasStatusMessage(testing::HasSubstr("must not be empty"))); } // Test CRC errors return DataLoss status code diff --git a/test/extensions/filters/http/json_to_metadata/config_test.cc b/test/extensions/filters/http/json_to_metadata/config_test.cc index 7854a8f724d98..57c47edffe28d 100644 --- a/test/extensions/filters/http/json_to_metadata/config_test.cc +++ b/test/extensions/filters/http/json_to_metadata/config_test.cc @@ -12,8 +12,7 @@ namespace Extensions { namespace HttpFilters { namespace JsonToMetadata { -using ::Envoy::StatusHelpers::IsOk; -using ::testing::Not; +using ::Envoy::StatusHelpers::HasStatusMessage; TEST(Factory, Basic) { const std::string yaml_request = R"( @@ -192,10 +191,11 @@ TEST(Factory, NoRuleInRouteConfig) { .createRouteSpecificFilterConfig(*proto_config, context, ProtobufMessage::getNullValidationVisitor()) .status(); - EXPECT_THAT(status, Not(IsOk())); - EXPECT_EQ(status.message(), - "json_to_metadata_filter: Per route configs must at least specify one of request_rules " - "or response_rules."); + EXPECT_THAT( + status, + HasStatusMessage( + "json_to_metadata_filter: Per route configs must at least specify one of request_rules " + "or response_rules.")); } TEST(Factory, PerRouteConfig) { From 982c029284e1ab9963910c53205897c49aa79eb5 Mon Sep 17 00:00:00 2001 From: Raven Black Date: Thu, 16 Jul 2026 20:45:41 +0000 Subject: [PATCH 3/5] EXPECT_OK and ASSERT_OK already output the message Signed-off-by: Raven Black --- .../common/aws/eventstream/eventstream_parser_test.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/extensions/common/aws/eventstream/eventstream_parser_test.cc b/test/extensions/common/aws/eventstream/eventstream_parser_test.cc index bcd2ebff64090..cae0d1d329b84 100644 --- a/test/extensions/common/aws/eventstream/eventstream_parser_test.cc +++ b/test/extensions/common/aws/eventstream/eventstream_parser_test.cc @@ -137,7 +137,7 @@ TEST_F(EventstreamParserTest, ParseMessageBadPreludeCrc) { TEST_F(EventstreamParserTest, ParseMessageMinimal) { std::string msg = createEventstreamMessage("", ""); auto result = EventstreamParser::parseMessage(msg); - ASSERT_OK(result) << result.status().message(); + ASSERT_OK(result); ASSERT_TRUE(result->message.has_value()); EXPECT_TRUE(result->message->headers.empty()); EXPECT_TRUE(result->message->payload_bytes.empty()); @@ -149,7 +149,7 @@ TEST_F(EventstreamParserTest, ParseMessageWithPayload) { std::string payload = R"({"type":"message_delta","usage":{"output_tokens":42}})"; std::string msg = createEventstreamMessage("", payload); auto result = EventstreamParser::parseMessage(msg); - ASSERT_OK(result) << result.status().message(); + ASSERT_OK(result); ASSERT_TRUE(result->message.has_value()); EXPECT_TRUE(result->message->headers.empty()); EXPECT_EQ(result->message->payload_bytes, payload); @@ -178,7 +178,7 @@ TEST_F(EventstreamParserTest, ParseMessageWithHeadersAndPayload) { std::string msg = createEventstreamMessage(headers_data, payload); auto result = EventstreamParser::parseMessage(msg); - ASSERT_OK(result) << result.status().message(); + ASSERT_OK(result); ASSERT_TRUE(result->message.has_value()); ASSERT_EQ(result->message->headers.size(), 1); EXPECT_EQ(result->message->headers[0].name, ":message-type"); @@ -275,7 +275,7 @@ TEST_F(EventstreamParserTest, ParseMessageAllHeaderTypes) { std::string headers_data(reinterpret_cast(header_bytes.data()), header_bytes.size()); std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - ASSERT_OK(result) << result.status().message(); + ASSERT_OK(result); ASSERT_TRUE(result->message.has_value()); const auto& headers = result->message->headers; ASSERT_EQ(headers.size(), 8); @@ -519,7 +519,7 @@ TEST_F(EventstreamParserTest, ParseMessageHeaderInt32) { std::string msg = createEventstreamMessage(headers_data, ""); auto result = EventstreamParser::parseMessage(msg); - ASSERT_OK(result) << result.status().message(); + ASSERT_OK(result); ASSERT_TRUE(result->message.has_value()); ASSERT_EQ(result->message->headers.size(), 1); EXPECT_EQ(result->message->headers[0].name, "i"); From 8640b25008af7e1f7a7b4fa4dd41c956dc8b158b Mon Sep 17 00:00:00 2001 From: Raven Black Date: Thu, 16 Jul 2026 20:58:39 +0000 Subject: [PATCH 4/5] Combine status code and message expectations Signed-off-by: Raven Black --- .../aws/eventstream/eventstream_parser_test.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/extensions/common/aws/eventstream/eventstream_parser_test.cc b/test/extensions/common/aws/eventstream/eventstream_parser_test.cc index cae0d1d329b84..402886552d964 100644 --- a/test/extensions/common/aws/eventstream/eventstream_parser_test.cc +++ b/test/extensions/common/aws/eventstream/eventstream_parser_test.cc @@ -4,7 +4,6 @@ #include "test/test_common/status_utility.h" -#include "absl/strings/match.h" #include "gtest/gtest.h" namespace Envoy { @@ -14,6 +13,7 @@ namespace Aws { namespace Eventstream { namespace { +using ::Envoy::StatusHelpers::HasStatus; using ::Envoy::StatusHelpers::HasStatusCode; using ::Envoy::StatusHelpers::HasStatusMessage; @@ -356,8 +356,8 @@ TEST_F(EventstreamParserTest, ParseMessagePayloadExceedsMax) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_THAT(result, HasStatusCode(absl::StatusCode::kResourceExhausted)); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Payload exceeds maximum")); + EXPECT_THAT(result, HasStatus(absl::StatusCode::kResourceExhausted, + testing::HasSubstr("Payload exceeds maximum"))); } // Test total_length smaller than minimum @@ -408,8 +408,8 @@ TEST_F(EventstreamParserTest, ParseMessageTotalLengthExceedsMax) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_THAT(result, HasStatusCode(absl::StatusCode::kResourceExhausted)); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Message length exceeds maximum")); + EXPECT_THAT(result, HasStatus(absl::StatusCode::kResourceExhausted, + testing::HasSubstr("Message length exceeds maximum"))); } // Test headers_length exceeds available space @@ -461,8 +461,8 @@ TEST_F(EventstreamParserTest, ParseMessageHeadersLengthExceedsMax) { auto result = EventstreamParser::parseMessage(absl::string_view(reinterpret_cast(buffer), 16)); - EXPECT_THAT(result, HasStatusCode(absl::StatusCode::kResourceExhausted)); - EXPECT_TRUE(absl::StrContains(result.status().message(), "Headers length exceeds maximum")); + EXPECT_THAT(result, HasStatus(absl::StatusCode::kResourceExhausted, + testing::HasSubstr("Headers length exceeds maximum"))); } // Test with AWS Bedrock-like payload (realistic JSON) From 6c6bc087532586a68af1a3fd423143adf3e5729b Mon Sep 17 00:00:00 2001 From: Raven Black Date: Fri, 17 Jul 2026 21:30:01 +0000 Subject: [PATCH 5/5] Use ASSERT if the next line would crash, and use IsOkAndHolds Signed-off-by: Raven Black --- .../common/aws/aws_cluster_manager_test.cc | 10 +++---- .../aws/credential_provider_chains_test.cc | 29 +++++++++---------- test/extensions/common/aws/utility_test.cc | 16 +++++----- 3 files changed, 25 insertions(+), 30 deletions(-) diff --git a/test/extensions/common/aws/aws_cluster_manager_test.cc b/test/extensions/common/aws/aws_cluster_manager_test.cc index 2b52bb736d7ec..88964d522d5dd 100644 --- a/test/extensions/common/aws/aws_cluster_manager_test.cc +++ b/test/extensions/common/aws/aws_cluster_manager_test.cc @@ -8,6 +8,7 @@ #include "gtest/gtest.h" using ::Envoy::StatusHelpers::IsOk; +using ::Envoy::StatusHelpers::IsOkAndHolds; using testing::NiceMock; using ::testing::Not; using testing::Return; @@ -60,12 +61,9 @@ TEST_F(AwsClusterManagerTest, AddClusters) { "cluster_3", envoy::config::cluster::v3::Cluster::DiscoveryType::Cluster_DiscoveryType_STRICT_DNS, "uri_3"); - EXPECT_OK(aws_cluster_manager->getUriFromClusterName("cluster_1")); - EXPECT_EQ(aws_cluster_manager->getUriFromClusterName("cluster_1").value(), "uri_1"); - EXPECT_OK(aws_cluster_manager->getUriFromClusterName("cluster_2")); - EXPECT_EQ(aws_cluster_manager->getUriFromClusterName("cluster_2").value(), "uri_2"); - EXPECT_OK(aws_cluster_manager->getUriFromClusterName("cluster_3")); - EXPECT_EQ(aws_cluster_manager->getUriFromClusterName("cluster_3").value(), "uri_3"); + EXPECT_THAT(aws_cluster_manager->getUriFromClusterName("cluster_1"), IsOkAndHolds("uri_1")); + EXPECT_THAT(aws_cluster_manager->getUriFromClusterName("cluster_2"), IsOkAndHolds("uri_2")); + EXPECT_THAT(aws_cluster_manager->getUriFromClusterName("cluster_3"), IsOkAndHolds("uri_3")); // Adding an extra with the same cluster name has no effect status = aws_cluster_manager->addManagedCluster( "cluster_1", diff --git a/test/extensions/common/aws/credential_provider_chains_test.cc b/test/extensions/common/aws/credential_provider_chains_test.cc index 0c95152418264..02e94b4dd9571 100644 --- a/test/extensions/common/aws/credential_provider_chains_test.cc +++ b/test/extensions/common/aws/credential_provider_chains_test.cc @@ -11,6 +11,7 @@ #include "gtest/gtest.h" using ::Envoy::StatusHelpers::IsOk; +using ::Envoy::StatusHelpers::IsOkAndHolds; using testing::_; using testing::NiceMock; using ::testing::Not; @@ -24,6 +25,10 @@ namespace Extensions { namespace Common { namespace Aws { +MATCHER_P(ChainHasNumProviders, num_providers, "") { + return arg->getNumProviders() == static_cast(num_providers); +} + class DefaultCredentialsProviderChainTest : public testing::Test { public: DefaultCredentialsProviderChainTest() : api_(Api::createApiForTest(time_system_)) { @@ -354,8 +359,7 @@ TEST_F(CustomCredentialsProviderChainTest, InstanceProfileOnly) { credential_provider_config.mutable_instance_profile_credential_provider(); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_OK(chain); - EXPECT_EQ(1, chain.value()->getNumProviders()); + EXPECT_THAT(chain, IsOkAndHolds(ChainHasNumProviders(1))); } TEST_F(CustomCredentialsProviderChainTest, InstanceProfileAndEnvironmentOnly) { @@ -365,8 +369,7 @@ TEST_F(CustomCredentialsProviderChainTest, InstanceProfileAndEnvironmentOnly) { credential_provider_config.mutable_environment_credential_provider(); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_OK(chain); - EXPECT_EQ(2, chain.value()->getNumProviders()); + EXPECT_THAT(chain, IsOkAndHolds(ChainHasNumProviders(2))); } TEST_F(CustomCredentialsProviderChainTest, WebIdentityOnly) { @@ -378,8 +381,7 @@ TEST_F(CustomCredentialsProviderChainTest, WebIdentityOnly) { ->set_environment_variable("TEST"); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_OK(chain); - EXPECT_EQ(1, chain.value()->getNumProviders()); + EXPECT_THAT(chain, IsOkAndHolds(ChainHasNumProviders(1))); } TEST_F(CustomCredentialsProviderChainTest, CredentialFileOnly) { @@ -388,8 +390,7 @@ TEST_F(CustomCredentialsProviderChainTest, CredentialFileOnly) { credential_provider_config.mutable_credentials_file_provider(); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_OK(chain); - EXPECT_EQ(1, chain.value()->getNumProviders()); + EXPECT_THAT(chain, IsOkAndHolds(ChainHasNumProviders(1))); } TEST_F(CustomCredentialsProviderChainTest, ContainerOnly) { @@ -400,8 +401,7 @@ TEST_F(CustomCredentialsProviderChainTest, ContainerOnly) { credential_provider_config.mutable_container_credential_provider(); auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "region", credential_provider_config); - EXPECT_OK(chain); - EXPECT_EQ(1, chain.value()->getNumProviders()); + EXPECT_THAT(chain, IsOkAndHolds(ChainHasNumProviders(1))); } TEST_F(CustomCredentialsProviderChainTest, AssumeRoleOnly) { @@ -414,8 +414,7 @@ TEST_F(CustomCredentialsProviderChainTest, AssumeRoleOnly) { auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "us-east-1", credential_provider_config); - EXPECT_OK(chain); - EXPECT_EQ(1, chain.value()->getNumProviders()); + EXPECT_THAT(chain, IsOkAndHolds(ChainHasNumProviders(1))); } TEST_F(CustomCredentialsProviderChainTest, AssumeRoleWithEnvironment) { @@ -429,8 +428,7 @@ TEST_F(CustomCredentialsProviderChainTest, AssumeRoleWithEnvironment) { auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "us-east-1", credential_provider_config); - EXPECT_OK(chain); - EXPECT_EQ(2, chain.value()->getNumProviders()); + EXPECT_THAT(chain, IsOkAndHolds(ChainHasNumProviders(2))); } TEST_F(CustomCredentialsProviderChainTest, AssumeRoleWithoutSessionName) { @@ -576,8 +574,7 @@ TEST_F(CustomCredentialsProviderChainTest, AssumeRoleInnerChainSubscriptionsSetu auto chain = Envoy::Extensions::Common::Aws::CommonCredentialsProviderChain:: customCredentialsProviderChain(context_, "us-east-1", credential_provider_config); - EXPECT_OK(chain); - EXPECT_EQ(1, chain.value()->getNumProviders()); + EXPECT_THAT(chain, IsOkAndHolds(ChainHasNumProviders(1))); auto instance_profile_provider = context_.singletonManager() diff --git a/test/extensions/common/aws/utility_test.cc b/test/extensions/common/aws/utility_test.cc index d65c937d311c6..d1176374d2a47 100644 --- a/test/extensions/common/aws/utility_test.cc +++ b/test/extensions/common/aws/utility_test.cc @@ -492,7 +492,7 @@ TEST(UtilityTest, CorrectlyConvertRegionSet) { TEST(UtilityTest, JsonStringFound) { auto test_json = Json::Factory::loadFromString("{\"access_key_id\":\"testvalue\"}"); - EXPECT_OK(test_json); + ASSERT_OK(test_json); const auto expiration = Utility::getStringFromJsonOrDefault(test_json.value(), "access_key_id", "notfound"); EXPECT_EQ(expiration, "testvalue"); @@ -500,7 +500,7 @@ TEST(UtilityTest, JsonStringFound) { TEST(UtilityTest, JsonStringNotFound) { auto test_json = Json::Factory::loadFromString("{\"no_access_key_id\":\"testvalue\"}"); - EXPECT_OK(test_json); + ASSERT_OK(test_json); const auto expiration = Utility::getStringFromJsonOrDefault(test_json.value(), "access_key_id", "notfound"); EXPECT_EQ(expiration, "notfound"); @@ -508,14 +508,14 @@ TEST(UtilityTest, JsonStringNotFound) { TEST(UtilityTest, JsonIntegerFound) { auto test_json = Json::Factory::loadFromString("{\"expiration\":5}"); - EXPECT_OK(test_json); + ASSERT_OK(test_json); const auto expiration = Utility::getIntegerFromJsonOrDefault(test_json.value(), "expiration", 0); EXPECT_EQ(expiration, 5); } TEST(UtilityTest, JsonIntegerNotFound) { auto test_json = Json::Factory::loadFromString("{\"noexpiration\":5}"); - EXPECT_OK(test_json); + ASSERT_OK(test_json); const auto expiration = Utility::getIntegerFromJsonOrDefault(test_json.value(), "expiration", 0); // Should return default value EXPECT_EQ(expiration, 0); @@ -524,9 +524,9 @@ TEST(UtilityTest, JsonIntegerNotFound) { // Check we handle double formatted integer > 0 TEST(UtilityTest, JsonIntegerExponent) { auto test_json = Json::Factory::loadFromString("{\"expiration\":1.714449238E9}"); - EXPECT_OK(test_json); + ASSERT_OK(test_json); auto value_or_error = test_json.value()->getValue("expiration"); - EXPECT_OK(value_or_error); + ASSERT_OK(value_or_error); EXPECT_FALSE(absl::holds_alternative(value_or_error.value())); EXPECT_TRUE(absl::holds_alternative(value_or_error.value())); const auto expiration = Utility::getIntegerFromJsonOrDefault(test_json.value(), "expiration", 0); @@ -537,9 +537,9 @@ TEST(UtilityTest, JsonIntegerExponent) { // Check we handle double formatted integer < 0 TEST(UtilityTest, JsonIntegerExponentInvalid) { auto test_json = Json::Factory::loadFromString("{\"expiration\":-0.17144492389}"); - EXPECT_OK(test_json); + ASSERT_OK(test_json); auto value_or_error = test_json.value()->getValue("expiration"); - EXPECT_OK(value_or_error); + ASSERT_OK(value_or_error); EXPECT_FALSE(absl::holds_alternative(value_or_error.value())); EXPECT_TRUE(absl::holds_alternative(value_or_error.value())); const auto expiration =