~morphis/aethercast/enable-arm64-builds

« back to all changes in this revision

Viewing changes to tests/w11t/wpasupplicantmessage_test.cpp

  • Committer: Tarmac
  • Author(s): Simon Fels
  • Date: 2016-02-04 06:38:31 UTC
  • mfrom: (119.1.65 trunk)
  • Revision ID: tarmac-20160204063831-b6q9o8ktznevvd8x
Add a network manager implementation to use the DBus interface of wpa-supplicant.

Approved by PS Jenkins bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2015 Canonical, Ltd.
3
 
 *
4
 
 * This program is free software: you can redistribute it and/or modify it
5
 
 * under the terms of the GNU General Public License version 3, as published
6
 
 * by the Free Software Foundation.
7
 
 *
8
 
 * This program is distributed in the hope that it will be useful, but
9
 
 * WITHOUT ANY WARRANTY; without even the implied warranties of
10
 
 * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11
 
 * PURPOSE.  See the GNU General Public License for more details.
12
 
 *
13
 
 * You should have received a copy of the GNU General Public License along
14
 
 * with this program.  If not, see <http://www.gnu.org/licenses/>.
15
 
 *
16
 
 */
17
 
 
18
 
#include <glib.h>
19
 
#include <gtest/gtest.h>
20
 
 
21
 
#include <w11t/message.h>
22
 
 
23
 
TEST(Message, Ctor) {
24
 
    w11t::Message m = w11t::Message::CreateRequest("P2P_CONNECT");
25
 
    EXPECT_TRUE(m.ItsType() == w11t::Message::Type::kRequest);
26
 
    EXPECT_TRUE(m.Name() == std::string("P2P_CONNECT"));
27
 
}
28
 
 
29
 
TEST(Message, ReadAndSkip) {
30
 
    w11t::Message m = w11t::Message::Parse("<3>P2P-GROUP-STARTED p2p0 GO ssid=\"DIRECT-hB\" freq=2412 go_dev_addr=4e:74:03:64:95:a7");
31
 
 
32
 
    struct P2PGroupStarted {
33
 
        std::string interface_name;
34
 
        std::string type;
35
 
        w11t::Named<std::string> ssid{"ssid"};
36
 
        w11t::Named<std::uint32_t> freq{"freq"};
37
 
        w11t::Named<std::string> go_dev_addr{"go_dev_addr"};
38
 
    } ev;
39
 
 
40
 
    std::string key;
41
 
 
42
 
    EXPECT_STREQ(m.Name().c_str(), "P2P-GROUP-STARTED");
43
 
    EXPECT_NO_THROW(m.Read(ev.interface_name, ev.type, ev.ssid, ev.freq, ev.go_dev_addr));
44
 
    EXPECT_EQ(ev.interface_name, "p2p0");
45
 
    EXPECT_EQ(ev.ssid.Value(), "\"DIRECT-hB\"");
46
 
    EXPECT_EQ(ev.freq.Value(), 2412);
47
 
    EXPECT_EQ(ev.go_dev_addr.Value(), "4e:74:03:64:95:a7");
48
 
 
49
 
    m = w11t::Message::Parse("<3>P2P-GROUP-STARTED p2p0 GO -12 ssid=\"DIRECT-hB\" 45623 freq=2412 11223344 -42");
50
 
 
51
 
    ev = P2PGroupStarted{};
52
 
 
53
 
    uint32_t u32 = 0;
54
 
    int32_t i32 = 0;
55
 
 
56
 
    EXPECT_STREQ(m.Name().c_str(), "P2P-GROUP-STARTED");
57
 
    EXPECT_NO_THROW(m.Read(ev.interface_name, w11t::skip<std::string>(), w11t::skip<std::string>(), w11t::skip<std::string>(), ev.freq, u32, i32));
58
 
    EXPECT_EQ(ev.interface_name, "p2p0");
59
 
    EXPECT_EQ(ev.freq.Value(), 2412);
60
 
    EXPECT_EQ(u32, 11223344);
61
 
    EXPECT_EQ(i32, -42);
62
 
 
63
 
    m.Rewind();
64
 
    ev = P2PGroupStarted{};
65
 
    i32 = 0;
66
 
 
67
 
    EXPECT_NO_THROW(m.Read(ev.interface_name, w11t::skip<std::string>(), i32));
68
 
    EXPECT_EQ(ev.interface_name, "p2p0");
69
 
    EXPECT_EQ(i32, -12);
70
 
 
71
 
    m.Rewind();
72
 
    ev = P2PGroupStarted{};
73
 
    i32 = 0;
74
 
 
75
 
    EXPECT_NO_THROW(m.Read(w11t::skip<std::string>(), w11t::skip<std::string>(), w11t::skip<std::int32_t>(), ev.ssid, w11t::skip<std::int32_t>(), ev.freq));
76
 
    EXPECT_EQ(ev.ssid.Value(), "\"DIRECT-hB\"");
77
 
    EXPECT_EQ(ev.freq.Value(), 2412);
78
 
}
79
 
 
80
 
TEST(Message, Append) {
81
 
    w11t::Message m = w11t::Message::CreateRequest("P2P_CONNECT")
82
 
            << "string" << -42 << 1337 << w11t::Named<std::string>{"key", "value"};
83
 
    auto raw = m.Dump();
84
 
    EXPECT_STREQ(raw.c_str(), "P2P_CONNECT string -42 1337 key=value");
85
 
 
86
 
    m = w11t::Message::CreateRequest("P2P_FIND");
87
 
    int timeout = 30;
88
 
    m << timeout;
89
 
    raw = m.Dump();
90
 
    EXPECT_STREQ(raw.c_str(), "P2P_FIND 30");
91
 
}
92
 
 
93
 
TEST(Message, Sealing) {
94
 
    w11t::Message m = w11t::Message::CreateRequest("P2P_CONNECT");
95
 
 
96
 
    EXPECT_TRUE(!m.Sealed());
97
 
    m << "test1" << "test2";
98
 
    m.Seal();
99
 
    EXPECT_TRUE(m.Sealed());
100
 
    EXPECT_THROW(m << "foo", std::logic_error);
101
 
    EXPECT_STREQ(m.Raw().c_str(), "P2P_CONNECT test1 test2");
102
 
}
103
 
 
104
 
TEST(Message, CopyCtor) {
105
 
    w11t::Message m = w11t::Message::CreateRequest("P2P_CONNECT") << "test1" << "test2";
106
 
    EXPECT_TRUE(!m.Sealed());
107
 
    EXPECT_EQ(m.ItsType(), w11t::Message::Type::kRequest);
108
 
    EXPECT_STREQ(m.Name().c_str(), "P2P_CONNECT");
109
 
    m.Seal();
110
 
    EXPECT_TRUE(m.Sealed());
111
 
    EXPECT_STREQ(m.Raw().c_str(), "P2P_CONNECT test1 test2");
112
 
 
113
 
    w11t::Message m2 = m;
114
 
    EXPECT_TRUE(m.ItsType() == w11t::Message::Type::kRequest);
115
 
    EXPECT_STREQ(m.Name().c_str(), "P2P_CONNECT");
116
 
    EXPECT_TRUE(m.Sealed());
117
 
    EXPECT_STREQ(m.Raw().c_str(), "P2P_CONNECT test1 test2");
118
 
}
119
 
 
120
 
TEST(Message, OkFail) {
121
 
    w11t::Message m = w11t::Message::Parse("OK");
122
 
    EXPECT_TRUE(m.IsOk());
123
 
 
124
 
    m = w11t::Message::Parse("FAIL");
125
 
    EXPECT_TRUE(m.IsFail());
126
 
}