You've already forked Traefik-Redis-Api
146 lines
4.5 KiB
PHP
146 lines
4.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Siteworxpro\Tests\Controllers;
|
|
|
|
use Nyholm\Psr7\ServerRequest;
|
|
use Siteworxpro\App\Controllers\MiddlewaresController;
|
|
use Siteworxpro\App\Facades\RedisClient;
|
|
use Siteworxpro\App\Traefik\EntityEnum;
|
|
use Siteworxpro\App\Traefik\ProtocolEnum;
|
|
use Siteworxpro\Tests\Unit;
|
|
|
|
class MiddlewareControllerTest extends Unit
|
|
{
|
|
/**
|
|
* @throws \JsonException
|
|
*/
|
|
public function testGet(): void
|
|
{
|
|
$request = new ServerRequest('GET', '/middlewares');
|
|
|
|
$request = $request->withAttribute('protocol', 'http');
|
|
|
|
RedisClient::expects('getAllMiddlewares')
|
|
->with(ProtocolEnum::HTTP)
|
|
->andReturn(['middleware1', 'middleware2']);
|
|
|
|
$controller = new MiddlewaresController();
|
|
|
|
$response = $controller->get($request);
|
|
|
|
$this->assertEquals(200, $response->getStatusCode());
|
|
$this->assertEquals('["middleware1","middleware2"]', (string)$response->getBody());
|
|
$this->assertEquals('application/json', $response->getHeaderLine('Content-Type'));
|
|
}
|
|
|
|
/**
|
|
* @throws \JsonException
|
|
*/
|
|
public function testGetInd(): void
|
|
{
|
|
$request = new ServerRequest('GET', '/middlewares/foo');
|
|
|
|
$request = $request
|
|
->withAttribute('protocol', 'http')
|
|
->withAttribute('id', 'foo');
|
|
|
|
RedisClient::expects('getMiddleware')
|
|
->with('foo', ProtocolEnum::HTTP)
|
|
->andReturn([
|
|
'traefik/http/middlewares/foo' => 'bar',
|
|
]);
|
|
|
|
$controller = new MiddlewaresController();
|
|
|
|
$response = $controller->get($request);
|
|
|
|
$this->assertEquals(200, $response->getStatusCode());
|
|
$this->assertEquals('{"traefik\/http\/middlewares\/foo":"bar"}', (string)$response->getBody());
|
|
$this->assertEquals('application/json', $response->getHeaderLine('Content-Type'));
|
|
}
|
|
|
|
/**
|
|
* @throws \JsonException
|
|
*/
|
|
public function testPost(): void
|
|
{
|
|
|
|
$request = new ServerRequest('POST', '/middlewares');
|
|
|
|
$request = $request
|
|
->withAttribute('protocol', 'http')
|
|
->withAttribute('id', 'foo')
|
|
->withParsedBody(['foo' => 'bar']);
|
|
|
|
RedisClient::expects('createOrReplace')
|
|
->with('foo', ['foo' => 'bar'], EntityEnum::MIDDLEWARE, ProtocolEnum::HTTP)
|
|
->andReturn(true);
|
|
|
|
$controller = new MiddlewaresController();
|
|
$response = $controller->post($request);
|
|
$this->assertEquals(200, $response->getStatusCode());
|
|
$this->assertEquals('{"message":"Middleware added successfully"}', (string)$response->getBody());
|
|
}
|
|
|
|
public function testPostValidationFailure(): void
|
|
{
|
|
$request = new ServerRequest('POST', '/middlewares');
|
|
|
|
$request = $request
|
|
->withAttribute('protocol', 'http')
|
|
->withAttribute('id', 'foo')
|
|
->withParsedBody([]);
|
|
|
|
RedisClient::expects('createOrReplace')
|
|
->never();
|
|
|
|
$controller = new MiddlewaresController();
|
|
$response = $controller->post($request);
|
|
$this->assertEquals(400, $response->getStatusCode());
|
|
$this->assertEquals('{"error":"Middleware is invalid"}', (string)$response->getBody());
|
|
}
|
|
|
|
/**
|
|
* @throws \JsonException
|
|
*/
|
|
public function testDelete(): void
|
|
{
|
|
$request = new ServerRequest('DELETE', '/middlewares/foo');
|
|
|
|
$request = $request
|
|
->withAttribute('protocol', 'http')
|
|
->withAttribute('id', 'foo');
|
|
|
|
RedisClient::expects('deleteAllKeys')
|
|
->with('foo', EntityEnum::MIDDLEWARE, ProtocolEnum::HTTP)
|
|
->andReturn(true);
|
|
|
|
$controller = new MiddlewaresController();
|
|
$response = $controller->delete($request);
|
|
$this->assertEquals(200, $response->getStatusCode());
|
|
$this->assertEquals('{"message":"Middleware deleted successfully"}', (string)$response->getBody());
|
|
}
|
|
|
|
/**
|
|
* @throws \JsonException
|
|
*/
|
|
public function testDeleteValidationFailure(): void
|
|
{
|
|
$request = new ServerRequest('DELETE', '/middlewares');
|
|
|
|
$request = $request
|
|
->withAttribute('protocol', 'http')
|
|
->withAttribute('id', '');
|
|
|
|
RedisClient::expects('deleteAllKeys')
|
|
->never();
|
|
|
|
$controller = new MiddlewaresController();
|
|
$response = $controller->delete($request);
|
|
$this->assertEquals(400, $response->getStatusCode());
|
|
$this->assertEquals('{"error":"Middleware is invalid"}', (string)$response->getBody());
|
|
}
|
|
}
|