Calling getRef().delete() does not respect the base URL set in .withEndpoint()
Describe the bug
Calling getRef().delete() does not respect the base URL set in .withEndpoint() when creating the OAuth client. It uses api.github.com by default. While this would work in production, it blocks the ability to test this endpoint using local mock servers.
To Reproduce Steps to reproduce the behavior:
- Create an OAuth client as follows
var githubClient = new GitHubBuilder().withOAuthToken("my-token").withEndpoint("http://localhost:8080").build();
- Call the method to delete a ref:
githubClient.getRepo("owner/repo").getRef("heads/my-branch").delete()
- If you inspect the request in a debugger, you will see that the constructed URL has the host
https://api.github.comand nothttp://localhost:8080.
Expected behavior
The getRef().delete() method should respect the base URL passed in via withEndpoint() like the other chained methods of getRepository().
Additional context Library version: 1.321
@ajmalab
What is the JSON that is returned by the call to getRepo and getRef()?
The library uses the returned urls to calculate the endpoint to call for delete().
It sounds like you're trying to run local test server. To do that you need to modify the response body to replace api.github.com with localhost:8080.
We use GitHubApiResponseTransformer:
https://github.com/hub4j/github-api/blob/6ea075b2e4994ddad644143de3214ff48749781f/src/test/java/org/kohsuke/github/GitHubWireMockRule.java#L567
Which then calls mapToMockGitHub which has a bunch of body string replacements:
https://github.com/hub4j/github-api/blob/6ea075b2e4994ddad644143de3214ff48749781f/src/test/java/org/kohsuke/github/GitHubWireMockRule.java#L516
@bitwiseman I see, I'm currently getting around the issue by doing a similar transformation within my service. It has worked as intended in all other circumstances though.
Here's the returned response for getRef():
"ref": "refs/heads/my-test-branch-1",
"node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlQQ==",
"url": "https://api.github.com/repos/dummy-org/example-repo/git/refs/heads/my-test-branch-1",
"object": {
"type": "commit",
"sha": "aa218f56b14c9653891f9e74264a383fa43fefbd",
"url": "https://api.github.com/repos/dummy-org/example-repo/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd"
}
}
It sounds like you're saying the body information isn't consistent with your server URLs.
The scenario you're describing is out of scope for this library.
You are welcome to submit a PR to try and address it but we do not have the bandwidth.