Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some problem with arrays values and jsonpath checks #780

Open
TimonDL opened this issue Oct 28, 2024 · 0 comments
Open

Some problem with arrays values and jsonpath checks #780

TimonDL opened this issue Oct 28, 2024 · 0 comments

Comments

@TimonDL
Copy link

TimonDL commented Oct 28, 2024

Hello!
I'm can't understand whats going on...
But when my requests has array ["REPAIR", "NEED_ADVICE"] - predicate is not matches when I use jsonpath
I'm try with different variants:
["REPAIR", "NEEDADVICE"] not working
["ONE", "ONE_TWO"] is working
["ONE", "TWO", "ONE_TWO"] not working
["ONEONEONEONE", "TWOTWOTWOTWO"] is working
["ONE", "TWO", "THREE"] not working

In my steps to reproduce I'm specially leave jsonpath selector as $ - in my real life this is field from body, but for example this is don't matter :)

Expected behaviour

Predicate is matches, I have response from mountebank
...

Actual behaviour

Predicate is not matches, I have default response
...

Steps to reproduce

  1. $ docker run --rm -p 2525:2525 -p 4545:4545 -p 5555:5555 bbyars/mountebank:2.9.1 start --debug --loglevel debug
  2. $ curl -i -X POST -H 'Content-Type: application/json' http://localhost:2525/imposters --data '{ "port": 4545, "protocol": "http", "recordRequests": true, "defaultResponse": { "statusCode": 400, "body": "No suitable mock", "headers": {} }, "stubs": [{ "predicates": [{ "deepEquals": { "body": { "tags": ["REPAIR", "NEED_ADVICE"] } }, "jsonpath": { "selector": "$" } }], "responses": [{ "is": { "body": { "success": true }, "statusCode": 200 } }] }] }'
    3 $ curl -i http://localhost:4545/ --data '{"tags": ["REPAIR", "NEED_ADVICE"]}'
    ...

Software versions used

OS         : docker
mountebank : 2.9.1
node.js    :
  (only if installed via npm)
Installation method :
  (npm, zip, tar, pkg, deb, rpm)

Log contents in mb.log when running mb --loglevel debug

info: [mb:2525] mountebank v2.9.1 now taking orders - point your browser to http://localhost:2525/ for help
debug: [mb:2525] config: {"options":{"debug":true,"port":2525,"noParse":false,"no-parse":false,"formatter":"mountebank-formatters","pidfile":"mb.pid","allowInjection":false,"allow-injection":false,"localOnly":false,"local-only":false,"ipWhitelist":["*"],"ip-whitelist":"*","mock":false,"protofile":"protocols.json","origin":false,"apikey":null,"log":{"level":"debug","transports":{"console":{"colorize":true,"format":"%level: %message"},"file":{"path":"mb.log","format":"json"}}}},"process":{"nodeVersion":"v18.17.1","architecture":"arm64","platform":"linux"}}


info: [mb:2525] POST /imposters
debug: [mb:2525] ::ffff:172.17.0.1:43084 => {"port":4545,"protocol":"http","recordRequests":true,"defaultResponse":{"statusCode":400,"body":"No suitable mock","headers":{}},"stubs":[{"predicates":[{"deepEquals":{"body":{"tags":["REPAIR","NEED_ADVICE"]}},"jsonpath":{"selector":"$"}}],"responses":[{"is":{"body":{"success":true},"statusCode":200}}]}]}
info: [http:4545] Open for business...


debug: [http:4545] ::ffff:172.17.0.1:58062 ESTABLISHED
info: [http:4545] ::ffff:172.17.0.1:58062 => POST /
debug: [http:4545] ::ffff:172.17.0.1:58062 => {"requestFrom":"::ffff:172.17.0.1:58062","method":"POST","path":"/","query":{},"headers":{"Host":"localhost:4545","User-Agent":"curl/8.7.1","Accept":"*/*","Content-Length":"35","Content-Type":"application/x-www-form-urlencoded"},"body":"{\"tags\": [\"REPAIR\", \"NEED_ADVICE\"]}","ip":"::ffff:172.17.0.1","form":{"{\"tags\": [\"REPAIR\", \"NEED_ADVICE\"]}":""}}
info: [http:4545] no predicate match, using default response
debug: [http:4545] generating response from {"is":{}}
debug: [http:4545] ::ffff:172.17.0.1:58062 <= {"statusCode":400,"headers":{"Connection":"close"},"body":"No suitable mock","_mode":"text"}
debug: [http:4545] ::ffff:172.17.0.1:58062 CLOSED

After one request (like in steps to reproduce) I have this information in imposter

$ curl http://localhost:2525/imposters/4545
{
  "protocol": "http",
  "port": 4545,
  "defaultResponse": {
    "statusCode": 400,
    "body": "No suitable mock",
    "headers": {}
  },
  "numberOfRequests": 1,
  "recordRequests": true,
  "requests": [
    {
      "requestFrom": "::ffff:172.17.0.1:35664",
      "method": "POST",
      "path": "/",
      "query": {},
      "headers": {
        "Host": "localhost:4545",
        "User-Agent": "curl/8.7.1",
        "Accept": "*/*",
        "Content-Length": "35",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "body": "{\"tags\": [\"REPAIR\", \"NEED_ADVICE\"]}",
      "ip": "::ffff:172.17.0.1",
      "form": {
        "{\"tags\": [\"REPAIR\", \"NEED_ADVICE\"]}": ""
      },
      "timestamp": "2024-10-28T18:00:10.378Z"
    }
  ],
  "stubs": [
    {
      "predicates": [
        {
          "deepEquals": {
            "body": {
              "tags": [
                "REPAIR",
                "NEED_ADVICE"
              ]
            }
          },
          "jsonpath": {
            "selector": "$"
          }
        }
      ],
      "responses": [
        {
          "is": {
            "body": {
              "success": true
            },
            "statusCode": 200
          }
        }
      ],
      "_links": {
        "self": {
          "href": "http://localhost:2525/imposters/4545/stubs/0"
        }
      }
    }
  ],
  "_links": {
    "self": {
      "href": "http://localhost:2525/imposters/4545"
    },
    "stubs": {
      "href": "http://localhost:2525/imposters/4545/stubs"
    }
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant