1 //
2 // Copyright (C) 2013 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 #include "shill/supplicant/wpa_supplicant.h"
18
19 #include <gtest/gtest.h>
20
21 #include "shill/mock_log.h"
22
23 using std::map;
24 using std::string;
25 using testing::_;
26 using testing::EndsWith;
27
28 namespace shill {
29
30 class WPASupplicantTest : public testing::Test {
31 public:
WPASupplicantTest()32 WPASupplicantTest() {}
~WPASupplicantTest()33 virtual ~WPASupplicantTest() {}
34
35 protected:
36 KeyValueStore property_map_;
37 };
38
TEST_F(WPASupplicantTest,ExtractRemoteCertificationEmpty)39 TEST_F(WPASupplicantTest, ExtractRemoteCertificationEmpty) {
40 string subject;
41 uint32_t depth = 0;
42 ScopedMockLog log;
43 EXPECT_CALL(log, Log(logging::LOG_ERROR, _, EndsWith("no depth parameter.")));
44 EXPECT_FALSE(WPASupplicant::ExtractRemoteCertification(
45 property_map_, &subject, &depth));
46 EXPECT_EQ("", subject);
47 EXPECT_EQ(0, depth);
48 }
49
TEST_F(WPASupplicantTest,ExtractRemoteCertificationDepthOnly)50 TEST_F(WPASupplicantTest, ExtractRemoteCertificationDepthOnly) {
51 string subject;
52 const uint32_t kDepthValue = 100;
53 uint32_t depth = kDepthValue - 1;
54 property_map_.SetUint(WPASupplicant::kInterfacePropertyDepth, kDepthValue);
55 ScopedMockLog log;
56 EXPECT_CALL(log,
57 Log(logging::LOG_ERROR, _, EndsWith("no subject parameter.")));
58 EXPECT_FALSE(WPASupplicant::ExtractRemoteCertification(
59 property_map_, &subject, &depth));
60 EXPECT_EQ("", subject);
61 EXPECT_NE(kDepthValue, depth);
62 }
63
TEST_F(WPASupplicantTest,ExtractRemoteCertificationSubjectOnly)64 TEST_F(WPASupplicantTest, ExtractRemoteCertificationSubjectOnly) {
65 const char kSubjectName[] = "subject-name";
66 string subject;
67 uint32_t depth = 0;
68 property_map_.SetString(WPASupplicant::kInterfacePropertySubject,
69 kSubjectName);
70 ScopedMockLog log;
71 EXPECT_CALL(log, Log(logging::LOG_ERROR, _, EndsWith("no depth parameter.")));
72 EXPECT_FALSE(WPASupplicant::ExtractRemoteCertification(
73 property_map_, &subject, &depth));
74 EXPECT_EQ("", subject);
75 EXPECT_EQ(0, depth);
76 }
77
TEST_F(WPASupplicantTest,ExtractRemoteCertificationSubjectAndDepth)78 TEST_F(WPASupplicantTest, ExtractRemoteCertificationSubjectAndDepth) {
79 const char kSubjectName[] = "subject-name";
80 string subject;
81 const uint32_t kDepthValue = 100;
82 uint32_t depth = 0;
83 property_map_.SetString(WPASupplicant::kInterfacePropertySubject,
84 kSubjectName);
85 property_map_.SetUint(WPASupplicant::kInterfacePropertyDepth, kDepthValue);
86 EXPECT_TRUE(WPASupplicant::ExtractRemoteCertification(
87 property_map_, &subject, &depth));
88 EXPECT_EQ(kSubjectName, subject);
89 EXPECT_EQ(kDepthValue, depth);
90 }
91
92 } // namespace shill
93