diff --git a/core/api/src/test/java/org/onosproject/net/key/UsernamePasswordTest.java b/core/api/src/test/java/org/onosproject/net/key/UsernamePasswordTest.java
new file mode 100644
index 0000000..d8acafb
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/net/key/UsernamePasswordTest.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.net.key;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
+
+/**
+ * Test class for UsernamePassword.
+ */
+public class UsernamePasswordTest {
+    final String username = "username";
+    final String password = "password";
+
+    /**
+     * Checks that the UsernamePassword class is immutable.
+     */
+    @Test
+    public void testImmutability() {
+        assertThatClassIsImmutable(UsernamePassword.class);
+    }
+
+    /**
+     * Checks the construction of a username / password object with null
+     * values passed into it.
+     */
+    @Test
+    public void testUsernamePasswordNull() {
+        UsernamePassword usernamePassword = UsernamePassword.usernamePassword(null, null);
+
+        assertNotNull("The UsernamePassword should not be null.", usernamePassword);
+        assertNull("The username should be null.", usernamePassword.username());
+        assertNull("The password should be null.", usernamePassword.password());
+    }
+
+    /**
+     * Checks the construction of a username / password object with non-null
+     * values passed into it.
+     */
+    @Test
+    public void testUsernamePassword() {
+        UsernamePassword usernamePassword = UsernamePassword.usernamePassword(username, password);
+
+        assertNotNull("The usernamePassword should not be null.", usernamePassword);
+        assertEquals("The username should match the expected value.", username, usernamePassword.username());
+        assertEquals("The password should match the expected value.", password, usernamePassword.password());
+    }
+}
