|
| 1 | +[](https://github.com/devopsix/assertj-mail/actions?query=workflow%3ABuild) |
| 2 | +[](https://search.maven.org/search?q=g:%22org.devopsix%22%20AND%20a:%assertj-mail%22) |
| 3 | +[](LICENSE.txt) |
| 4 | + |
| 5 | +# AssertJ Mail |
| 6 | + |
| 7 | +AssertJ Mail is an extension library for the [AssertJ][] assertion library. |
| 8 | +It provides assertions for types from the `javax.mail` and `jakarta.mail` packages. |
| 9 | + |
| 10 | +The [hamcrest-mail][] sister project provides a set of Hamcrest matchers with similar features. |
| 11 | + |
| 12 | +## Usage |
| 13 | +To use AssertJ Mail in a Maven project add a dependency on `org.devopsix:assertj-mail` (for Java EE 8 / javax.mail) or |
| 14 | +`org.devopsix:assertj-mail-jakarta` (for Jakarta EE 9+ / jakarta.mail) to the pom.xml file. |
| 15 | + |
| 16 | +```xml |
| 17 | +<!-- Maven coordinates for Java EE 8 / javax.mail --> |
| 18 | +<dependency> |
| 19 | + <groupId>org.devopsix</groupId> |
| 20 | + <artifactId>assertj-mail</artifactId> |
| 21 | + <version>1.0.0</version> |
| 22 | + <scope>test</scope> |
| 23 | +</dependency> |
| 24 | +<!-- Maven coordinates for Jakarta EE 9+ / jakarta.mail --> |
| 25 | +<dependency> |
| 26 | + <groupId>org.devopsix</groupId> |
| 27 | + <artifactId>assertj-mail-jakarta</artifactId> |
| 28 | + <version>1.0.0</version> |
| 29 | + <scope>test</scope> |
| 30 | +</dependency> |
| 31 | +``` |
| 32 | + |
| 33 | +The assertions are available as static methods on the `MailAssertions` class. |
| 34 | + |
| 35 | +Here are a few examples: |
| 36 | + |
| 37 | +```java |
| 38 | +Message message; |
| 39 | +MailAssertions.assertThat(message).from() |
| 40 | + .singleElement(as(MailAssertions.INTERNET_ADDRESS)) |
| 41 | + .address() .isEqualTo( "[email protected]"); |
| 42 | + |
| 43 | +MailAssertions.assertThat(message).to() |
| 44 | + .singleElement(Assertions.as(MailAssertions.INTERNET_ADDRESS)) |
| 45 | + .address() .isEqualTo( "[email protected]"); |
| 46 | + |
| 47 | +MailAssertions.assertThat(message).subject().isEqualTo("Foo"); |
| 48 | + |
| 49 | +MailAssertions.assertThat(message).headerValue("Message-ID").isEqualTo("Foo"); |
| 50 | + |
| 51 | +MailAssertions.assertThat(message).dateHeaderValue("Resent-Date").isEqualToIgnoringNanos(date); |
| 52 | +``` |
| 53 | + |
| 54 | +More example can be found in the [examples](examples/) directory (for Java EE 8 / javax.mail) and in the |
| 55 | +[examples-jakarta](examples-jakarta/) directory (for Jakarta EE 9+ / jakarta.mail). |
| 56 | + |
| 57 | +## Assertions |
| 58 | + |
| 59 | +* `MessageAssert.headerValue(String name)` - An assertion for a message's header (String value) |
| 60 | +* `MessageAssert.headerValues(String name)` - An assertion for a message's header (multiple Strings values) |
| 61 | +* `MessageAssert.dateHeaderValue(String name)` - An assertion for a message's header (date value) |
| 62 | +* `MessageAssert.dateHeaderValues(String name)` - An assertion for a message's header (multiple date values) |
| 63 | +* `MessageAssert.textContent()` - An assertion for a message's text content |
| 64 | +* `MessageAssert.binaryContent()` - An assertion for a message's binary content |
| 65 | +* `MessageAssert.isMultipart()` - Asserts that a message has multipart content |
| 66 | +* `MessageAssert.multipartContent()` - An assertion for a message's multipart content |
| 67 | +* `MessageAssert.multipartContents()` - An assertion for a message's multipart contents (recursive) |
| 68 | +* `MessageAssert.date()` - An assertion for a message's “Date” header |
| 69 | +* `MessageAssert.from()` - An assertion for a message's “From” header |
| 70 | +* `MessageAssert.sender()` - An assertion for a message's “Sender” header |
| 71 | +* `MessageAssert.replyTo()` - An assertion for a message's “Reply-To” header |
| 72 | +* `MessageAssert.to()` - An assertion for a message's “To” header |
| 73 | +* `MessageAssert.cc()` - An assertion for a message's “Cc” header |
| 74 | +* `MessageAssert.bcc()` - An assertion for a message's “Bcc” header |
| 75 | +* `MessageAssert.subject()` - An assertion for a message's “Subject” header |
| 76 | +* `PartAssert.dkimSignature(Map<String, String> publicKeys)` - An assertion for the part's DKIM signature |
| 77 | +* `PartAssert.headerValue(String name)` - An assertion for a part's header (String value) |
| 78 | +* `PartAssert.headerValues(String name)` - An assertion for a part's header (multiple Strings values) |
| 79 | +* `PartAssert.dateHeaderValue(String name)` - An assertion a part's header (date value) |
| 80 | +* `PartAssert.dateHeaderValues(String name)` - An assertion for a part's header (multiple date values) |
| 81 | +* `PartAssert.textContent()` - An assertion for a part's text content |
| 82 | +* `PartAssert.binaryContent()` - An assertion for a part's binary content |
| 83 | +* `PartAssert.isMultipart()` - Asserts that a part has multipart content |
| 84 | +* `PartAssert.multipartContent()` - An assertion for a part's multipart content |
| 85 | +* `PartAssert.multipartContents()` - An assertion for a part's multipart contents (recursive) |
| 86 | +* `DkimSignatureAssert.isValid()` - Asserts that a DKIM signature is valid |
| 87 | +* `DkimSignatureAssert.records()` - An assertion for the signature records of a [DKIM][] signature |
| 88 | +* `MultipartAssert.contentType()` - An assertion for a multipart's content type |
| 89 | +* `MultipartAssert.parts()` - An assertion for a multipart's actual parts |
| 90 | +* `InternetAddressAssert.address()` - An assertion for an address' address part |
| 91 | +* `InternetAddressAssert.personal()` - An assertion for an address' name part |
| 92 | + |
| 93 | +[AssertJ]: https://github.com/assertj/assertj |
| 94 | +[DKIM]: https://tools.ietf.org/html/rfc4871 |
| 95 | +[hamcrest-mail]: https://github.com/devopsix/hamcrest-mail |
0 commit comments