diff --git a/incubator/api/src/test/java/org/onosproject/incubator/net/key/UsernamePasswordTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/key/UsernamePasswordTest.java
new file mode 100644
index 0000000..242a263
--- /dev/null
+++ b/incubator/api/src/test/java/org/onosproject/incubator/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.incubator.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());
+    }
+}
