\section{Testfälle}

Dieses Kapitel befasst sich mit allen im Pflichtenheft genannten Tests für den Synchronisationsserver.
Die Tests werden dabei aufgeteilt in Tests, die im Frontend stattfinden und Tests, die das Backend betreffen.

\subsection{Frontend}

Dieser Abschnitt enthält alle Tests, die das Frontend betreffen.

\subsubsection{Registrierung}

Eine Person möchte sich einen Account auf dem Server anlegen.

\begin{table}[h!]
\begin{tabularx}{\textwidth}{X|c}
Teilschritt & Bestanden\\\hline
Webseite aufrufen & Ja\\
Registrierungsseite aufrufen & Ja\\
Daten ohne Passwort zur Wiederholung eintragen & Ja\\
Daten mit zweimal Passwort eingeben & Ja\\
Registrierungslink drücken & Ja\\
Registrierungslink abgelaufen & Ja\\
Registrierungslink nach 24 Stunden anklicken & Ja\\
Mit selber E-Mail nochmals registrieren & Ja
\end{tabularx}
\end{table}

\subsubsection{Passwort Anforderungen}

Es wird getestet, ob das eingegebene Passwort die Mindestanforderungen erfüllen muss, um akzeptiert zu werden.

\begin{table}[h!]
\begin{tabularx}{\textwidth}{X|c}
Teilschritt & Bestanden\\\hline
Passwort \enquote{test} nicht akzeptiert & Ja\\
Passwort \enquote{Test123} nicht akzeptiert & Ja\\
Passwort \enquote{TEST123?} nicht akzeptiert & Ja\\
Passwort \enquote{Test123!?} akzeptiert & Ja
\end{tabularx}
\end{table}

\newpage

\subsubsection{Anmeldung}

Der Benutzer ist registriert und möchte sich nun mit dem registrierten Account anmelden.
Die Option \enquote{Angemeldet bleiben} wird nicht verwendet.
Hierbei ist zu beachten, dass die Anmeldung seit der Implementierungsphase mit einem Benutzernamen statt der E-Mail Adresse erfolgt.

\begin{table}[h!]
\begin{tabularx}{\textwidth}{X|c}
Teilschritt & Bestanden\\\hline
Webseite aufrufen & Ja\\
Ohne Eingabe \enquote{Anmelden} drücken & Ja\\
Nur Nutzernamen eingeben und \enquote{Anmelden} drücken & Ja\\
Nutzername und falsches Passwort eingeben, anschließend \enquote{Anmelden} drücken & Ja\\
Nutzername und richtiges Passwort eingeben, anschließen \enquote{Anmelden} drücken & Ja\\
\enquote{Angemeldet bleiben} Option testen & Ja\\
\enquote{Angemeldet bleiben} Option deaktiviert testen & Ja
\end{tabularx}
\end{table}

\subsubsection{Passwort ändern}

Der Benutzer ist registriert, kennt seine Anmeldedaten und möchte nun das Passwort ändern.
Der Benutzer ist zu Beginn bereits angemeldet.

\begin{table}[h!]
\begin{tabularx}{\textwidth}{X|c}
Teilschritt & Bestanden\\\hline
Zu \enquote{Einstellungen} Menü über das Profil wechseln & Ja\\
Ohne Eingabe \enquote{Passwort ändern} drücken & Ja\\
Falsches altes Passwort eingeben und \enquote{Passwort ändern} drücken & Ja\\
\makecell[l]{Richtiges altes Passwort und neues Passwort, das nicht die Kriterien \\ erfüllt eingeben} & Ja\\
Richtiges altes Passwort und akzeptiertes neues Passwort eingeben & Ja\\
Der Benutzer kann sich abmelden & Ja\\
Das alte Passwort wird beim Anmelden nicht mehr akzeptiert & Ja\\
Der Benutzer kann sich mit dem neuen Passwort anmelden & Ja
\end{tabularx}
\end{table}

\newpage

\subsubsection{Passwort vergessen}

Der Benutzer ist registriert, kennt die E-Mail Adresse jedoch nicht das Passwort mit dem er sich registriert hat.
Ziel hierbei ist es das Passwort zurückzusetzen.

