Bug 967008 - getAccounts should return the account info right away. r=jedp

This commit is contained in:
Sam Penrose 2014-03-26 09:12:14 -07:00
Родитель 34d5bff83c
Коммит e27b4c9859
2 изменённых файлов: 41 добавлений и 72 удалений

Просмотреть файл

@ -249,11 +249,11 @@ this.FxAccountsManager = {
getAccount: function() {
// We check first if we have session details cached.
if (this._activeSession) {
// If our cache says that the account is not yet verified, we check that
// this information is correct, and update the cached data if not.
// If our cache says that the account is not yet verified,
// we kick off verification before returning what we have.
if (this._activeSession && !this._activeSession.verified &&
!Services.io.offline) {
return this.verificationStatus(this._activeSession);
this.verificationStatus(this._activeSession);
}
log.debug("Account " + JSON.stringify(this._user));
@ -270,11 +270,10 @@ this.FxAccountsManager = {
this._activeSession = user;
// If we get a stored information of a not yet verified account,
// we check this information with the server, update the stored
// data if needed and finally return the account details.
// we kick off verification before returning what we have.
if (!user.verified && !Services.io.offline) {
log.debug("Unverified account");
return this.verificationStatus(user);
this.verificationStatus(user);
}
log.debug("Account " + JSON.stringify(this._user));
@ -315,44 +314,35 @@ this.FxAccountsManager = {
verificationStatus: function() {
log.debug("verificationStatus");
if (!this._activeSession || !this._activeSession.sessionToken) {
return this._error(ERROR_NO_TOKEN_SESSION);
this._error(ERROR_NO_TOKEN_SESSION);
}
// There is no way to unverify an already verified account, so we just
// return the account details of a verified account
if (this._activeSession.verified) {
log.debug("Account already verified");
return Promise.resolve(this._user);
return;
}
if (Services.io.offline) {
return this._error(ERROR_OFFLINE);
this._error(ERROR_OFFLINE);
}
let client = this._getFxAccountsClient();
return client.recoveryEmailStatus(this._activeSession.sessionToken).then(
client.recoveryEmailStatus(this._activeSession.sessionToken).then(
data => {
let error = this._getError(data);
if (error) {
return this._error(error, data);
this._error(error, data);
}
// If the verification status is different from the one that we have
// stored, we update it and return the session data. If not, we simply
// return the session data.
// If the verification status has changed, update state.
if (this._activeSession.verified != data.verified) {
this._activeSession.verified = data.verified;
return this._fxAccounts.setSignedInUser(this._activeSession).then(
() => {
log.debug(JSON.stringify(this._user));
return Promise.resolve(this._user);
}
);
this._fxAccounts.setSignedInUser(this._activeSession);
}
log.debug(JSON.stringify(this._user));
return Promise.resolve(this._user);
},
reason => { return this._serverError(reason); }
reason => { this._serverError(reason); }
);
},
@ -415,7 +405,7 @@ this.FxAccountsManager = {
log.debug("No signed in user");
if (aOptions.silent) {
if (aOptions && aOptions.silent) {
return Promise.resolve(null);
}

Просмотреть файл

@ -445,18 +445,17 @@ add_test(function(test_getAccount_existing_unverified_session_verified_user) {
FxAccountsManager._activeSession.verified = false;
FxAccountsManager._fxAccounts._signedInUser.verified = false;
FakeFxAccountsClient._verified = true;
FxAccountsManager.getAccount().then(
result => {
do_check_true(FakeFxAccountsClient._recoveryEmailStatusCalled);
do_check_true(result.verified);
do_check_eq(result.accountId, FxAccountsManager._user.accountId);
FakeFxAccountsClient._reset();
run_next_test();
},
error => {
do_throw("Unexpected error: " + error);
}
);
FxAccountsManager.getAccount();
do_execute_soon(function() {
do_check_true(FakeFxAccountsClient._recoveryEmailStatusCalled);
FxAccountsManager.getAccount().then(
result => {
do_check_true(result.verified);
do_check_eq(result.accountId, FxAccountsManager._user.accountId);
FakeFxAccountsClient._reset();
run_next_test();
});
});
});
add_test(function(test_signOut) {
@ -475,20 +474,6 @@ add_test(function(test_signOut) {
);
});
add_test(function(test_verificationStatus_no_token_session) {
do_print("= verificationStatus, no token session =");
do_check_null(FxAccountsManager._activeSession);
FxAccountsManager.verificationStatus().then(
() => {
do_throw("Unexpected success");
},
error => {
do_check_eq(error.error, ERROR_NO_TOKEN_SESSION);
run_next_test();
}
);
});
add_test(function(test_signUp_no_accountId) {
do_print("= signUp, no accountId=");
FxAccountsManager.signUp().then(
@ -598,33 +583,27 @@ add_test(function(test_signIn_already_signed_user) {
add_test(function(test_verificationStatus_unverified_session_unverified_user) {
do_print("= verificationStatus unverified session and user =");
FakeFxAccountsClient._verified = false;
FxAccountsManager.verificationStatus().then(
user => {
do_check_false(user.verified);
do_check_true(FakeFxAccountsClient._recoveryEmailStatusCalled);
do_check_false(FxAccountsManager._fxAccounts._setSignedInUserCalled);
run_next_test();
},
error => {
do_throw("Unexpected error: " + error);
}
);
FxAccountsManager.verificationStatus();
do_execute_soon(function() {
let user = FxAccountsManager._user;
do_check_false(user.verified);
do_check_true(FakeFxAccountsClient._recoveryEmailStatusCalled);
do_check_false(FxAccountsManager._fxAccounts._setSignedInUserCalled);
run_next_test();
});
});
add_test(function(test_verificationStatus_unverified_session_verified_user) {
do_print("= verificationStatus unverified session, verified user =");
FakeFxAccountsClient._verified = true;
FxAccountsManager.verificationStatus().then(
user => {
do_check_true(user.verified);
do_check_true(FakeFxAccountsClient._recoveryEmailStatusCalled);
do_check_true(FxAccountsManager._fxAccounts._setSignedInUserCalled);
run_next_test();
},
error => {
do_throw("Unexpected error: " + error);
}
);
FxAccountsManager.verificationStatus();
do_execute_soon(function() {
let user = FxAccountsManager._user;
do_check_true(user.verified);
do_check_true(FakeFxAccountsClient._recoveryEmailStatusCalled);
do_check_true(FxAccountsManager._fxAccounts._setSignedInUserCalled);
run_next_test();
});
});
add_test(function(test_queryAccount_no_exists) {