mirror of
https://gitee.com/ShopeX/ECShopX
synced 2026-08-11 13:45:33 +08:00
4.7.0
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\ShuyunOpenPlatform;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use ShuyunOpenPlatformBundle\Auth\ShuyunCallbackSignatureVerifier;
|
||||
|
||||
class ShuyunCallbackSignatureVerifierTest extends TestCase
|
||||
{
|
||||
/** @see .tasks/plans/shuyun-open-platform-auth-automation.md TC-CALLBACK-SIGN-01 */
|
||||
public function testValidSignPasses(): void
|
||||
{
|
||||
$v = new ShuyunCallbackSignatureVerifier();
|
||||
$secret = 'mysecret';
|
||||
$t = '1690000000000';
|
||||
$sign = 'ce57b6a4c37a7b57fea78dc98f79e414';
|
||||
$this->assertTrue($v->verify($secret, $t, $sign));
|
||||
$this->assertSame($sign, $v->expectedSign($secret, $t));
|
||||
}
|
||||
|
||||
/** @see .tasks/plans/shuyun-open-platform-auth-automation.md TC-CALLBACK-SIGN-02 */
|
||||
public function testTamperedSignFails(): void
|
||||
{
|
||||
$v = new ShuyunCallbackSignatureVerifier();
|
||||
$this->assertFalse($v->verify('mysecret', '1690000000000', 'deadbeefdeadbeefdeadbeefdeadbeef'));
|
||||
}
|
||||
|
||||
public function testVerifyHttpCallbackSyRequestTimeHeaderOnly(): void
|
||||
{
|
||||
$v = new ShuyunCallbackSignatureVerifier();
|
||||
$secret = 'mysecret';
|
||||
$sign = '96b3b5d255d9ab923a9e772dd74ff572';
|
||||
$req = Request::create('http://localhost/c?sign='.$sign, 'POST', [], [], [], [
|
||||
'HTTP_SY_REQUEST_TIME' => '1690000000000',
|
||||
], '[]');
|
||||
$this->assertTrue($v->verifyHttpCallback($secret, $req, $sign));
|
||||
}
|
||||
|
||||
public function testVerifyHttpCallbackSortedQueryPlusHeader(): void
|
||||
{
|
||||
$v = new ShuyunCallbackSignatureVerifier();
|
||||
$secret = 'mysecret';
|
||||
$sign = 'bb5b6cd3930cbaa625f7f42b2a111462';
|
||||
$req = Request::create(
|
||||
'http://localhost/c?a=aaa&z=zzz&sign='.$sign,
|
||||
'POST',
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
['HTTP_SY_REQUEST_TIME' => '169'],
|
||||
'[]'
|
||||
);
|
||||
$this->assertTrue($v->verifyHttpCallback($secret, $req, $sign));
|
||||
}
|
||||
|
||||
public function testVerifyHttpCallbackLegacyCallBackTimeInQuery(): void
|
||||
{
|
||||
$v = new ShuyunCallbackSignatureVerifier();
|
||||
$secret = 'mysecret';
|
||||
$sign = 'ce57b6a4c37a7b57fea78dc98f79e414';
|
||||
$req = Request::create(
|
||||
'http://localhost/c?callBackTime=1690000000000&sign='.$sign,
|
||||
'POST',
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
'[]'
|
||||
);
|
||||
$this->assertTrue($v->verifyHttpCallback($secret, $req, $sign));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user