I. Use Case - Connect:
Note: May verify IP address Before Hand, final design not decided
Valid IP address and Server online
Pre-condition: Client is open and Server is online
Post-condition: Connection with Server complete, message sent “Connection Successful” (Just a general example for the message, whatever gets the point across)
Story
Next use case(s) - Login, Registration, Recover Password, Disconnect (if the user wanted to immediately Disconnect for some reason)
Valid address and Server offline
Pre-condition: Client is open
Post-condition: Connection with Server incomplete, message sent “Server Offline or Incorrect IP Address”
Story
Input for IP address is “localhost”
Connection with server attempted
error message received
Check if format of ip address follows (0 - 255).(0 - 255).(0 - 255).(0 - 255) or is “localhost”
Formulate and send message
End of story
Next use case(s) - Connect (can’t move on without proper connection)
Invalid IP address
Pre-condition: Client is open
Post-condition: Connection with Server incomplete, message sent “Server Offline or Invalid IP Address”
Story
Input for IP address is “i like pi”
Connection with server attempted
error message received
Check if format of ip address follows (0 - 255).(0 - 255).(0 - 255).(0 - 255) or is “localhost”
Formulate and send message
End of story
Next use case(s) - Connect
II. Use Case - Disconnect:
Client/Server connection severed (goal) with [X], User isn’t Logged in
Pre-condition: Client is connected to Server, and User isn’t Logged in
Post-condition: Client is disconnected from Server, then Client is terminated
Story
Next use case(s) - N/A (Client is Closed)
Question: Should we handle an accidental disconnected
Client/Server connection severed (goal) with [X], User is Logged in
Pre-condition: Client is connected to Server, User is Logged in
Post-condition: User is Logged out, Client is disconnected from Server, then Client is terminated
Story
The user attempts to terminate the client via the [X] in the top Corner
The User is logged out of Client
Client is disconnected from server
Client is terminated
End of story
Next use case(s) - N/A (Client is Closed)
Client/Server connection severed (goal) and User isn’t Logged in
Pre-condition: Client is connected to Server, User isn’t Logged in
Post-condition: Client is disconnected to Server, message sent “Disconnected”
Story
The presses “disconnect” button on current window
Client is disconnected from server
Client switches back to “Connect” window
End of story
Next use case(s) - Connect
Client/Server connection severed (goal) and User is Logged in
Pre-condition: Client is connected to Server, User is Logged in
Post-condition: Client is disconnected to Server, message sent “Disconnected”
Story
The presses “Disconnect” button on current window
User is Logged out of Client
Client is disconnected from server
Client switches back to “Connect” window
End of story
Next use case(s) - Connect
Client/Server connection severed (not the goal/accidental disconnect) and User isn’t Logged in
Pre-condition: Client is connected to Server, User isn’t Logged in
Post-condition: Client is disconnected to Server, message sent “Disconnected”
Story
The user loses internet connection
Client is disconnected from server
Client switches back to “Connect” window
End of story
Next use case(s) - Connect
Client/Server connection severed (not the goal/accidental disconnect) and User is Logged in
Pre-condition: Client is connected to Server, User is Logged in
Post-condition: Client is disconnected to Server, message sent “Disconnected”
Story
Next use case(s) - Connect (if they didn’t directly close the app)
Question: Should we ask for confirmation, when attempting to close the client or disconnect from the server?
Question: Should we close the app when disconnected from the server or internet, or should we have a static option to reconnect to the server where the rest of the client functions are disabled, or something of the like? This is for a sudden disconnect from the server.
III. Use Case - Registration:
Valid input for username, password, and email.
Pre-condition: Connection with Server complete
Post-condition: The user is logged in and the user enters the App and tries to register, message sent “Account Registered”
Story
User inputs username “krillinIsHere”
User inputs password “I1ovemyse1fs0mekri11”
User inputs email address “HiThere@gmail.com”
Check if email already exists
Check if username already exists
Write info to User Database
Message sent
End of story
Next use case(s) - Login, Disconnect
Username - already registered
Pre-condition: Connection with Server complete
Post-condition: Return invalid username message
Story
User inputs username “krillinIsHere”
User inputs password “I1ovemyse1fs0mekri11”
User inputs email address “HiThere@gmail.com”
Check for username and and email address database for repeats
There are repeats
Return message “Username already registered”
End of Story
Next use case(s) - Registration, login, or disconnect.
Username - username field empty
Pre-condition: Connection with Server complete
Post-condition: Return username does not meet the requirements message
Story
User inputs username “”
User inputs password “I1ovemyse1fs0mekri11”
User inputs email address “HiThere@gmail.com
Check if username fits the username requirements
Return message “Invalid Registration - Username requirements not satisfied”
End of Story
Next use case(s) - Registration, Login, or Disconnect
Email - invalid email form
Next use case(s) - Registration, login, or disconnect
Email - already registered
Pre-condition: Connection with Server complete
Post-condition: Return invalid email address message
Story
User inputs username “krillinIsHere”
User inputs password “I1ovemyse1fs0mekri11”
User inputs email address “HiThere@gmail.com”
Check if username fits the username requirements
Check if password fits the password requirements
Check if the email address fits email address requirements
Check if the email address has already been registered
Return message “Email address already registered”
End of Story
Next use case(s) - Registration, login, disconnect
Question: Can a single email have multiple accounts/ usernames?
[Strong Password Enforcement]
Password - Invalid minimum Length, length less than 8.
Note: m equals minimum length
Pre-condition: Connection with Server complete
Post-condition: Return invalid password message
Story
User inputs username “IlikePi37”
User inputs password “a”
User inputs email address “birdsRcool@gmail.com”
Check if username fits the username requirements
Check if password fits the password requirements
Check if the email address fits email address requirements
Check if the email address has already been registered
Return message “Invalid password, too short”
End of Story
Next use case(s) - Registration, login, disconnect
Question: What is the min length for password (and is there one for usernames)? Is there a max length for both? Any more requirements for usernames and passwords aside from the ones provided in the Specifications?
Password - Contains invalid Characters
Pre-condition: Connection with Server complete
Post-condition: Return invalid password message
Story
User inputs username “NiceO7”
User inputs password “ideemtheeworthyP©134”
User inputs email address “rocks@gmail.com”
Check if username fits the username requirements
Check if password fits the password requirements
Check if the email address fits email address requirements
Check if the email address has already been registered
Return message “Invalid password, invalid symbol present”
End of Story
Next use case(s) - Registration, login, disconnect
Password - Invalid minimum Length and Contains invalid Characters
Pre-condition: Connection with Server complete
Post-condition: Return password does not meet requirements message
Story
User inputs username name benistherealk1ng
User inputs password “©”
User inputs email address “rocks@gmail.com”
Check if username fits the username requirements
Check if password fits the password requirements
Check if the email address fits email address requirements
Check if the email address has already been registered
Return message “Invalid password - invalid minimum length and invalid symbol present”
End of Story
Next use case(s) - Registration, login, or disconnect
Password - Doesn’t Include numbers
Pre-condition: Connection with Server complete
Post-condition: Return invalid password message
Story
User inputs username “Nice07”
User inputs password “password”
User inputs email address “birdsRcool@gmail.com”
Check if username fits the username requirements
Check if password fits the password requirements
Check if the email address fits email address requirements
Check if the email address has already been registered
Return message “Invalid password: Password must include a combination of numbers and letters”
End of Story
Next use case(s) - Registration, login, or disconnect
Password - Doesn’t include letters
Pre-condition: Connection with Server complete
Post-condition: Return invalid password message
Story
User inputs username “Nice07”
User inputs password “1234567”
User inputs email address “birdsRcool@gmail.com”
Check if username fits the username requirements
Check if password fits the password requirements
Check if the email address fits email address requirements
Check if the email address has already been registered
Return message “Invalid password - Password must include a combination of numbers and letters”
End of Story
Next use case(s) - Registration, login, or disconnect
IV. Use Case - Login:
Login Successful
Pre-condition: Connection with Server complete
Post-condition: Display next screen/message after login
Story
The enter username and passwords are checked against the passwords in the server and the login count is reset to 0.
Next use case(s) - Logout or disconnect
Invalid Username
Pre-condition: Connection with Server complete
Post-condition: Return invalid login message
Story
The user types in the username “”
The user types the password
The user clicks “Log in”
Return message generic “Invalid login” message
End of Story
Next use case(s) - Registration, password recovery, login, or disconnect
Invalid Password (Attempt 0-3)
Pre-condition: Connection with Server complete
Post-condition: Return invalid login message and number of attempts left before account gets locked
Story
The user types in the username “ben s”
The user types an incorrect password
The user clicks “Log in”
Searches for the entered username in User Database, then compares entered password to the password in the User Database
Username is in the server database; password is not in the server database
Increment login count by 1
Return message generic “Invalid login” message
End of Story
Next use case(s) - Registration, password recovery, login, or disconnect
Invalid Password (Attempt 4/ Locked out)
Pre-condition: Connection with Server complete
Post-condition: Return locked account message
Story
The user types in the username “ben s”
The user types an incorrect password
The user clicks “Log in”
Return message “This account is now locked. ”
End of Story
Next use case(s) - Registration, password recovery, login, or disconnect
V. Use Case - Logout:
Logout Successful
Pre-condition: Connection with Server complete
Post-condition: Return successful logout message
Story
User clicks Logout
Checks if connection is still active
Unconfirmed changes for account are cleared and cancelled
Client returns to login page, all fields empty
End of Story
Next use case(s) - Register, password recovery, Login, or Disconnect
Question: Should we ask for confirmation before logging off?
Already disconnected *possible safety net
Pre-condition: The user has been disconnected from
Post-condition: Return status message
Story
Next use case(s) - Connect
VI. Use Case - Password recovery:
Valid username
End of story
Valid username and Account is Locked
End of story
Invalid username
Pre-condition: The user clicks on Forgot your password
Post-condition: Return confirmation message
Story
User enters a username
Server checks for username in User Database
Return a general attempt message “If username is valid, your password has been sent to the email on record”
End of story
Next use case(s) - Disconnect, Password recovery, Login
VII. Use Case - Change password:
Valid old password, new password field and verify new password field match
Pre-condition: Connection with server complete
Post-condition: Password is successfully changed
Story
The user clicks on change password from being logged in
The user types in new password “comSciC1A22”
The user retypes new password “comSciC1A22”
The user clicks submit
Check if old password matches address on record
Check if new passwords match
Check if passwords meet strong password enforcement criteria
Write new password to data structure
The user is informed of the change
End of story
Next use case(s) - Logout, Disconnect, Change Password (No limit to how many times the user can change their password)
Question: Where can you Change password?
What should happen after the user completes the password change. Will they immediately be returned to the main screen or will they be informed via a pop up, will the screen tell them and time out returning them to the main screen/ will they be a button to return to main after they read the message. Are you automatically logged in after changing your password?
Old password and new password match
Pre-condition: Connection with server complete
Post-condition: Return invalid password change message
Story
User is logged in
User clicks on change password
The user types in new password “12345”
The user verifies and retypes new password “12345”
Check database to see if new password matches old password
Return message: “Invalid password change: old and new password cannot be the same”
End of story
Next use case(s) - Logout, Disconnect, Change Password
New password field and verify new password field don’t match
Pre-condition: Connection with server complete
Post-condition: Return invalid password change message
Story
User is logged in
User clicks on change password
The user types in new password “comSciC1A22”
The user verifies and retypes new password “cHeese789”
Check database to see if new password matches old password
Check if new password and verify new password field match
Return message: “Invalid password change: new password must match verify new password field”
End of story
Next use case(s) - Logout, disconnect, Change password
[Strong Password Enforcement] - [Similar to Registration]
Invalid minimum Length, less than 8 characters
Note: m is the minimum length
Pre-condition: Connection with server complete
Post-condition: Return invalid password change message
Story
User is logged in
User clicks on change password
The user types in new password “a”
Check if new password is valid
Return message “Invalid password change: new password is invalid - minimum length requirement not met”
End of story
Next use case(s) - Logout, Disconnect, Change Password
Contains invalid Characters
Pre-condition: Connection with server complete
Post-condition: Return invalid password change message
Story
User is logged in
User clicks on change password
The user types in new password “asd12345©”
The user verifies and retypes new password “asd12345©”
Check database to see if new password matches old password - it does
Return message: “The new password contains invalid characters”
End of story
Next use case(s) - Logout, disconnect, change password
Invalid minimum Length and Contains invalid Characters
Pre-condition: Connection with server complete
Post-condition: Return invalid password change message
Story
User is logged in
User clicks on change password
The user types in new password “©”
The user verifies and retypes new password “©”
Check database to see if new password matches old password - it does
Return message: “The new password contains invalid characters” and exceeds minimum length.
End of story
Next use case(s) - Logout, disconnect, change password
Doesn’t Include numbers
Pre-condition: Connection with server complete
Post-condition: Return invalid password change message
Story
User is logged in
User clicks on change password
The user types in new password “asdFGHIu”
The user verifies and retypes new password “asdFGHIu”
Check database to see if new password matches old password - it does
Check to see if new password meets the password requirements - it doesn’t
Return message: “Invalid password change: Password must contain numbers and letters”
End of story
Next use case(s) - Logout, disconnect, change password
Doesn’t include letters
Pre-condition: Connection with server complete
Post-condition: Return invalid password change message
Story
User is logged in
User clicks on change password
The user types in new password “1234567”
The user verifies and retypes new password “1234567”
Check database to see if new password matches old password
Check to see if new password meets the password requirements
Return message: “Invalid password change: Password must contain numbers and letters”
End of story
Next use case(s) - Logout, disconnect, change password