Bug 750948 - Implement unit tests for AitC client against mock server; r=gps

This commit is contained in:
Harald Kirschner 2012-06-25 16:39:39 -07:00
parent 885e5a7519
commit 341cc8e70d
2 changed files with 155 additions and 1 deletions

View File

@ -0,0 +1,153 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
Cu.import("resource://services-aitc/client.js");
Cu.import("resource://services-common/rest.js");
Cu.import("resource://services-common/utils.js");
Cu.import("resource://services-common/preferences.js");
Cu.import("resource://testing-common/services-common/aitcserver.js");
const PREFS = new Preferences("services.aitc.client.")
function run_test() {
initTestLogging("Trace");
run_next_test();
}
function get_aitc_server() {
_("Create new server.");
let server = new AITCServer10Server();
server.start(get_server_port());
return server;
}
function get_server_with_user(username) {
_("Create server user for User " + username);
let server = get_aitc_server();
server.createUser(username);
return server;
}
function get_mock_app(remote) {
let app = {
name: "Mocking Birds",
origin: "http://example.com",
installOrigin: "http://example.com",
installedAt: Date.now(),
modifiedAt: Date.now(),
receipts: []
};
app[remote ? 'manifestPath' : 'manifestURL'] = "/manifest.webapp";
return app;
}
function get_client_for_server(username, server) {
_("Create server user for User " + username);
let token = {
endpoint: server.url + username,
id: 'ID-HERE',
key: 'KEY-HERE'
};
let client = new AitcClient(token, PREFS);
return client;
}
add_test(function test_getapps_empty() {
_("Ensure client request for empty user has appropriate content.");
const username = "123";
let server = get_server_with_user(username);
let client = get_client_for_server(username, server);
client.getApps(function(error, apps) {
_("Got response");
do_check_null(error);
do_check_true(Array.isArray(apps));
do_check_eq(apps.length, 0);
server.stop(run_next_test);
});
});
add_test(function test_install_app() {
_("Ensure client request for installing an app has appropriate content.");
const username = "123";
const app = get_mock_app();
let server = get_server_with_user(username);
let client = get_client_for_server(username, server);
// TODO _putApp instead of, as install requires app in registry
client._putApp(client._makeRemoteApp(app), function(error, status) {
_("Got response");
do_check_null(error);
do_check_true(status);
client.getApps(function(error, apps) {
_("Got response");
do_check_null(error);
do_check_true(Array.isArray(apps));
do_check_eq(apps.length, 1);
let first = apps[0];
do_check_eq(first.origin, app.origin);
server.stop(run_next_test);
});
});
});
add_test(function test_uninstall_app() {
_("Ensure client request for un-installing an app has appropriate content.");
const username = "123";
const app = get_mock_app();
let server = get_server_with_user(username);
let client = get_client_for_server(username, server);
server.users[username].addApp(get_mock_app(true));
client.remoteUninstall(app, function(error, status) {
_("Got response");
do_check_null(error);
do_check_true(status);
client.getApps(function(error, apps) {
_("Got response");
do_check_eq(error);
do_check_true(Array.isArray(apps));
do_check_eq(apps.length, 1);
let first = apps[0];
do_check_eq(first.origin, app.origin);
do_check_true(first.hidden);
server.stop(run_next_test);
});
});
});

View File

@ -1,7 +1,8 @@
[DEFAULT]
head = ../../../common/tests/unit/head_global.js ../../../common/tests/unit/head_helpers.js
head = ../../../common/tests/unit/head_global.js ../../../common/tests/unit/head_helpers.js ../../../common/tests/unit/head_http.js
tail =
[test_load_modules.js]
[test_storage_queue.js]
[test_storage_registry.js]
[test_aitc_client.js]