44using TestMethod = NUnit . Framework . TestAttribute ;
55using TestCleanup = NUnit . Framework . TearDownAttribute ;
66using TestInitialize = NUnit . Framework . SetUpAttribute ;
7- using ClassCleanup = NUnit . Framework . TestFixtureTearDownAttribute ;
8- using ClassInitialize = NUnit . Framework . TestFixtureSetUpAttribute ;
97
108using NUnit . Framework ;
119using BrowserStack ;
1210using System . Collections . Generic ;
1311using Moq ;
12+ using System . IO ;
1413
1514namespace BrowserStack_Unit_Tests
1615{
1716 [ TestClass ]
1817 public class LocalTests
1918 {
19+ static readonly string logAbsolute = Path . Combine ( Directory . GetCurrentDirectory ( ) , "local.log" ) ;
20+ private string user = "" ;
21+ private string accessKey = "" ;
22+ private LocalClass local ;
23+ private List < KeyValuePair < String , String > > options ;
24+
2025 public class LocalClass : Local
2126 {
2227 public void setTunnel ( BrowserStackTunnel tunnel )
2328 {
2429 this . tunnel = tunnel ;
2530 }
2631 }
27- private LocalClass local ;
28- private List < KeyValuePair < String , String > > options ;
32+
2933 [ TestMethod ]
3034 public void TestThrowsWithNoAccessKey ( )
3135 {
3236 options = new List < KeyValuePair < string , string > > ( ) ;
37+ options . Add ( new KeyValuePair < string , string > ( "key" , "" ) ) ;
3338 local = new LocalClass ( ) ;
34- NUnit . Framework . Assert . Throws ( typeof ( Exception ) ,
39+
40+ Mock < BrowserStackTunnel > tunnelMock = new Mock < BrowserStackTunnel > ( ) ;
41+ tunnelMock . Setup ( mock => mock . Run ( "" , "" , logAbsolute ) ) ;
42+ local . setTunnel ( tunnelMock . Object ) ;
43+
44+ Assert . Throws ( typeof ( Exception ) ,
3545 new TestDelegate ( startWithOptions ) ,
3646 "BROWSERSTACK_ACCESS_KEY cannot be empty. Specify one by adding key to options or adding to the environment variable BROWSERSTACK_KEY." ) ;
3747 local . stop ( ) ;
@@ -45,10 +55,10 @@ public void TestWorksWithAccessKeyInOptions()
4555 local = new LocalClass ( ) ;
4656 Mock < BrowserStackTunnel > tunnelMock = new Mock < BrowserStackTunnel > ( ) ;
4757 local . setTunnel ( tunnelMock . Object ) ;
48- NUnit . Framework . Assert . DoesNotThrow ( new TestDelegate ( startWithOptions ) ,
58+ Assert . DoesNotThrow ( new TestDelegate ( startWithOptions ) ,
4959 "BROWSERSTACK_ACCESS_KEY cannot be empty. Specify one by adding key to options or adding to the environment variable BROWSERSTACK_KEY." ) ;
50- tunnelMock . Verify ( mock => mock . addBinaryArguments ( "" ) , Times . Once ( ) ) ;
51- tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" ) , Times . Once ( ) ) ;
60+ tunnelMock . Verify ( mock => mock . addBinaryArguments ( "-logFile " + logAbsolute ) , Times . Once ( ) ) ;
61+ tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) , Times . Once ( ) ) ;
5262 local . stop ( ) ;
5363 }
5464
@@ -59,11 +69,12 @@ public void TestWorksWithAccessKeyNotInOptions()
5969 options = new List < KeyValuePair < string , string > > ( ) ;
6070 local = new LocalClass ( ) ;
6171 Mock < BrowserStackTunnel > tunnelMock = new Mock < BrowserStackTunnel > ( ) ;
72+ tunnelMock . Setup ( mock => mock . Run ( "envDummyKey" , "" , logAbsolute ) ) ;
6273 local . setTunnel ( tunnelMock . Object ) ;
63- NUnit . Framework . Assert . DoesNotThrow ( new TestDelegate ( startWithOptions ) ,
74+ Assert . DoesNotThrow ( new TestDelegate ( startWithOptions ) ,
6475 "BROWSERSTACK_ACCESS_KEY cannot be empty. Specify one by adding key to options or adding to the environment variable BROWSERSTACK_KEY." ) ;
65- tunnelMock . Verify ( mock => mock . addBinaryArguments ( "" ) , Times . Once ( ) ) ;
66- tunnelMock . Verify ( mock => mock . Run ( "envDummyKey" , "" ) , Times . Once ( ) ) ;
76+ tunnelMock . Verify ( mock => mock . addBinaryArguments ( "-logFile " + logAbsolute ) , Times . Once ( ) ) ;
77+ tunnelMock . Verify ( mock => mock . Run ( "envDummyKey" , "" , logAbsolute ) , Times . Once ( ) ) ;
6778 local . stop ( ) ;
6879 }
6980
@@ -76,10 +87,11 @@ public void TestWorksForFolderTesting()
7687
7788 local = new LocalClass ( ) ;
7889 Mock < BrowserStackTunnel > tunnelMock = new Mock < BrowserStackTunnel > ( ) ;
90+ tunnelMock . Setup ( mock => mock . Run ( "dummyKey" , "dummyFolderPath" , logAbsolute ) ) ;
7991 local . setTunnel ( tunnelMock . Object ) ;
8092 local . start ( options ) ;
81- tunnelMock . Verify ( mock => mock . addBinaryArguments ( "" ) , Times . Once ( ) ) ;
82- tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "dummyFolderPath" ) , Times . Once ( ) ) ;
93+ tunnelMock . Verify ( mock => mock . addBinaryArguments ( "-logFile " + logAbsolute ) , Times . Once ( ) ) ;
94+ tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "dummyFolderPath" , logAbsolute ) , Times . Once ( ) ) ;
8395 local . stop ( ) ;
8496 }
8597
@@ -92,11 +104,12 @@ public void TestWorksForBinaryPath()
92104
93105 local = new LocalClass ( ) ;
94106 Mock < BrowserStackTunnel > tunnelMock = new Mock < BrowserStackTunnel > ( ) ;
107+ tunnelMock . Setup ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) ) ;
95108 local . setTunnel ( tunnelMock . Object ) ;
96109 local . start ( options ) ;
97110 tunnelMock . Verify ( mock => mock . addBinaryPath ( "dummyPath" ) , Times . Once ) ;
98- tunnelMock . Verify ( mock => mock . addBinaryArguments ( "" ) , Times . Once ( ) ) ;
99- tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" ) , Times . Once ( ) ) ;
111+ tunnelMock . Verify ( mock => mock . addBinaryArguments ( "-logFile " + logAbsolute ) , Times . Once ( ) ) ;
112+ tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) , Times . Once ( ) ) ;
100113 local . stop ( ) ;
101114 }
102115
@@ -112,11 +125,12 @@ public void TestWorksWithBooleanOptions()
112125
113126 local = new LocalClass ( ) ;
114127 Mock < BrowserStackTunnel > tunnelMock = new Mock < BrowserStackTunnel > ( ) ;
128+ tunnelMock . Setup ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) ) ;
115129 local . setTunnel ( tunnelMock . Object ) ;
116130 local . start ( options ) ;
117131 tunnelMock . Verify ( mock => mock . addBinaryPath ( "" ) , Times . Once ) ;
118132 tunnelMock . Verify ( mock => mock . addBinaryArguments ( It . IsRegex ( "-vvv.*-force.*-forcelocal.*-onlyAutomate" ) ) , Times . Once ( ) ) ;
119- tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" ) , Times . Once ( ) ) ;
133+ tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) , Times . Once ( ) ) ;
120134 local . stop ( ) ;
121135 }
122136
@@ -134,13 +148,14 @@ public void TestWorksWithValueOptions()
134148
135149 local = new LocalClass ( ) ;
136150 Mock < BrowserStackTunnel > tunnelMock = new Mock < BrowserStackTunnel > ( ) ;
151+ tunnelMock . Setup ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) ) ;
137152 local . setTunnel ( tunnelMock . Object ) ;
138153 local . start ( options ) ;
139154 tunnelMock . Verify ( mock => mock . addBinaryPath ( "" ) , Times . Once ) ;
140155 tunnelMock . Verify ( mock => mock . addBinaryArguments (
141156 It . IsRegex ( "-localIdentifier.*dummyIdentifier.*dummyHost.*-proxyHost.*dummyHost.*-proxyPort.*dummyPort.*-proxyUser.*dummyUser.*-proxyPass.*dummyPass" )
142157 ) , Times . Once ( ) ) ;
143- tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" ) , Times . Once ( ) ) ;
158+ tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) , Times . Once ( ) ) ;
144159 local . stop ( ) ;
145160 }
146161
@@ -153,7 +168,7 @@ public void TestCallsFallbackOnFailure()
153168 local = new LocalClass ( ) ;
154169 int count = 0 ;
155170 Mock < BrowserStackTunnel > tunnelMock = new Mock < BrowserStackTunnel > ( ) ;
156- tunnelMock . Setup ( mock => mock . Run ( "dummyKey" , "" ) ) . Callback ( ( ) =>
171+ tunnelMock . Setup ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) ) . Callback ( ( ) =>
157172 {
158173 count ++ ;
159174 if ( count == 1 )
@@ -162,8 +177,8 @@ public void TestCallsFallbackOnFailure()
162177 local . setTunnel ( tunnelMock . Object ) ;
163178 local . start ( options ) ;
164179 tunnelMock . Verify ( mock => mock . addBinaryPath ( "" ) , Times . Once ) ;
165- tunnelMock . Verify ( mock => mock . addBinaryArguments ( "" ) , Times . Once ( ) ) ;
166- tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" ) , Times . Exactly ( 2 ) ) ;
180+ tunnelMock . Verify ( mock => mock . addBinaryArguments ( "-logFile " + logAbsolute ) , Times . Once ( ) ) ;
181+ tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) , Times . Exactly ( 2 ) ) ;
167182 tunnelMock . Verify ( mock => mock . fallbackPaths ( ) , Times . Once ( ) ) ;
168183 local . stop ( ) ;
169184 }
@@ -176,27 +191,22 @@ public void TestKillsTunnel()
176191
177192 local = new LocalClass ( ) ;
178193 Mock < BrowserStackTunnel > tunnelMock = new Mock < BrowserStackTunnel > ( ) ;
194+ tunnelMock . Setup ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) ) ;
179195 local . setTunnel ( tunnelMock . Object ) ;
180196 local . start ( options ) ;
181197 local . stop ( ) ;
182198 tunnelMock . Verify ( mock => mock . addBinaryPath ( "" ) , Times . Once ) ;
183- tunnelMock . Verify ( mock => mock . addBinaryArguments ( "" ) , Times . Once ( ) ) ;
184- tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" ) , Times . Once ( ) ) ;
199+ tunnelMock . Verify ( mock => mock . addBinaryArguments ( "-logFile " + logAbsolute ) , Times . Once ( ) ) ;
200+ tunnelMock . Verify ( mock => mock . Run ( "dummyKey" , "" , logAbsolute ) , Times . Once ( ) ) ;
185201 tunnelMock . Verify ( mock => mock . Kill ( ) , Times . Once ( ) ) ;
186202 }
187203
188204 public void startWithOptions ( )
189205 {
190206 local . start ( options ) ;
191207 }
192- }
193208
194- [ SetUpFixture ]
195- public class SetupClass
196- {
197- private string user = "" ;
198- private string accessKey = "" ;
199- [ SetUp ]
209+ [ TestInitialize ]
200210 public void beforeEveryTest ( )
201211 {
202212 user = Environment . GetEnvironmentVariable ( "BROWSERSTACK_USERNAME" ) ;
@@ -205,7 +215,7 @@ public void beforeEveryTest()
205215 Environment . SetEnvironmentVariable ( "BROWSERSTACK_ACCESS_KEY" , "" ) ;
206216 }
207217
208- [ TearDown ]
218+ [ TestCleanup ]
209219 public void afterEveryTest ( )
210220 {
211221 Environment . SetEnvironmentVariable ( "BROWSERSTACK_USERNAME" , user ) ;
0 commit comments