UNPKG

gpii-universal

Version:

Cross platform, core components of the GPII personalization infrastructure.

1,279 lines (1,251 loc) 67.4 kB
/** GPII Preferences Server Tests Copyright 2014 Raising the Floor - International Licensed under the New BSD license. You may not use this file except in compliance with this License. The research leading to these results has received funding from the European Union's Seventh Framework Programme (FP7/2007-2013) under grant agreement no. 289016. You may obtain a copy of the License at https://github.com/GPII/universal/blob/master/LICENSE.txt */ "use strict"; var fluid = require("infusion"), jqUnit = fluid.require("node-jqunit", require, "jqUnit"), gpii = fluid.registerNamespace("gpii"); require("./preferencesServerTestsUtils.js"); fluid.require("%gpii-universal"); gpii.loadTestingSupport(); fluid.registerNamespace("gpii.tests.preferencesServer"); gpii.tests.preferencesServer.config = { configName: "gpii.tests.preferencesServer.config", configPath: "%preferencesServer/test/configs" }; gpii.tests.preferencesServer.testResponse = function (response, expected, receivedStatusCode, expectedStatusCode) { var retrievedData = JSON.parse(response); jqUnit.assertEquals("Response status code is expected", expectedStatusCode, receivedStatusCode); jqUnit.assertLeftHand("Response is correct", expected, retrievedData); }; // TESTING preferencesServer GET functionality fluid.registerNamespace("gpii.tests.preferencesServer.get"); // GET success cases gpii.tests.preferencesServer.get.buildTestDef = function (fixture) { var expectedStatusCode = fixture.expectedStatusCode || 200; return { name: fixture.name, expect: 2, components: { getRequest: { type: "kettle.test.request.http", options: { path: "/preferences/" + fixture.url, method: "GET", port: 8081, termMap: { gpiiKey: fixture.gpiiKey } } } }, sequence: [{ func: "{getRequest}.send" }, { event: "{getRequest}.events.onComplete", listener: "gpii.tests.preferencesServer.testResponse", args: ["{arguments}.0", fixture.expected, "{getRequest}.nativeResponse.statusCode", expectedStatusCode] }] }; }; gpii.tests.preferencesServer.get.successFixtures = [ { name: "GET: Basic retrieval of simple preference set in same ontology (no parameter)", gpiiKey: "np_flatOnly_singleContext", url: "%gpiiKey", expected: { "name": "Single set", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.850, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/unknown": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [{ "type": "provenance", "scope": ["http://registry\\.gpii\\.net/applications/org\\.alsa-project"], "source": "snapshotter" }, { "type": "required", "scope": ["*"] }] } }, "metadata": [ { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/fontSize"] } ] } }, { name: "GET: Basic retrieval of simple preference set in same ontology (with parameter)", gpiiKey: "np_flatOnly_singleContext", url: "%gpiiKey?view=flat", expected: { "name": "Single set", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.850, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/unknown": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [{ "type": "provenance", "scope": ["http://registry\\.gpii\\.net/applications/org\\.alsa-project"], "source": "snapshotter" }, { "type": "required", "scope": ["*"] }] } }, "metadata": [ { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/fontSize"] } ] } }, { name: "GET: Basic retrieval of simple preference set in different ontology (with parameter)", gpiiKey: "np_ISO24751Only_singleContext", url: "%gpiiKey?view=flat", expected: { "name": "ISO24751 set", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.850, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [{ "type": "provenance", "scope": ["http://registry\\.gpii\\.net/applications/org\\.alsa-project"], "source": "snapshotter" }] } }, "metadata": [ { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/fontSize"] } ] } }, { name: "GET: Retrieval of simple preference set in different ontology plus non-translateable preference", gpiiKey: "np_flatOnly_singleContext", url: "%gpiiKey?view=ISO24751", expected: { "name": "Single set", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "onscreenKeyboard": true, "mouseEmulation": { "cursorSpeed": 0.85, "-provisional-initDelay": 120, "-provisional-mouseEmulation/enabled": true } }, "applications": { "org.alsa-project": { "id": "org.alsa-project", "parameters": { "masterVolume": 14 } } } }, "metadata": [ { "type": "provenance", "scope": ["applications.org\\.alsa-project.parameters"], "source": "snapshotter" }, { "type": "required", "scope": ["*"] } ] } }, "metadata": [ { "type": "doNotShare", "scope": [ "display.screenEnhancement.fontSize"] } ] } }, { name: "GET: Retrieval of single ontology, multi-context preference set in same ontology", gpiiKey: "np_flatOnly_multiContext", url: "%gpiiKey?view=flat", expected: { "name": "Multiple Contexts", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/unknown": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [ { "type": "provenance", "scope": ["http://registry\\.gpii\\.net/common/fontSize"], "source": "snapshotter" } ] }, "gpii-xyz1234": { "name": "Nighttime at home", "preferences": { "http://registry.gpii.net/common/cursorSpeed": 1 }, "priority": 100 } }, "metadata": [ { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/fontSize"] } ] } }, { name: "GET: Retrieval of single ontology, multi-context preference set in a different ontology", gpiiKey: "np_flatOnly_multiContext", url: "%gpiiKey?view=ISO24751", expected: { "name": "Multiple Contexts", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "mouseEmulation": { "-provisional-mouseEmulation/enabled": true } }, "applications": { "org.alsa-project": { "id": "org.alsa-project", "parameters": { "masterVolume": 14 } } } }, "metadata": [ { "type": "provenance", "scope": ["display.screenEnhancement.fontSize"], "source": "snapshotter" } ] }, "gpii-xyz1234": { "name": "Nighttime at home", "preferences": { "control": { "mouseEmulation": { "cursorSpeed": 1 } } }, "priority": 100 } }, "metadata": [ { "type": "doNotShare", "scope": [ "display.screenEnhancement.fontSize"] } ] } }, { name: "GET: Retrieval of mixed preference set in flat (from multiple ontologies, single context)", gpiiKey: "np_mixed_singleContext", url: "%gpiiKey?view=flat", expected: { "name": "lotta stuff", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.850, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/flatOnly": true, "http://registry.gpii.net/common/fontSize": 24, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [ { "type": "required", "scope": ["*"] }, { "type": "provenance", "scope": ["http://registry\\.gpii\\.net/common/fontSize"], "source": "snapshotter" } ] } } } }, { name: "GET: Retrieval of mixed preference set in flat (from multiple ontologies, multi context)", gpiiKey: "np_mixed_multiContext", url: "%gpiiKey?view=flat", expected: { "name": "lotta stuff", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.850, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/flatOnly": true, "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 }, "http://registry.gpii.net/applications/org.gnome.desktop.a11y.magnifier": { "show-cross-hairs": true, "lens-mode": false } }, "metadata": [ { "type": "provenance", "scope": ["http://registry\\.gpii\\.net/common/fontSize"], "source": "snapshotter" } ] }, "gpii-xyz1234": { "name": "Nighttime at home", "preferences": { "http://registry.gpii.net/common/cursorSpeed": 1 }, "priority": 100 } }, "metadata": [ { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/fontSize"] }, { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/magnification"] } ] } }, { name: "GET: Retrieval of mixed preference set in ISO24751 (from multiple ontologies, multi context)", gpiiKey: "np_mixed_multiContext", url: "%gpiiKey?view=ISO24751", expected: { "name": "lotta stuff", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "onscreenKeyboard": true, "mouseEmulation": { "cursorSpeed": 0.85, "-provisional-initDelay": 120, "-provisional-mouseEmulation/enabled": true } }, "applications": { "org.alsa-project": { "id": "org.alsa-project", "parameters": { "masterVolume": 14 } }, "org.gnome.desktop.a11y.magnifier": { "id": "org.gnome.desktop.a11y.magnifier", "parameters": { "show-cross-hairs": true, "lens-mode": false } } } }, "metadata": [ { "type": "provenance", "scope": ["display.screenEnhancement.fontSize"], "source": "snapshotter" } ] }, "gpii-xyz1234": { "name": "Nighttime at home", "preferences": { "control": { "mouseEmulation": { "cursorSpeed": 1 } } }, "priority": 100 } }, "metadata": [ { "type": "doNotShare", "scope": [ "display.screenEnhancement.fontSize"] }, { "type": "doNotShare", "scope": [ "display.screenEnhancement.magnification"] } ] } }, { name: "GET: Complex retrieval of simple preference set in different ontology (with parameter)", gpiiKey: "np_ISO24751Only_singleContext_wildcardMetadata", url: "%gpiiKey?view=flat", expected: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.85, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 }, "http://registry.gpii.net/common/onScreenKeyboard/enabled": true }, "metadata": [ { "type": "provenance", "scope": [ "http://registry\\.gpii\\.net/common/initDelay", "http://registry\\.gpii\\.net/common/stickyKeys", "http://registry\\.gpii\\.net/common/toggleKeys", "http://registry\\.gpii\\.net/common/cursorSpeed", "http://registry\\.gpii\\.net/common/speechControl", "http://registry\\.gpii\\.net/common/hapticFeedback", "http://registry\\.gpii\\.net/common/tableOfContents", "http://registry\\.gpii\\.net/common/slowKeysInterval", "http://registry\\.gpii\\.net/common/slowKeys/enabled", "http://registry\\.gpii\\.net/common/debounce/enabled", "http://registry\\.gpii\\.net/common/mouseEmulation/enabled", "http://registry\\.gpii\\.net/common/onScreenKeyboard/enabled" ], "source": "snapshotter" } ] } }, "name": "ISO24751 set", "metadata": [ { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/fontSize", "http://registry\\.gpii\\.net/common/tracking", "http://registry\\.gpii\\.net/common/DPIScale", "http://registry\\.gpii\\.net/common/lineSpace", "http://registry\\.gpii\\.net/common/cursorSize", "http://registry\\.gpii\\.net/common/trackingTTS", "http://registry\\.gpii\\.net/common/nightScreen", "http://registry\\.gpii\\.net/common/invertImages", "http://registry\\.gpii\\.net/common/magnification", "http://registry\\.gpii\\.net/common/invertColours", "http://registry\\.gpii\\.net/common/mouseTrailing", "http://registry\\.gpii\\.net/common/characterSpace", "http://registry\\.gpii\\.net/common/highlightColor", "http://registry\\.gpii\\.net/common/foregroundColor", "http://registry\\.gpii\\.net/common/backgroundColor", "http://registry\\.gpii\\.net/common/fontFaceFontName", "http://registry\\.gpii\\.net/common/magnifierPosition", "http://registry\\.gpii\\.net/common/highContrastTheme", "http://registry\\.gpii\\.net/common/inputsLarger/enabled", "http://registry\\.gpii\\.net/common/highContrast/enabled", "http://registry\\.gpii\\.net/common/magnification/enabled", "http://registry\\.gpii\\.net/common/fontFaceGenericFontFace" ] } ] } } ]; // GET fail cases gpii.tests.preferencesServer.get.failFixtures = [ { name: "GET: Retrieving preferences by a nonexistent GPII key returns an error", gpiiKey: "non-existent-gpii-key", url: "%gpiiKey", expectedStatusCode: 404, expected: { isError: true, errorCode: "GPII_ERR_NO_GPIIKEY", message: "GPII key does not exist" } } ]; // TESTING preferencesServer POST functionality fluid.registerNamespace("gpii.tests.preferencesServer.post"); // POST Prefs test cases gpii.tests.preferencesServer.post.testPostResponse = function (response, fixture, receivedStatusCode) { var retrievedData = JSON.parse(response); var expectedStatusCode = fixture.expectedStatusCode || 200; var expected = fixture.expected || { preferences: fixture.postBody, gpiiKey: retrievedData.gpiiKey }; jqUnit.assertLeftHand("Response from preferences server is as expected", expected, retrievedData); jqUnit.assertEquals("Response status code is as expected", expectedStatusCode, receivedStatusCode); }; gpii.tests.preferencesServer.post.buildTestDef = function (fixture) { return { name: fixture.name, expect: 2, components: { postRequest: { type: "kettle.test.request.http", options: { path: "/preferences", method: "POST", port: 8081 } } }, sequence: [{ func: "{postRequest}.send", args: fixture.postBody }, { event: "{postRequest}.events.onComplete", listener: "gpii.tests.preferencesServer.post.testPostResponse", args: ["{arguments}.0", fixture, "{postRequest}.nativeResponse.statusCode"] }] }; }; gpii.tests.preferencesServer.post.successFixtures = [ { name: "POST Prefs: With no gpiiKey specified and no ontology specified", url: "", postBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.850, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/unknown": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [ { "type": "provenance", "scope": ["http://registry.gpii.net/common/fontSize"], "source": "snapshotter" } ] } } } }, { name: "POST Prefs: With no gpiiKey specified and ontology specified", url: "?view=flat", postBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.850, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/unknown": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [ { "type": "provenance", "scope": ["http://registry.gpii.net/common/fontSize"], "source": "snapshotter" } ] } } } } ]; gpii.tests.preferencesServer.post.failFixtures = [ { name: "POST Prefs: payload with 'shallow' validation error.", url: "", postBody: {}, expectedStatusCode: 400, expected: { isValid: false, message: "Your request was invalid. See the errors for details." } }, { name: "POST Prefs: Payload with 'deep' invalid material.", url: "", postBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": "true" } } } }, expectedStatusCode: 400, expected: { isValid: false, message: "Your request was invalid. See the errors for details." } } ]; // TESTING preferencesServer PUT functionality fluid.registerNamespace("gpii.tests.preferencesServer.put"); gpii.tests.preferencesServer.put.wrapPrefs = function (fixture) { return { preferences: fixture.putBody, gpiiKey: fixture.gpiiKey }; }; gpii.tests.preferencesServer.put.testSuccessResponse = function (response, prefs, gpiiKey) { var retrievedData = JSON.parse(response); // expect preferences without ontology info - any generated user token is fine var expected = { preferences: prefs, gpiiKey: gpiiKey }; jqUnit.assertDeepEq("Response from preferences server is as expected", expected, retrievedData); }; gpii.tests.preferencesServer.put.buildSuccessTestDef = function (fixture) { var expectedStatusCode = fixture.expectedStatusCode || 200; return { name: fixture.name, expect: 3, config: gpii.tests.preferencesServer.config, components: { putRequest: { type: "kettle.test.request.http", options: { path: "/preferences/%gpiiKey" + "?merge=" + fixture.merge + "&view=" + (fixture.view ? fixture.view : ""), method: "PUT", port: 8081, termMap: { gpiiKey: fixture.gpiiKey } } }, rawPrefsRequest: { type: "kettle.test.request.http", options: { path: "/rawPreferences/%gpiiKey", method: "GET", port: 8081, termMap: { gpiiKey: fixture.gpiiKey } } } }, sequence: [{ func: "{putRequest}.send", args: fixture.putBody }, { event: "{putRequest}.events.onComplete", listener: "gpii.tests.preferencesServer.put.testSuccessResponse", args: ["{arguments}.0", fixture.putBody, fixture.gpiiKey] }, { func: "{rawPrefsRequest}.send" }, { event: "{rawPrefsRequest}.events.onComplete", listener: "gpii.tests.preferencesServer.testResponse", args: ["{arguments}.0", fixture.expectedRaw, "{rawPrefsRequest}.nativeResponse.statusCode", expectedStatusCode] }] }; }; gpii.tests.preferencesServer.put.successFixtures = [ { name: "PUT: No view specified, ontology matching preference set", gpiiKey: "np_flatOnly_singleContext", putBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": false }, "metadata": [ { "type": "required", "scope": ["*"] } ] } }, "metadata": [ { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/fontSize"] } ] }, expectedRaw: { "flat": { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": false }, "metadata": [ { "type": "required", "scope": ["*"] } ] } }, "metadata": [ { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/fontSize"] } ] } } }, { name: "PUT: No view specified, ontology matching preference set, with the merge flag turned on to merge the new preferences with the existing preferences", gpiiKey: "np_flatOnly_singleContext", merge: true, putBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": false }, "metadata": [ { "type": "required", "scope": ["*"] } ] } }, "metadata": [ { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/fontSize"] } ] }, expectedRaw: { "flat": { "name": "Single set", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": false, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.85, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/unknown": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [ { "type": "required", "scope": ["*"], "source": "snapshotter" }, { "type": "required", "scope": [ "*" ] } ] } }, "metadata": [ { "type": "doNotShare", "scope": [ "http://registry\\.gpii\\.net/common/fontSize" ] } ] } } }, { name: "PUT: To preference set containing same preference in different ontology", gpiiKey: "np_tiny", view: "ISO24751", putBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "onscreenKeyboard": false } } } } }, expectedRaw: { "ISO24751": { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "onscreenKeyboard": false } } } } }, "flat": { "name": "bit of stuff", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { } } } } } }, { name: "PUT: To preference set containing same preference in different ontology, with the merge flag turned on to merge the new preferences with the existing preferences", gpiiKey: "np_tiny", view: "ISO24751", merge: true, putBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "onscreenKeyboard": false } } } } }, expectedRaw: { "flat": { "name": "bit of stuff", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true }, "metadata": [] } }, "metadata": [] }, "ISO24751": { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "onscreenKeyboard": false } } } } } } }, { name: "PUT: Overwriting one view and modifying another", gpiiKey: "np_mixed_singleContext", view: "ISO24751", putBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "mouseEmulation": { "cursorSpeed": 1 } } } } } }, expectedRaw: { "flat": { "name": "lotta stuff", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/flatOnly": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [{ "type": "required", "scope": ["*"] }] } } }, "ISO24751": { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "mouseEmulation": { "cursorSpeed": 1 } } } } } }, "bogus": { "contexts": { "gpii-default": { "preferences": { "foo": "bar" } } } } } }, { name: "PUT: Overwriting one view and modifying another, with the merge flag turned on to merge the new preferences with the existing preferences", gpiiKey: "np_mixed_singleContext", view: "ISO24751", merge: true, putBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "mouseEmulation": { "cursorSpeed": 1 } } } } } }, expectedRaw: { "flat": { "name": "lotta stuff", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.85, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/flatOnly": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [ { "type": "required", "scope": [ "*" ] } ] } } }, "ISO24751": { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "display": { "screenEnhancement": { "fontSize": 24 } }, "control": { "mouseEmulation": { "cursorSpeed": 1 } } }, "metadata": [ { "type": "provenance", "scope": [ "display.screenEnhancement.fontSize" ], "source": "snapshotter" } ] } } }, "bogus": { "contexts": { "gpii-default": { "preferences": { "foo": "bar" } } } } } }, { name: "PUT: Overwriting app specific block in one view with new ones from another view", gpiiKey: "np_mixed_singleContext", view: "ISO24751", putBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "applications": { "org.alsa-project": { "parameters": { "bass": "damn loud" } } } } } } }, expectedRaw: { "flat": { "name": "lotta stuff", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.850, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/flatOnly": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [{ "type": "required", "scope": ["*"] }] } } }, "ISO24751": { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "applications": { "org.alsa-project": { "parameters": { "bass": "damn loud" } } } } } } }, "bogus": { "contexts": { "gpii-default": { "preferences": { "foo": "bar" } } } } } }, { name: "PUT: Overwriting app specific block in one view with new ones from another view, with the merge flag turned on to merge the new preferences with the existing preferences", gpiiKey: "np_mixed_singleContext", view: "ISO24751", merge: true, putBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "applications": { "org.alsa-project": { "parameters": { "bass": "damn loud" } } } } } } }, expectedRaw: { "flat": { "name": "lotta stuff", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/common/onScreenKeyboard/enabled": true, "http://registry.gpii.net/common/initDelay": 120, "http://registry.gpii.net/common/cursorSpeed": 0.85, "http://registry.gpii.net/common/mouseEmulation/enabled": true, "http://registry.gpii.net/common/flatOnly": true, "http://registry.gpii.net/applications/org.alsa-project": { "masterVolume": 14 } }, "metadata": [ { "type": "required", "scope": [ "*" ] } ] } } }, "ISO24751": { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "display": { "screenEnhancement": { "fontSize": 24 } }, "applications": { "org.alsa-project": { "parameters": { "bass": "damn loud" } } } }, "metadata": [ { "type": "provenance", "scope": [ "display.screenEnhancement.fontSize" ], "source": "snapshotter" } ] } } }, "bogus": { "contexts": { "gpii-default": { "preferences": { "foo": "bar" } } } } } }, { name: "PUT: System shouldn't act crazy when saving with wildcard metadata", gpiiKey: "np_flatOnly_singleContext", view: "ISO24751", putBody: { "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "control": { "onscreenKeyboard": false } }, "metadata": [{ "type": "required", "scope": ["control.*"] }] } } }, expectedRaw: { "flat": { "name": "Single set", "contexts": { "gpii-default": { "name": "Default preferences", "preferences": { "http://registry.gpii.net/com