Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(321)

Side by Side Diff: chrome/utility/media_router/dial_device_description_parser_impl_unittest.cc

Issue 2745653008: [Media Router] Parse device description xml in utility process (Closed)
Patch Set: resolve code review comments from Mark Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium 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 #include "chrome/utility/media_router/dial_device_description_parser_impl.h"
5
6 #include <string>
7
8 #include "base/logging.h"
9 #include "base/macros.h"
10 #include "base/strings/string_util.h"
11 #include "chrome/common/media_router/dial_device_description.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 namespace {
15
16 constexpr char kDeviceDescriptionWithService[] =
17 "<root xmlns=\"urn:schemas-upnp-org:device-1-0\">\n"
18 "<specVersion>\n"
19 "<major>1</major>\n"
20 "<minor>0</minor>\n"
21 "</specVersion>\n"
22 "<URLBase>http://172.31.71.84:8008</URLBase>\n"
23 "<device>\n"
24 "<deviceType>urn:dial-multiscreen-org:device:dial:1</deviceType>\n"
25 "<friendlyName>eureka9019</friendlyName>\n"
26 "<manufacturer>Google Inc.</manufacturer>\n"
27 "<modelName>Eureka Dongle</modelName>\n"
28 "<serialNumber>123456789000</serialNumber>\n"
29 "<UDN>uuid:d90dda41-8fa0-61ac-0567-f949d3e34b0e</UDN>\n"
30 "<serviceList>\n"
31 "<service>\n"
32 "<serviceType>urn:dial-multiscreen-org:service:dial:1</serviceType>\n"
33 "<serviceId>urn:dial-multiscreen-org:serviceId:dial</serviceId>\n"
34 "<controlURL>/ssdp/notfound</controlURL>\n"
35 "<eventSubURL>/ssdp/notfound</eventSubURL>\n"
36 "<SCPDURL>/ssdp/notfound</SCPDURL>\n"
37 "<servicedata xmlns=\"uri://cloudview.google.com/...\">\n"
38 "</servicedata>\n"
39 "</service>\n"
40 "</serviceList>\n"
41 "</device>\n"
42 "</root>\n";
43
44 constexpr char kDeviceDescriptionWithoutService[] =
45 "<root xmlns=\"urn:schemas-upnp-org:device-1-0\">\n"
46 "<specVersion>\n"
47 "<major>1</major>\n"
48 "<minor>0</minor>\n"
49 "</specVersion>\n"
50 "<URLBase>http://172.31.71.84:8008</URLBase>\n"
51 "<device>\n"
52 "<deviceType>urn:dial-multiscreen-org:device:dial:1</deviceType>\n"
53 "<friendlyName>eureka9020</friendlyName>\n"
54 "<manufacturer>Google Inc.</manufacturer>\n"
55 "<modelName>Eureka Dongle</modelName>\n"
56 "<serialNumber>123456789000</serialNumber>\n"
57 "<UDN>uuid:d90dda41-8fa0-61ac-0567-f949d3e34b0f</UDN>\n"
58 "</device>\n"
59 "</root>\n";
60
61 std::string& Replace(std::string& input,
62 const std::string& from,
63 const std::string& to) {
64 size_t pos = input.find(from);
65 if (pos == std::string::npos)
66 return input;
67
68 return input.replace(pos, from.size(), to);
69 }
70
71 } // namespace
72
73 namespace media_router {
74
75 TEST(DialDeviceDescriptionParserImplTest, TestInvalidXml) {
76 DialDeviceDescriptionParserImpl parser;
77 DialDeviceDescription device_description;
78 EXPECT_FALSE(parser.Parse("", &device_description));
79 }
80
81 TEST(DialDeviceDescriptionParserImplTest, TestScrubXmlForLogging) {
82 std::string xml_text(kDeviceDescriptionWithService);
83
84 DialDeviceDescriptionParserImpl parser;
85 std::string xml_logging = parser.ScrubXmlForLogging(xml_text);
86
87 std::string serial_number = "<serialNumber>123456789000</serialNumber>";
88 std::string new_serial_number = "<serialNumber>***</serialNumber>";
89 std::string udn = "<UDN>uuid:d90dda41-8fa0-61ac-0567-f949d3e34b0e</UDN>";
90 std::string new_udn = "<UDN>***</UDN>";
91
92 std::string expected_xml = xml_text;
93 Replace(expected_xml, serial_number, new_serial_number);
94 Replace(expected_xml, udn, new_udn);
95 EXPECT_EQ(expected_xml, xml_logging);
96 }
97
98 TEST(DialDeviceDescriptionParserImplTest, TestParse) {
99 std::string xml_text(kDeviceDescriptionWithService);
100
101 DialDeviceDescriptionParserImpl parser;
102 DialDeviceDescription device_description;
103 EXPECT_TRUE(parser.Parse(xml_text, &device_description));
104
105 EXPECT_EQ("urn:dial-multiscreen-org:device:dial:1",
106 device_description.device_type);
107 EXPECT_EQ("eureka9019", device_description.friendly_name);
108 EXPECT_EQ("Eureka Dongle", device_description.model_name);
109 EXPECT_EQ("uuid:d90dda41-8fa0-61ac-0567-f949d3e34b0e",
110 device_description.unique_id);
111 }
112
113 TEST(DialDeviceDescriptionParserImplTest, TestParseWithSpecialCharacter) {
114 std::string old_name = "<friendlyName>eureka9019</friendlyName>";
115 std::string new_name = "<friendlyName>Samsung LED40\'s</friendlyName>";
116
117 std::string xml_text(kDeviceDescriptionWithService);
118 xml_text = Replace(xml_text, old_name, new_name);
119
120 DialDeviceDescriptionParserImpl parser;
121 DialDeviceDescription device_description;
122 EXPECT_TRUE(parser.Parse(xml_text, &device_description));
123
124 EXPECT_EQ("urn:dial-multiscreen-org:device:dial:1",
125 device_description.device_type);
126 EXPECT_EQ("Samsung LED40\'s", device_description.friendly_name);
127 EXPECT_EQ("Eureka Dongle", device_description.model_name);
128 EXPECT_EQ("uuid:d90dda41-8fa0-61ac-0567-f949d3e34b0e",
129 device_description.unique_id);
130 }
131
132 TEST(DialDeviceDescriptionParserImplTest,
133 TestParseWithoutFriendlyNameModelName) {
134 std::string friendly_name = "<friendlyName>eureka9020</friendlyName>";
135 std::string model_name = "<modelName>Eureka Dongle</modelName>";
136
137 std::string xml_text(kDeviceDescriptionWithoutService);
138 xml_text = Replace(xml_text, friendly_name, "");
139 xml_text = Replace(xml_text, model_name, "");
140
141 DialDeviceDescriptionParserImpl parser;
142 DialDeviceDescription device_description;
143 EXPECT_FALSE(parser.Parse(xml_text, &device_description));
144 }
145
146 TEST(DialDeviceDescriptionParserImplTest, TestParseWithoutFriendlyName) {
147 std::string friendly_name = "<friendlyName>eureka9020</friendlyName>";
148
149 std::string xml_text(kDeviceDescriptionWithoutService);
150 xml_text = Replace(xml_text, friendly_name, "");
151
152 DialDeviceDescriptionParserImpl parser;
153 DialDeviceDescription device_description;
154 EXPECT_TRUE(parser.Parse(xml_text, &device_description));
155
156 EXPECT_EQ("urn:dial-multiscreen-org:device:dial:1",
157 device_description.device_type);
158 EXPECT_EQ("Eureka Dongle[4b0f]", device_description.friendly_name);
159 EXPECT_EQ("Eureka Dongle", device_description.model_name);
160 EXPECT_EQ("uuid:d90dda41-8fa0-61ac-0567-f949d3e34b0f",
161 device_description.unique_id);
162 }
163
164 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698