aboutsummaryrefslogtreecommitdiff
path: root/src/privet/wifi_ssid_generator_unittest.cc
blob: 406576d528ab73623807054898d55bf588bcde68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// Copyright 2015 The Weave Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "src/privet/wifi_ssid_generator.h"

#include <gtest/gtest.h>

#include "src/privet/mock_delegates.h"
#include "src/privet/openssl_utils.h"

namespace weave {
namespace privet {

class WifiSsidGeneratorTest : public testing::Test {
 protected:
  void SetRandomForTests(int n) { ssid_generator_.SetRandomForTests(n); }

  testing::StrictMock<MockCloudDelegate> gcd_;
  testing::StrictMock<MockWifiDelegate> wifi_;

  WifiSsidGenerator ssid_generator_{&gcd_, &wifi_};
};

TEST_F(WifiSsidGeneratorTest, GenerateFlagsWithWifi24) {
  EXPECT_CALL(wifi_, GetTypes())
      .WillRepeatedly(Return(std::set<WifiType>{WifiType::kWifi24}));

  EXPECT_EQ(ssid_generator_.GenerateFlags().size(), 2u);

  wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
  gcd_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
  EXPECT_EQ("DB", ssid_generator_.GenerateFlags());

  wifi_.connection_state_ = ConnectionState{ConnectionState::kOnline};
  EXPECT_EQ("CB", ssid_generator_.GenerateFlags());

  gcd_.connection_state_ = ConnectionState{ConnectionState::kOffline};
  EXPECT_EQ("AB", ssid_generator_.GenerateFlags());

  wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
  EXPECT_EQ("BB", ssid_generator_.GenerateFlags());
}

TEST_F(WifiSsidGeneratorTest, GenerateFlagsWithWifi50) {
  EXPECT_CALL(wifi_, GetTypes())
      .WillRepeatedly(Return(std::set<WifiType>{WifiType::kWifi50}));

  EXPECT_EQ(ssid_generator_.GenerateFlags().size(), 2u);

  wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
  gcd_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
  EXPECT_EQ("DC", ssid_generator_.GenerateFlags());

  wifi_.connection_state_ = ConnectionState{ConnectionState::kOnline};
  EXPECT_EQ("CC", ssid_generator_.GenerateFlags());

  gcd_.connection_state_ = ConnectionState{ConnectionState::kOffline};
  EXPECT_EQ("AC", ssid_generator_.GenerateFlags());

  wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
  EXPECT_EQ("BC", ssid_generator_.GenerateFlags());
}

TEST_F(WifiSsidGeneratorTest, GenerateSsid31orLess) {
  EXPECT_LE(ssid_generator_.GenerateSsid().size(), 31u);
}

TEST_F(WifiSsidGeneratorTest, GenerateSsidValue) {
  SetRandomForTests(47);
  EXPECT_EQ("TestDevice 47.ABMIDABprv", ssid_generator_.GenerateSsid());

  SetRandomForTests(9);
  EXPECT_EQ("TestDevice 9.ABMIDABprv", ssid_generator_.GenerateSsid());
}

TEST_F(WifiSsidGeneratorTest, GenerateSsidLongName) {
  SetRandomForTests(99);
  EXPECT_CALL(gcd_, GetName()).WillRepeatedly(Return("Very Long Device Name"));
  EXPECT_EQ("Very Long Device  99.ABMIDABprv", ssid_generator_.GenerateSsid());
}

}  // namespace privet
}  // namespace weave