51 lines
1.7 KiB
PHP
51 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature\Nami;
|
|
|
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|
use Illuminate\Support\Facades\Crypt;
|
|
use Illuminate\Testing\TestResponse;
|
|
use Tests\EndToEndTestCase;
|
|
use Tests\TestCase;
|
|
use Zoomyboy\LaravelNami\Authentication\Auth;
|
|
use Zoomyboy\LaravelNami\Data\MemberEntry;
|
|
use Zoomyboy\LaravelNami\Fakes\SearchFake;
|
|
|
|
class RemoteSearchTest extends TestCase
|
|
{
|
|
|
|
use DatabaseTransactions;
|
|
|
|
public function testItCanLoginRemotelyWithUser(): void
|
|
{
|
|
Auth::success(90100, 'secret');
|
|
$response = $this->loginRemotely(90100, 'secret');
|
|
$response->assertOk();
|
|
|
|
$accessTokenPayload = Crypt::decryptString($response->json('access_token'));
|
|
$this->assertEquals(['mglnr' => 90100, 'password' => 'secret'], json_decode($accessTokenPayload, true));
|
|
}
|
|
|
|
public function testItCanSearchForOwnGroupMembers(): void
|
|
{
|
|
Auth::success(90100, 'secret');
|
|
app(SearchFake::class)->fetches(1, 0, 50, [
|
|
MemberEntry::factory()->toMember(['groupId' => 100, 'id' => 20, 'memberId' => 56, 'firstname' => 'Max', 'lastname' => 'Muster']),
|
|
]);
|
|
$accessToken = $this->loginRemotely()->json('access_token');
|
|
|
|
$this->postJson(route('remote.nami.search'), [], ['Authorization' => 'Bearer ' . $accessToken])
|
|
->assertOk()
|
|
->assertJsonPath('0.id', 56)
|
|
->assertJsonPath('0.name', 'Max Muster');
|
|
}
|
|
|
|
protected function loginRemotely(?int $mglnr = 90100, ?string $password = 'secret'): TestResponse
|
|
{
|
|
return $this->postJson(route('remote.nami.token'), [
|
|
'mglnr' => $mglnr,
|
|
'password' => $password,
|
|
]);
|
|
}
|
|
}
|