Email

This plugin allows you to check the status of folders on a mail server, check the number of unread messages and intercept new incoming messages. It also allows you to validate fields of the last message such as subject, sender, body and attachments.

This plugin is designed to be used in conjunction with other plugins to create complete scenarios. For example, to validate that an application is sending mail as a result of another operation such as a REST request.



Install

Include the module in the corresponding section.

es.iti.wakamiti:email-wakamiti-plugin:1.4.0
<dependency>
  <groupId>es.iti.wakamiti</groupId>
  <artifactId>email-wakamiti-plugin</artifactId>
  <version>1.4.0</version>
</dependency>

Options

email.address

  • Type: string required

User’s email address, to be used as login credentials.

Example:

email:
  address: test@localhost

email.password

  • Type: string required

User password, to be used as login credentials.

Example:

email:
  password: xjlk4324

email.store.host

  • Type: string required

Host name or IP address where the mail server store is located.

Example:

email:
  store:
    host: imap.gmail.com

email.store.port

  • Type: integer required

Port for accessing the mail server store (usually varies depending on the protocol).

Example:

email:
  store:
    port: 993

email.store.protocol

  • Type: string required

Protocol used by the mail store.

Example:

email:
  store:
    protocol: imap

email.store.folder

  • Type: string required

Name of the folder to be scanned in the mail store.

Example:

email:
  store:
    folder: INBOX

Steps

Define the mail store server to use

the email server at {host}:{port} using the protocol {protocol}

Parameters:

namewakamiti typedescription
hosttext requiredIP or name of the mail store
portinteger requiredPort of the mail store (according protocol)
protocolword requiredProtocol of the mail store

Examples:

Given the email server at 'imap.gmail.com':993 using the protocol imap

Define the mail user credentials

the email user with address {address} and password {password}

Parameters:

namewakamiti typedescription
addresstext requiredThe email address
passwordtext requiredThe user password

Examples:

Given the email user with address 'john@mymail.com' and password 'daDjkl3434S'

Define the mail store folder to use

the email folder {text}

Parameters:

namewakamiti typedescription
texttext requiredThe name of the mail folder

Examples:

Given the email folder 'INBOX'

Verify the number of unread emails

(that) the number of unread emails {matcher}

Parameters:

namewakamiti typedescription
matcherinteger-assertion requiredThe validation to apply to the number of unread messages

Examples:

Given that the number of unread emails is greater than 0

Verify that a new mail is received in a given interval

(that) a new email is received within {duration}

Parameters:

namewakamiti typedescription
durationduration requiredTime to wait for an incoming message

Examples:

Then a new email is received within 5 seconds

Verify the subject of the last email

(that) the subject of the email {matcher}

Parameters:

namewakamiti typedescription
matchertext-assertion requiredThe validation to apply to the subject of the email

Examples:

Then the subject of the email starts with 'Issue opened'

Verify the sender of the last email

(that) the sender of the email {matcher}

Parameters:

namewakamiti typedescription
matchertext-assertion requiredThe validation to apply to the sender of the email

Examples:

Then the sender of the email is 'support@company.com'

Verify the body contents of the last email

(that) the body of the email is:
    {data}

Parameters:

namewakamiti typedescription
datadocument requiredThe content to compare

Examples:

Then the body of the email is:
  """
  Hello,
  Your issue has been received.
  Regards
  """

Verify partially the body contents of the last email

(that) the body of the email contains:
    {data}

Parameters:

namewakamiti typedescription
datadocument requiredThe content to compare

Examples:

Then the body of the email contains:
  """
  Your issue has been received.
  """

Verify the body contents of the last email against an external file

(that) the body of the email is the content of the file {file}

Parameters:

namewakamiti typedescription
filefile requiredPath of the file to compare

Examples:

Then the body of the email is the content of the file 'email.txt'

Verify the body contents of the last email contains the content of an external file

(that) the body of the email contains the content of the file {file}

Parameters:

namewakamiti typedescription
filefile requiredPath of the file to compare

Examples:

Then the body of the email contains the content of the file 'email.txt'

Verify the number of attachments of the last email

(that) the number of attachments in the email {matcher}

Parameters:

namewakamiti typedescription
matcherinteger-assertion requiredThe validation to apply to the number of attachments

Examples:

Then the number of attachments in the email is less than 2

Verify that the email contains an attached file with certain name

(that) the email has an attached file whose name {matcher}

Parameters:

namewakamiti typedescription
matchertext-assertion requiredThe validation to apply to the name of the attached files

Examples:

Then the email has an attached file whose name is 'attach.txt'

Verify the binary content of an attached file

(that) the email has an attached file with the content of the binary file {file}

Parameters:

namewakamiti typedescription
filefile requiredPath of the file to compare

Examples:

Then the email has an attached file with the content of the binary file 'attach.dat'

Verify the text content of an attached file

(that) the email has an attached file with the content of the text file {file}

Parameters:

namewakamiti typedescription
filefile requiredPath of the file to compare

Examples:

Then the email has an attached file with the content of the text file 'attach.txt'

Verify the text content of an attach file against the following text

(that) the email has an attached file with the following content:
    {data}

Parameters:

namewakamiti typedescription
datadocument requiredThe content to compare

Examples:

Then the email has an attached file with the following content:
  """
  This is an attached content
  """

Delete all emails from a given sender (clean-up operation)

At finish, delete all emails whose sender {matcher}

Parameters:

namewakamiti typedescription
matchertext-assertion requiredThe validation to apply to the email sender

Examples:

* At finish, delete all emails whose sender is 'test@localhost'

Delete all emails with a given subject (clean-up operation)

At finish, delete all emails whose subject {matcher}

Parameters:

namewakamiti typedescription
matchertext-assertion requiredThe validation to apply to the email subject

Examples:

* At finish, delete all emails whose subject starts with 'Testing'