2 * Copyright (c) 2014 Contextream, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.lispflowmapping.serializer;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
15 import java.nio.ByteBuffer;
16 import java.util.ArrayList;
18 import junitx.framework.ArrayAssert;
20 import org.junit.Test;
21 import org.opendaylight.lispflowmapping.lisp.serializer.MapNotifySerializer;
22 import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
23 import org.opendaylight.lispflowmapping.lisp.type.AddressFamilyNumberEnum;
24 import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor;
25 import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.EidToLocatorRecord.Action;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapNotify;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecord;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecordBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.no.NoAddressBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapnotifymessage.MapNotifyBuilder;
34 public class MapNotifySerializationTest extends BaseTestCase {
37 public void serialize__Fields() throws Exception {
38 MapNotifyBuilder mnBuilder = new MapNotifyBuilder();
39 mnBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
40 mnBuilder.getEidToLocatorRecord().add(
41 new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.1")))
43 mnBuilder.getEidToLocatorRecord().add(
44 new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.73")))
47 mnBuilder.setNonce(6161616161L);
48 mnBuilder.setKeyId((short) 0x0001);
49 byte[] authenticationData = new byte[] { (byte) 0x16, (byte) 0x98, (byte) 0x96, (byte) 0xeb, (byte) 0x88, (byte) 0x2d, (byte) 0x4d,
50 (byte) 0x22, (byte) 0xe5, (byte) 0x8f, (byte) 0xe6, (byte) 0x89, (byte) 0x64, (byte) 0xb9, (byte) 0x17, (byte) 0xa4, (byte) 0xba,
51 (byte) 0x4e, (byte) 0x8c, (byte) 0x41 };
52 mnBuilder.setAuthenticationData(authenticationData);
54 ByteBuffer bb = MapNotifySerializer.getInstance().serialize(mnBuilder.build());
55 assertHexEquals((byte) 0x40, bb.get()); // Type + MSByte of reserved
56 assertEquals(0, bb.getShort()); // Rest of reserved
57 assertEquals(2, bb.get()); // Record Count
58 assertEquals(6161616161L, bb.getLong()); // Nonce
59 assertHexEquals((short) 0x0001, bb.getShort()); // Key ID
60 assertEquals(authenticationData.length, bb.getShort());
62 byte[] actualAuthenticationData = new byte[20];
63 bb.get(actualAuthenticationData);
64 ArrayAssert.assertEquals(authenticationData, actualAuthenticationData);
66 bb.position(bb.position() + 12); /* EID in first record */
67 assertEquals(0x1, bb.getInt());
69 bb.position(bb.position() + 12); /* EID in second record */
70 assertEquals(73, bb.getInt());
72 assertEquals(bb.position(), bb.capacity());
76 public void serialize__deserizlise() throws Exception {
77 MapNotifyBuilder mnBuilder = new MapNotifyBuilder();
78 mnBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
79 mnBuilder.getEidToLocatorRecord().add(
80 new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.1")))
82 mnBuilder.getEidToLocatorRecord().add(
83 new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.73")))
86 mnBuilder.setNonce(6161616161L);
87 mnBuilder.setKeyId((short) 0x0001);
88 byte[] authenticationData = new byte[] { (byte) 0x16, (byte) 0x98, (byte) 0x96, (byte) 0xeb, (byte) 0x88, (byte) 0x2d, (byte) 0x4d,
89 (byte) 0x22, (byte) 0xe5, (byte) 0x8f, (byte) 0xe6, (byte) 0x89, (byte) 0x64, (byte) 0xb9, (byte) 0x17, (byte) 0xa4, (byte) 0xba,
90 (byte) 0x4e, (byte) 0x8c, (byte) 0x41 };
91 mnBuilder.setAuthenticationData(authenticationData);
93 MapNotify mn = mnBuilder.build();
94 ArrayAssert.assertEquals(
95 MapNotifySerializer.getInstance().serialize(mn).array(),
96 MapNotifySerializer.getInstance()
97 .serialize(MapNotifySerializer.getInstance().deserialize(MapNotifySerializer.getInstance().serialize(mn))).array());
102 public void deserialize__AllFields() throws Exception {
103 // LISP(Type = 4 Map-Notify, I=1
105 // Nonce: (something)
107 // AuthDataLength: 00 Data:
108 // EID prefix: 153.16.254.1/32 (EID=0x9910FE01), TTL: 10, Authoritative,
110 // Local RLOC: 192.168.136.10 (RLOC=0xC0A8880A), Reachable,
111 // Priority/Weight: 1/100, Multicast Priority/Weight: 255/0
114 MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("48 00 00 01 FF BB "
116 + "00 00 00 00 00 00 00 00 00 00 00 00 " //
117 + "00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " //
118 + "ff 00 00 05 00 01 c0 a8 88 0a "
119 + "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 " // xTR-ID
120 + "00 00 00 00 00 00 00 01 " // Site-ID
124 assertTrue(mn.isXtrSiteIdPresent());
126 assertEquals(1, mn.getEidToLocatorRecord().size());
127 assertEquals(0xFFBB000000000000L, mn.getNonce().longValue());
128 assertEquals(0x0000, mn.getKeyId().shortValue());
129 byte[] expectedAuthenticationData = {};
130 ArrayAssert.assertEquals(expectedAuthenticationData, mn.getAuthenticationData());
134 public void serialize__NoAuthenticationData() throws Exception {
135 MapNotifyBuilder mnBuilder = new MapNotifyBuilder();
136 mnBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
137 mnBuilder.getEidToLocatorRecord().add(
138 new EidToLocatorRecordBuilder().setRecordTtl(55)
139 .setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.1"))).build());
141 ByteBuffer bb = MapNotifySerializer.getInstance().serialize(mnBuilder.build());
142 bb.position(bb.position() + 14); // jump to AuthenticationDataLength
143 assertEquals(0, bb.getShort());
144 assertEquals(55, bb.getInt());
146 mnBuilder.setAuthenticationData(null);
148 bb = MapNotifySerializer.getInstance().serialize(mnBuilder.build());
149 bb.position(bb.position() + 14); // jump to AuthenticationDataLength
150 assertEquals(0, bb.getShort());
151 assertEquals(55, bb.getInt());
153 mnBuilder.setAuthenticationData(new byte[0]);
155 bb = MapNotifySerializer.getInstance().serialize(mnBuilder.build());
156 bb.position(bb.position() + 14); // jump to AuthenticationDataLength
157 assertEquals(0, bb.getShort());
158 assertEquals(55, bb.getInt());
162 public void serialize__NoPrefixInEidToLocator() throws Exception {
163 MapNotifyBuilder mnBuilder = new MapNotifyBuilder();
164 mnBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
165 mnBuilder.getEidToLocatorRecord().add(new EidToLocatorRecordBuilder().build());
166 mnBuilder.getEidToLocatorRecord().add(new EidToLocatorRecordBuilder().setLispAddressContainer(null).build());
167 mnBuilder.getEidToLocatorRecord().add(
168 new EidToLocatorRecordBuilder().setLispAddressContainer(
169 LispAFIConvertor.toContainer(new NoAddressBuilder().setAfi(AddressFamilyNumberEnum.NO_ADDRESS.getIanaCode()).build())).build());
171 ByteBuffer bb = MapNotifySerializer.getInstance().serialize(mnBuilder.build());
172 bb.position(bb.position() + 16); // jump to first record prefix AFI
173 assertEquals(0, bb.getShort());
175 bb.position(bb.position() + 10); // jump to second record prefix AFI
176 assertEquals(0, bb.getShort());
178 bb.position(bb.position() + 10); // jump to third record prefix AFI
179 assertEquals(0, bb.getShort());
183 public void deserialize__MultipleRecords() throws Exception {
184 // LISP(Type = 4 Map-Notify, I=1
186 // EID prefixes: 153.16.254.1 -- 152.16.254.1 -- 151.16.254.1 --
188 // Local RLOCs: 192.168.136.10 -- 192.168.136.11 -- 192.168.136.12 --
191 MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 00 "
193 + "04 " // Record count
194 + "FF BB 00 00 00 00 00 00 00 01 00 14 87 c1 33 cd " //
195 + "d1 1e bc 80 fd 3e 71 11 81 17 40 74 26 25 44 bd " //
196 + "00 00 00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " // Record
198 + "ff 00 00 05 00 01 c0 a8 88 0a " // contd
199 + "00 00 00 0a 01 20 10 00 00 00 00 01 98 10 fe 01 01 64 " // Record
201 + "ff 00 00 05 00 01 c0 a8 88 0b " // contd
202 + "00 00 00 0a 01 20 10 00 00 00 00 01 97 10 fe 01 01 64 " // Record
204 + "ff 00 00 05 00 01 c0 a8 88 0c " // contd
205 + "00 00 00 0a 01 20 10 00 00 00 00 01 96 10 fe 01 01 64 " // Record
207 + "ff 00 00 05 00 01 c0 a8 88 0d " // contd
210 assertEquals(4, mn.getEidToLocatorRecord().size());
211 assertEquals(LispAFIConvertor.asIPv4Address("153.16.254.1"), mn.getEidToLocatorRecord().get(0)
212 .getLispAddressContainer());
213 assertEquals(LispAFIConvertor.asIPv4Address("151.16.254.1"), mn.getEidToLocatorRecord().get(2)
214 .getLispAddressContainer());
215 assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("192.168.136.11")), mn.getEidToLocatorRecord().get(1)
216 .getLocatorRecord().get(0).getLispAddressContainer());
217 assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("192.168.136.13")), mn.getEidToLocatorRecord().get(3)
218 .getLocatorRecord().get(0).getLispAddressContainer());
222 public void deserialize__Locators() throws Exception {
223 MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 01 01 "
225 + "FF BB 00 00 00 00 00 00 00 01 00 14 f1 b8 ab f0 " //
226 + "66 bb 2e ef 12 70 74 46 6f 6b 8e ca bf 1e 68 40 " //
228 + "03 " // Locator Count
229 + "20 10 00 00 00 00 01 99 10 fe 01 "
231 + "01 64 1f 00 " // priorities + weights
233 + "00 01 c0 a8 88 0a " // Locator
235 + "67 00 30 34 " // priorities + weights
237 + "00 01 cc aa AA 11 " // Locator
239 + "60 11 34 A4 " // priorities + weights
241 + "00 01 c0 a8 88 0a " // Locator
244 assertEquals(1, mn.getEidToLocatorRecord().size());
245 EidToLocatorRecord eidToLocator = mn.getEidToLocatorRecord().get(0);
246 assertEquals(3, eidToLocator.getLocatorRecord().size());
247 LocatorRecord loc0 = eidToLocator.getLocatorRecord().get(0);
248 LocatorRecord loc1 = eidToLocator.getLocatorRecord().get(1);
249 LocatorRecord loc2 = eidToLocator.getLocatorRecord().get(2);
250 assertEquals((byte) 0x01, loc0.getPriority().byteValue());
251 assertEquals((byte) 0x67, loc1.getPriority().byteValue());
252 assertEquals((byte) 0x60, loc2.getPriority().byteValue());
254 assertEquals((byte) 0x64, loc0.getWeight().byteValue());
255 assertEquals((byte) 0x00, loc1.getWeight().byteValue());
256 assertEquals((byte) 0x11, loc2.getWeight().byteValue());
258 assertEquals((byte) 0x1F, loc0.getMulticastPriority().byteValue());
259 assertEquals((byte) 0x30, loc1.getMulticastPriority().byteValue());
260 assertEquals((byte) 0x34, loc2.getMulticastPriority().byteValue());
262 assertEquals((byte) 0x00, loc0.getMulticastWeight().byteValue());
263 assertEquals((byte) 0x34, loc1.getMulticastWeight().byteValue());
264 assertEquals((byte) 0xA4, loc2.getMulticastWeight().byteValue());
266 assertTrue(loc0.isLocalLocator());
267 assertFalse(loc1.isLocalLocator());
268 assertFalse(loc2.isLocalLocator());
270 assertFalse(loc0.isRlocProbed());
271 assertTrue(loc1.isRlocProbed());
272 assertTrue(loc2.isRlocProbed());
274 assertTrue(loc0.isRouted());
275 assertFalse(loc1.isRouted());
276 assertTrue(loc2.isRouted());
278 assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("192.168.136.10")), loc0.getLispAddressContainer());
279 assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("204.170.170.17")), loc1.getLispAddressContainer());
283 public void deserialize__SomeEidToLocatorFiels() throws Exception {
284 // LISP(Type = 4 Map-Notify, I=0
286 // EID prefixes: 153.16.254.1 -- 152.16.254.1 -- 151.16.254.1 --
288 // Local RLOCs: 192.168.136.10 -- 192.168.136.11 -- 192.168.136.12 --
291 MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 00 "
293 + "04 " // Record count
294 + "FF BB 00 00 00 00 00 00 00 01 00 14 b9 cd 7b 89 " //
295 + "65 c2 56 03 be dd 81 20 47 e5 c3 4f 56 02 e1 59 " //
296 + "00 00 00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " // Record
298 + "ff 00 00 05 00 01 c0 a8 88 0a " // contd
299 + "00 00 00 0b 01 17 50 00 01 11 00 01 98 10 fe 01 01 64 " // Record
301 + "ff 00 00 05 00 01 c0 a8 88 0b " // contd
302 + "00 00 00 0c 01 20 00 00 02 22 00 01 97 10 fe 01 01 64 " // Record
304 + "ff 00 00 05 00 01 c0 a8 88 0c " // contd
305 + "00 00 00 0d 01 20 20 00 03 33 00 01 96 10 fe 01 01 64 " // Record
307 + "ff 00 00 05 00 01 c0 a8 88 0d " // contd
310 assertEquals(4, mn.getEidToLocatorRecord().size());
312 EidToLocatorRecord record0 = mn.getEidToLocatorRecord().get(0);
313 EidToLocatorRecord record1 = mn.getEidToLocatorRecord().get(1);
314 EidToLocatorRecord record2 = mn.getEidToLocatorRecord().get(2);
315 EidToLocatorRecord record3 = mn.getEidToLocatorRecord().get(3);
317 assertEquals(10, record0.getRecordTtl().intValue());
318 assertEquals(13, record3.getRecordTtl().intValue());
320 assertEquals(32, record0.getMaskLength().intValue());
321 assertEquals(23, record1.getMaskLength().intValue());
323 assertEquals(Action.NoAction, record0.getAction());
324 assertEquals(Action.SendMapRequest, record1.getAction());
325 assertEquals(Action.NoAction, record2.getAction());
326 assertEquals(Action.NativelyForward, record3.getAction());
328 assertTrue(record0.isAuthoritative());
329 assertTrue(record1.isAuthoritative());
330 assertFalse(record2.isAuthoritative());
331 assertFalse(record3.isAuthoritative());
333 assertEquals(0x000, record0.getMapVersion().shortValue());
334 assertEquals(0x111, record1.getMapVersion().shortValue());
335 assertEquals(0x222, record2.getMapVersion().shortValue());
336 assertEquals(0x333, record3.getMapVersion().shortValue());
340 public void deserialize__IllegalAction() throws Exception {
341 MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 01 01 FF BB "
343 + "00 00 00 00 00 00 00 01 00 14 ec 47 1e 53 25 91 " //
344 + "2f 68 10 75 13 dd 2c e8 6e 3c ac 94 ed e4 00 00 " //
345 + "00 0a 01 20 F0 00 00 00 00 01 99 10 fe 01 01 64 " //
346 + "ff 00 00 05 00 01 c0 a8 88 0a"));
348 assertEquals(1, mn.getEidToLocatorRecord().size());
349 assertEquals(Action.NoAction, mn.getEidToLocatorRecord().get(0).getAction());
352 @Test(expected = LispSerializationException.class)
353 public void deserialize_WrongAuthenticationLength() throws Exception {
354 // LISP(Type = 4 Map-Notify, I=0
356 // Nonce: (something)
358 // AuthDataLength: 20 Data:
359 // e8:f5:0b:c5:c5:f2:b0:21:27:a8:a5:68:89:ec
360 // EID prefix: 153.16.254.1/32 (EID=0x9910FE01), TTL: 10, Authoritative,
362 // Local RLOC: 192.168.136.10 (RLOC=0xC0A8880A), Reachable,
363 // Priority/Weight: 1/100, Multicast Priority/Weight: 255/0
365 MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("48 00 00 01 FF BB "
367 + "00 00 00 00 00 00 00 00 00 14 e8 f5 0b c5 c5 f2 " //
368 + "b0 21 27 a8 21 a5 68 89 ec 00 00 " //
369 + "00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " //
370 + "ff 00 00 05 00 01 c0 a8 88 0a"));
374 public void deserialize__SHA1() throws Exception {
375 // LISP(Type = 4 Map-Notify, I=0
377 // Nonce: (something)
379 // AuthDataLength: 20 Data:
380 // b2:dd:1a:25:c0:60:b1:46:e8:dc:6d:a6:ae:2e:92:92:a6:ca:b7:9d
381 // EID prefix: 153.16.254.1/32 (EID=0x9910FE01), TTL: 10, Authoritative,
383 // Local RLOC: 192.168.136.10 (RLOC=0xC0A8880A), Reachable,
384 // Priority/Weight: 1/100, Multicast Priority/Weight: 255/0
386 MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 00 01 FF BB "
388 + "00 00 00 00 00 00 00 01 00 14 2c 61 b9 c9 9a 20 " //
389 + "ba d8 f5 40 d3 55 6f 5f 6e 5a b2 0a bf b5 00 00 " //
390 + "00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " //
391 + "ff 00 00 05 00 01 c0 a8 88 0a"));
393 assertFalse(mn.isXtrSiteIdPresent());
395 assertEquals(1, mn.getEidToLocatorRecord().size());
396 assertEquals(0xFFBB000000000000L, mn.getNonce().longValue());
397 assertEquals(0x0001, mn.getKeyId().shortValue());
398 byte[] expectedAuthenticationData = { (byte) 0x2c, (byte) 0x61, (byte) 0xb9, (byte) 0xc9, (byte) 0x9a, (byte) 0x20, (byte) 0xba, (byte) 0xd8, //
399 (byte) 0xf5, (byte) 0x40, (byte) 0xd3, (byte) 0x55, (byte) 0x6f, (byte) 0x5f, (byte) 0x6e, (byte) 0x5a, //
400 (byte) 0xb2, (byte) 0x0a, (byte) 0xbf, (byte) 0xb5 };
401 ArrayAssert.assertEquals(expectedAuthenticationData, mn.getAuthenticationData());
405 public void deserialize__SHA256() throws Exception {
406 // LISP(Type = 4 Map-Notify, I=0
408 // Nonce: (something)
410 // AuthDataLength: 32 Data:
411 // 70 30 d4 c6 10 44 0d 83 be 4d bf fd a9 8c 57 6d 68 a5 bf 32 11 c9 7b
412 // 58 c4 b9 9f 06 11 23 b9 38
413 // EID prefix: 153.16.254.1/32 (EID=0x9910FE01), TTL: 10, Authoritative,
415 // Local RLOC: 192.168.136.10 (RLOC=0xC0A8880A), Reachable,
416 // Priority/Weight: 1/100, Multicast Priority/Weight: 255/0
418 MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 00 01 FF BB "
420 + "00 00 00 00 00 00 00 02 00 20 70 30 d4 c6 10 44 0d 83 be 4d bf fd a9 8c 57 6d 68 a5 bf 32 "
422 + "11 c9 7b 58 c4 b9 9f 06 11 23 b9 38 00 00 " //
423 + "00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " //
424 + "ff 00 00 05 00 01 c0 a8 88 0a"));
426 assertFalse(mn.isXtrSiteIdPresent());
428 assertEquals(1, mn.getEidToLocatorRecord().size());
429 assertEquals(0xFFBB000000000000L, mn.getNonce().longValue());
430 assertEquals(0x0002, mn.getKeyId().shortValue());
431 byte[] expectedAuthenticationData = { (byte) 0x70, (byte) 0x30, (byte) 0xd4, (byte) 0xc6, (byte) 0x10, (byte) 0x44, (byte) 0x0d, (byte) 0x83,
432 (byte) 0xbe, (byte) 0x4d, (byte) 0xbf, (byte) 0xfd, (byte) 0xa9, (byte) 0x8c, (byte) 0x57, (byte) 0x6d, (byte) 0x68, (byte) 0xa5,
433 (byte) 0xbf, (byte) 0x32, (byte) 0x11, (byte) 0xc9, (byte) 0x7b, (byte) 0x58, (byte) 0xc4, (byte) 0xb9, (byte) 0x9f, (byte) 0x06,
434 (byte) 0x11, (byte) 0x23, (byte) 0xb9, (byte) 0x38 };
435 ArrayAssert.assertEquals(expectedAuthenticationData, mn.getAuthenticationData());