| 1 | package fr.sii.ogham.testing.assertion.email; | |
| 2 | ||
| 3 | import static fr.sii.ogham.testing.assertion.util.AssertionHelper.assertThat; | |
| 4 | import static fr.sii.ogham.testing.assertion.util.AssertionHelper.usingContext; | |
| 5 | import static fr.sii.ogham.testing.assertion.util.EmailUtils.getContent; | |
| 6 | import static java.util.Arrays.asList; | |
| 7 | import static java.util.Collections.list; | |
| 8 | ||
| 9 | import java.nio.charset.Charset; | |
| 10 | import java.nio.charset.StandardCharsets; | |
| 11 | import java.util.Arrays; | |
| 12 | import java.util.List; | |
| 13 | ||
| 14 | import javax.mail.Header; | |
| 15 | import javax.mail.MessagingException; | |
| 16 | import javax.mail.Part; | |
| 17 | ||
| 18 | import org.hamcrest.Matcher; | |
| 19 | ||
| 20 | import fr.sii.ogham.testing.assertion.util.AssertionRegistry; | |
| 21 | import fr.sii.ogham.testing.util.HasParent; | |
| 22 | ||
| 23 | public class FluentPartAssert<P> extends HasParent<P> { | |
| 24 | /** | |
| 25 | * The list of messages that will be used for assertions | |
| 26 | */ | |
| 27 | private final List<PartWithContext> actual; | |
| 28 | /** | |
| 29 | * Registry to register assertions | |
| 30 | */ | |
| 31 | private final AssertionRegistry registry; | |
| 32 | ||
| 33 | public FluentPartAssert(PartWithContext actual, P parent, AssertionRegistry registry) { | |
| 34 | this(Arrays.asList(actual), parent, registry); | |
| 35 | } | |
| 36 | ||
| 37 | public FluentPartAssert(List<PartWithContext> actual, P parent, AssertionRegistry registry) { | |
| 38 | super(parent); | |
| 39 | this.actual = actual; | |
| 40 | this.registry = registry; | |
| 41 | } | |
| 42 | ||
| 43 | /** | |
| 44 | * Make assertions on the string content of a part (body, alternative or | |
| 45 | * attachment) of the message(s). UTF-8 charset is used to decode body | |
| 46 | * content. | |
| 47 | * | |
| 48 | * <pre> | |
| 49 | * .receivedMessages().message(0).body() | |
| 50 | * .contentAsString(is("foobar")) | |
| 51 | * </pre> | |
| 52 | * | |
| 53 | * Will check if the content of the body of the first message is exactly | |
| 54 | * "foobar". | |
| 55 | * | |
| 56 | * <pre> | |
| 57 | * .receivedMessages().every().body() | |
| 58 | * .contentAsString(is("foobar")) | |
| 59 | * </pre> | |
| 60 | * | |
| 61 | * Will check if the content of the body of every message is exactly | |
| 62 | * "foobar". | |
| 63 | * | |
| 64 | * @param matcher | |
| 65 | * the assertion to apply on string content | |
| 66 | * @return the fluent API for chaining assertions on received message(s) | |
| 67 | */ | |
| 68 | public FluentPartAssert<P> contentAsString(Matcher<? super String> matcher) { | |
| 69 |
5
1. contentAsString : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentAsString → NO_COVERAGE 2. contentAsString : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentAsString → TIMED_OUT 3. contentAsString : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentAsString → KILLED 4. contentAsString : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentAsString → KILLED 5. contentAsString : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentAsString → KILLED |
return contentAsString(matcher, StandardCharsets.UTF_8); |
| 70 | } | |
| 71 | ||
| 72 | /** | |
| 73 | * Make assertions on the string content of a part (body, alternative or | |
| 74 | * attachment) of the message(s). | |
| 75 | * | |
| 76 | * <pre> | |
| 77 | * .receivedMessages().message(0).body() | |
| 78 | * .contentAsString(is("foobar"), Charset.forName("UTF-8")) | |
| 79 | * </pre> | |
| 80 | * | |
| 81 | * Will check if the content of the body of the first message is exactly | |
| 82 | * "foobar". | |
| 83 | * | |
| 84 | * <pre> | |
| 85 | * .receivedMessages().every().body() | |
| 86 | * .contentAsString(is("foobar"), Charset.forName("UTF-8")) | |
| 87 | * </pre> | |
| 88 | * | |
| 89 | * Will check if the content of the body of every message is exactly | |
| 90 | * "foobar". | |
| 91 | * | |
| 92 | * @param matcher | |
| 93 | * the assertion to apply on string content | |
| 94 | * @param charset | |
| 95 | * the charset used to decode the content | |
| 96 | * @return the fluent API for chaining assertions on received message(s) | |
| 97 | */ | |
| 98 | public FluentPartAssert<P> contentAsString(Matcher<? super String> matcher, Charset charset) { | |
| 99 | try { | |
| 100 | String message = charset.name() + " content of ${partName} of message ${messageIndex}"; | |
| 101 | for (PartWithContext partWithContext : actual) { | |
| 102 | Part part = partWithContext.getPart(); | |
| 103 |
13
1. contentAsString : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → SURVIVED 2. contentAsString : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 3. lambda$contentAsString$0 : negated conditional → NO_COVERAGE 4. lambda$contentAsString$0 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → SURVIVED 5. lambda$contentAsString$0 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 6. contentAsString : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → TIMED_OUT 7. lambda$contentAsString$0 : negated conditional → TIMED_OUT 8. lambda$contentAsString$0 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → TIMED_OUT 9. contentAsString : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → KILLED 10. lambda$contentAsString$0 : negated conditional → KILLED 11. lambda$contentAsString$0 : negated conditional → KILLED 12. lambda$contentAsString$0 : negated conditional → KILLED 13. lambda$contentAsString$0 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → KILLED |
registry.register(() -> assertThat(part == null ? null : getContent(part, charset), usingContext(message, partWithContext, matcher))); |
| 104 | } | |
| 105 |
5
1. contentAsString : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentAsString → NO_COVERAGE 2. contentAsString : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentAsString → TIMED_OUT 3. contentAsString : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentAsString → KILLED 4. contentAsString : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentAsString → KILLED 5. contentAsString : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentAsString → KILLED |
return this; |
| 106 | } catch (Exception e) { | |
| 107 | throw new AssertionError("Failed to get string content for part", e); | |
| 108 | } | |
| 109 | } | |
| 110 | ||
| 111 | /** | |
| 112 | * Make assertions on the raw content of a part (body, alternative or | |
| 113 | * attachment) of the message(s). | |
| 114 | * | |
| 115 | * <pre> | |
| 116 | * .receivedMessages().message(0).body() | |
| 117 | * .content(is(resource("path/to/expected/file")) | |
| 118 | * </pre> | |
| 119 | * | |
| 120 | * Will check if the content of the body of the first message is exactly the | |
| 121 | * same as the file resource available in the classpath. | |
| 122 | * | |
| 123 | * <pre> | |
| 124 | * .receivedMessages().every().body() | |
| 125 | * .content(is(resource("path/to/expected/file")) | |
| 126 | * </pre> | |
| 127 | * | |
| 128 | * Will check if the content of the body of every message is exactly the | |
| 129 | * same as the file resource available in the classpath. | |
| 130 | * | |
| 131 | * @param matcher | |
| 132 | * the assertion to apply on raw content | |
| 133 | * @return the fluent API for chaining assertions on received message(s) | |
| 134 | */ | |
| 135 | public FluentPartAssert<P> content(Matcher<byte[]> matcher) { | |
| 136 | try { | |
| 137 | String message = "raw content of ${partName} of message ${messageIndex}"; | |
| 138 | for (PartWithContext partWithContext : actual) { | |
| 139 | Part part = partWithContext.getPart(); | |
| 140 |
10
1. content : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → SURVIVED 2. content : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 3. lambda$content$1 : negated conditional → NO_COVERAGE 4. lambda$content$1 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → SURVIVED 5. lambda$content$1 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 6. content : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → KILLED 7. lambda$content$1 : negated conditional → KILLED 8. lambda$content$1 : negated conditional → KILLED 9. lambda$content$1 : negated conditional → KILLED 10. lambda$content$1 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → KILLED |
registry.register(() -> assertThat(part == null ? null : getContent(part), usingContext(message, partWithContext, matcher))); |
| 141 | } | |
| 142 |
4
1. content : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::content → NO_COVERAGE 2. content : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::content → KILLED 3. content : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::content → KILLED 4. content : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::content → KILLED |
return this; |
| 143 | } catch (Exception e) { | |
| 144 | throw new AssertionError("Failed to get content for part", e); | |
| 145 | } | |
| 146 | } | |
| 147 | ||
| 148 | /** | |
| 149 | * Make assertions on the content-type of a part (body, alternative or | |
| 150 | * attachment) of the message(s). | |
| 151 | * | |
| 152 | * <pre> | |
| 153 | * .receivedMessages().message(0).body() | |
| 154 | * .contentType(is("text/html")) | |
| 155 | * </pre> | |
| 156 | * | |
| 157 | * Will check if the content-type of the body of the first message is | |
| 158 | * exactly "text/html". | |
| 159 | * | |
| 160 | * <pre> | |
| 161 | * .receivedMessages().every().body() | |
| 162 | * .contentType(is("text/html")) | |
| 163 | * </pre> | |
| 164 | * | |
| 165 | * Will check if the content-type of the body of every message is exactly | |
| 166 | * "text/html". | |
| 167 | * | |
| 168 | * @param matcher | |
| 169 | * the assertion to apply on content-type | |
| 170 | * @return the fluent API for chaining assertions on received message(s) | |
| 171 | */ | |
| 172 | public FluentPartAssert<P> contentType(Matcher<? super String> matcher) { | |
| 173 | try { | |
| 174 | String message = "content-type of ${partName} of message ${messageIndex}"; | |
| 175 | for (PartWithContext partWithContext : actual) { | |
| 176 | Part part = partWithContext.getPart(); | |
| 177 |
10
1. contentType : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → SURVIVED 2. contentType : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 3. lambda$contentType$2 : negated conditional → NO_COVERAGE 4. lambda$contentType$2 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 5. lambda$contentType$2 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → SURVIVED 6. contentType : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → KILLED 7. lambda$contentType$2 : negated conditional → KILLED 8. lambda$contentType$2 : negated conditional → KILLED 9. lambda$contentType$2 : negated conditional → KILLED 10. lambda$contentType$2 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → KILLED |
registry.register(() -> assertThat(part == null ? null : part.getContentType(), usingContext(message, partWithContext, matcher))); |
| 178 | } | |
| 179 |
4
1. contentType : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentType → NO_COVERAGE 2. contentType : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentType → KILLED 3. contentType : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentType → KILLED 4. contentType : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::contentType → KILLED |
return this; |
| 180 | } catch (MessagingException e) { | |
| 181 | throw new AssertionError("Failed to get string content type for part", e); | |
| 182 | } | |
| 183 | } | |
| 184 | ||
| 185 | /** | |
| 186 | * Make assertions on the description of a part (body, alternative or | |
| 187 | * attachment) of the message(s). | |
| 188 | * | |
| 189 | * <pre> | |
| 190 | * .receivedMessages().message(0).body() | |
| 191 | * .description(is("foo bar")) | |
| 192 | * </pre> | |
| 193 | * | |
| 194 | * Will check if the description of the body of the first message is exactly | |
| 195 | * "foo bar". | |
| 196 | * | |
| 197 | * <pre> | |
| 198 | * .receivedMessages().every().body() | |
| 199 | * .description(is("foo bar")) | |
| 200 | * </pre> | |
| 201 | * | |
| 202 | * Will check if the description of the body of every message is exactly | |
| 203 | * "foo bar". | |
| 204 | * | |
| 205 | * @param matcher | |
| 206 | * the assertion to apply on description | |
| 207 | * @return the fluent API for chaining assertions on received message(s) | |
| 208 | */ | |
| 209 | public FluentPartAssert<P> description(Matcher<? super String> matcher) { | |
| 210 | try { | |
| 211 | String message = "description of ${partName} of message ${messageIndex}"; | |
| 212 | for (PartWithContext partWithContext : actual) { | |
| 213 | Part part = partWithContext.getPart(); | |
| 214 |
6
1. description : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 2. lambda$description$3 : negated conditional → NO_COVERAGE 3. lambda$description$3 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 4. description : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → KILLED 5. lambda$description$3 : negated conditional → KILLED 6. lambda$description$3 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → KILLED |
registry.register(() -> assertThat(part == null ? null : part.getDescription(), usingContext(message, partWithContext, matcher))); |
| 215 | } | |
| 216 |
2
1. description : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::description → NO_COVERAGE 2. description : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::description → KILLED |
return this; |
| 217 | } catch (MessagingException e) { | |
| 218 | throw new AssertionError("Failed to get description of part", e); | |
| 219 | } | |
| 220 | } | |
| 221 | ||
| 222 | /** | |
| 223 | * Make assertions on the disposition of a part (body, alternative or | |
| 224 | * attachment) of the message(s). | |
| 225 | * | |
| 226 | * <pre> | |
| 227 | * .receivedMessages().message(0).body() | |
| 228 | * .disposition(is(INLINE_DISPOSITION)) | |
| 229 | * </pre> | |
| 230 | * | |
| 231 | * Will check if the disposition of the body of the first message is exactly | |
| 232 | * "inline". | |
| 233 | * | |
| 234 | * <pre> | |
| 235 | * .receivedMessages().every().body() | |
| 236 | * .disposition(is(INLINE_DISPOSITION)) | |
| 237 | * </pre> | |
| 238 | * | |
| 239 | * Will check if the disposition of the body of every message is exactly | |
| 240 | * "inline". | |
| 241 | * | |
| 242 | * @param matcher | |
| 243 | * the assertion to apply on disposition | |
| 244 | * @return the fluent API for chaining assertions on received message(s) | |
| 245 | */ | |
| 246 | public FluentPartAssert<P> disposition(Matcher<? super String> matcher) { | |
| 247 | try { | |
| 248 | String message = "disposition of ${partName} of message ${messageIndex}"; | |
| 249 | for (PartWithContext partWithContext : actual) { | |
| 250 | Part part = partWithContext.getPart(); | |
| 251 |
10
1. disposition : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → SURVIVED 2. disposition : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 3. lambda$disposition$4 : negated conditional → NO_COVERAGE 4. lambda$disposition$4 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 5. lambda$disposition$4 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → SURVIVED 6. disposition : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → KILLED 7. lambda$disposition$4 : negated conditional → KILLED 8. lambda$disposition$4 : negated conditional → KILLED 9. lambda$disposition$4 : negated conditional → KILLED 10. lambda$disposition$4 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → KILLED |
registry.register(() -> assertThat(part == null ? null : part.getDisposition(), usingContext(message, partWithContext, matcher))); |
| 252 | } | |
| 253 |
4
1. disposition : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::disposition → SURVIVED 2. disposition : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::disposition → NO_COVERAGE 3. disposition : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::disposition → KILLED 4. disposition : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::disposition → KILLED |
return this; |
| 254 | } catch (MessagingException e) { | |
| 255 | throw new AssertionError("Failed to get disposition of part", e); | |
| 256 | } | |
| 257 | } | |
| 258 | ||
| 259 | /** | |
| 260 | * Make assertions on the filename of a part (body, alternative or | |
| 261 | * attachment) of the message(s). | |
| 262 | * | |
| 263 | * <pre> | |
| 264 | * .receivedMessages().message(0).attachment(0) | |
| 265 | * .filename(is("foo.pdf")) | |
| 266 | * </pre> | |
| 267 | * | |
| 268 | * Will check if the filename of the first attachment of the first message | |
| 269 | * is exactly "foo.pdf". | |
| 270 | * | |
| 271 | * <pre> | |
| 272 | * .receivedMessages().every().attachment(0) | |
| 273 | * .filename(is("foo.pdf")) | |
| 274 | * </pre> | |
| 275 | * | |
| 276 | * Will check if the filename of the first attachment of every message is | |
| 277 | * exactly "foo.pdf". | |
| 278 | * | |
| 279 | * @param matcher | |
| 280 | * the assertion to apply on filename | |
| 281 | * @return the fluent API for chaining assertions on received message(s) | |
| 282 | */ | |
| 283 | public FluentPartAssert<P> filename(Matcher<? super String> matcher) { | |
| 284 | try { | |
| 285 | String message = "filename of ${partName} of message ${messageIndex}"; | |
| 286 | for (PartWithContext partWithContext : actual) { | |
| 287 | Part part = partWithContext.getPart(); | |
| 288 |
10
1. filename : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 2. filename : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → SURVIVED 3. lambda$filename$5 : negated conditional → NO_COVERAGE 4. lambda$filename$5 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 5. lambda$filename$5 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → SURVIVED 6. filename : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → KILLED 7. lambda$filename$5 : negated conditional → KILLED 8. lambda$filename$5 : negated conditional → KILLED 9. lambda$filename$5 : negated conditional → KILLED 10. lambda$filename$5 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → KILLED |
registry.register(() -> assertThat(part == null ? null : part.getFileName(), usingContext(message, partWithContext, matcher))); |
| 289 | } | |
| 290 |
4
1. filename : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::filename → NO_COVERAGE 2. filename : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::filename → KILLED 3. filename : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::filename → KILLED 4. filename : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::filename → KILLED |
return this; |
| 291 | } catch (MessagingException e) { | |
| 292 | throw new AssertionError("Failed to get filename of part", e); | |
| 293 | } | |
| 294 | } | |
| 295 | ||
| 296 | /** | |
| 297 | * Make assertions on the headers of a part (body, alternative or | |
| 298 | * attachment) of the message(s). | |
| 299 | * | |
| 300 | * <pre> | |
| 301 | * .receivedMessages().message(0).attachment(0) | |
| 302 | * .headers(hasItem(new Header("name", "value"))) | |
| 303 | * </pre> | |
| 304 | * | |
| 305 | * Will check if the headers of the first attachment of the first message | |
| 306 | * contains a header with name "name" and value "value". | |
| 307 | * | |
| 308 | * <pre> | |
| 309 | * .receivedMessages().every().attachment(0) | |
| 310 | * .header(hasItem(new Header("name", "value"))) | |
| 311 | * </pre> | |
| 312 | * | |
| 313 | * Will check if the headers of the first attachment of every message is | |
| 314 | * contains a header with name "name" and value "value". | |
| 315 | * | |
| 316 | * @param matcher | |
| 317 | * the assertion to apply on headers | |
| 318 | * @return the fluent API for chaining assertions on received message(s) | |
| 319 | */ | |
| 320 | public FluentPartAssert<P> headers(Matcher<? super Iterable<Header>> matcher) { | |
| 321 | try { | |
| 322 | String message = "headers of ${partName} of message ${messageIndex}"; | |
| 323 | for (PartWithContext partWithContext : actual) { | |
| 324 | Part part = partWithContext.getPart(); | |
| 325 |
3
1. headers : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 2. lambda$headers$6 : negated conditional → NO_COVERAGE 3. lambda$headers$6 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE |
registry.register(() -> assertThat(part == null ? null : list(part.getAllHeaders()), usingContext(message, partWithContext, matcher))); |
| 326 | } | |
| 327 |
1
1. headers : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::headers → NO_COVERAGE |
return this; |
| 328 | } catch (MessagingException e) { | |
| 329 | throw new AssertionError("Failed to get headers of part", e); | |
| 330 | } | |
| 331 | } | |
| 332 | ||
| 333 | /** | |
| 334 | * Make assertions on a single header of a part (body, alternative or | |
| 335 | * attachment) of the message(s). | |
| 336 | * | |
| 337 | * <pre> | |
| 338 | * .receivedMessages().message(0).attachment(0) | |
| 339 | * .header("Content-ID", contains("foo")) | |
| 340 | * </pre> | |
| 341 | * | |
| 342 | * Will check if the "Content-ID" header of the first attachment of the | |
| 343 | * first message values "foo". | |
| 344 | * | |
| 345 | * <pre> | |
| 346 | * .receivedMessages().every().attachment(0) | |
| 347 | * .header("Content-ID", contains("foo")) | |
| 348 | * </pre> | |
| 349 | * | |
| 350 | * Will check if the "Content-ID" header of the first attachment of every | |
| 351 | * message values "foo". | |
| 352 | * | |
| 353 | * @param headerName | |
| 354 | * the name of the header to check | |
| 355 | * @param matcher | |
| 356 | * the assertion to apply on the header header | |
| 357 | * @return the fluent API for chaining assertions on received message(s) | |
| 358 | */ | |
| 359 | public FluentPartAssert<P> header(String headerName, Matcher<? super Iterable<String>> matcher) { | |
| 360 | try { | |
| 361 | String message = "header " + headerName + " of ${partName} of message ${messageIndex}"; | |
| 362 | for (PartWithContext partWithContext : actual) { | |
| 363 | Part part = partWithContext.getPart(); | |
| 364 |
6
1. header : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 2. header : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → SURVIVED 3. lambda$header$7 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 4. lambda$header$7 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → SURVIVED 5. header : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → KILLED 6. lambda$header$7 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → KILLED |
registry.register(() -> assertThat(getHeaderValues(part, headerName), usingContext(message, partWithContext, matcher))); |
| 365 | } | |
| 366 |
3
1. header : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::header → NO_COVERAGE 2. header : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::header → SURVIVED 3. header : replaced return value with null for fr/sii/ogham/testing/assertion/email/FluentPartAssert::header → KILLED |
return this; |
| 367 | } catch (MessagingException e) { | |
| 368 | throw new AssertionError("Failed to get header" + headerName + " of part", e); | |
| 369 | } | |
| 370 | } | |
| 371 | | |
| 372 | @SuppressWarnings("squid:S1168") | |
| 373 | private static List<String> getHeaderValues(Part part, String headerName) throws MessagingException { | |
| 374 |
3
1. getHeaderValues : negated conditional → NO_COVERAGE 2. getHeaderValues : negated conditional → KILLED 3. getHeaderValues : negated conditional → KILLED |
if (part != null) { |
| 375 | String[] vals = part.getHeader(headerName); | |
| 376 |
3
1. getHeaderValues : negated conditional → NO_COVERAGE 2. getHeaderValues : negated conditional → KILLED 3. getHeaderValues : negated conditional → KILLED |
if (vals != null) { |
| 377 |
3
1. getHeaderValues : replaced return value with Collections.emptyList for fr/sii/ogham/testing/assertion/email/FluentPartAssert::getHeaderValues → NO_COVERAGE 2. getHeaderValues : replaced return value with Collections.emptyList for fr/sii/ogham/testing/assertion/email/FluentPartAssert::getHeaderValues → KILLED 3. getHeaderValues : replaced return value with Collections.emptyList for fr/sii/ogham/testing/assertion/email/FluentPartAssert::getHeaderValues → KILLED |
return asList(vals); |
| 378 | } | |
| 379 | } | |
| 380 |
2
1. getHeaderValues : replaced return value with Collections.emptyList for fr/sii/ogham/testing/assertion/email/FluentPartAssert::getHeaderValues → NO_COVERAGE 2. getHeaderValues : replaced return value with Collections.emptyList for fr/sii/ogham/testing/assertion/email/FluentPartAssert::getHeaderValues → KILLED |
return null; |
| 381 | } | |
| 382 | } | |
Mutations | ||
| 69 |
1.1 2.2 3.3 4.4 5.5 |
|
| 103 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 10.10 11.11 12.12 13.13 |
|
| 105 |
1.1 2.2 3.3 4.4 5.5 |
|
| 140 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 10.10 |
|
| 142 |
1.1 2.2 3.3 4.4 |
|
| 177 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 10.10 |
|
| 179 |
1.1 2.2 3.3 4.4 |
|
| 214 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 216 |
1.1 2.2 |
|
| 251 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 10.10 |
|
| 253 |
1.1 2.2 3.3 4.4 |
|
| 288 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 10.10 |
|
| 290 |
1.1 2.2 3.3 4.4 |
|
| 325 |
1.1 2.2 3.3 |
|
| 327 |
1.1 |
|
| 364 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 366 |
1.1 2.2 3.3 |
|
| 374 |
1.1 2.2 3.3 |
|
| 376 |
1.1 2.2 3.3 |
|
| 377 |
1.1 2.2 3.3 |
|
| 380 |
1.1 2.2 |