chat_application/doc/feature_001.md

4.4 KiB

Features

Personas

  • Alice: New user who wants to join the platform to chat with friends.
  • Bob: Regular user, member of several salons, likes to organize group conversations.
  • Claire: Administrator, responsible for managing roles and permissions.
  • David: Invited user, discovers the platform via a salon invitation.

User Registration

Persona: Alice Scenario: User registers into the application

  • Given Alice is on the registration page
  • When she provides valid details (username, email, password)
  • And she clicks "Register"
  • Then the username, email and password are validated by the system
  • And her account is created
  • And she receives a confirmation message
  • And she is redirected to the login page
  • And she receives a welcome email
  • When she tries to register with an existing email
  • Then the system displays an error message

User Login

Persona: Alice Scenario: User logs into the application

  • Given Alice is on the login page
  • When she enters valid credentials (email/username and password)
  • And she clicks "Login"
  • Then the credentials are validated by the system
  • And she is granted access to the application
  • When she enters an invalid password
  • Then the system displays an error message
  • When she forgets her password
  • Then she can request a password reset link

Role Management

Persona: Claire Scenario: Admin creates and assigns roles

  • Given Claire is logged in as an admin
  • When she navigates to the roles management page
  • And she creates a new role or edits an existing one
  • Then the role is saved
  • And she can assign or unassign it to the users
  • When she tries to assign a role to herself
  • Then the system prevents self-assignment for certain roles (e.g., SuperAdmin)
  • When she deletes a role
  • Then the system asks for confirmation and updates all affected users

Permission Management

Persona: Claire Scenario: Admin manages permissions for roles

  • Given Claire is logged in as an admin
  • When she navigates to the permissions management page
  • And she assigns or removes permissions for a role
  • Then the permissions are updated
  • And users with that role have the correct accesses
  • When she tries to remove all permissions from a role
  • Then the system warns about potential loss of access

Send a Message

Persona: Bob Scenario: User sends a message in a conversation

  • Given Bob is logged in
  • And he is in an existing conversation with other users
  • When he types a message
  • And he clicks "Send"
  • Then the message appears in the conversation for all participants
  • When he sends an empty message
  • Then the system prevents sending and shows a warning
  • When he sends a message with an attachment
  • Then the attachment is uploaded and visible to all participants

Read Messages

Persona: Alice Scenario: User reads messages in a conversation

  • Given Alice is logged in
  • And she has joined a conversation
  • When another user sends a message
  • Then the message appears in the conversation in real time
  • When she scrolls up, older messages are loaded
  • When she marks a message as read
  • Then the sender is notified (if enabled)

Create a Conversation

Persona: Bob Scenario: User creates a conversation with one or more users

  • Given Bob is logged in
  • When he clicks "New Conversation"
  • And he selects one or more users
  • And he clicks "Create"
  • Then a new conversation is created
  • And the selected users are added to the conversation
  • When he tries to create a conversation with himself only
  • Then the system prevents it and shows a message

Salon Creation

Persona: Bob Scenario: User creates a new salon

  • Given Bob is logged in
  • When he navigates to the "Create Salon" page
  • And he provides a salon name
  • And he clicks "Create"
  • Then a new salon is created
  • And Bob is added as a member of the salon
  • When he tries to create a salon with a name that already exists
  • Then the system displays an error message

Invite Users to a Salon

Persona: Bob, David Scenario: User invites others to join a salon

  • Given Bob is logged in
  • And he is a member of an existing salon
  • When he selects other users to invite (including David)
  • And he clicks "Invite"
  • Then the selected users receive an invitation
  • And they can join the salon once they accept
  • When David accepts the invitation
  • Then he becomes a member of the salon
  • When David declines the invitation
  • Then Bob is notified of the refusal