My title might be overly specific – I’m having trouble formulating the question, since I haven’t dealt with network administration a lot, and especially not SSL / HTTPS. In other words, the answer to “Why haven’t you done . . .” is like to be, “I don’t know much about ….”
I am testing, and the System Under Test (SUT) is a web service calling into the Facebook API using https://graph.facebook.com.
I have a test server set up on a remote machine that will serve pages to http://graph.facebook.com. I can use the hostfile on the SUT server to redirect requests to http://graph.facebook.com to the test server. This works fine when I then type:
curl http://graph.facebook.com
The test server receives the request, and serves back the expected page.
However, as mentioned before, the SUT isn’t using the HTTP site, but the HTTPS site for the Facebook API (naturally). Is there any way I can intercept the outgoing request and redirect it to the HTTP service that I’m running on the other site? I’d like to be able to type:
curl https://graph.facebook.com
and have it be redirected to the fake Facebook service I’m running on the test server. I can configure the servers at both ends.
If this is very difficult, I might also want to put in a feature request for the ability to change the URL for the Facebook API requests. However, I think the dev is using a pre-existing Facebook API module, and this might not be straight-forward. (Okay, I got curious and checked . . . a quick investigation suggests that the API supports data injection of the code that handles the actual HTTPS requests, so he’d have to implement his own version of the interface so that he could pass in a configurable URL that I could set from outside of the code – but I’d still rather not distract him unless it’s really necessary).
I’m using an asis-server on port 80 to fake the Facebook responses, if that is relevant.
The solution we ended up using was a service on the test server that intercepted the HTTPS requests and redirected them to the HTTP service. Our ops person used nginx for this.
We’re still not sure if this will work as a mock for the SUT – it depends on if the SUT is verifying the certificate information or ignoring it. I still might need to ask the developer to implement a feature to support mocking.