1aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon/*
2aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
3aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon *
4aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon *  Use of this source code is governed by a BSD-style license
5aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon *  that can be found in the LICENSE file in the root of the source
6aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon *  tree. An additional intellectual property rights grant can be found
7aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon *  in the file PATENTS.  All contributing project authors may
8aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon *  be found in the AUTHORS file in the root of the source tree.
9aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon */
10aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
11aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon#import <Foundation/Foundation.h>
12aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
13aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon#include <vector>
14aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
15aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon#include "webrtc/base/gunit.h"
16aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
17aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon#import "webrtc/api/objc/RTCIceServer.h"
18aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon#import "webrtc/api/objc/RTCIceServer+Private.h"
19aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
20aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon@interface RTCIceServerTest : NSObject
21aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon- (void)testOneURLServer;
22aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon- (void)testTwoURLServer;
23aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon- (void)testPasswordCredential;
24aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon@end
25aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
26aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon@implementation RTCIceServerTest
27aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
28aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon- (void)testOneURLServer {
29aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  RTCIceServer *server = [[RTCIceServer alloc] initWithURLStrings:@[
30aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon      @"stun:stun1.example.net" ]];
31aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
32aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  webrtc::PeerConnectionInterface::IceServer iceStruct = server.iceServer;
33aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ((size_t)1, iceStruct.urls.size());
34aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ("stun:stun1.example.net", iceStruct.urls.front());
35aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ("", iceStruct.username);
36aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ("", iceStruct.password);
37aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon}
38aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
39aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon- (void)testTwoURLServer {
40aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  RTCIceServer *server = [[RTCIceServer alloc] initWithURLStrings:@[
41aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon      @"turn1:turn1.example.net", @"turn2:turn2.example.net" ]];
42aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
43aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  webrtc::PeerConnectionInterface::IceServer iceStruct = server.iceServer;
44aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ((size_t)2, iceStruct.urls.size());
45aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ("turn1:turn1.example.net", iceStruct.urls.front());
46aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ("turn2:turn2.example.net", iceStruct.urls.back());
47aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ("", iceStruct.username);
48aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ("", iceStruct.password);
49aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon}
50aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
51aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon- (void)testPasswordCredential {
52aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  RTCIceServer *server = [[RTCIceServer alloc]
53aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon      initWithURLStrings:@[ @"turn1:turn1.example.net" ]
54aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon                username:@"username"
55aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon              credential:@"credential"];
56aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  webrtc::PeerConnectionInterface::IceServer iceStruct = server.iceServer;
57aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ((size_t)1, iceStruct.urls.size());
58aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ("turn1:turn1.example.net", iceStruct.urls.front());
59aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ("username", iceStruct.username);
60aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  EXPECT_EQ("credential", iceStruct.password);
61aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon}
62aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
63aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon@end
64aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
65aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjonTEST(RTCIceServerTest, OneURLTest) {
66aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  @autoreleasepool {
67aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon    RTCIceServerTest *test = [[RTCIceServerTest alloc] init];
68aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon    [test testOneURLServer];
69aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  }
70aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon}
71aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
72aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjonTEST(RTCIceServerTest, TwoURLTest) {
73aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  @autoreleasepool {
74aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon    RTCIceServerTest *test = [[RTCIceServerTest alloc] init];
75aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon    [test testTwoURLServer];
76aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  }
77aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon}
78aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon
79aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjonTEST(RTCIceServerTest, PasswordCredentialTest) {
80aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  @autoreleasepool {
81aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon    RTCIceServerTest *test = [[RTCIceServerTest alloc] init];
82aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon    [test testPasswordCredential];
83aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon  }
84aa32c3e537643eb71d8a8cb8ea7089f8cda2098ahjon}
85