Skip to content

Commit 308d81c

Browse files
committed
chore: fix tests, upgrade phpunit, raise phpstan level
1 parent acf2feb commit 308d81c

8 files changed

Lines changed: 293 additions & 425 deletions

File tree

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"phpseclib/phpseclib": "^2.0",
2424
"phpstan/extension-installer": "^1.4",
2525
"phpstan/phpstan-phpunit": "^2.0",
26-
"phpunit/phpunit": "^9.0"
26+
"phpunit/phpunit": "^10.0"
2727
},
2828
"autoload": {
2929
"psr-4": {

composer.lock

Lines changed: 242 additions & 370 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

phpstan.neon.dist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
parameters:
2-
level: 0
2+
level: 2
33
paths:
44
- ./src
55
- ./test

phpunit.xml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" colors="true" bootstrap="vendor/autoload.php" stderr="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
3-
<coverage processUncoveredFiles="true">
4-
<include>
5-
<directory suffix=".php">src</directory>
6-
</include>
7-
</coverage>
2+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" colors="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.3/phpunit.xsd" cacheDirectory=".phpunit.cache"
3+
bootstrap="vendor/autoload.php"
4+
>
5+
<coverage />
6+
87
<testsuites>
98
<testsuite name="Plugins SDK unit test suite">
109
<directory>test</directory>
1110
</testsuite>
1211
</testsuites>
12+
13+
<source>
14+
<include>
15+
<directory>./src</directory>
16+
</include>
17+
</source>
18+
1319
</phpunit>

src/AbstractToken.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
use Lcobucci\JWT\Signer;
1111
use Lcobucci\JWT\Signer\Key;
1212
use Lcobucci\JWT\Signer\Key\InMemory;
13-
use Lcobucci\JWT\Token;
13+
use Lcobucci\JWT\Token\Plain;
1414
use Lcobucci\JWT\Validation\Constraint;
1515
use Lcobucci\JWT\Validation\Constraint\SignedWith;
1616
use Lcobucci\JWT\Validation\RequiredConstraintsViolated;
@@ -19,7 +19,7 @@
1919

2020
abstract class AbstractToken
2121
{
22-
private Token $token;
22+
private Plain $token;
2323

2424
private Key $signerKey;
2525

@@ -31,7 +31,7 @@ abstract class AbstractToken
3131
* Constructor
3232
*
3333
* @param string $appSecret Either a PEM key or a file:// URL.
34-
* @param string $tokenData The token text.
34+
* @param non-empty-string $tokenData The token text.
3535
* @param Signer $signer The algorithm which is used to sign the token
3636
* @param Constraint[] $constrains constrains
3737
*

src/Validation/HasInstanceId.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
namespace Staffbase\plugins\sdk\Validation;
1717

1818
use Lcobucci\JWT\Token;
19+
use Lcobucci\JWT\Token\Plain;
1920
use Lcobucci\JWT\UnencryptedToken;
2021
use Lcobucci\JWT\Validation\Constraint;
2122
use Lcobucci\JWT\Validation\ConstraintViolation;
@@ -37,7 +38,7 @@ public function assert(Token $token): void
3738
}
3839
}
3940

40-
private function hasInstanceId(Token $token): bool
41+
private function hasInstanceId(Plain $token): bool
4142
{
4243
return (bool) $token->claims()->get(SSODataClaimsInterface::CLAIM_INSTANCE_ID);
4344
}

test/PluginSessionTest.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
namespace Staffbase\plugins\test;
1818

19+
use PHPUnit\Framework\MockObject\MockObject;
1920
use ReflectionClass;
2021
use phpseclib\Crypt\RSA;
2122
use PHPUnit\Framework\TestCase;
@@ -250,7 +251,7 @@ public function testConstructorUpdatesInfoOnJwt()
250251
->onlyMethods(['openSession', 'closeSession'])
251252
->getMock();
252253

253-
/** @var PluginSession $session */
254+
/** @var PluginSession&MockObject $session */
254255
$session = new $mock($this->pluginId, $this->publicKey);
255256

256257
$this->assertEquals($this->tokenData[SharedClaimsInterface::CLAIM_USER_ROLE], $session->getRole());
@@ -261,7 +262,7 @@ public function testConstructorUpdatesInfoOnJwt()
261262

262263
$this->setupEnvironment(null, $newToken, false);
263264

264-
/** @var PluginSession $newSession */
265+
/** @var PluginSession&MockObject $newSession */
265266
$newSession = new $mock($this->pluginId, $this->publicKey);
266267

267268
$this->assertEquals($newSession->getRole(), $tokenData[SharedClaimsInterface::CLAIM_USER_ROLE]);
@@ -286,7 +287,7 @@ public function testConstructorSupportMultipleInstances()
286287
->onlyMethods(['openSession', 'closeSession'])
287288
->getMock();
288289

289-
/** @var PluginSession $session */
290+
/** @var PluginSession&MockObject $session */
290291
$session = new $mock($this->pluginId, $this->publicKey);
291292

292293

@@ -297,7 +298,7 @@ public function testConstructorSupportMultipleInstances()
297298

298299
$this->setupEnvironment(null, $newToken, false);
299300

300-
/** @var PluginSession $newSession */
301+
/** @var PluginSession&MockObject $newSession */
301302
$newSession = new $mock($this->pluginId, $this->publicKey);
302303

303304
$this->assertEquals($tokenData[SharedClaimsInterface::CLAIM_USER_ROLE], $newSession->getRole());
@@ -332,7 +333,7 @@ public function testGetSessionData()
332333
->onlyMethods(['openSession', 'closeSession'])
333334
->getMock();
334335

335-
/** @var PluginSession $session */
336+
/** @var PluginSession&MockObject $session */
336337
$session = new $mock($this->pluginId, $this->publicKey);
337338

338339
$sessionData = [

test/SSOData/SSODataTest.php

Lines changed: 26 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616

1717
namespace Staffbase\plugins\test\SSOData;
1818

19-
use PHPUnit\Framework\MockObject\MockObject;
2019
use PHPUnit\Framework\TestCase;
21-
use Staffbase\plugins\sdk\SSOData\SharedDataTrait;
2220
use Staffbase\plugins\sdk\SSOData\SSODataTrait;
2321
use Staffbase\plugins\test\SSOTestData;
2422

@@ -35,26 +33,12 @@ public function testAccessorsGiveCorrectValues(): void
3533
$tokenData = SSOTestData::getTokenData();
3634
$accessors = SSOTestData::getTokenAccessors();
3735

38-
$ssoData = $this->getMockForTrait(SSODataTrait::class);
39-
40-
$ssoData
41-
->expects($this->exactly(count($accessors)))
42-
->method('hasClaim')
43-
->willReturnCallback(function ($key) use ($tokenData) {
44-
return isset($tokenData[$key]);
45-
});
46-
47-
$ssoData
48-
->expects($this->exactly(count($accessors)))
49-
->method('getClaim')
50-
->willReturnCallback(function ($key) use ($tokenData) {
51-
return $tokenData[$key];
52-
});
36+
$ssoData = new SSODataMock($tokenData);
5337

5438
foreach ($accessors as $key => $fn) {
5539
$this->assertEquals(
56-
$ssoData->$fn(),
5740
$tokenData[$key],
41+
$ssoData->$fn(),
5842
"called $fn expected " .
5943
is_array($tokenData[$key]) ? print_r($tokenData[$key], true) : $tokenData[$key],
6044
);
@@ -81,20 +65,7 @@ public function testIsEditorReturnsCorrectValues(): void
8165
$tokenData = SSOTestData::getTokenData();
8266
$tokenData[SSOTestData::CLAIM_USER_ROLE] = $arg;
8367

84-
$ssoData = $this->getMockForTrait(SSODataTrait::class);
85-
86-
$ssoData
87-
->method('hasClaim')
88-
->willReturnCallback(function ($key) use ($tokenData) {
89-
return isset($tokenData[$key]);
90-
});
91-
92-
$ssoData
93-
->method('getClaim')
94-
->willReturnCallback(function ($key) use ($tokenData) {
95-
return $tokenData[$key];
96-
});
97-
68+
$ssoData = new SSODataMock($tokenData);
9869
$this->assertEquals(
9970
$ssoData->isEditor(),
10071
$expect,
@@ -112,14 +83,31 @@ public function testGetDataReturnsCorrectValues(): void
11283

11384
$tokenData = SSOTestData::getTokenData();
11485

115-
$ssoData = $this->getMockForTrait(SharedDataTrait::class);
86+
$ssoData = new SSODataMock($tokenData);
11687

117-
$ssoData
118-
->method('getAllClaims')
119-
->willReturnCallback(function () use ($tokenData) {
120-
return $tokenData;
121-
});
12288

12389
$this->assertEquals($ssoData->getData(), $tokenData, "comparing data array to token");
12490
}
12591
}
92+
93+
class SSODataMock
94+
{
95+
use SSODataTrait;
96+
private $claims;
97+
public function __construct(array $claims = [])
98+
{
99+
$this->claims = $claims;
100+
}
101+
public function hasClaim(string $claim): bool
102+
{
103+
return isset($this->claims[$claim]);
104+
}
105+
public function getClaim(string $claim)
106+
{
107+
return $this->claims[$claim];
108+
}
109+
public function getAllClaims(): array
110+
{
111+
return $this->claims;
112+
}
113+
}

0 commit comments

Comments
 (0)