keploy / keploy

Test generation for Developers. Generate tests and stubs for your application that actually work!
https://keploy.io
Apache License 2.0
3.37k stars 374 forks source link

[bug]: bypass rules not working #1827

Closed re-Tick closed 1 week ago

re-Tick commented 1 month ago

Is there an existing issue for this?

Current behavior

When I record test cases for gin-mongo samples-go app with the below config file, the mocks for the http at port 8080 is still recorded.

path: ""
command: "go run main.go handler.go"
port: 0
proxyPort: 16789
dnsPort: 26789
debug: false
disableTele: false
inDocker: false
generateGithubActions: true
containerName: ""
networkName: ""
buildDelay: 30s
test:
    selectedTests: {}
    globalNoise:
        global: {}
        test-sets: {}
    delay: 5
    apiTimeout: 5
    coverage: false
    goCoverage: false
    coverageReportPath: ""
    ignoreOrdering: true
    mongoPassword: "default@123"
    language: ""
    removeUnusedMocks: false
record:
    recordTimer: 0s
    stubs:
        filters:
            - port: 8080
    filters: 
        - port: 8080
        # host: "dc.services.visualstudio.com"
        # path: "/user/app"
configPath: ""
bypassRules: []
cmdType: "native"
enableTesting: false
keployContainer: "keploy-v2"
keployNetwork: "keploy-network"

# Example on using tests
#tests:
#  filters:
#   - path: "/user/app"
#     urlMethods: ["GET"]
#     headers: {
#       "^asdf*": "^test"
#     }
#     host: "dc.services.visualstudio.com"
#Example on using stubs
#stubs:
#  filters:
#   - path: "/user/app"
#     port: 8080
#   - port: 8081
#   - host: "dc.services.visualstudio.com"
#   - port: 8081
#     host: "dc.services.visualstudio.com"
#     path: "/user/app"
    #
#Example on using globalNoise
#globalNoise:
#   global:
#     body: {
#        # to ignore some values for a field,
#        # pass regex patterns to the corresponding array value
#        "url": ["https?://\S+", "http://\S+"],
#     }
#     header: {
#        # to ignore the entire field, pass an empty array
#        "Date": [],
#      }
#    # to ignore fields or the corresponding values for a specific test-set,
#    # pass the test-set-name as a key to the "test-sets" object and
#    # populate the corresponding "body" and "header" objects
#    test-sets:
#      test-set-1:
#        body: {
#          # ignore all the values for the "url" field
#          "url": []
#        }
#        header: {
#          # we can also pass the exact value to ignore for a field
#          "User-Agent": ["PostmanRuntime/7.34.0"]
#        }

Steps to reproduce

  1. Clone the samples-go
  2. Add a http get in the post handler of the Puturl
  3. Run the app in record with bypass rule config
  4. make curl request to the Post handler
  5. and the request will be generated

Environment

None

Version

Cloud

Repository

keploy

re-Tick commented 1 month ago

@shivamsouravjha please have a look.

shivamsouravjha commented 1 month ago

@re-Tick seems like the flags aren't loaded. I can work on this task