Strona logowania dostępowego (AccessLoginPage)
Ścieżka: /panel-informacji Dostęp: Publiczny
TC-ALG-001 — Przekierowanie zalogowanego użytkownika
| # | Akcja | Oczekiwany rezultat |
| 1 | Wejdź na /panel-informacji mając aktywną sesję klienta | Automatyczne przekierowanie do panelu klienta |
| 2 | Wejdź na /panel-informacji mając aktywną sesję trenera | Automatyczne przekierowanie do panelu trenera |
| 3 | Wejdź na /panel-informacji bez sesji | Formularz logowania widoczny, brak przekierowania |
TC-ALG-002 — Poprawne logowanie
| # | Akcja | Oczekiwany rezultat |
| 1 | Zaloguj jako klient (poprawny e-mail + PIN, typ: klient) | Sesja zapisana w sessionStorage, przekierowanie do panelu klienta |
| 2 | Zaloguj jako trener (poprawny e-mail + PIN, typ: trener) | Sesja zapisana w sessionStorage, przekierowanie do panelu trenera |
| 3 | Po przekierowaniu sprawdź sessionStorage | Klucze access_token, access_expires_at, access_entity_type, access_entity są wypełnione |
TC-ALG-003 — Niepoprawne dane logowania
| # | Akcja | Oczekiwany rezultat |
| 1 | Podaj błędny PIN (poprawny e-mail, zły PIN) | Błąd 401 — komunikat o nieprawidłowych danych, sesja nie zostaje utworzona |
| 2 | Podaj błędny e-mail (zły e-mail, poprawny PIN) | Błąd 401 — komunikat o nieprawidłowych danych |
| 3 | Podaj poprawne dane, ale zły typ encji (e-mail klienta + typ trener) | Błąd 401/403 — logowanie nieudane |
| # | Akcja | Oczekiwany rezultat |
| 1 | Podaj PIN krótszy niż 6 cyfr | Logowanie zablokowane — PIN musi mieć dokładnie 6 cyfr |
| 2 | Podaj PIN dłuższy niż 6 cyfr | Logowanie zablokowane — PIN musi mieć dokładnie 6 cyfr |
| 3 | Podaj PIN zawierający litery (np. abc123) | Logowanie zablokowane — PIN musi składać się wyłącznie z cyfr |
| 4 | Podaj nieprawidłowy format e-mail (np. user@) | Logowanie zablokowane — walidacja formatu e-mail |
TC-ALG-005 — Rate limiting (zbyt wiele prób logowania)
| # | Akcja | Oczekiwany rezultat |
| 1 | Wykonaj wielokrotne nieudane próby logowania aż do odpowiedzi 429 | Przycisk logowania zostaje zablokowany, wyświetlony czas pozostały do odblokowania |
| 2 | Poczekaj do upływu czasu blokady | Formularz logowania zostaje odblokowany automatycznie |
| 3 | Odśwież stronę podczas aktywnej blokady | Blokada nadal aktywna — czas wyliczany względem serwera, nie zegara przeglądarki |
TC-ALG-006 — Wybór typu encji (klient / trener)
| # | Akcja | Oczekiwany rezultat |
| 1 | Przełącz typ z trenera na klienta i zaloguj | Sesja tworzona z entity_type = 'client', przekierowanie do panelu klienta |
| 2 | Przełącz typ z klienta na trenera i zaloguj | Sesja tworzona z entity_type = 'trainer', przekierowanie do panelu trenera |
| 3 | Domyślny typ przy wejściu na stronę | Domyślnie wybrany typ: trener |
TC-ALG-007 — Sesja po zamknięciu karty
| # | Akcja | Oczekiwany rezultat |
| 1 | Zaloguj się, zamknij kartę przeglądarki, otwórz ponownie /panel-informacji | Brak sesji (sessionStorage wyczyszczony) — formularz logowania widoczny |
| 2 | Zaloguj się, otwórz nową kartę w tej samej przeglądarce | Nowa karta nie ma dostępu do sesji — sessionStorage jest izolowany per karta |