10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file.
40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/browser/api/cast_channel/cast_channel_api.h"
60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/memory/scoped_ptr.h"
80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "net/base/ip_endpoint.h"
90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "testing/gtest/include/gtest/gtest.h"
100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "url/gurl.h"
110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace extensions {
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace core_api {
140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace cast_channel {
150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Tests URL parsing and validation.
170529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochTEST(CastChannelOpenFunctionTest, TestParseChannelUrl) {
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  typedef CastChannelOpenFunction ccof;
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ConnectInfo connect_info;
200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_TRUE(ccof::ParseChannelUrl(GURL("cast://192.0.0.1:8009"),
220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                                    &connect_info));
230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(connect_info.ip_address, "192.0.0.1");
240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(connect_info.port, 8009);
250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(connect_info.auth, CHANNEL_AUTH_TYPE_SSL);
260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_TRUE(ccof::ParseChannelUrl(GURL("casts://192.0.0.1:12345"),
280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                                    &connect_info));
290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(connect_info.ip_address, "192.0.0.1");
300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(connect_info.port, 12345);
310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(connect_info.auth, CHANNEL_AUTH_TYPE_SSL_VERIFIED);
320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL("http://192.0.0.1:12345"),
340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                                     &connect_info));
350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast:192.0.0.1:12345"),
360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                                     &connect_info));
370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast://:12345"), &connect_info));
380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast://192.0.0.1:abcd"),
390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                                     &connect_info));
400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL(""), &connect_info));
410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL("foo"), &connect_info));
420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast:"), &connect_info));
430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast::"), &connect_info));
440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast://192.0.0.1"), &connect_info));
450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast://:"), &connect_info));
460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_FALSE(ccof::ParseChannelUrl(GURL("cast://192.0.0.1:"), &connect_info));
470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}
480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Tests parsing of ConnectInfo.
500529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochTEST(CastChannelOpenFunctionTest, TestParseConnectInfo) {
510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  typedef CastChannelOpenFunction ccof;
520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  scoped_ptr<net::IPEndPoint> ip_endpoint;
530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Valid ConnectInfo
550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ConnectInfo connect_info;
560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  connect_info.ip_address = "192.0.0.1";
570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  connect_info.port = 8009;
580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  connect_info.auth = CHANNEL_AUTH_TYPE_SSL;
590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ip_endpoint.reset(ccof::ParseConnectInfo(connect_info));
610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_TRUE(ip_endpoint.get() != NULL);
620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EXPECT_EQ(ip_endpoint->ToString(), "192.0.0.1:8009");
630529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}
640529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace cast_channel
665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}  // namespace core_api
670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace extensions
68