Tien Vo
03/22/2023, 4:38 PMpactffi_verifier_set_provider_info , it will create a default provider's transport {transport: "http", port: None, part: "/", scheme: None} . Then I call pactffi_verifier_add_provider_transport , it will create second provider's transport {transport: "http", port: 8000, part: "/", scheme: "http"} . Finally I call pactffi_verifier_execute , the result is false because it call provider on the wrong port (http://localhost, because it use the first transport, the provider is located at http://localhost:8000)
Do you think it's an issue?
If yes, I can think of some solutions for it:
• Implement pactffi_verifier_set_provider_info_v2 that didn't create default provider's transport https://github.com/pact-foundation/pact-reference/compare/master...tienvx:pact-reference:solution-1
• Don't create the default provider's transport at all https://github.com/pact-foundation/pact-reference/compare/master...tienvx:pact-reference:solution-2
• When calling pactffi_verifier_set_provider_info , set scheme to something that will be never used e.g. scheme=invalid => transport=invalid https://github.com/pact-foundation/pact-reference/compare/master...tienvx:pact-reference:solution-3
• Instead of appending new transport, try to find the existing transport with the same name and update port + part + scheme (no code, I don't think I know how to do it properly)
Some notes:
• This is why I think this issue is valid: I saw this attribute on provider info's protocol, port and path: #[deprecated(note = "Use transports instead")]
• The example with 2 transport with the same name http may look strange to you. You may ask: so why don't call pactffi_verifier_add_provider_transport at all? Just put the port=8000 in the first call to pactffi_verifier_set_provider_info . The answer for this is the note above.
• I need to test calling to pactffi_verifier_add_provider_transport because when working with the grpc plugin, I think calling pactffi_verifier_add_provider_transport is required so that the provider's verifier can work. The default transport http doesn't work with grpcuglyog
pactffi_verifier_add_provider_transport should update the existing entry if it has no port set, and not add the second one. The problem is that if we always update the entry, you can't have two different providers on different ports.uglyog
Tien Vo
03/23/2023, 12:47 AM