Commit d2faec26 authored by 谢宇轩's avatar 谢宇轩 😅

Merge branch 'FeatDelUUID' into 'master'

refactor: 优化代码,重新设计单元测试的模块

See merge request back-end/easy-http-sdk!7
parents bd7e6458 cbeda114
...@@ -14,7 +14,6 @@ use Jiwei\EasyHttpSdk\Exception\SdkException; ...@@ -14,7 +14,6 @@ use Jiwei\EasyHttpSdk\Exception\SdkException;
use Jiwei\EasyHttpSdk\Exception\TimeOutExcetpion; use Jiwei\EasyHttpSdk\Exception\TimeOutExcetpion;
use Jiwei\EasyHttpSdk\Exception\UnknowResultException; use Jiwei\EasyHttpSdk\Exception\UnknowResultException;
use Jiwei\EasyHttpSdk\Http\SdkRequest; use Jiwei\EasyHttpSdk\Http\SdkRequest;
use Jiwei\EasyHttpSdk\Middleware\JwtMiddleware;
use Psr\Cache\CacheItemPoolInterface; use Psr\Cache\CacheItemPoolInterface;
use Psr\Http\Client\ClientInterface; use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestInterface; use Psr\Http\Message\RequestInterface;
......
...@@ -23,7 +23,7 @@ class ApplicationException extends ConnectException implements SdkExceptionInter ...@@ -23,7 +23,7 @@ class ApplicationException extends ConnectException implements SdkExceptionInter
string $message, string $message,
SdkRequest $request = null, SdkRequest $request = null,
array $handlerContext = [], array $handlerContext = [],
?\Throwable $previous = null ?Throwable $previous = null
) { ) {
$this->endpoint = is_null($request) ? "" : $request->getEndpoint(); $this->endpoint = is_null($request) ? "" : $request->getEndpoint();
$this->action = is_null($request) ? "" : $request->getAction(); $this->action = is_null($request) ? "" : $request->getAction();
......
...@@ -18,8 +18,12 @@ class GuiltyResultException extends UnexpectedValueException ...@@ -18,8 +18,12 @@ class GuiltyResultException extends UnexpectedValueException
* @param int $code * @param int $code
* @param Throwable|null $previous * @param Throwable|null $previous
*/ */
public function __construct($message = "", $options = [], $code = 0, Throwable $previous = null) public function __construct(
{ string $message = "",
array $options = [],
int $code = 0,
Throwable $previous = null
) {
$this->options = $options; $this->options = $options;
parent::__construct($message, $code, $previous); parent::__construct($message, $code, $previous);
} }
...@@ -31,5 +35,4 @@ class GuiltyResultException extends UnexpectedValueException ...@@ -31,5 +35,4 @@ class GuiltyResultException extends UnexpectedValueException
{ {
return $this->options; return $this->options;
} }
} }
...@@ -27,7 +27,7 @@ class SdkException extends BadResponseException implements SdkExceptionInterface ...@@ -27,7 +27,7 @@ class SdkException extends BadResponseException implements SdkExceptionInterface
SdkRequest $request, SdkRequest $request,
ResponseInterface $response, ResponseInterface $response,
array $handlerContext = [], array $handlerContext = [],
?\Throwable $previous = null ?Throwable $previous = null
) )
{ {
$this->endpoint = $request->getEndpoint(); $this->endpoint = $request->getEndpoint();
......
...@@ -22,7 +22,7 @@ class TimeOutExcetpion extends ApplicationException implements SdkExceptionInter ...@@ -22,7 +22,7 @@ class TimeOutExcetpion extends ApplicationException implements SdkExceptionInter
*/ */
public function __construct( public function __construct(
SdkRequest $request, SdkRequest $request,
?\Throwable $previous = null, ?Throwable $previous = null
) )
{ {
parent::__construct($this->message, $request, [], $previous); parent::__construct($this->message, $request, [], $previous);
......
...@@ -18,8 +18,12 @@ class UnknowResultException extends UnexpectedValueException ...@@ -18,8 +18,12 @@ class UnknowResultException extends UnexpectedValueException
* @param int $code * @param int $code
* @param Throwable|null $previous * @param Throwable|null $previous
*/ */
public function __construct($message = "", $result = "", $code = 0, Throwable $previous = null) public function __construct(
{ string $message = "",
string $result = "",
int $code = 0,
Throwable $previous = null
) {
$this->result = $result; $this->result = $result;
parent::__construct($message, $code, $previous); parent::__construct($message, $code, $previous);
} }
......
...@@ -4,6 +4,7 @@ declare(strict_types=1); ...@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Jiwei\EasyHttpSdk; namespace Jiwei\EasyHttpSdk;
use Closure; use Closure;
use InvalidArgumentException;
use Jiwei\EasyHttpSdk\Middleware\Auth\AuthMiddlewareInterface; use Jiwei\EasyHttpSdk\Middleware\Auth\AuthMiddlewareInterface;
use Jiwei\EasyHttpSdk\Middleware\Auth\JwtMiddleware; use Jiwei\EasyHttpSdk\Middleware\Auth\JwtMiddleware;
use Jiwei\EasyHttpSdk\Policy\DefaultErrorHandlingPolicy; use Jiwei\EasyHttpSdk\Policy\DefaultErrorHandlingPolicy;
...@@ -76,6 +77,9 @@ abstract class Option ...@@ -76,6 +77,9 @@ abstract class Option
*/ */
public function setStage(string $stage): self public function setStage(string $stage): self
{ {
if(empty(static::ENDPOINT_HOSTS[$stage])){
throw new InvalidArgumentException("set an undefine stage");
}
$this->stage = $stage; $this->stage = $stage;
return $this; return $this;
} }
...@@ -113,7 +117,6 @@ abstract class Option ...@@ -113,7 +117,6 @@ abstract class Option
*/ */
public function getBaseUrl(): string public function getBaseUrl(): string
{ {
return static::ENDPOINT_HOSTS[$this->getStage()] ?? ""; return static::ENDPOINT_HOSTS[$this->getStage()] ?? "";
} }
......
<?php
use Jiwei\EasyHttpSdk\Option;
use PHPUnit\Framework\TestCase;
final class OptionTest extends TestCase
{
protected mixed $option = null;
/**
* 测试Option实现实例的初始化(以匿名函数形式)
*
* @return void
*/
public function setUp(): void
{
$this->option = new class () extends Option {
/** @var string API鉴权地址 */
private const AUTH_API_ROUTE = "/api/access/token";
/** @var int API鉴权过期时间 */
const AUTH_CACHE_EXPIRES_AT = 2400;
/** @var array<string, string> API HOST */
const ENDPOINT_HOSTS = [
"local" => "127.0.0.1",
"development" => "dev.test.com",
"production" => "pro.test.com",
];
public function authorization(): Closure
{
return function () {
echo sprintf("根据Auth API[%s]获取了TOKEN", self::AUTH_API_ROUTE);
return "i am a token";
};
}
};
}
/**
* 测试
*
* @return void
*/
public function testOptionDefaultDebug()
{
$checkDebug = $this->option->isDebug();
$this->assertEquals($checkDebug, false, "默认的 debug 级别应该是 false ");
}
/**
* Undocumented function
*
* @return void
*/
public function testOptionSetUndefineStage()
{
$defaultStage = $this->option->getStage();
$this->assertEquals($defaultStage, "development", "默认的 stage 应该是 development ");
$this->expectException(InvalidArgumentException::class);
$this->option->setStage("WoooHaa");
}
/**
* Undocumented function
*
* @return void
*/
public function testOptionBaseUrl()
{
$defaultUrl = $this->option->getBaseUrl();
$this->assertEquals($defaultUrl, "dev.test.com", "默认的 stage 应该是 development,所以默认的 url 是 devtest");
$this->option->setStage("production");
$proUrl = $this->option->getBaseUrl();
$this->assertEquals($proUrl, "pro.test.com", "设置 Pro stage 应该可以正常显示");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment