From 48b180849733471208d160096ec282fdecf01e09 Mon Sep 17 00:00:00 2001
From: Philipp Lang <privat@zoomyboy.de>
Date: Sun, 7 May 2023 21:17:28 +0200
Subject: [PATCH] Add test for login check

---
 .../Middleware/RedirectIfNotInitializedMiddleware.php     | 2 +-
 routes/web.php                                            | 2 ++
 tests/Feature/Initializer/ValidateLoginTest.php           | 8 ++++----
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/app/Http/Middleware/RedirectIfNotInitializedMiddleware.php b/app/Http/Middleware/RedirectIfNotInitializedMiddleware.php
index 8b01d049..75b05845 100644
--- a/app/Http/Middleware/RedirectIfNotInitializedMiddleware.php
+++ b/app/Http/Middleware/RedirectIfNotInitializedMiddleware.php
@@ -11,7 +11,7 @@ class RedirectIfNotInitializedMiddleware
     /**
      * @var array<int, string>
      */
-    public array $dontRedirect = ['initialize.form', 'initialize.store', 'nami.search'];
+    public array $dontRedirect = ['initialize.form', 'initialize.store', 'nami.login-check', 'nami.search'];
 
     /**
      * Handle an incoming request.
diff --git a/routes/web.php b/routes/web.php
index 8f6f4b1e..c8a28de5 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -17,6 +17,7 @@ use App\Dashboard\Actions\IndexAction as DashboardIndexAction;
 use App\Efz\ShowEfzDocumentAction;
 use App\Initialize\Actions\InitializeAction;
 use App\Initialize\Actions\InitializeFormAction;
+use App\Initialize\Actions\NamiLoginCheckAction;
 use App\Initialize\Actions\NamiSearchAction;
 use App\Member\Actions\ExportAction;
 use App\Member\Actions\MemberResyncAction;
@@ -39,6 +40,7 @@ Route::group(['namespace' => 'App\\Http\\Controllers'], function (): void {
 
 Route::group(['middleware' => 'auth:web'], function (): void {
     Route::get('/', DashboardIndexAction::class)->name('home');
+    Route::post('/nami/login-check', NamiLoginCheckAction::class)->name('nami.login-check');
     Route::post('/nami/search', NamiSearchAction::class)->name('nami.search');
     Route::post('/api/member/search', SearchAction::class)->name('member.search');
     Route::get('/initialize', InitializeFormAction::class)->name('initialize.form');
diff --git a/tests/Feature/Initializer/ValidateLoginTest.php b/tests/Feature/Initializer/ValidateLoginTest.php
index 862dd31b..1cfbcb04 100644
--- a/tests/Feature/Initializer/ValidateLoginTest.php
+++ b/tests/Feature/Initializer/ValidateLoginTest.php
@@ -21,7 +21,7 @@ class ValidateLoginTest extends TestCase
     {
         Auth::success(333, 'secret');
 
-        $this->postJson('/nami-login-check', [
+        $this->postJson('/nami/login-check', [
             'mglnr' => 333,
             'password' => 'secret',
         ])->assertStatus(204);
@@ -29,7 +29,7 @@ class ValidateLoginTest extends TestCase
 
     public function testItNeedsPasswordAndMglnr(): void
     {
-        $this->postJson('/nami-login-check', [
+        $this->postJson('/nami/login-check', [
             'mglnr' => '',
             'password' => '',
         ])->assertJsonValidationErrors(['mglnr', 'password']);
@@ -37,7 +37,7 @@ class ValidateLoginTest extends TestCase
 
     public function testMglnrShouldBeNumeric(): void
     {
-        $this->postJson('/nami-login-check', [
+        $this->postJson('/nami/login-check', [
             'mglnr' => 'aaa',
             'password' => 'secret',
         ])->assertJsonValidationErrors(['mglnr']);
@@ -45,7 +45,7 @@ class ValidateLoginTest extends TestCase
 
     public function testLoginCanFail(): void
     {
-        $this->postJson('/nami-login-check', [
+        $this->postJson('/nami/login-check', [
             'mglnr' => '111',
             'password' => 'secret',
         ])->assertJsonValidationErrors(['nami' => 'NaMi Login fehlgeschlagen.']);