Add Login fake
This commit is contained in:
parent
d666f78714
commit
513cf6616d
|
@ -7,13 +7,13 @@ use Illuminate\Http\Client\Response;
|
|||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Str;
|
||||
use Zoomyboy\LaravelNami\Fakes\Fake;
|
||||
use Zoomyboy\LaravelNami\Fakes\FakeInstance;
|
||||
use Zoomyboy\LaravelNami\Fakes\LoginFake;
|
||||
|
||||
class FakeBackend {
|
||||
|
||||
private $members;
|
||||
private $passwords;
|
||||
public $groups = [];
|
||||
public $loggedInAs = null;
|
||||
public ?array $loggedIn = null;
|
||||
|
||||
public function __construct() {
|
||||
$this->members = collect([]);
|
||||
|
@ -25,8 +25,7 @@ class FakeBackend {
|
|||
}
|
||||
|
||||
public function init($cookie) {
|
||||
$this->cookie = $cookie;
|
||||
return $this;
|
||||
return Http::withOptions(['cookies' => $cookie->forBackend()]);
|
||||
}
|
||||
|
||||
public function put($url, $data) {
|
||||
|
@ -135,24 +134,6 @@ class FakeBackend {
|
|||
]);
|
||||
}
|
||||
|
||||
public function post($url, $data) {
|
||||
if ($url === 'https://nami.dpsg.de/ica/rest/nami/auth/manual/sessionStartup') {
|
||||
if (!data_get($data, 'username') || !data_get($data, 'password')) {
|
||||
return $this->wrongLoginResponse();
|
||||
}
|
||||
|
||||
if ($this->passwords[data_get($data, 'username')] === data_get($data, 'password')) {
|
||||
$this->loggedInAs = data_get($data, 'username');
|
||||
$this->cookie->set($data['username'], 'rZMBv1McDAJ-KukQ6BboJBTq.srv-nami06');
|
||||
return $this->response([
|
||||
"statusCode" => 0,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->urlNotFoundException($url);
|
||||
}
|
||||
|
||||
private function wrongLoginResponse() {
|
||||
return $this->response([
|
||||
"servicePrefix" => null,
|
||||
|
@ -181,9 +162,21 @@ class FakeBackend {
|
|||
return new Response(new GuzzleResponse(200, [], json_encode($data)));
|
||||
}
|
||||
|
||||
public function fakeNamiPassword($mglnr, $password, $groups) {
|
||||
$this->passwords[$mglnr] = $password;
|
||||
$this->groups[$mglnr] = $groups;
|
||||
/**
|
||||
* @param string $mglnr
|
||||
* @param array<int, array> $groups
|
||||
*/
|
||||
public function fakeLogin(string $mglnr, array $groups): void
|
||||
{
|
||||
app(LoginFake::class)->succeeds($mglnr);
|
||||
foreach ($groups as $group) {
|
||||
GroupFake::addGroup($group);
|
||||
}
|
||||
}
|
||||
|
||||
public function fakeFailedLogin(string $mglnr): void
|
||||
{
|
||||
app(LoginFake::class)->fails($mglnr);
|
||||
}
|
||||
|
||||
public function asForm() {
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
namespace Zoomyboy\LaravelNami\Cookies;
|
||||
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use GuzzleHttp\Cookie\SetCookie;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
class CacheCookie {
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace Zoomyboy\LaravelNami\Fakes;
|
||||
|
||||
abstract class Fake {
|
||||
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
namespace Zoomyboy\LaravelNami\Fakes;
|
||||
|
||||
use Illuminate\Http\Client\Response;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
|
||||
class LoginFake extends Fake {
|
||||
|
||||
public function succeeds(string $mglnr): void
|
||||
{
|
||||
Http::fake(function($request) use ($mglnr) {
|
||||
if ($request->url() === 'https://nami.dpsg.de/ica/pages/login.jsp') {
|
||||
return Http::response('', 200);
|
||||
}
|
||||
|
||||
if ($request->url() === 'https://nami.dpsg.de/ica/rest/nami/auth/manual/sessionStartup') {
|
||||
return Http::response('{"statusCode": 0}', 302)->then(function($r) use ($mglnr) {
|
||||
app('nami.cookie')->set($mglnr, 'rZMBv1McDAJ-KukQ6BboJBTq.srv-nami06');
|
||||
return $r;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function fails(string $mglnr): void
|
||||
{
|
||||
Http::fake(function($request) {
|
||||
if ($request->url() === 'https://nami.dpsg.de/ica/pages/login.jsp') {
|
||||
return Http::response('', 200);
|
||||
}
|
||||
|
||||
if ($request->url() === 'https://nami.dpsg.de/ica/rest/nami/auth/manual/sessionStartup') {
|
||||
return Http::response('{"statusCode": 3000, "statusMessage": "Benutzer nicht gefunden oder Passwort falsch"}', 200);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -25,8 +25,4 @@ trait FakesNami {
|
|||
}
|
||||
}
|
||||
|
||||
public function fakeNamiPassword($mglnr, $password, $groups) {
|
||||
Backend::fakeNamiPassword($mglnr, $password, $groups);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue