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

Scenario with proxy not removing route prefix #1024

Closed
mark-hingston opened this issue Dec 1, 2023 · 7 comments
Closed

Scenario with proxy not removing route prefix #1024

mark-hingston opened this issue Dec 1, 2023 · 7 comments
Assignees
Labels

Comments

@mark-hingston
Copy link

I'm using WireMock.Net.StandAlone 1.5.39 and have the following scenario:

[
  {
    "Scenario": "HyperPaySucceedOnThirdTryScenario",
    "SetStateTo": "SecondAttempt",
    "Priority": 1,
    "Request": {
      "Methods": ["GET", "POST"],
      "Path": {
        "Matchers": [
          {
            "Name": "WildcardMatcher",
            "Pattern": "/hyperpay/*",
            "IgnoreCase": false
          }
        ]
      }
    },
    "Response": {
      "StatusCode": 503,
      "Headers": {
        "X-PureTrace-Wiremock": "HyperPay 503 - Server Unavailable - Attempt 1"
      }
    }
  },
  {
    "Scenario": "HyperPaySucceedOnThirdTryScenario",
    "WhenStateIs": "SecondAttempt",
    "SetStateTo": "ThirdAttempt",
    "Priority": 1,
    "Request": {
      "Methods": [ "GET", "POST" ],
      "Path": {
        "Matchers": [
          {
            "Name": "WildcardMatcher",
            "Pattern": "/hyperpay/*",
            "IgnoreCase": false
          }
        ]
      }
    },
    "Response": {
      "StatusCode": 503,
      "Headers": {
        "X-PureTrace-Wiremock": "HyperPay 503 - Server Unavailable - Attempt 2"
      }
    }
  },
  {
    "Scenario": "HyperPaySucceedOnThirdTryScenario",
    "WhenStateIs": "ThirdAttempt",
    "Priority": 1,
    "Request": {
      "Methods": [ "GET", "POST" ],
      "Path": {
        "Matchers": [
          {
            "Name": "WildcardMatcher",
            "Pattern": "/hyperpay/*",
            "IgnoreCase": false
          }
        ]
      }
    },
    "Response": {
      "ProxyUrl": "https://eu-test.oppwa.com"
    }
  }
]

The issue I'm finding is that on the third request when proxying to the upstream it is including the route prefix in the path e.g.

https://eu-test.oppwa.com/hyperpay/v1/checkouts instead of https://eu-test.oppwa.com/v1/checkouts.

How can I remove the route prefix? Thanks

@StefH
Copy link
Collaborator

StefH commented Dec 3, 2023

Currently it's not yet possible to define this per request.

But you can define it in the settings:
https://github.com/WireMock-Net/WireMock.Net/wiki/Settings#proxyandrecordsettings

via ReplaceSettings

@StefH
Copy link
Collaborator

StefH commented Dec 3, 2023

#1026

@StefH
Copy link
Collaborator

StefH commented Dec 8, 2023

@mark-hingston Did you have time to test this, or should I just merge this change?

@mark-hingston
Copy link
Author

mark-hingston commented Dec 9, 2023

@StefH I haven't had the chance to test the changes in the PR, but it looks good to merge 👍

Thanks again.

@StefH
Copy link
Collaborator

StefH commented Dec 10, 2023

PR is merged. A new NuGet will be released this week.

@StefH StefH closed this as completed Dec 10, 2023
@StefH StefH self-assigned this Dec 10, 2023
@StefH StefH added feature and removed question labels Dec 10, 2023
@mark-hingston
Copy link
Author

Hi @StefH

I'm sending the following mapping to the POST __admin/mappings endpoint:

[{
    "Scenario": "SucceedOnThirdAttemptScenario",
    "SetStateTo": "SecondAttempt",
    "Priority": 1,
    "Request": {
      "Methods": ["GET", "POST"],
      "Path": {
        "Matchers": [{
          "Name": "WildcardMatcher",
          "Pattern": "/google/*",
          "IgnoreCase": false
        }]
      }
    },
    "Response": {
      "StatusCode": 503
    }
  },
  {
    "Scenario": "SucceedOnThirdAttemptScenario",
    "WhenStateIs": "SecondAttempt",
    "SetStateTo": "ThirdAttempt",
    "Priority": 1,
    "Request": {
      "Methods": ["GET", "POST"],
      "Path": {
        "Matchers": [{
          "Name": "WildcardMatcher",
          "Pattern": "/google/*",
          "IgnoreCase": false
        }]
      }
    },
    "Response": {
      "StatusCode": 503
    }
  },
  {
    "Scenario": "SucceedOnThirdAttemptScenario",
    "WhenStateIs": "ThirdAttempt",
    "Priority": 1,
    "Request": {
      "Methods": ["GET", "POST"],
      "Path": {
        "Matchers": [{
          "Name": "WildcardMatcher",
          "Pattern": "/google/*",
          "IgnoreCase": false
        }]
      }
    },
    "Response": {
      "ProxyUrl": "https://google.com",
      "ProxyUrlReplaceSettings ": {
        "OldValue": "/google",
        "NewValue": "",
        "IgnoreCase": true
      }
    }
  }
]

When I try requesting <wiremockAddress>/google/search in my browser, on the third attempt it is proxying to: https://google.com/google/search. Am I missing something here?

Many thanks.

@StefH
Copy link
Collaborator

StefH commented Jan 23, 2024

@mark-hingston
I cannot understand your issue here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants