diff --git a/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/CoreModelCacheTest.java b/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/CoreModelCacheTest.java
new file mode 100644
index 0000000..bccd099
--- /dev/null
+++ b/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/CoreModelCacheTest.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2015 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.cord.gui;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.cord.gui.model.BundleFactory;
+import org.onosproject.cord.gui.model.SubscriberUser;
+
+import java.io.IOException;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Unit tests for {@link CordModelCache}.
+ */
+public class CoreModelCacheTest {
+
+    private CordModelCache cache;
+
+    @Before
+    public void setUp() {
+        cache = new CordModelCache();
+    }
+
+    @Test
+    public void basic() {
+        assertEquals("wrong bundle", BundleFactory.BASIC_BUNDLE,
+                     cache.getCurrentBundle().descriptor());
+    }
+
+    @Test
+    public void basicBundleJson() {
+        String json = BundleFactory.toJson(cache.getCurrentBundle());
+        assertTrue("bad basic json", sameJson(BASIC_BUNDLE_JSON, json));
+    }
+
+    @Test
+    public void chooseFamilyBundle() {
+        cache.setCurrentBundle("family");
+        assertEquals("wrong bundle", BundleFactory.FAMILY_BUNDLE,
+                     cache.getCurrentBundle().descriptor());
+    }
+
+    @Test
+    public void familyBundleJson() {
+        cache.setCurrentBundle("family");
+        String json = BundleFactory.toJson(cache.getCurrentBundle());
+        System.out.println(json);
+        assertTrue("bad family json", sameJson(FAMILY_BUNDLE_JSON, json));
+    }
+
+    @Test
+    public void checkUsers() {
+        List<SubscriberUser> users = cache.getUsers();
+        assertEquals("wrong # users", 4, users.size());
+    }
+
+    // =============
+
+    private boolean sameJson(String s1, String s2) {
+        try {
+            JsonNode tree1 = MAPPER.readTree(s1);
+            JsonNode tree2 = MAPPER.readTree(s2);
+            return tree1.equals(tree2);
+        } catch (IOException e) {
+            System.out.println("Exception: " + e);
+        }
+        return false;
+    }
+
+    private static final ObjectMapper MAPPER = new ObjectMapper();
+
+    private static final String BASIC_BUNDLE_JSON = "{\n" +
+            "  \"bundle\": {\n" +
+            "    \"id\": \"basic\",\n" +
+            "    \"name\": \"Basic Bundle\",\n" +
+            "    \"functions\": [\n" +
+            "      {\n" +
+            "        \"id\": \"internet\",\n" +
+            "        \"name\": \"Internet\",\n" +
+            "        \"desc\": \"Basic internet connectivity.\",\n" +
+            "        \"params\": {}\n" +
+            "      },\n" +
+            "      {\n" +
+            "        \"id\": \"firewall\",\n" +
+            "        \"name\": \"Firewall\",\n" +
+            "        \"desc\": \"Normal firewall protection.\",\n" +
+            "        \"params\": {}\n" +
+            "      }\n" +
+            "    ]\n" +
+            "  },\n" +
+            "  \"bundles\": [\n" +
+            "    { \"id\": \"basic\", \"name\": \"Basic Bundle\" },\n" +
+            "    { \"id\": \"family\", \"name\": \"Family Bundle\" }\n" +
+            "  ]\n" +
+            "}\n";
+
+    private static final String FAMILY_BUNDLE_JSON = "{\n" +
+            "  \"bundle\": {\n" +
+            "    \"id\": \"family\",\n" +
+            "    \"name\": \"Family Bundle\",\n" +
+            "    \"functions\": [\n" +
+            "      {\n" +
+            "        \"id\": \"internet\",\n" +
+            "        \"name\": \"Internet\",\n" +
+            "        \"desc\": \"Basic internet connectivity.\",\n" +
+            "        \"params\": {}\n" +
+            "      },\n" +
+            "      {\n" +
+            "        \"id\": \"firewall\",\n" +
+            "        \"name\": \"Firewall\",\n" +
+            "        \"desc\": \"Normal firewall protection.\",\n" +
+            "        \"params\": {}\n" +
+            "      },\n" +
+            "      {\n" +
+            "        \"id\": \"url_filter\",\n" +
+            "        \"name\": \"Parental Control\",\n" +
+            "        \"desc\": \"Variable levels of URL filtering.\",\n" +
+            "        \"params\": {\n" +
+            "          \"level\": \"PG\",\n" +
+            "          \"levels\": [ \"PG\", \"PG-13\", \"R\" ]\n" +
+            "        }\n" +
+            "      }\n" +
+            "    ]\n" +
+            "  },\n" +
+            "  \"bundles\": [\n" +
+            "    { \"id\": \"basic\", \"name\": \"Basic Bundle\" },\n" +
+            "    { \"id\": \"family\", \"name\": \"Family Bundle\" }\n" +
+            "  ]\n" +
+            "}\n";
+}
diff --git a/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/model/BundleFactoryTest.java b/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/model/BundleFactoryTest.java
index 999ee97..a4d662e 100644
--- a/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/model/BundleFactoryTest.java
+++ b/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/model/BundleFactoryTest.java
@@ -22,7 +22,7 @@
 import java.util.Set;
 
 import static org.junit.Assert.*;
-import static org.onosproject.cord.gui.model.BundleFactory.availableBundles;
+import static org.onosproject.cord.gui.model.BundleFactory.*;
 import static org.onosproject.cord.gui.model.XosFunctionDescriptor.*;
 
 /**
@@ -33,11 +33,13 @@
     @Test
     public void bundleCount() {
         assertEquals("wrong count", 2, availableBundles().size());
+        assertTrue("missing basic", availableBundles().contains(BASIC_BUNDLE));
+        assertTrue("missing family", availableBundles().contains(FAMILY_BUNDLE));
     }
 
     @Test
     public void basicBundle() {
-        BundleDescriptor bundle = availableBundles().get(0);
+        BundleDescriptor bundle = BundleFactory.BASIC_BUNDLE;
         assertEquals("wrong id", "basic", bundle.id());
         assertEquals("wrong id", "Basic Bundle", bundle.displayName());
         Set<XosFunctionDescriptor> funcs = bundle.functions();
@@ -48,7 +50,7 @@
 
     @Test
     public void familyBundle() {
-        BundleDescriptor bundle = availableBundles().get(1);
+        BundleDescriptor bundle = BundleFactory.FAMILY_BUNDLE;
         assertEquals("wrong id", "family", bundle.id());
         assertEquals("wrong id", "Family Bundle", bundle.displayName());
         Set<XosFunctionDescriptor> funcs = bundle.functions();
@@ -57,5 +59,19 @@
         assertTrue("missing url-f", funcs.contains(URL_FILTER));
     }
 
+    @Test
+    public void bundleFromIdBasic() {
+        assertEquals("wrong bundle", BASIC_BUNDLE, bundleFromId("basic"));
+    }
+
+    @Test
+    public void bundleFromIdFamily() {
+        assertEquals("wrong bundle", FAMILY_BUNDLE, bundleFromId("family"));
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void bundleFromIdUnknown() {
+        bundleFromId("unknown");
+    }
 }
 
diff --git a/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/model/XosFunctionDescriptorTest.java b/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/model/XosFunctionDescriptorTest.java
index c08d019..fd8cb8b 100644
--- a/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/model/XosFunctionDescriptorTest.java
+++ b/apps/demo/cord-gui/src/test/org/onosproject/cord/gui/model/XosFunctionDescriptorTest.java
@@ -49,7 +49,7 @@
 
     @Test
     public void urlFiltering() {
-        assertEquals("wrong id", "url_filtering", URL_FILTER.id());
+        assertEquals("wrong id", "url_filter", URL_FILTER.id());
         assertEquals("wrong display", "Parental Control", URL_FILTER.displayName());
         assertTrue("wrong desc", URL_FILTER.description().startsWith("Variable"));
     }
