Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / cast_channel / cast_channel_api_unittest.cc
1 // Copyright 2014 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
5 #include "chrome/browser/extensions/api/cast_channel/cast_channel_api.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "net/base/ip_endpoint.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "url/gurl.h"
11
12 namespace extensions {
13 namespace api {
14 namespace cast_channel {
15
16 // Tests URL parsing and validation.
17 TEST(CastChannelOpenFunctionTest, TestParseChannelUrl) {
18   typedef CastChannelOpenFunction ccof;
19   ConnectInfo connect_info;
20
21   EXPECT_TRUE(ccof::ParseChannelUrl(GURL("cast://192.0.0.1:8009"),
22                                     &connect_info));
23   EXPECT_EQ(connect_info.ip_address, "192.0.0.1");
24   EXPECT_EQ(connect_info.port, 8009);
25   EXPECT_EQ(connect_info.auth, CHANNEL_AUTH_TYPE_SSL);
26
27   EXPECT_TRUE(ccof::ParseChannelUrl(GURL("casts://192.0.0.1:12345"),
28                                     &connect_info));
29   EXPECT_EQ(connect_info.ip_address, "192.0.0.1");
30   EXPECT_EQ(connect_info.port, 12345);
31   EXPECT_EQ(connect_info.auth, CHANNEL_AUTH_TYPE_SSL_VERIFIED);
32
33   EXPECT_FALSE(ccof::ParseChannelUrl(GURL("http://192.0.0.1:12345"),
34                                      &connect_info));
35   EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast:192.0.0.1:12345"),
36                                      &connect_info));
37   EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast://:12345"), &connect_info));
38   EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast://192.0.0.1:abcd"),
39                                      &connect_info));
40   EXPECT_FALSE(ccof::ParseChannelUrl(GURL(""), &connect_info));
41   EXPECT_FALSE(ccof::ParseChannelUrl(GURL("foo"), &connect_info));
42   EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast:"), &connect_info));
43   EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast::"), &connect_info));
44   EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast://192.0.0.1"), &connect_info));
45   EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast://:"), &connect_info));
46   EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast://192.0.0.1:"), &connect_info));
47 }
48
49 // Tests validation of ConnectInfo.
50 TEST(CastChannelOpenFunctionTest, TestParseConnectInfo) {
51   typedef CastChannelOpenFunction ccof;
52   scoped_ptr<net::IPEndPoint> ip_endpoint;
53
54   // Valid ConnectInfo
55   ConnectInfo connect_info;
56   connect_info.ip_address = "192.0.0.1";
57   connect_info.port = 8009;
58   connect_info.auth = CHANNEL_AUTH_TYPE_SSL;
59
60   ip_endpoint.reset(ccof::ParseConnectInfo(connect_info));
61   EXPECT_TRUE(ip_endpoint.get() != NULL);
62   EXPECT_EQ(ip_endpoint->ToString(), "192.0.0.1:8009");
63
64   // Invalid IP
65   ConnectInfo invalid_ip_connect_info;
66   invalid_ip_connect_info.ip_address = "blargh";
67   invalid_ip_connect_info.port = 8009;
68   invalid_ip_connect_info.auth = CHANNEL_AUTH_TYPE_SSL;
69   ip_endpoint.reset(ccof::ParseConnectInfo(invalid_ip_connect_info));
70   EXPECT_TRUE(ip_endpoint.get() == NULL);
71
72   // Invalid port
73   ConnectInfo invalid_port_connect_info;
74   invalid_port_connect_info.ip_address = "192.0.0.1";
75   invalid_port_connect_info.port = -1;
76   invalid_port_connect_info.auth = CHANNEL_AUTH_TYPE_SSL;
77   ip_endpoint.reset(ccof::ParseConnectInfo(invalid_port_connect_info));
78   EXPECT_TRUE(ip_endpoint.get() == NULL);
79
80   // Invalid auth
81   ConnectInfo invalid_auth_connect_info;
82   invalid_auth_connect_info.ip_address = "192.0.0.1";
83   invalid_auth_connect_info.port = 8009;
84   invalid_auth_connect_info.auth = CHANNEL_AUTH_TYPE_NONE;
85   ip_endpoint.reset(ccof::ParseConnectInfo(invalid_auth_connect_info));
86   EXPECT_TRUE(ip_endpoint.get() == NULL);
87 }
88
89 }  // namespace cast_channel
90 }  // namespace api
91 }  // namespace extensions