diff --git a/communication/provider/matrix/tests/matrix_client_test.php b/communication/provider/matrix/tests/matrix_client_test.php index a3e8c895086..646cc6a89af 100644 --- a/communication/provider/matrix/tests/matrix_client_test.php +++ b/communication/provider/matrix/tests/matrix_client_test.php @@ -20,10 +20,7 @@ use communication_matrix\local\command; use communication_matrix\local\spec\v1p7; use communication_matrix\local\spec\features; use communication_matrix\tests\fixtures\mocked_matrix_client; -use core\http_client; use GuzzleHttp\Handler\MockHandler; -use GuzzleHttp\HandlerStack; -use GuzzleHttp\Middleware; use GuzzleHttp\Psr7\Response; use moodle_exception; @@ -89,16 +86,13 @@ class matrix_client_test extends \advanced_testcase { ?array $versions, string $expectedversion, ): void { - // Create a mock and queue two responses. - - $mock = new MockHandler([ - $this->get_mocked_version_response($versions), - ]); - $handlerstack = HandlerStack::create($mock); $container = []; - $history = Middleware::history($container); - $handlerstack->push($history); - $client = new http_client(['handler' => $handlerstack]); + ['client' => $client, 'mock' => $mock] = $this->get_mocked_http_client( + history: $container, + ); + + $mock->append($this->get_mocked_version_response($versions)); + mocked_matrix_client::set_client($client); $instance = mocked_matrix_client::instance( @@ -121,15 +115,15 @@ class matrix_client_test extends \advanced_testcase { * Test that the instance method returns a valid instance for the given versions. */ public function test_instance_cached(): void { - $mock = new MockHandler([ - $this->get_mocked_version_response(), - $this->get_mocked_version_response(), - ]); - $handlerstack = HandlerStack::create($mock); $container = []; - $history = Middleware::history($container); - $handlerstack->push($history); - $client = new http_client(['handler' => $handlerstack]); + ['client' => $client, 'mock' => $mock] = $this->get_mocked_http_client( + history: $container, + ); + + // Queue two responses. + $mock->append($this->get_mocked_version_response()); + $mock->append($this->get_mocked_version_response()); + mocked_matrix_client::set_client($client); $instance = mocked_matrix_client::instance('https://example.com', 'testtoken'); @@ -153,16 +147,10 @@ class matrix_client_test extends \advanced_testcase { * Test that the instance method throws an appropriate exception if no support is found. */ public function test_instance_no_support(): void { - // Create a mock and queue two responses. + ['client' => $client, 'mock' => $mock] = $this->get_mocked_http_client(); + + $mock->append($this->get_mocked_version_response(['v99.9'])); - $mock = new MockHandler([ - $this->get_mocked_version_response(['v99.9']), - ]); - $handlerstack = HandlerStack::create($mock); - $container = []; - $history = Middleware::history($container); - $handlerstack->push($history); - $client = new http_client(['handler' => $handlerstack]); mocked_matrix_client::set_client($client); $this->expectException(moodle_exception::class); diff --git a/communication/provider/matrix/tests/matrix_client_test_trait.php b/communication/provider/matrix/tests/matrix_client_test_trait.php index e3609913daf..cbf5f91e471 100644 --- a/communication/provider/matrix/tests/matrix_client_test_trait.php +++ b/communication/provider/matrix/tests/matrix_client_test_trait.php @@ -67,19 +67,24 @@ trait matrix_client_test_trait { array &$historycontainer = [], ?MockHandler $mock = null, ): matrix_client { + // If no mock is provided, use get_mocked_http_client to create the mock and client. if ($mock === null) { - $mock = new MockHandler(); + ['mock' => $mock, 'client' => $client] = $this->get_mocked_http_client( + history: $historycontainer + ); + } else { + // If mock is provided, create the handlerstack and history middleware. + $handlerstack = HandlerStack::create($mock); + $history = Middleware::history($historycontainer); + $handlerstack->push($history); + $client = new http_client(['handler' => $handlerstack]); } // Add the version response. $mock->append($this->get_mocked_version_response([$version])); - $handlerstack = HandlerStack::create($mock); - $history = Middleware::history($historycontainer); - $handlerstack->push($history); - $client = new http_client(['handler' => $handlerstack]); mocked_matrix_client::set_client($client); - $client = mocked_matrix_client::instance( + $instance = mocked_matrix_client::instance( 'https://example.com', 'testtoken', ); @@ -87,7 +92,7 @@ trait matrix_client_test_trait { // Remove the request that is required to fetch the version from the history. array_shift($historycontainer); - return $client; + return $instance; } /**