/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

Cu.import("resource://services-sync/service.js");
Cu.import("resource://services-sync/util.js");
Cu.import("resource://testing-common/services/sync/utils.js");

function run_test() {
  do_test_pending();
  ensureLegacyIdentityManager();
  let server = httpd_setup({
    "/user/1.0/johndoe": httpd_handler(200, "OK", "1"),
    "/user/1.0/janedoe": httpd_handler(200, "OK", "0"),
    // john@doe.com
    "/user/1.0/7wohs32cngzuqt466q3ge7indszva4of": httpd_handler(200, "OK", "0"),
    // jane@doe.com
    "/user/1.0/vuuf3eqgloxpxmzph27f5a6ve7gzlrms": httpd_handler(200, "OK", "1")
  });
  try {
    Service.serverURL = server.baseURI;

    _("A 404 will be recorded as 'generic-server-error'");
    do_check_eq(Service.checkAccount("jimdoe"), "generic-server-error");

    _("Account that's available.");
    do_check_eq(Service.checkAccount("john@doe.com"), "available");

    _("Account that's not available.");
    do_check_eq(Service.checkAccount("jane@doe.com"), "notAvailable");

    _("Username fallback: Account that's not available.");
    do_check_eq(Service.checkAccount("johndoe"), "notAvailable");

    _("Username fallback: Account that's available.");
    do_check_eq(Service.checkAccount("janedoe"), "available");

  } finally {
    Svc.Prefs.resetBranch("");
    server.stop(do_test_finished);
  }
}