\begin{table}[h!]
\begin{tabularx}{\textwidth}{X|c}
Teilschritt & Bestanden\\\hline
Webseite aufrufen & Ja\\
\enquote{Passwort vergessen} Seite aufrufen & Ja\\
E-Mail Adresse eingeben und \enquote{Bestätigen} Knopf drücken & Ja\\
Gesendeten Link innerhalb von 24 Stunden anklicken & Ja\\
Auf \enquote{Passwort zurücksetzen} Seite neues nicht akzeptiertes Passwort eingeben & Ja\\
Auf \enquote{Passwort zurücksetzen} Seite neues akzeptiertes Passwort eingeben & Ja\\
Auf Anmeldeseite versuchen mit altem Passwort anzumelden & Ja\\
Auf Anmeldeseite mit neuem Passwort anmelden & Ja\\
Gesendeten Link nach 24 Stunden anklicken & Ja\\
Nach Zurücksetzen vom Passwort erneut auf Link klicken & Nein (technisch bedingt)
\end{tabularx}
\end{table}

\subsubsection{Account löschen}

Der Benutzer ist registriert und möchte den Account löschen.
Dazu ist der Benutzer zu Beginn bereits angemeldet und befindet sich in der Einstellungsseite des Profils.
Es sei zu beachten, dass die Aktion den Account zu löschen in die Einstellungsseite verschoben wurde und nicht über eine extra Seite stattfindet.
Auch verlangt die Aktion den Account zu löschen nur noch das Passwort.

\begin{table}[h!]
\begin{tabularx}{\textwidth}{X|c}
Teilschritt & Bestanden\\\hline
Ohne Eingabe \enquote{Account löschen} drücken & Ja\\
Mit falschem Passwort als Eingabe \enquote{Account löschen} drücken & Ja\\
Mit richtigem Passwort als Eingabe \enquote{Account löschen} drücken & Ja\\
Versuchen sich mit gelöschtem Account anzumelden & Ja
\end{tabularx}
\end{table}

\subsubsection{Anleitung ansehen}

Der Benutzer ist registriert und angemeldet und möchte die Anleitung einsehen.

\begin{table}[h!]
\begin{tabularx}{\textwidth}{X|c}
Teilschritt & Bestanden\\\hline
Auf \enquote{Hilfe} Button im \Gls{dashboard} klicken & Ja
\end{tabularx}
\end{table}

\newpage

\subsection{Synchronisation}

Die folgenden Tests betreffen das Synchronisationsfeature des Synchronisationsservers.
Hierbei ist der Benutzer bereits auf dem Server registriert und bestätigt.
Auch ist der Benutzer in allen Fällen auf einem \Gls{podcatcher}, der die \Gls{gpodder} unterstützt, über den registrierten Account angemeldet.

\subsubsection{\Gls{podcast} abonnieren}

Der Benutzer abonniert auf einem \Gls{podcatcher} einen \Gls{podcast} und möchte diesen auf einem anderen Gerät einsehen.

\begin{table}[h!]
\begin{tabularx}{\textwidth}{X|c}
Teilschritt & Bestanden\\\hline
Im \Gls{podcatcher} wird ein neuer \Gls{podcast} den \Glspl{abo} hinzugefügt & Ja\\
Im \Gls{dashboard} des Servers wird der neu abonnierte \Gls{podcast} angezeigt & Ja\\
\makecell[l]{Auf einem anderen synchronisierten Gerät wird der \\ neu abonnierte \Gls{podcast} angezeigt} & Ja
\end{tabularx}
\end{table}

\subsubsection{\Gls{podcast} deabonnieren}

Der Benutzer hat einen \Gls{podcast} abonniert und möchte diesen nun deabonnieren.

\begin{table}[h!]
\begin{tabularx}{\textwidth}{X|c}
Teilschritt & Bestanden \\\hline
Im Podcatcher wird ein abonnierter Podcast deabonniert & Ja\\
\makecell[l]{Im Dashboard des Servers wurde der deabonnierte Podcast \\ aus der Abonnement Liste entfernt} & Ja\\
\makecell[l]{Auf einem anderen synchronisierten Gerät wurde der Podcast\\ ebenfalls deabonniert} & Ja
\end{tabularx}
\end{table}

\newpage

\subsubsection{Episode anhören}

Der Benutzer hört sich eine Episode eines abonnierten \Glspl{podcast} an.

\begin{table}[h!]
\begin{tabularx}{\textwidth}{X|c}
Teilschritt & Bestanden \\\hline
\makecell[l]{Eine Episode wird für eine beliebige Zeit lang angehört \\ und dann pausiert} & Ja\\
\makecell[l]{Im Dashboard des Servers wird die zuletzt gehörte Episode \\ unter \enquote{Zuletzt gehört} angezeigt} & Ja\\
\makecell[l]{Auf einem anderen synchronisierten Gerät kann die \\ Episode weitergehört werden} & Ja\\
\makecell[l]{Stoppt man die Episode wieder wird der alte Zeitpunkt\\ vom neuen Zeitpunkt überschrieben} & Ja
\end{tabularx}
\end{table}
    