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