Skip to content
Snippets Groups Projects
Commit 1890d5a6 authored by Hoop, Bert Jan de's avatar Hoop, Bert Jan de
Browse files

Merge branch 'L02COLL-270-add-put-method' into prod

* L02COLL-270-add-put-method:
  L02COLL-270 set version 0.3.2
  L02COLL-270 add http_put method to HttpClientTrait
parents 1b69cf30 24b06840
No related branches found
No related tags found
No related merge requests found
......@@ -9,7 +9,7 @@
"homepage": "http://library.wur.nl"
}
],
"version": "0.3.1",
"version": "0.3.2",
"require": {
"php": ">=7.0.0",
"guzzlehttp/guzzle": "^6.3"
......
......@@ -219,7 +219,7 @@ trait HttpClientTrait {
/**
* run post request with the http_client
* send post request with the http_client
* @param type $url post url
* @param type $body post data
* @param array $http_options optional http client options, is merged with options from get_http_options()
......@@ -235,6 +235,22 @@ trait HttpClientTrait {
}
/**
* send put request with the http_client
* @param type $url put url
* @param type $body put data
* @param array $http_options optional http client options, is merged with options from get_http_options()
* @return \GuzzleHttp\Psr7\Response
*/
public function http_put(string $url, $body, array $http_options = []) {
$this->debug("http put, url: $url, data size: " . count($body));
$options = $this->get_merged_http_options($http_options);
$options["body"] = $body;
return $this->http_request("PUT", $url, $options);
}
/**
* low level routine to send http request with the http_client
* @param string $method
......
......@@ -316,6 +316,58 @@ class HttpClientTraitTest extends \PHPUnit_Framework_TestCase {
$this->assertEquals("<test>response 3</test>", $response->getBody(), 'request 3 response body');
}
public function test_http_put() {
$testclient = new HttpClient();
//$testclient->set_logger(new \Monolog\Logger('test'));
$responses = [
new Response(200, ["Content-Type" => "text/xml"], "<test>response 1</test>"),
new Response(200, ["Content-Type" => "text/xml"], "<test>response 2</test>"),
new Response(200, ["Content-Type" => "text/xml"], "<test>response 3</test>"),
];
$request_history = [];
$mock_httpclient = get_mock_httpclient($responses, $request_history);
$testclient->set_http_client($mock_httpclient);
//
$testclient->set_http_options(["headers" => ["Content-Type" => "text/xml"]]);
$response = $testclient->http_put("http://localhost/1", "<body>1</body>");
// check if request is correctly done
$request = $request_history[0]['request'];
$this->assertEquals("PUT", $request->getMethod(), 'request 1 with PUT method');
$this->assertEquals("http://localhost/1", $request->getUri(), 'request 1 url');
$this->assertEquals(["text/xml"], $request->getHeader("Content-Type"), 'request 1 content type from default options');
$this->assertEquals("<body>1</body>", $request->getBody(), 'request 1 body');
// check response
$this->assertEquals($response, $testclient->get_http_response(), 'request 1 response is set in property');
$this->assertEquals("<test>response 1</test>", $response->getBody(), 'request 1 response body');
$testclient->set_http_headers(["Content-Type" => "application/xml"]);
$response = $testclient->http_put("http://localhost/2", "<body>2</body>");
// check if request is correctly done
$request = $request_history[1]['request'];
$this->assertEquals("PUT", $request->getMethod(), 'request 2 with PUT method');
$this->assertEquals("http://localhost/2", $request->getUri(), 'request 2 url');
$this->assertEquals(["application/xml"], $request->getHeader("Content-Type"), 'request 2 content type from default options');
$this->assertEquals("<body>2</body>", $request->getBody(), 'request 2 body');
// check response
$this->assertEquals($response, $testclient->get_http_response(), 'request 2 response is set in property');
$this->assertEquals("<test>response 2</test>", $response->getBody(), 'request 2 response body');
$response = $testclient->http_put("http://localhost/3", "<body>3</body>", ["headers" => ["Content-Type" => "last/xml"]]);
// check if request is correctly done
$request = $request_history[2]['request'];
$this->assertEquals("PUT", $request->getMethod(), 'request 3 with PUT method');
$this->assertEquals("http://localhost/3", $request->getUri(), 'request 3 url');
$this->assertEquals(["last/xml"], $request->getHeader("Content-Type"), 'request 3 content type from default options');
$this->assertEquals("<body>3</body>", $request->getBody(), 'request 3 body');
// check response
$this->assertEquals($response, $testclient->get_http_response(), 'request 3 response is set in property');
$this->assertEquals("<test>response 3</test>", $response->getBody(), 'request 3 response body');
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment