Home | History | Annotate | Download | only in privet
      1 // Copyright 2015 The Weave Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "src/privet/wifi_ssid_generator.h"
      6 
      7 #include <gtest/gtest.h>
      8 
      9 #include "src/privet/mock_delegates.h"
     10 #include "src/privet/openssl_utils.h"
     11 
     12 namespace weave {
     13 namespace privet {
     14 
     15 class WifiSsidGeneratorTest : public testing::Test {
     16  protected:
     17   void SetRandomForTests(int n) { ssid_generator_.SetRandomForTests(n); }
     18 
     19   testing::StrictMock<MockCloudDelegate> gcd_;
     20   testing::StrictMock<MockWifiDelegate> wifi_;
     21 
     22   WifiSsidGenerator ssid_generator_{&gcd_, &wifi_};
     23 };
     24 
     25 TEST_F(WifiSsidGeneratorTest, GenerateFlagsWithWifi24) {
     26   EXPECT_CALL(wifi_, GetTypes())
     27       .WillRepeatedly(Return(std::set<WifiType>{WifiType::kWifi24}));
     28 
     29   EXPECT_EQ(ssid_generator_.GenerateFlags().size(), 2u);
     30 
     31   wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
     32   gcd_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
     33   EXPECT_EQ("DB", ssid_generator_.GenerateFlags());
     34 
     35   wifi_.connection_state_ = ConnectionState{ConnectionState::kOnline};
     36   EXPECT_EQ("CB", ssid_generator_.GenerateFlags());
     37 
     38   gcd_.connection_state_ = ConnectionState{ConnectionState::kOffline};
     39   EXPECT_EQ("AB", ssid_generator_.GenerateFlags());
     40 
     41   wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
     42   EXPECT_EQ("BB", ssid_generator_.GenerateFlags());
     43 }
     44 
     45 TEST_F(WifiSsidGeneratorTest, GenerateFlagsWithWifi50) {
     46   EXPECT_CALL(wifi_, GetTypes())
     47       .WillRepeatedly(Return(std::set<WifiType>{WifiType::kWifi50}));
     48 
     49   EXPECT_EQ(ssid_generator_.GenerateFlags().size(), 2u);
     50 
     51   wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
     52   gcd_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
     53   EXPECT_EQ("DC", ssid_generator_.GenerateFlags());
     54 
     55   wifi_.connection_state_ = ConnectionState{ConnectionState::kOnline};
     56   EXPECT_EQ("CC", ssid_generator_.GenerateFlags());
     57 
     58   gcd_.connection_state_ = ConnectionState{ConnectionState::kOffline};
     59   EXPECT_EQ("AC", ssid_generator_.GenerateFlags());
     60 
     61   wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
     62   EXPECT_EQ("BC", ssid_generator_.GenerateFlags());
     63 }
     64 
     65 TEST_F(WifiSsidGeneratorTest, GenerateSsid31orLess) {
     66   EXPECT_LE(ssid_generator_.GenerateSsid().size(), 31u);
     67 }
     68 
     69 TEST_F(WifiSsidGeneratorTest, GenerateSsidValue) {
     70   SetRandomForTests(47);
     71   EXPECT_EQ("TestDevice 47.ABMIDABprv", ssid_generator_.GenerateSsid());
     72 
     73   SetRandomForTests(9);
     74   EXPECT_EQ("TestDevice 9.ABMIDABprv", ssid_generator_.GenerateSsid());
     75 }
     76 
     77 TEST_F(WifiSsidGeneratorTest, GenerateSsidLongName) {
     78   SetRandomForTests(99);
     79   EXPECT_CALL(gcd_, GetName()).WillRepeatedly(Return("Very Long Device Name"));
     80   EXPECT_EQ("Very Long Device  99.ABMIDABprv", ssid_generator_.GenerateSsid());
     81 }
     82 
     83 }  // namespace privet
     84 }  // namespace weave
     85