michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: Cu.import("resource://services-sync/constants.js"); michael@0: Cu.import("resource://services-sync/resource.js"); michael@0: Cu.import("resource://services-sync/service.js"); michael@0: Cu.import("resource://services-sync/util.js"); michael@0: Cu.import("resource://testing-common/services/sync/utils.js"); michael@0: michael@0: // Tracking info/collections. michael@0: let collectionsHelper = track_collections_helper(); michael@0: let collections = collectionsHelper.collections; michael@0: michael@0: let meta_global; michael@0: let server; michael@0: michael@0: let expectedUA; michael@0: let ua; michael@0: function uaHandler(f) { michael@0: return function(request, response) { michael@0: ua = request.getHeader("User-Agent"); michael@0: return f(request, response); michael@0: }; michael@0: } michael@0: michael@0: function run_test() { michael@0: Log.repository.rootLogger.addAppender(new Log.DumpAppender()); michael@0: meta_global = new ServerWBO('global'); michael@0: server = httpd_setup({ michael@0: "/1.1/johndoe/info/collections": uaHandler(collectionsHelper.handler), michael@0: "/1.1/johndoe/storage/meta/global": uaHandler(meta_global.handler()), michael@0: }); michael@0: michael@0: ensureLegacyIdentityManager(); michael@0: setBasicCredentials("johndoe", "ilovejane"); michael@0: Service.serverURL = server.baseURI + "/"; michael@0: Service.clusterURL = server.baseURI + "/"; michael@0: _("Server URL: " + server.baseURI); michael@0: michael@0: expectedUA = Services.appinfo.name + "/" + Services.appinfo.version + michael@0: " FxSync/" + WEAVE_VERSION + "." + michael@0: Services.appinfo.appBuildID; michael@0: michael@0: run_next_test(); michael@0: } michael@0: michael@0: add_test(function test_fetchInfo() { michael@0: _("Testing _fetchInfo."); michael@0: Service._fetchInfo(); michael@0: _("User-Agent: " + ua); michael@0: do_check_eq(ua, expectedUA + ".desktop"); michael@0: ua = ""; michael@0: run_next_test(); michael@0: }); michael@0: michael@0: add_test(function test_desktop_post() { michael@0: _("Testing direct Resource POST."); michael@0: let r = new AsyncResource(server.baseURI + "/1.1/johndoe/storage/meta/global"); michael@0: r.post("foo=bar", function (error, content) { michael@0: _("User-Agent: " + ua); michael@0: do_check_eq(ua, expectedUA + ".desktop"); michael@0: ua = ""; michael@0: run_next_test(); michael@0: }); michael@0: }); michael@0: michael@0: add_test(function test_desktop_get() { michael@0: _("Testing async."); michael@0: Svc.Prefs.set("client.type", "desktop"); michael@0: let r = new AsyncResource(server.baseURI + "/1.1/johndoe/storage/meta/global"); michael@0: r.get(function(error, content) { michael@0: _("User-Agent: " + ua); michael@0: do_check_eq(ua, expectedUA + ".desktop"); michael@0: ua = ""; michael@0: run_next_test(); michael@0: }); michael@0: }); michael@0: michael@0: add_test(function test_mobile_get() { michael@0: _("Testing mobile."); michael@0: Svc.Prefs.set("client.type", "mobile"); michael@0: let r = new AsyncResource(server.baseURI + "/1.1/johndoe/storage/meta/global"); michael@0: r.get(function (error, content) { michael@0: _("User-Agent: " + ua); michael@0: do_check_eq(ua, expectedUA + ".mobile"); michael@0: ua = ""; michael@0: run_next_test(); michael@0: }); michael@0: }); michael@0: michael@0: add_test(function tear_down() { michael@0: server.stop(run_next_test); michael@0: }); michael@0: