Skip to content

Commit 138eece

Browse files
Copilotmefellows
authored andcommitted
fix: Rename AddInteractionReference to WithReference
Agent-Logs-Url: https://github.com/pact-foundation/pact-go/sessions/5279a831-3944-43f9-96ac-533cfda80779 Co-authored-by: mefellows <53900+mefellows@users.noreply.github.com>
1 parent ee8a9c5 commit 138eece

7 files changed

Lines changed: 131 additions & 12 deletions

File tree

consumer/http_v4.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func (i *V4UnconfiguredInteraction) UponReceiving(description string) *V4Unconfi
9696
// pull request) against the interaction. References appear under
9797
// comments.references[group][name] in the Pact file. May be called multiple times.
9898
func (i *V4UnconfiguredInteraction) AddExternalReference(group, name, value string) *V4UnconfiguredInteraction {
99-
i.interaction.interaction.AddInteractionReference(group, name, value)
99+
i.interaction.interaction.WithReference(group, name, value)
100100

101101
return i
102102
}

consumer/http_v4_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package consumer
22

33
import (
44
"fmt"
5+
"net/http"
56
"os"
67
"strings"
78
"testing"
@@ -98,7 +99,8 @@ func TestV4HTTPAddExternalReference(t *testing.T) {
9899
WithRequest("GET", "/", func(b *V4RequestBuilder) {}).
99100
WillRespondWith(200, func(b *V4ResponseBuilder) {}).
100101
ExecuteTest(t, func(msc MockServerConfig) error {
101-
return nil
102+
_, err := http.Get(fmt.Sprintf("http://%s:%d/", msc.Host, msc.Port))
103+
return err
102104
})
103105
assert.NoError(t, err)
104106
}

internal/native/message_server.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -591,10 +591,10 @@ func (m *MessageServer) WritePactFileForServer(port int, dir string, overwrite b
591591
}
592592
}
593593

594-
// AddInteractionReference records an external reference (e.g. a ticket or pull request)
594+
// WithReference records an external reference (e.g. a ticket or pull request)
595595
// against the interaction. References are stored under comments.references[group][name]
596596
// in the Pact file. This is a V4-only feature.
597-
func (m *Message) AddInteractionReference(group, name, value string) *Message {
597+
func (m *Message) WithReference(group, name, value string) *Message {
598598
cGroup := C.CString(group)
599599
defer free(cGroup)
600600
cName := C.CString(name)

internal/native/mock_server.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ func libRustFree(str *C.char) {
237237
}
238238

239239
// Start starts up the mock HTTP server on the given address:port and TLS config
240-
// https://docs.rs/pact_mock_server_ffi/0.0.7/pact_mock_server_ffi/fn.create_mock_server_for_pact.html
240+
// https://docs.rs/pact_ffi/latest/pact_ffi/mock_server/fn.pactffi_create_mock_server_for_transport.html
241241
func (m *MockServer) Start(address string, tls bool) (int, error) {
242242
if len(m.interactions) == 0 {
243243
return 0, ErrNoInteractions
@@ -280,15 +280,13 @@ func (m *MockServer) Start(address string, tls bool) (int, error) {
280280
case -1:
281281
return 0, ErrInvalidMockServerConfig
282282
case -2:
283-
return 0, ErrInvalidPact
283+
return 0, ErrInvalidMockServerConfig
284284
case -3:
285285
return 0, ErrMockServerUnableToStart
286286
case -4:
287287
return 0, ErrMockServerPanic
288288
case -5:
289289
return 0, ErrInvalidAddress
290-
case -6:
291-
return 0, ErrMockServerTLSConfiguration
292290
default:
293291
if msPort > 0 {
294292
log.Println("[DEBUG] mock server running on port:", msPort)
@@ -613,10 +611,10 @@ func (i *Interaction) WithStatus(status int) *Interaction {
613611
return i
614612
}
615613

616-
// AddInteractionReference records an external reference (e.g. a ticket or pull request)
614+
// WithReference records an external reference (e.g. a ticket or pull request)
617615
// against the interaction. References are stored under comments.references[group][name]
618616
// in the Pact file. This is a V4-only feature.
619-
func (i *Interaction) AddInteractionReference(group, name, value string) *Interaction {
617+
func (i *Interaction) WithReference(group, name, value string) *Interaction {
620618
cGroup := C.CString(group)
621619
defer free(cGroup)
622620
cName := C.CString(name)

internal/native/mock_server_test.go

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
20139
func TestMockServer_GetTLSConfig(t *testing.T) {
21140
config := GetTLSConfig()
22141

message/v4/asynchronous_message.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func (m *AsynchronousMessageBuilder) GivenWithParameter(state models.ProviderSta
5050
// pull request) against the interaction. References appear under
5151
// comments.references[group][name] in the Pact file. May be called multiple times.
5252
func (m *AsynchronousMessageBuilder) AddExternalReference(group, name, value string) *AsynchronousMessageBuilder {
53-
m.messageHandle.AddInteractionReference(group, name, value)
53+
m.messageHandle.WithReference(group, name, value)
5454

5555
return m
5656
}

message/v4/synchronous_message.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ type UnconfiguredSynchronousMessageBuilder struct {
6666
// pull request) against the interaction. References appear under
6767
// comments.references[group][name] in the Pact file. May be called multiple times.
6868
func (m *UnconfiguredSynchronousMessageBuilder) AddExternalReference(group, name, value string) *UnconfiguredSynchronousMessageBuilder {
69-
m.messageHandle.AddInteractionReference(group, name, value)
69+
m.messageHandle.WithReference(group, name, value)
7070

7171
return m
7272
}

0 commit comments

Comments
 (0)