diff --git a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispEncapsulatedControlTest.java b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispEncapsulatedControlTest.java
index fa64950..06cf2a1 100644
--- a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispEncapsulatedControlTest.java
+++ b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispEncapsulatedControlTest.java
@@ -48,6 +48,8 @@
     private static final String ECM2_DST_IP = "192.168.2.2";
     private static final String RECORD_EID = "1.1.1.1";
 
+    private static final String AUTH_KEY = "onos";
+
     private LispEncapsulatedControl ecm1;
     private LispEncapsulatedControl sameAsEcm1;
     private LispEncapsulatedControl ecm2;
@@ -74,6 +76,7 @@
         LispMapRegister innerMsg1 = msgBuilder.withIsProxyMapReply(true)
                                     .withIsWantMapNotify(false)
                                     .withKeyId((short) 1)
+                                    .withAuthKey(AUTH_KEY)
                                     .withNonce(1L)
                                     .withMapRecords(records1)
                                     .build();
@@ -103,6 +106,7 @@
         LispMapRegister innerMsg2 = msgBuilder2.withIsProxyMapReply(true)
                 .withIsWantMapNotify(false)
                 .withKeyId((short) 1)
+                .withAuthKey(AUTH_KEY)
                 .withNonce(1L)
                 .withMapRecords(records2)
                 .build();
@@ -132,6 +136,7 @@
         LispMapRegister innerMsg3 = msgBuilder3.withIsProxyMapReply(true)
                 .withIsWantMapNotify(false)
                 .withKeyId((short) 2)
+                .withAuthKey(AUTH_KEY)
                 .withNonce(1L)
                 .withMapRecords(records3)
                 .build();
diff --git a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispInfoReplyTest.java b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispInfoReplyTest.java
index 1952a03..2ab8002 100644
--- a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispInfoReplyTest.java
+++ b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispInfoReplyTest.java
@@ -43,6 +43,8 @@
     private LispInfoReply sameAsReply1;
     private LispInfoReply reply2;
 
+    private static final String AUTH_KEY = "onos";
+
     @Before
     public void setup() {
 
@@ -68,6 +70,7 @@
         reply1 = builder1
                     .withNonce(1L)
                     .withKeyId((short) 1)
+                    .withAuthKey(AUTH_KEY)
                     .withInfoReply(false)
                     .withMaskLength((byte) 1)
                     .withEidPrefix(address1)
@@ -78,6 +81,7 @@
         sameAsReply1 = builder2
                             .withNonce(1L)
                             .withKeyId((short) 1)
+                            .withAuthKey(AUTH_KEY)
                             .withInfoReply(false)
                             .withMaskLength((byte) 1)
                             .withEidPrefix(address1)
@@ -105,6 +109,7 @@
         reply2 = builder3
                         .withNonce(2L)
                         .withKeyId((short) 2)
+                        .withAuthKey(AUTH_KEY)
                         .withInfoReply(true)
                         .withMaskLength((byte) 1)
                         .withEidPrefix(address2)
@@ -139,7 +144,7 @@
                 .withPrivateEtrRlocAddress(privateEtrRlocAddress1)
                 .build();
 
-        assertThat(reply.hasInfoReply(), is(false));
+        assertThat(reply.isInfoReply(), is(false));
         assertThat(reply.getNonce(), is(1L));
         assertThat(reply.getKeyId(), is((short) 1));
         assertThat(reply.getMaskLength(), is((byte) 1));
diff --git a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispInfoRequestTest.java b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispInfoRequestTest.java
index 501b82f..83b6f89 100644
--- a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispInfoRequestTest.java
+++ b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispInfoRequestTest.java
@@ -42,6 +42,8 @@
     private LispInfoRequest sameAsRequest1;
     private LispInfoRequest request2;
 
+    private static final String AUTH_KEY = "onos";
+
     @Before
     public void setup() {
 
@@ -52,6 +54,7 @@
         request1 = builder1
                         .withNonce(1L)
                         .withKeyId((short) 1)
+                        .withAuthKey(AUTH_KEY)
                         .withInfoReply(false)
                         .withMaskLength((byte) 1)
                         .withEidPrefix(address1).build();
@@ -61,6 +64,7 @@
         sameAsRequest1 = builder2
                             .withNonce(1L)
                             .withKeyId((short) 1)
+                            .withAuthKey(AUTH_KEY)
                             .withInfoReply(false)
                             .withMaskLength((byte) 1)
                             .withEidPrefix(address1).build();
@@ -72,6 +76,7 @@
         request2 = builder3
                         .withNonce(2L)
                         .withKeyId((short) 2)
+                        .withAuthKey(AUTH_KEY)
                         .withInfoReply(true)
                         .withMaskLength((byte) 1)
                         .withEidPrefix(address2).build();
@@ -90,7 +95,7 @@
 
         LispIpv4Address address = new LispIpv4Address(IpAddress.valueOf("192.168.1.1"));
 
-        assertThat(request.hasInfoReply(), is(false));
+        assertThat(request.isInfoReply(), is(false));
         assertThat(request.getNonce(), is(1L));
         assertThat(request.getKeyId(), is((short) 1));
         assertThat(request.getMaskLength(), is((byte) 1));
diff --git a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispMapNotifyTest.java b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispMapNotifyTest.java
index aa10703..f9dd47f 100644
--- a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispMapNotifyTest.java
+++ b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispMapNotifyTest.java
@@ -43,6 +43,7 @@
     private LispMapNotify notify1;
     private LispMapNotify sameAsNotify1;
     private LispMapNotify notify2;
+    private static final String AUTH_KEY = "onos";
 
     @Before
     public void setup() {
@@ -53,6 +54,7 @@
 
         notify1 = builder1
                         .withKeyId((short) 1)
+                        .withAuthKey(AUTH_KEY)
                         .withNonce(1L)
                         .withMapRecords(records1)
                         .build();
@@ -63,6 +65,7 @@
 
         sameAsNotify1 = builder2
                         .withKeyId((short) 1)
+                        .withAuthKey(AUTH_KEY)
                         .withNonce(1L)
                         .withMapRecords(records2)
                         .build();
@@ -71,6 +74,7 @@
 
         notify2 = builder3
                         .withKeyId((short) 2)
+                        .withAuthKey(AUTH_KEY)
                         .withNonce(2L)
                         .build();
     }
diff --git a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRegisterTest.java b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRegisterTest.java
index ff2c104..4dd081a 100644
--- a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRegisterTest.java
+++ b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/protocols/DefaultLispMapRegisterTest.java
@@ -46,6 +46,7 @@
     private LispMapRegister register1;
     private LispMapRegister sameAsRegister1;
     private LispMapRegister register2;
+    private static final String AUTH_KEY = "onos";
 
     @Before
     public void setup() {
@@ -58,6 +59,7 @@
                         .withIsProxyMapReply(true)
                         .withIsWantMapNotify(false)
                         .withKeyId((short) 1)
+                        .withAuthKey(AUTH_KEY)
                         .withNonce(1L)
                         .withMapRecords(records1)
                         .build();
@@ -70,6 +72,7 @@
                         .withIsProxyMapReply(true)
                         .withIsWantMapNotify(false)
                         .withKeyId((short) 1)
+                        .withAuthKey(AUTH_KEY)
                         .withNonce(1L)
                         .withMapRecords(records2)
                         .build();
@@ -80,6 +83,7 @@
                         .withIsProxyMapReply(true)
                         .withIsWantMapNotify(false)
                         .withKeyId((short) 2)
+                        .withAuthKey(AUTH_KEY)
                         .withNonce(2L)
                         .build();
     }
