// // // Copyright 2015 gRPC authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // #include "src/cpp/common/secure_auth_context.h" #include #include #include #include "src/core/lib/security/context/security_context.h" #include "test/cpp/util/string_ref_helper.h" using grpc::testing::ToString; namespace grpc { namespace { class SecureAuthContextTest : public ::testing::Test {}; // Created with nullptr TEST_F(SecureAuthContextTest, EmptyContext) { SecureAuthContext context(nullptr); EXPECT_TRUE(context.GetPeerIdentity().empty()); EXPECT_TRUE(context.GetPeerIdentityPropertyName().empty()); EXPECT_TRUE(context.FindPropertyValues("").empty()); EXPECT_TRUE(context.FindPropertyValues("whatever").empty()); EXPECT_TRUE(context.begin() == context.end()); } TEST_F(SecureAuthContextTest, Properties) { grpc_core::RefCountedPtr ctx = grpc_core::MakeRefCounted(nullptr); SecureAuthContext context(ctx.get()); ctx.reset(); context.AddProperty("name", "chapi"); context.AddProperty("name", "chapo"); context.AddProperty("foo", "bar"); EXPECT_TRUE(context.SetPeerIdentityPropertyName("name")); std::vector peer_identity = context.GetPeerIdentity(); EXPECT_EQ(2u, peer_identity.size()); EXPECT_EQ("chapi", ToString(peer_identity[0])); EXPECT_EQ("chapo", ToString(peer_identity[1])); EXPECT_EQ("name", context.GetPeerIdentityPropertyName()); std::vector bar = context.FindPropertyValues("foo"); EXPECT_EQ(1u, bar.size()); EXPECT_EQ("bar", ToString(bar[0])); } TEST_F(SecureAuthContextTest, Iterators) { grpc_core::RefCountedPtr ctx = grpc_core::MakeRefCounted(nullptr); SecureAuthContext context(ctx.get()); ctx.reset(); context.AddProperty("name", "chapi"); context.AddProperty("name", "chapo"); context.AddProperty("foo", "bar"); EXPECT_TRUE(context.SetPeerIdentityPropertyName("name")); AuthPropertyIterator iter = context.begin(); EXPECT_TRUE(context.end() != iter); AuthProperty p0 = *iter; ++iter; AuthProperty p1 = *iter; iter++; AuthProperty p2 = *iter; EXPECT_EQ("name", ToString(p0.first)); EXPECT_EQ("chapi", ToString(p0.second)); EXPECT_EQ("name", ToString(p1.first)); EXPECT_EQ("chapo", ToString(p1.second)); EXPECT_EQ("foo", ToString(p2.first)); EXPECT_EQ("bar", ToString(p2.second)); ++iter; EXPECT_EQ(context.end(), iter); } } // namespace } // namespace grpc int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }