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