@@ -17,6 +17,125 @@ func init() {
1717 Init ("" )
1818}
1919
20+ // newSimpleMockServer creates a mock server with a simple GET /foobar → 200 interaction
21+ // using the programmatic API, replacing the removed CreateMockServer function.
22+ func newSimpleMockServer (t * testing.T ) (* MockServer , int ) {
23+ t .Helper ()
24+ m := NewHTTPPact ("consumer" , "provider" )
25+ m .NewInteraction ("Some name for the test" ).
26+ UponReceiving ("Some name for the test" ).
27+ Given ("Some state" ).
28+ WithRequest ("GET" , "/foobar" ).
29+ WithStatus (200 )
30+ port , err := m .Start ("0.0.0.0:0" , false )
31+ if err != nil {
32+ t .Fatalf ("failed to start mock server: %v" , err )
33+ }
34+ return m , port
35+ }
36+
37+ func TestMockServer_CreateAndCleanupMockServer (t * testing.T ) {
38+ m := NewHTTPPact ("consumer" , "provider" )
39+ m .NewInteraction ("Some complex interaction" ).
40+ UponReceiving ("Some complex interaction" ).
41+ Given ("Some state" ).
42+ WithRequest ("GET" , "/foobar" ).
43+ WithStatus (200 )
44+ port , err := m .Start ("0.0.0.0:0" , false )
45+ if err != nil {
46+ t .Fatal ("failed to start mock server:" , err )
47+ }
48+ defer m .CleanupMockServer (port )
49+
50+ if port <= 0 {
51+ t .Fatal ("want port > 0, got" , port )
52+ }
53+ }
54+
55+ func TestMockServer_MismatchesSuccess (t * testing.T ) {
56+ m , port := newSimpleMockServer (t )
57+ defer m .CleanupMockServer (port )
58+
59+ res , err := http .Get (fmt .Sprintf ("http://localhost:%d/foobar" , port ))
60+ if err != nil {
61+ t .Fatalf ("Error sending request: %v" , err )
62+ }
63+
64+ if res .StatusCode != 200 {
65+ t .Fatalf ("want '200', got '%d'" , res .StatusCode )
66+ }
67+
68+ mismatches := m .MockServerMismatchedRequests (port )
69+ if len (mismatches ) != 0 {
70+ t .Fatalf ("want 0 mismatches, got '%d'" , len (mismatches ))
71+ }
72+ }
73+
74+ func TestMockServer_MismatchesFail (t * testing.T ) {
75+ m , port := newSimpleMockServer (t )
76+ defer m .CleanupMockServer (port )
77+
78+ mismatches := m .MockServerMismatchedRequests (port )
79+ if len (mismatches ) != 1 {
80+ t .Fatalf ("want 1 mismatch, got '%d'" , len (mismatches ))
81+ }
82+ }
83+
84+ func TestMockServer_VerifySuccess (t * testing.T ) {
85+ tmpPactFolder , err := os .MkdirTemp ("" , "pact-go" )
86+ assert .NoError (t , err )
87+
88+ m , port := newSimpleMockServer (t )
89+ defer m .CleanupMockServer (port )
90+
91+ _ , err = http .Get (fmt .Sprintf ("http://localhost:%d/foobar" , port ))
92+ if err != nil {
93+ t .Fatalf ("Error sending request: %v" , err )
94+ }
95+
96+ success , mismatches := m .Verify (port , tmpPactFolder )
97+ if ! success {
98+ t .Fatalf ("want 'true' but got '%v'" , success )
99+ }
100+
101+ if len (mismatches ) != 0 {
102+ t .Fatalf ("want 0 mismatches, got '%d'" , len (mismatches ))
103+ }
104+ }
105+
106+ func TestMockServer_VerifyFail (t * testing.T ) {
107+ tmpPactFolder , err := os .MkdirTemp ("" , "pact-go" )
108+ assert .NoError (t , err )
109+ m , port := newSimpleMockServer (t )
110+
111+ success , mismatches := m .Verify (port , tmpPactFolder )
112+ if success {
113+ t .Fatalf ("want 'false' but got '%v'" , success )
114+ }
115+
116+ if len (mismatches ) != 1 {
117+ t .Fatalf ("want 1 mismatch, got '%d'" , len (mismatches ))
118+ }
119+ }
120+
121+ func TestMockServer_WritePactfile (t * testing.T ) {
122+ tmpPactFolder , err := os .MkdirTemp ("" , "pact-go" )
123+ assert .NoError (t , err )
124+
125+ m , port := newSimpleMockServer (t )
126+ defer m .CleanupMockServer (port )
127+
128+ _ , err = http .Get (fmt .Sprintf ("http://localhost:%d/foobar" , port ))
129+ if err != nil {
130+ t .Fatalf ("Error sending request: %v" , err )
131+ }
132+ err = m .WritePactFile (port , tmpPactFolder )
133+
134+ if err != nil {
135+ t .Fatal ("error: " , err )
136+ }
137+ }
138+
20139func TestMockServer_GetTLSConfig (t * testing.T ) {
21140 config := GetTLSConfig ()
22141
0 commit comments