11package io .specto .hoverfly .junit .core ;
22
3+ import static io .specto .hoverfly .junit .core .HoverflyConfig .localConfigs ;
4+ import static io .specto .hoverfly .junit .core .HoverflyConfig .remoteConfigs ;
5+ import static io .specto .hoverfly .junit .core .HoverflyMode .CAPTURE ;
6+ import static io .specto .hoverfly .junit .core .HoverflyMode .DIFF ;
7+ import static io .specto .hoverfly .junit .core .HoverflyMode .SIMULATE ;
8+ import static io .specto .hoverfly .junit .core .HoverflyMode .SPY ;
9+ import static io .specto .hoverfly .junit .core .SimulationSource .classpath ;
10+ import static java .lang .String .format ;
11+ import static org .apache .commons .lang3 .RandomStringUtils .randomAlphanumeric ;
12+ import static org .assertj .core .api .Assertions .assertThat ;
13+ import static org .assertj .core .api .Assertions .assertThatThrownBy ;
14+ import static org .assertj .core .api .Assertions .catchThrowable ;
15+ import static org .junit .Assume .assumeTrue ;
16+ import static org .mockito .Mockito .any ;
17+ import static org .mockito .Mockito .argThat ;
18+ import static org .mockito .Mockito .atLeastOnce ;
19+ import static org .mockito .Mockito .doThrow ;
20+ import static org .mockito .Mockito .eq ;
21+ import static org .mockito .Mockito .inOrder ;
22+ import static org .mockito .Mockito .mock ;
23+ import static org .mockito .Mockito .never ;
24+ import static org .mockito .Mockito .spy ;
25+ import static org .mockito .Mockito .verify ;
26+ import static org .mockito .Mockito .when ;
27+ import static org .springframework .http .HttpStatus .OK ;
28+
329import ch .qos .logback .classic .Level ;
430import ch .qos .logback .classic .Logger ;
531import ch .qos .logback .classic .spi .ILoggingEvent ;
1844import io .specto .hoverfly .junit .core .model .RequestFieldMatcher ;
1945import io .specto .hoverfly .junit .core .model .RequestResponsePair ;
2046import io .specto .hoverfly .junit .core .model .Simulation ;
47+ import java .io .BufferedReader ;
48+ import java .io .File ;
49+ import java .io .InputStreamReader ;
50+ import java .net .InetSocketAddress ;
51+ import java .net .URL ;
52+ import java .nio .file .Files ;
53+ import java .nio .file .Path ;
54+ import java .nio .file .Paths ;
55+ import java .util .ArrayList ;
56+ import java .util .Arrays ;
57+ import java .util .List ;
58+ import javax .net .ssl .SSLContext ;
59+ import org .apache .commons .lang3 .SystemUtils ;
2160import org .apache .http .HttpResponse ;
2261import org .apache .http .client .HttpClient ;
2362import org .apache .http .client .methods .HttpGet ;
3574import org .springframework .web .client .RestTemplate ;
3675import org .zeroturnaround .exec .StartedProcess ;
3776
38- import javax .net .ssl .SSLContext ;
39-
40- import java .io .BufferedReader ;
41- import java .io .File ;
42- import java .io .InputStreamReader ;
43- import java .net .InetSocketAddress ;
44- import java .net .URL ;
45- import java .util .ArrayList ;
46- import java .util .Arrays ;
47- import java .util .List ;
48-
49- import static io .specto .hoverfly .junit .core .HoverflyConfig .localConfigs ;
50- import static io .specto .hoverfly .junit .core .HoverflyConfig .remoteConfigs ;
51- import static io .specto .hoverfly .junit .core .HoverflyMode .*;
52- import static io .specto .hoverfly .junit .core .SimulationSource .classpath ;
53- import static java .lang .String .format ;
54- import static org .apache .commons .lang3 .RandomStringUtils .randomAlphanumeric ;
55- import static org .assertj .core .api .Assertions .*;
56- import static org .junit .Assume .assumeTrue ;
57- import static org .mockito .Mockito .*;
58- import static org .springframework .http .HttpStatus .OK ;
59-
6077public class HoverflyTest {
6178
79+ private static final int EXPECTED_PROXY_PORT = 8890 ;
80+
6281 @ Rule
6382 public final SystemOutRule systemOut = new SystemOutRule ();
6483
65- private static final int EXPECTED_PROXY_PORT = 8890 ;
84+ private final ObjectMapper mapper = new ObjectMapper () ;
6685 private Hoverfly hoverfly ;
67- private ObjectMapper mapper = new ObjectMapper ();
6886
6987 @ Test
7088 public void shouldStartHoverflyOnConfiguredPort () {
@@ -666,9 +684,8 @@ public void shouldBeAbleToPassFlagsViaCommandsConfig() {
666684 }
667685
668686 @ Test
669- public void shouldStartHoverflyFromCustomBinaryLocation () {
670- final String os = System .getProperty ("os.name" ).toLowerCase ();
671- assumeTrue ("Currently this case is tested only in Windows, in Linux ps may be used" , os .contains ("windows" ));
687+ public void shouldStartHoverflyFromCustomBinaryLocationForWindows () {
688+ assumeTrue ("Currently this case is tested only in Windows, in Linux ps may be used" , SystemUtils .IS_OS_WINDOWS );
672689
673690 final String binaryLocation = "build/tmp" ;
674691 clearBinaryFiles (binaryLocation );
@@ -683,8 +700,23 @@ public void shouldStartHoverflyFromCustomBinaryLocation() {
683700 assertThat (exes .length ).isEqualTo (1 );
684701 }
685702
703+ @ Test
704+ public void shouldStartHoverflyFromCustomBinaryLocation () {
705+
706+ assumeTrue ("Test case for Mac OS only" , !SystemUtils .IS_OS_WINDOWS );
707+
708+ final String binaryLocation = "build/tmp" ;
709+ Path hoverflyBinary = Paths .get (binaryLocation ).resolve (new SystemConfigFactory ().createSystemConfig ().getHoverflyBinaryName ()).toAbsolutePath ();
710+ assertThat (Files .exists (hoverflyBinary )).isFalse ();
711+
712+ hoverfly = new Hoverfly (localConfigs ().binaryLocation (binaryLocation ), SIMULATE );
713+ hoverfly .start ();
714+
715+ assertThat (Files .exists (hoverflyBinary )).isTrue ();
716+ }
717+
686718 private void clearBinaryFiles (final String binaryLocation ) {
687- Arrays .stream (getBinaryFiles (binaryLocation )).forEach (f -> f . delete () );
719+ Arrays .stream (getBinaryFiles (binaryLocation )).forEach (File :: delete );
688720 }
689721
690722 private File [] getBinaryFiles (final String binaryLocation ) {
0 commit comments