Skip to content

Commit f28660a

Browse files
committed
chore: fix tests, upgrade phpunit, raise phpstan level
1 parent f12f493 commit f28660a

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
@@ -14,6 +14,7 @@
1414
namespace Staffbase\plugins\sdk\Validation;
1515

1616
use Lcobucci\JWT\Token;
17+
use Lcobucci\JWT\Token\Plain;
1718
use Lcobucci\JWT\UnencryptedToken;
1819
use Lcobucci\JWT\Validation\Constraint;
1920
use Lcobucci\JWT\Validation\ConstraintViolation;
@@ -35,7 +36,7 @@ public function assert(Token $token): void
3536
}
3637
}
3738

38-
private function hasInstanceId(Token $token): bool
39+
private function hasInstanceId(Plain $token): bool
3940
{
4041
return (bool) $token->claims()->get(SSODataClaimsInterface::CLAIM_INSTANCE_ID);
4142
}

test/PluginSessionTest.php

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

1515
namespace Staffbase\plugins\test;
1616

17+
use PHPUnit\Framework\MockObject\MockObject;
1718
use ReflectionClass;
1819
use phpseclib\Crypt\RSA;
1920
use PHPUnit\Framework\TestCase;
@@ -248,7 +249,7 @@ public function testConstructorUpdatesInfoOnJwt()
248249
->onlyMethods(['openSession', 'closeSession'])
249250
->getMock();
250251

251-
/** @var PluginSession $session */
252+
/** @var PluginSession&MockObject $session */
252253
$session = new $mock($this->pluginId, $this->publicKey);
253254

254255
$this->assertEquals($this->tokenData[SharedClaimsInterface::CLAIM_USER_ROLE], $session->getRole());
@@ -259,7 +260,7 @@ public function testConstructorUpdatesInfoOnJwt()
259260

260261
$this->setupEnvironment(null, $newToken, false);
261262

262-
/** @var PluginSession $newSession */
263+
/** @var PluginSession&MockObject $newSession */
263264
$newSession = new $mock($this->pluginId, $this->publicKey);
264265

265266
$this->assertEquals($newSession->getRole(), $tokenData[SharedClaimsInterface::CLAIM_USER_ROLE]);
@@ -284,7 +285,7 @@ public function testConstructorSupportMultipleInstances()
284285
->onlyMethods(['openSession', 'closeSession'])
285286
->getMock();
286287

287-
/** @var PluginSession $session */
288+
/** @var PluginSession&MockObject $session */
288289
$session = new $mock($this->pluginId, $this->publicKey);
289290

290291

@@ -295,7 +296,7 @@ public function testConstructorSupportMultipleInstances()
295296

296297
$this->setupEnvironment(null, $newToken, false);
297298

298-
/** @var PluginSession $newSession */
299+
/** @var PluginSession&MockObject $newSession */
299300
$newSession = new $mock($this->pluginId, $this->publicKey);
300301

301302
$this->assertEquals($tokenData[SharedClaimsInterface::CLAIM_USER_ROLE], $newSession->getRole());
@@ -330,7 +331,7 @@ public function testGetSessionData()
330331
->onlyMethods(['openSession', 'closeSession'])
331332
->getMock();
332333

333-
/** @var PluginSession $session */
334+
/** @var PluginSession&MockObject $session */
334335
$session = new $mock($this->pluginId, $this->publicKey);
335336

336337
$sessionData = [

test/SSOData/SSODataTest.php

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

1515
namespace Staffbase\plugins\test\SSOData;
1616

17-
use PHPUnit\Framework\MockObject\MockObject;
1817
use PHPUnit\Framework\TestCase;
19-
use Staffbase\plugins\sdk\SSOData\SharedDataTrait;
2018
use Staffbase\plugins\sdk\SSOData\SSODataTrait;
2119
use Staffbase\plugins\test\SSOTestData;
2220

@@ -33,26 +31,12 @@ public function testAccessorsGiveCorrectValues(): void
3331
$tokenData = SSOTestData::getTokenData();
3432
$accessors = SSOTestData::getTokenAccessors();
3533

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

5236
foreach ($accessors as $key => $fn) {
5337
$this->assertEquals(
54-
$ssoData->$fn(),
5538
$tokenData[$key],
39+
$ssoData->$fn(),
5640
"called $fn expected " .
5741
is_array($tokenData[$key]) ? print_r($tokenData[$key], true) : $tokenData[$key],
5842
);
@@ -79,20 +63,7 @@ public function testIsEditorReturnsCorrectValues(): void
7963
$tokenData = SSOTestData::getTokenData();
8064
$tokenData[SSOTestData::CLAIM_USER_ROLE] = $arg;
8165

82-
$ssoData = $this->getMockForTrait(SSODataTrait::class);
83-
84-
$ssoData
85-
->method('hasClaim')
86-
->willReturnCallback(function ($key) use ($tokenData) {
87-
return isset($tokenData[$key]);
88-
});
89-
90-
$ssoData
91-
->method('getClaim')
92-
->willReturnCallback(function ($key) use ($tokenData) {
93-
return $tokenData[$key];
94-
});
95-
66+
$ssoData = new SSODataMock($tokenData);
9667
$this->assertEquals(
9768
$ssoData->isEditor(),
9869
$expect,
@@ -110,14 +81,31 @@ public function testGetDataReturnsCorrectValues(): void
11081

11182
$tokenData = SSOTestData::getTokenData();
11283

113-
$ssoData = $this->getMockForTrait(SharedDataTrait::class);
84+
$ssoData = new SSODataMock($tokenData);
11485

115-
$ssoData
116-
->method('getAllClaims')
117-
->willReturnCallback(function () use ($tokenData) {
118-
return $tokenData;
119-
});
12086

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

0 commit comments

Comments
 (0)