Hernan Mateika
01/14/2025, 6:17 PMJack Wheatley
01/15/2025, 8:42 PMD
02/03/2025, 8:51 AMsomeProxies array[object] or null
name string or null
enabled boolean
defaultSettlement integer<int32> or null
Allowed values:
1 2 null
My consumer contract contains this
"someProxies ": [
{
"defaultSettlement": null,
"enabled": true,
"name": "My Settlement"
}
However I get this error for the "defaultSettlement"
Response body is incompatible with the response body schema in the spec file: must be equal to one of the allowed values
Can anyone help figure out whats going wrong here?
ps. I am using null, because I cant figure out a way cast to int due to the way the nullable definition is set up.Paul Beigang
02/04/2025, 1:59 PMGabriel Vasconcelos
02/07/2025, 2:46 PMPiyush Sardana
02/08/2025, 9:49 AM-> "Forbidden. Either you are using a read only token for a request that requires a write token (the most likely cause), or you do not have the required permissions.\n"
read 162 bytes
Conn keep-alive
Forbidden. Either you are using a read only token for a request that requires a write token (the most likely cause), or you do not have the required permissions.
publish-pact:
stage: publish_pact
image: pactfoundation/pact-cli:latest
needs:
- build-and-test
script:
- echo "Publishing consumer pacts to Pact Broker"
- >-
pact-broker publish target/pacts
--broker-base-url="${PACTFLOW_HOST_URL}"
--broker-token="${PACTFLOW_IAM_READ_WRITE_TOKEN}"
--consumer-app-version="${CI_COMMIT_SHA}"
--branch="${CI_COMMIT_BRANCH}"
--merge
--verbose
artifacts:
when: always
rules:
- if: $CI_COMMIT_BRANCH
Spencer
02/11/2025, 3:34 PMRishav Singh
02/12/2025, 10:41 AMpublish-provider-contract
operation, I don't see it here ?Matt (pactflow.io / pact-js / pact-go)
Matt (pactflow.io / pact-js / pact-go)
Milda
02/13/2025, 10:38 AMpactflow-ai status
?Milda
02/14/2025, 3:55 PMBas Dijkstra
02/18/2025, 10:18 AMTyler Powell
02/24/2025, 5:09 PMGabriel Vasconcelos
02/25/2025, 10:01 AMMilda
02/25/2025, 11:04 AMRuth
02/25/2025, 12:01 PMResponse: {"error":{"message":"An error has occurred. The details have been logged with the reference HIIXRpjPHk","reference":"HIIXRpjPHk"}}
Where can we look at the logs with this reference number?Santosh Kumar
03/03/2025, 1:30 PMD
03/04/2025, 1:06 AMpublic enum defaultSettlementMethod
{
Method1= 1,
Method2 = 2,
}
In the OAS spec, it shows as "Allowed Values 1 2" (see screenshot)
I would like to be able to check in the consumer that it is these values only, rather than have an integration test for this. Is that possible?
I know it probably goes against the philosophy of Pact to do this. However in the past we have found that providers may add new values to the enums, and the consumers weren't expecting the change.
Adding any kind of test in the provider may still result in the outcome, because this still relies on the provider team communicating the change effectively.
Hope that makes sense?Valerio Iachini
03/13/2025, 9:11 AMGabriel Vasconcelos
03/18/2025, 5:09 PM{
"openapi": "3.0.1",
"info": {
"title": "IDEServices",
"description": "IDEServices REST API",
"version": "v1"
},
"paths": {
"/asset-model/v1/features": {
"get": {
"summary": "Gets the stored Feature Toggles.",
"description": "Gets the stored Feature Toggles.",
"operationId": "GetAllFeatureTogglesValues",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"required": [
"key"
],
"type": "object",
"properties": {
"key": {
"minLength": 10,
"type": "string"
}
},
"additionalProperties": false
}
}
}
}
}
}
}
}
}
}
and this sample pact:
{
"consumer": {
"name": "web_ide"
},
"interactions": [
{
"description": "Get all features",
"pending": false,
"request": {
"method": "GET",
"path": "/asset-model/v1/features"
},
"response": {
"body": {
"content": [
{
"key": "bigexample"
}
],
"contentType": "application/json",
"encoded": false
},
"headers": {
"Content-Type": [
"application/json"
]
},
"matchingRules": {
"body": {
"$[*].key": {
"combine": "AND",
"matchers": [
{
"match": "what I put here doesnt seem to matter"
}
]
}
},
"header": {},
"status": {}
},
"status": 200
},
"type": "Synchronous/HTTP"
}
],
"metadata": {
"pact-js": {
"version": "14.0.0"
},
"pactRust": {
"ffi": "0.4.22",
"models": "1.2.3"
},
"pactSpecification": {
"version": "4.0"
}
},
"provider": {
"name": "IDE-Services"
}
}
I get no errors no matter how I change the matchingRules. but if I change the example to something else, I get
location: '[root].paths./asset-model/v1/features.get.responses.200.content.application/json.schema.items.properties.key.minLength'
are we doing something wrong? aren't the matchingRules suppose to be more important than the example in the request/response?Krysty
03/21/2025, 4:48 AMOpenSSL::SSL::SSLError - SSL_connect returned=1 errno=0 peeraddr=108.158.213.75:443 state=error: certificate verify failed (self-signed certificate in certificate chain)
Tyler Powell
03/28/2025, 5:12 PM{
"error": {
"message": "Cannot read properties of undefined (reading 'name')"
}
}
The contract hasn't fundamentally changed but I noticed that this error is only occurring for pacts verified with:
Verifier
pactflow-openapi-pact-comparator
Version
1.0.0
previous pacts were verified with:
Verifier
pactflow-swagger-mock-validator
Version
14.5.0Nikita Fidirko
04/01/2025, 4:20 PM--specification=SPECIFICATION
but there are no mentions about possible values (apart from OAS)
so, the question is: is OAS the only format that's supported?Gabriel Vasconcelos
04/03/2025, 8:40 PM{tenant}/pacticipant/{pacticipant}/network
(singular), I get a huge list of integrations, which I assume is the comprehensive list with them all. If I try {tenant}/pacticipants/{pacticipant}/network
(plural), it returns me 404.
However, through the web I can reach {tenant}/pacticipants/{pacticipant}/network
(plural) and I receive only the network for the desired pacticipant.
Is it possible to make this reachable via the API?
ThanksMatt (pactflow.io / pact-js / pact-go)
Otoniel Rodriguez Delgado
04/04/2025, 7:20 PMSimon Raess
04/17/2025, 9:07 AMRui
04/24/2025, 4:02 PMat au.com.dius.pact.core.pactbroker.HalClient.handleHalResponse(HalClient.kt:336)
at au.com.dius.pact.core.pactbroker.HalClient.access$handleHalResponse(HalClient.kt:158)
at au.com.dius.pact.core.pactbroker.HalClient$getJson$1.invoke$lambda$0(HalClient.kt:311)
at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:247)
at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188)
at au.com.dius.pact.core.pactbroker.HalClient$getJson$1.invoke(HalClient.kt:310)
at au.com.dius.pact.core.support.KotlinLanguageSupportKt.handleWith(KotlinLanguageSupport.kt:35)
at au.com.dius.pact.core.pactbroker.HalClient.getJson(HalClient.kt:305)
at au.com.dius.pact.core.pactbroker.HalClient.fetch(HalClient.kt:269)
at au.com.dius.pact.core.pactbroker.PactBrokerClient.fetchPact(PactBrokerClient.kt:782)
at au.com.dius.pact.core.model.PactReaderKt.loadPactFromUrl(PactReader.kt:60)
at au.com.dius.pact.core.model.DefaultPactReader.loadFile(PactReader.kt:413)
at au.com.dius.pact.core.model.DefaultPactReader.loadPact(PactReader.kt:210)
at au.com.dius.pact.provider.junitsupport.loader.PactBrokerLoader.loadPactsForProvider(PactBrokerLoader.kt:266)
at au.com.dius.pact.provider.junitsupport.loader.PactBrokerLoader.load(PactBrokerLoader.kt:128)
at au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider$resolvePactSources$pactSources$1$pacts$1.invoke(PactJUnit5VerificationProvider.kt:78)
at au.com.dius.pact.core.support.KotlinLanguageSupportKt.handleWith(KotlinLanguageSupport.kt:35)
at au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider.resolvePactSources(PactJUnit5VerificationProvider.kt:78)
at au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider.provideTestTemplateInvocationContexts(PactJUnit5VerificationProvider.kt:45)
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
James Fraser
04/29/2025, 9:00 AM