1+ using System ;
2+ using System . Collections . Generic ;
3+ using System . Linq ;
4+ using System . Net ;
5+ using Moq ;
6+ using NUnit . Framework ;
7+ using RemoteBrowserMobProxy . Data . Response ;
8+ using RestSharp ;
9+
10+
11+ namespace RemoteBrowserMobProxy . Tests
12+ {
13+ [ TestFixture ]
14+ public class RemoteBrowserMobProxyClientTests
15+ {
16+ private Mock < IRestClient > _restClientMoq ;
17+ private RemoteBrowserMobProxyClient _remoteBrowserMobProxyClient ;
18+ private readonly Uri _clientUri = new Uri ( "http://localhost/" ) ;
19+
20+ [ SetUp ]
21+ public void Setup ( )
22+ {
23+
24+ _restClientMoq = new Mock < IRestClient > ( ) ;
25+ _restClientMoq . SetupGet ( x => x . BaseUrl ) . Returns ( _clientUri ) ;
26+
27+ _remoteBrowserMobProxyClient = new RemoteBrowserMobProxyClient ( _restClientMoq . Object ) ;
28+ }
29+
30+ [ Test ]
31+ public void RemoteBrowserMobProxyClientConstruct ( )
32+ {
33+ Assert . DoesNotThrow (
34+ ( ) =>
35+ new RemoteBrowserMobProxyClient ( _clientUri ) ) ;
36+ }
37+
38+ [ Test ]
39+ public void RemoteBrowserMobProxyInstanceList ( )
40+ {
41+ //Assemble
42+ IRestRequest req = null ;
43+ var portList = new List < int > { 9001 , 9002 , 9003 } ;
44+ _restClientMoq . Setup ( x => x . Execute < List < int > > ( It . IsAny < IRestRequest > ( ) ) )
45+ . Callback < IRestRequest > ( request => req = request )
46+ . Returns ( new RestResponse < List < int > > { Data = portList } ) ;
47+
48+ var list = _remoteBrowserMobProxyClient . RemoteBrowserMobProxyInstances ( ) ;
49+
50+ //Assert
51+ _restClientMoq . Verify ( x => x . Execute < List < int > > ( It . IsAny < IRestRequest > ( ) ) , Times . Once ) ;
52+
53+ Assert . AreEqual ( Method . GET , req . Method ) ;
54+ Assert . IsEmpty ( req . Parameters ) ;
55+
56+ CollectionAssert . AreEqual ( portList , list . Select ( x=> x . Port ) ) ;
57+
58+ }
59+
60+
61+ [ Test ]
62+ public void RemoteBrowserMobProxyInstance_Default ( )
63+ {
64+ //Assemble
65+ IRestRequest req = null ;
66+
67+ _restClientMoq . Setup ( x => x . Execute < CreateHarResponse > ( It . IsAny < IRestRequest > ( ) ) )
68+ . Callback < IRestRequest > ( request => req = request )
69+ . Returns ( new RestResponse < CreateHarResponse > { Data = new CreateHarResponse { Port = 9001 } } ) ;
70+
71+ //Act
72+ var instance = _remoteBrowserMobProxyClient . NewRemoteBrowserMobProxyInstance ( ) ;
73+
74+ //Assert
75+ _restClientMoq . Verify ( x => x . Execute < CreateHarResponse > ( It . IsAny < IRestRequest > ( ) ) , Times . Once ) ;
76+
77+ Assert . IsEmpty ( req . Parameters ) ;
78+ Assert . AreEqual ( 9001 , instance . Port ) ;
79+ }
80+
81+ [ Test ]
82+ public void RemoteBrowserMobProxyInstance_WithIpAddressBinding ( )
83+ {
84+ //Assemble
85+ IRestRequest req = null ;
86+ var ipAddressString = "10.0.0.1" ;
87+
88+ _restClientMoq . Setup ( x => x . Execute < CreateHarResponse > ( It . IsAny < IRestRequest > ( ) ) )
89+ . Callback < IRestRequest > ( request => req = request )
90+ . Returns ( new RestResponse < CreateHarResponse > { Data = new CreateHarResponse { Port = 9001 } } ) ;
91+
92+ //Act
93+ var instance = _remoteBrowserMobProxyClient . NewRemoteBrowserMobProxyInstance ( IPAddress . Parse ( ipAddressString ) ) ;
94+
95+ //Assert
96+ _restClientMoq . Verify ( x => x . Execute < CreateHarResponse > ( It . IsAny < IRestRequest > ( ) ) , Times . Once ) ;
97+
98+ Assert . IsNotEmpty ( req . Parameters ) ;
99+
100+ Assert . That ( ( string ) req . Parameters . First ( x => x . Name == "bindAddress" ) . Value == ipAddressString ) ;
101+
102+ Assert . AreEqual ( 9001 , instance . Port ) ;
103+ }
104+
105+ [ Test ]
106+ public void RemoteBrowserMobProxyInstance_WithIpAddressBinding_IpV4Check ( )
107+ {
108+ //Assemble
109+ IRestRequest req = null ;
110+ //IPv6 address
111+ var ipAddressString = "FE80::0202:B3FF:FE1E:8329" ;
112+
113+ _restClientMoq . Setup ( x => x . Execute < CreateHarResponse > ( It . IsAny < IRestRequest > ( ) ) )
114+ . Callback < IRestRequest > ( request => req = request )
115+ . Returns ( new RestResponse < CreateHarResponse > { Data = new CreateHarResponse { Port = 9001 } } ) ;
116+
117+ //Act
118+ Assert . Throws < ArgumentException > (
119+ ( ) => _remoteBrowserMobProxyClient . NewRemoteBrowserMobProxyInstance ( IPAddress . Parse ( ipAddressString ) ) ) ;
120+ }
121+
122+ [ Test ]
123+ public void RemoteBrowserMobProxyInstance_WithPortNum ( )
124+ {
125+ //Assemble
126+ IRestRequest req = null ;
127+ var portNum = 9001 ;
128+
129+ _restClientMoq . Setup ( x => x . Execute < CreateHarResponse > ( It . IsAny < IRestRequest > ( ) ) )
130+ . Callback < IRestRequest > ( request => req = request )
131+ . Returns ( new RestResponse < CreateHarResponse > { Data = new CreateHarResponse { Port = portNum } } ) ;
132+
133+ //Act
134+ var instance = _remoteBrowserMobProxyClient . NewRemoteBrowserMobProxyInstance ( portNum ) ;
135+
136+ //Assert
137+ _restClientMoq . Verify ( x => x . Execute < CreateHarResponse > ( It . IsAny < IRestRequest > ( ) ) , Times . Once ) ;
138+
139+ Assert . IsNotEmpty ( req . Parameters ) ;
140+
141+ Assert . That ( ( int ) req . Parameters . First ( x => x . Name == "port" ) . Value == portNum ) ;
142+
143+ Assert . AreEqual ( portNum , instance . Port ) ;
144+ }
145+ }
146+ }
0 commit comments