| 1 | package fr.sii.ogham.testing.assertion.sms; | |
| 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 org.apache.commons.lang3.ArrayUtils.toObject; | |
| 6 | ||
| 7 | import java.util.ArrayList; | |
| 8 | import java.util.List; | |
| 9 | ||
| 10 | import org.hamcrest.Matcher; | |
| 11 | ||
| 12 | import fr.sii.ogham.testing.assertion.util.AssertionRegistry; | |
| 13 | import fr.sii.ogham.testing.sms.simulator.bean.Alphabet; | |
| 14 | import fr.sii.ogham.testing.sms.simulator.bean.OptionalParameter; | |
| 15 | import fr.sii.ogham.testing.sms.simulator.bean.SubmitSm; | |
| 16 | import fr.sii.ogham.testing.sms.simulator.bean.Tag; | |
| 17 | import fr.sii.ogham.testing.util.HasParent; | |
| 18 | ||
| 19 | /** | |
| 20 | * Make assertions on received PDU. | |
| 21 | * | |
| 22 | * @author Aurélien Baudet | |
| 23 | * | |
| 24 | * @param <P> | |
| 25 | * the parent type | |
| 26 | * @param <S> | |
| 27 | * the type of received messages | |
| 28 | */ | |
| 29 | public class FluentPduRequestAssert<P, S extends SubmitSm> extends HasParent<P> { | |
| 30 | private final List<PduRequestWithContext<S>> actual; | |
| 31 | private final AssertionRegistry registry; | |
| 32 | ||
| 33 | /** | |
| 34 | * | |
| 35 | * @param actual | |
| 36 | * the received messages | |
| 37 | * @param parent | |
| 38 | * the parent | |
| 39 | * @param registry | |
| 40 | * used to register assertions | |
| 41 | */ | |
| 42 | public FluentPduRequestAssert(List<PduRequestWithContext<S>> actual, P parent, AssertionRegistry registry) { | |
| 43 | super(parent); | |
| 44 | this.actual = actual; | |
| 45 | this.registry = registry; | |
| 46 | } | |
| 47 | ||
| 48 | /** | |
| 49 | * Make assertions on the encoding byte of the message(s) using fluent API. | |
| 50 | * | |
| 51 | * <pre> | |
| 52 | * .receivedMessages().message(0) | |
| 53 | * .rawRequest() | |
| 54 | * .encoding(is(0x01)) | |
| 55 | * </pre> | |
| 56 | * | |
| 57 | * Will check if the encoding byte of the first message is exactly 0x01. | |
| 58 | * | |
| 59 | * <pre> | |
| 60 | * .receivedMessages().every() | |
| 61 | * .rawRequest() | |
| 62 | * .encoding(is(0x01)) | |
| 63 | * </pre> | |
| 64 | * | |
| 65 | * Will check if the encoding byte of every message is exactly 0x01. | |
| 66 | * | |
| 67 | * @param matcher | |
| 68 | * the assertion to apply on the encoding | |
| 69 | * @return the fluent API for chaining assertions on received message(s) | |
| 70 | */ | |
| 71 | public FluentPduRequestAssert<P, S> encoding(Matcher<Byte> matcher) { | |
| 72 | String message = "encoding of ${name} of message ${messageIndex}"; | |
| 73 | for (PduRequestWithContext<S> rawContentWithContext : actual) { | |
| 74 | S msg = rawContentWithContext.getRequest(); | |
| 75 |
4
1. encoding : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 2. lambda$encoding$0 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 3. encoding : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → KILLED 4. lambda$encoding$0 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → KILLED |
registry.register(() -> assertThat(org.jsmpp.bean.Alphabet.parseDataCoding(msg.getDataCoding()).value(), usingContext(message, rawContentWithContext, matcher))); |
| 76 | } | |
| 77 |
2
1. encoding : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::encoding → NO_COVERAGE 2. encoding : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::encoding → KILLED |
return this; |
| 78 | } | |
| 79 | ||
| 80 | /** | |
| 81 | * Make assertions on the alphabet of the message(s) using fluent API. The | |
| 82 | * alphabet is extracted from {@link SubmitSm#getDataCoding()} byte. It | |
| 83 | * corresponds to the character table used to encode the message. It is a | |
| 84 | * convenience method that is similar to {@link #encoding(Matcher)} but | |
| 85 | * using human readable enum. | |
| 86 | * | |
| 87 | * <pre> | |
| 88 | * .receivedMessages().message(0) | |
| 89 | * .rawRequest() | |
| 90 | * .alphabet(is(Alphabet.ALPHA_DEFAULT)) | |
| 91 | * </pre> | |
| 92 | * | |
| 93 | * Will check if the alphabet of the first message is exactly | |
| 94 | * Alphabet.ALPHA_DEFAULT. | |
| 95 | * | |
| 96 | * <pre> | |
| 97 | * .receivedMessages().every() | |
| 98 | * .rawRequest() | |
| 99 | * .alphabet(is(Alphabet.ALPHA_DEFAULT)) | |
| 100 | * </pre> | |
| 101 | * | |
| 102 | * Will check if the alphabet of every message is exactly | |
| 103 | * Alphabet.ALPHA_DEFAULT. | |
| 104 | * | |
| 105 | * @param matcher | |
| 106 | * the assertion to apply on the alphabet | |
| 107 | * @return the fluent API for chaining assertions on received message(s) | |
| 108 | */ | |
| 109 | public FluentPduRequestAssert<P, S> alphabet(Matcher<Alphabet> matcher) { | |
| 110 | String message = "alphabet of ${name} of message ${messageIndex}"; | |
| 111 | for (PduRequestWithContext<S> rawContentWithContext : actual) { | |
| 112 | S msg = rawContentWithContext.getRequest(); | |
| 113 |
6
1. alphabet : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 2. alphabet : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → SURVIVED 3. lambda$alphabet$1 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → SURVIVED 4. lambda$alphabet$1 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 5. alphabet : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → KILLED 6. lambda$alphabet$1 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → KILLED |
registry.register(() -> assertThat(Alphabet.from(org.jsmpp.bean.Alphabet.parseDataCoding(msg.getDataCoding()).value()), usingContext(message, rawContentWithContext, matcher))); |
| 114 | } | |
| 115 |
4
1. alphabet : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::alphabet → SURVIVED 2. alphabet : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::alphabet → NO_COVERAGE 3. alphabet : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::alphabet → KILLED 4. alphabet : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::alphabet → KILLED |
return this; |
| 116 | } | |
| 117 | ||
| 118 | /** | |
| 119 | * Make assertions on the short message byte array of the message(s) using | |
| 120 | * fluent API. The short message corresponds to the whole array of data. It | |
| 121 | * always contains the payload (see | |
| 122 | * {@link FluentShortMessageMessageAssert#payload(Matcher)}). It may contain the | |
| 123 | * header (see {@link FluentShortMessageMessageAssert#header(Matcher)}). For | |
| 124 | * example, if the original message is split into several segments, then | |
| 125 | * each received message contains a header to indicate how the message was | |
| 126 | * split (number of segments, reference number, current segment number, | |
| 127 | * ...). | |
| 128 | * | |
| 129 | * <pre> | |
| 130 | * .receivedMessages().message(0) | |
| 131 | * .rawRequest() | |
| 132 | * .shortMessage(arrayWithSize(134)) | |
| 133 | * </pre> | |
| 134 | * | |
| 135 | * Will check if the short message (header + payload) byte array of the | |
| 136 | * first message has 134 bytes. | |
| 137 | * | |
| 138 | * <pre> | |
| 139 | * .receivedMessages().every() | |
| 140 | * .rawRequest() | |
| 141 | * .shortMessage(arrayWithSize(134)) | |
| 142 | * </pre> | |
| 143 | * | |
| 144 | * Will check if the short message (header + payload) byte array of every | |
| 145 | * message has 134 bytes. | |
| 146 | * | |
| 147 | * @param matcher | |
| 148 | * the assertion to apply on the short message (header + payload) | |
| 149 | * @return the fluent API for chaining assertions on received message(s) | |
| 150 | */ | |
| 151 | public FluentPduRequestAssert<P, S> shortMessage(Matcher<? super Byte[]> matcher) { | |
| 152 | String message = "shortMessage of ${name} of message ${messageIndex}"; | |
| 153 | for (PduRequestWithContext<S> rawContentWithContext : actual) { | |
| 154 | S msg = rawContentWithContext.getRequest(); | |
| 155 |
6
1. lambda$shortMessage$2 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 2. lambda$shortMessage$2 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → SURVIVED 3. shortMessage : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → SURVIVED 4. shortMessage : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 5. lambda$shortMessage$2 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → KILLED 6. shortMessage : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → KILLED |
registry.register(() -> assertThat(toObject(msg.getShortMessage()), usingContext(message, rawContentWithContext, matcher))); |
| 156 | } | |
| 157 |
3
1. shortMessage : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::shortMessage → NO_COVERAGE 2. shortMessage : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::shortMessage → KILLED 3. shortMessage : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::shortMessage → KILLED |
return this; |
| 158 | } | |
| 159 | ||
| 160 | /** | |
| 161 | * Make assertions on the short message byte array of the message(s) using | |
| 162 | * fluent API. The short message corresponds to the whole array of data. It | |
| 163 | * always contains the payload (see | |
| 164 | * {@link FluentShortMessageMessageAssert#payload(Matcher)}). It may contain the | |
| 165 | * header (see {@link FluentShortMessageMessageAssert#header(Matcher)}). For | |
| 166 | * example, if the original message is split into several segments, then | |
| 167 | * each received message contains a header to indicate how the message was | |
| 168 | * split (number of segments, reference number, current segment number, | |
| 169 | * ...). | |
| 170 | * | |
| 171 | * <pre> | |
| 172 | * .receivedMessages().message(0) | |
| 173 | * .rawRequest() | |
| 174 | * .shortMessage() | |
| 175 | * .payload(arrayWithSize(134)) | |
| 176 | * </pre> | |
| 177 | * | |
| 178 | * Will check if the short message payload byte array of the first message | |
| 179 | * has 134 bytes. | |
| 180 | * | |
| 181 | * <pre> | |
| 182 | * .receivedMessages().every() | |
| 183 | * .rawRequest() | |
| 184 | * .shortMessage() | |
| 185 | * .payload(arrayWithSize(134)) | |
| 186 | * </pre> | |
| 187 | * | |
| 188 | * Will check if the short message payload byte array of every message has | |
| 189 | * 134 bytes. | |
| 190 | * | |
| 191 | * @return the fluent API for chaining assertions on received message(s) | |
| 192 | */ | |
| 193 | public FluentShortMessageMessageAssert<FluentPduRequestAssert<P, S>, S> shortMessage() { | |
| 194 | List<ShortMessageWithContext<S>> shortMessages = new ArrayList<>(); | |
| 195 | for (PduRequestWithContext<S> rawContentWithContext : actual) { | |
| 196 | S msg = rawContentWithContext.getRequest(); | |
| 197 | shortMessages.add(new ShortMessageWithContext<>(msg, rawContentWithContext)); | |
| 198 | } | |
| 199 |
4
1. shortMessage : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::shortMessage → NO_COVERAGE 2. shortMessage : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::shortMessage → KILLED 3. shortMessage : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::shortMessage → KILLED 4. shortMessage : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::shortMessage → KILLED |
return new FluentShortMessageMessageAssert<>(shortMessages, this, registry); |
| 200 | } | |
| 201 | ||
| 202 | /** | |
| 203 | * Make assertions on optional parameter with particular tag. | |
| 204 | * | |
| 205 | * <pre> | |
| 206 | * .receivedMessages().message(0) | |
| 207 | * .rawRequest() | |
| 208 | * .optionalParameter(Tag.MESSAGE_PAYLOAD) | |
| 209 | * .value(arrayWithSize(134)) | |
| 210 | * </pre> | |
| 211 | * | |
| 212 | * Will check if the short message payload byte array of the | |
| 213 | * 'message_payload' optional parameter of the first message has 134 bytes. | |
| 214 | * | |
| 215 | * <pre> | |
| 216 | * .receivedMessages().every() | |
| 217 | * .rawRequest() | |
| 218 | * .optionalParameter(Tag.MESSAGE_PAYLOAD) | |
| 219 | * .value(arrayWithSize(134)) | |
| 220 | * </pre> | |
| 221 | * | |
| 222 | * Will check if the short message payload byte array of the | |
| 223 | * 'message_payload' optional parameter of every message has 134 bytes. | |
| 224 | * | |
| 225 | * @param withTag | |
| 226 | * the particular tag to search and to make assertions on | |
| 227 | * @see OptionalParameter | |
| 228 | * @see Tag | |
| 229 | * @return the fluent API for chaining assertions on received message(s) | |
| 230 | */ | |
| 231 | public FluentOptionalParameterAssert<FluentPduRequestAssert<P, S>> optionalParameter(Tag withTag) { | |
| 232 | List<OptionalParameterWithContext> parameters = new ArrayList<>(); | |
| 233 | for (PduRequestWithContext<S> rawContentWithContext : actual) { | |
| 234 | OptionalParameter parameter = getOptionalParameter(rawContentWithContext.getRequest(), withTag); | |
| 235 | parameters.add(new OptionalParameterWithContext(withTag, parameter, rawContentWithContext)); | |
| 236 | } | |
| 237 |
3
1. optionalParameter : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::optionalParameter → NO_COVERAGE 2. optionalParameter : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::optionalParameter → KILLED 3. optionalParameter : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::optionalParameter → KILLED |
return new FluentOptionalParameterAssert<>(this, parameters, registry); |
| 238 | } | |
| 239 | ||
| 240 | private OptionalParameter getOptionalParameter(S msg, Tag tag) { | |
| 241 |
3
1. getOptionalParameter : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::getOptionalParameter → NO_COVERAGE 2. getOptionalParameter : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::getOptionalParameter → KILLED 3. getOptionalParameter : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentPduRequestAssert::getOptionalParameter → KILLED |
return msg.getOptionalParameter(tag); |
| 242 | } | |
| 243 | } | |
Mutations | ||
| 75 |
1.1 2.2 3.3 4.4 |
|
| 77 |
1.1 2.2 |
|
| 113 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 115 |
1.1 2.2 3.3 4.4 |
|
| 155 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 157 |
1.1 2.2 3.3 |
|
| 199 |
1.1 2.2 3.3 4.4 |
|
| 237 |
1.1 2.2 3.3 |
|
| 241 |
1.1 2.2 3.3 |