blob: 5d9d309990c2cad566d6bfc1c9c1897d6064fcc4 [file] [log] [blame]
Chris Masone34af2182011-08-22 11:59:36 -07001// Copyright (c) 2011 The Chromium OS 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 "shill/wifi_service.h"
6
7#include <string>
8#include <vector>
9
10#include <base/string_util.h>
11#include <chromeos/dbus/service_constants.h>
12#include <gmock/gmock.h>
13#include <gtest/gtest.h>
14
15#include "shill/manager.h"
16#include "shill/mock_adaptors.h"
17#include "shill/mock_control.h"
18#include "shill/mock_service.h"
19#include "shill/mock_store.h"
20#include "shill/property_store_unittest.h"
21#include "shill/shill_event.h"
22#include "shill/wifi.h"
23
24using std::string;
25using std::vector;
26
27namespace shill {
28
29class WiFiServiceTest : public PropertyStoreTest {
30 public:
31 WiFiServiceTest() {}
32 virtual ~WiFiServiceTest() {}
33};
34
35TEST_F(WiFiServiceTest, StorageId) {
36 vector<uint8_t> ssid(5, 0);
37 ssid.push_back(0xff);
Chris Masone34af2182011-08-22 11:59:36 -070038 static const char fake_mac[] = "AaBBcCDDeeFF";
Chris Masone9d779932011-08-25 16:33:41 -070039
Chris Masone2176a882011-09-14 22:29:15 -070040 WiFiRefPtr wifi = new WiFi(control_interface(),
41 dispatcher(),
Chris Masone9d779932011-08-25 16:33:41 -070042 manager(),
43 "wifi",
44 fake_mac,
45 0);
Chris Masone2176a882011-09-14 22:29:15 -070046 WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
47 dispatcher(),
Chris Masone9d779932011-08-25 16:33:41 -070048 manager(),
49 wifi,
50 ssid,
51 flimflam::kModeManaged,
52 "none");
53 string id = wifi_service->GetStorageIdentifier();
Chris Masone34af2182011-08-22 11:59:36 -070054 for (uint i = 0; i < id.length(); ++i) {
55 EXPECT_TRUE(id[i] == '_' ||
56 isxdigit(id[i]) ||
57 (isalpha(id[i]) && islower(id[i])));
58 }
59 size_t mac_pos = id.find(StringToLowerASCII(string(fake_mac)));
60 EXPECT_NE(mac_pos, string::npos);
61 EXPECT_NE(id.find(string(flimflam::kModeManaged), mac_pos), string::npos);
62}
63
64} // namespace shill