14615e0d5aa416ab1a8596bde68f71f7ebe431b86Vitaly Buka// Copyright 2015 The Weave Authors. All rights reserved.
27ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka// Use of this source code is governed by a BSD-style license that can be
37ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka// found in the LICENSE file.
47ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
52d16dfa768282b29f3fd5a905b52e3393a083e0dStefan Sauer#include "src/privet/wifi_ssid_generator.h"
67ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
77ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka#include <gtest/gtest.h>
87ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
92d16dfa768282b29f3fd5a905b52e3393a083e0dStefan Sauer#include "src/privet/mock_delegates.h"
102d16dfa768282b29f3fd5a905b52e3393a083e0dStefan Sauer#include "src/privet/openssl_utils.h"
117ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
12b6f015a1ef3caffbc2af53184c0ec5342e42e048Vitaly Bukanamespace weave {
13b6f015a1ef3caffbc2af53184c0ec5342e42e048Vitaly Bukanamespace privet {
147ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
157ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Bukaclass WifiSsidGeneratorTest : public testing::Test {
167ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka protected:
177ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  void SetRandomForTests(int n) { ssid_generator_.SetRandomForTests(n); }
187ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
197ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  testing::StrictMock<MockCloudDelegate> gcd_;
207ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  testing::StrictMock<MockWifiDelegate> wifi_;
217ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
227ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  WifiSsidGenerator ssid_generator_{&gcd_, &wifi_};
237ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka};
247ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
256a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly BukaTEST_F(WifiSsidGeneratorTest, GenerateFlagsWithWifi24) {
266a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka  EXPECT_CALL(wifi_, GetTypes())
276a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka      .WillRepeatedly(Return(std::set<WifiType>{WifiType::kWifi24}));
286a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka
2952d006a131c61955e3a8a915d7f22941b3a4eee2Vitaly Buka  EXPECT_EQ(ssid_generator_.GenerateFlags().size(), 2u);
3085fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka
3185fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka  wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
3285fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka  gcd_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
336a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka  EXPECT_EQ("DB", ssid_generator_.GenerateFlags());
3485fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka
3585fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka  wifi_.connection_state_ = ConnectionState{ConnectionState::kOnline};
366a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka  EXPECT_EQ("CB", ssid_generator_.GenerateFlags());
3785fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka
3885fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka  gcd_.connection_state_ = ConnectionState{ConnectionState::kOffline};
396a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka  EXPECT_EQ("AB", ssid_generator_.GenerateFlags());
4085fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka
4185fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka  wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
426a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka  EXPECT_EQ("BB", ssid_generator_.GenerateFlags());
4385fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka}
4485fbeafde652c1c4bc327ce0e9b3d5cc5a3d1c1cVitaly Buka
456a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly BukaTEST_F(WifiSsidGeneratorTest, GenerateFlagsWithWifi50) {
466a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka  EXPECT_CALL(wifi_, GetTypes())
476a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka      .WillRepeatedly(Return(std::set<WifiType>{WifiType::kWifi50}));
486a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka
4952d006a131c61955e3a8a915d7f22941b3a4eee2Vitaly Buka  EXPECT_EQ(ssid_generator_.GenerateFlags().size(), 2u);
507ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
517ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
527ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  gcd_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
536a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka  EXPECT_EQ("DC", ssid_generator_.GenerateFlags());
547ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
557ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  wifi_.connection_state_ = ConnectionState{ConnectionState::kOnline};
566a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka  EXPECT_EQ("CC", ssid_generator_.GenerateFlags());
577ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
587ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  gcd_.connection_state_ = ConnectionState{ConnectionState::kOffline};
596a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka  EXPECT_EQ("AC", ssid_generator_.GenerateFlags());
607ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
617ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
626a1ba84d9b295dcc0c8f50b580182a665c4aa8ceVitaly Buka  EXPECT_EQ("BC", ssid_generator_.GenerateFlags());
637ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka}
647ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
657ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly BukaTEST_F(WifiSsidGeneratorTest, GenerateSsid31orLess) {
6652d006a131c61955e3a8a915d7f22941b3a4eee2Vitaly Buka  EXPECT_LE(ssid_generator_.GenerateSsid().size(), 31u);
677ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka}
687ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
697ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly BukaTEST_F(WifiSsidGeneratorTest, GenerateSsidValue) {
707ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  SetRandomForTests(47);
717ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  EXPECT_EQ("TestDevice 47.ABMIDABprv", ssid_generator_.GenerateSsid());
727ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
737ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  SetRandomForTests(9);
747ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  EXPECT_EQ("TestDevice 9.ABMIDABprv", ssid_generator_.GenerateSsid());
757ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka}
767ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
777ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly BukaTEST_F(WifiSsidGeneratorTest, GenerateSsidLongName) {
787ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  SetRandomForTests(99);
79658aa36aab730ab723521d33853a8abec8193e77Vitaly Buka  EXPECT_CALL(gcd_, GetName()).WillRepeatedly(Return("Very Long Device Name"));
807ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka  EXPECT_EQ("Very Long Device  99.ABMIDABprv", ssid_generator_.GenerateSsid());
817ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka}
827ce499fd4a485b717ef288f0d155d86c15e37e17Vitaly Buka
83b6f015a1ef3caffbc2af53184c0ec5342e42e048Vitaly Buka}  // namespace privet
84b6f015a1ef3caffbc2af53184c0ec5342e42e048Vitaly Buka}  // namespace weave
85