Skip to content

Commit

Permalink
feat: support adding metadata to the output pacts via FFI
Browse files Browse the repository at this point in the history
  • Loading branch information
mefellows committed May 23, 2021
1 parent afcd3d7 commit 8e5acba
Show file tree
Hide file tree
Showing 6 changed files with 533 additions and 186 deletions.
60 changes: 30 additions & 30 deletions examples/v3/consumer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,39 +167,39 @@ func TestConsumerV3(t *testing.T) {
}
}

// func TestMessagePact(t *testing.T) {
// provider, err := v3.NewMessagePactV3(v3.MessageConfig{
// Consumer: "V3MessageConsumer",
// Provider: "V3MessageProvider", // must be different to the HTTP one, can't mix both interaction styles
// SpecificationVersion: v3.V3,
// })
func TestMessagePact(t *testing.T) {
provider, err := v3.NewMessagePactV3(v3.MessageConfig{
Consumer: "V3MessageConsumer",
Provider: "V3MessageProvider", // must be different to the HTTP one, can't mix both interaction styles
SpecificationVersion: v3.V3,
})

// if err != nil {
// t.Fatal(err)
// }
if err != nil {
t.Fatal(err)
}

// message := provider.AddMessage()
// message.
// Given(v3.ProviderStateV3{
// Name: "User with id 127 exists",
// Parameters: map[string]interface{}{
// "id": 127,
// },
// }).
// ExpectsToReceive("a user event").
// WithMetadata(v3.MapMatcher{
// "Content-Type": s("application/json; charset=utf-8"),
// }).
// WithContent(v3.MapMatcher{
// "datetime": v3.Regex("2020-01-01", "[0-9\\-]+"),
// "name": s("FirstName"),
// "lastName": s("LastName"),
// "id": v3.Integer(12),
// }).
// AsType(&User{})
message := provider.AddMessage()
message.
Given(v3.ProviderStateV3{
Name: "User with id 127 exists",
Parameters: map[string]interface{}{
"id": 127,
},
}).
ExpectsToReceive("a user event").
WithMetadata(v3.MapMatcher{
"Content-Type": s("application/json; charset=utf-8"),
}).
WithContent(v3.MapMatcher{
"datetime": v3.Regex("2020-01-01", "[0-9\\-]+"),
"name": s("FirstName"),
"lastName": s("LastName"),
"id": v3.Integer(12),
}).
AsType(&User{})

// provider.VerifyMessageConsumer(t, message, userHandlerWrapper)
// }
provider.VerifyMessageConsumer(t, message, userHandlerWrapper)
}

type User struct {
ID int `json:"id" pact:"example=27"`
Expand Down
17 changes: 2 additions & 15 deletions v3/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ func (p *httpMockProvider) validateConfig() error {
return fmt.Errorf("error: unable to find free port, mock server will fail to start")
}

p.mockserver = native.NewMockServer(p.config.Consumer, p.config.Provider)
p.mockserver = native.NewHTTPMockServer(p.config.Consumer, p.config.Provider)
switch p.specificationVersion {
case V2:
p.mockserver.WithSpecificationVersion(native.SPECIFICATION_VERSION_V2)
Expand All @@ -184,20 +184,7 @@ func (p *httpMockProvider) cleanInteractions() {
func (p *httpMockProvider) ExecuteTest(integrationTest func(MockServerConfig) error) error {
log.Println("[DEBUG] pact verify")

// // Generate interactions for Pact file
// var serialisedPact interface{}
// if p.specificationVersion == V2 {
// serialisedPact = newPactFileV2(p.config.Consumer, p.config.Provider, p.v2Interactions, p.config.matchingConfig)
// } else {
// serialisedPact = newPactFileV3(p.config.Consumer, p.config.Provider, p.v3Interactions, nil)
// }

// log.Println("[DEBUG] Sending pact file:", formatJSONObject(serialisedPact))

// Clean interactions
// p.cleanInteractions()

// port, err := p.mockserver.CreateMockServer(formatJSONObject(serialisedPact), fmt.Sprintf("%s:%d", p.config.Host, p.config.Port), p.config.TLS)
p.cleanInteractions()

port, err := p.mockserver.Start(fmt.Sprintf("%s:%d", p.config.Host, p.config.Port), p.config.TLS)
defer p.mockserver.CleanupMockServer(p.config.Port)
Expand Down

0 comments on commit 8e5acba

Please sign in to comment.