Skip to content

Commit

Permalink
CREDENTIAL: Do type checks for credential constructors.
Browse files Browse the repository at this point in the history
BUG=590610
[email protected]

Review URL: https://codereview.chromium.org/1745963002

Cr-Commit-Position: refs/heads/master@{#378194}
  • Loading branch information
mikewest authored and Commit bot committed Feb 29, 2016
1 parent 5a6f502 commit 80aa06d
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -91,4 +91,25 @@
});
});
}, 'Construct a FederatedCredential with an invalid federation URL.');

test(function() {
assert_throws(new TypeError(),
() => { new FederatedCredential(); });
assert_throws(new TypeError(),
() => { new FederatedCredential({}); });
assert_throws(new TypeError(),
() => { new FederatedCredential({ 'id': undefined }); });
assert_throws(new TypeError(),
() => { new FederatedCredential({ 'id': '' }); });
assert_throws(new TypeError(),
() => { new FederatedCredential({ 'provider': undefined }); });
assert_throws(new TypeError(),
() => { new FederatedCredential({ 'provider': '' }); });
assert_throws(new TypeError(),
() => { new FederatedCredential({ 'id': undefined, 'provider': undefined }); });
assert_throws(new TypeError(),
() => { new FederatedCredential({ 'id': undefined, 'provider': '' }); });
assert_throws(new TypeError(),
() => { new FederatedCredential({ 'id': undefined, 'provider': undefined }); });
}, 'FederatedCredential objects require IDs and Providers');
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -87,4 +87,25 @@
credential.additionalData = additionalData;
assert_equals(credential.additionalData, additionalData);
}, 'Verify the basics of "idName", "passwordName", and "additionalData"');

test(function() {
assert_throws(new TypeError(),
() => { new PasswordCredential(); });
assert_throws(new TypeError(),
() => { new PasswordCredential({}); });
assert_throws(new TypeError(),
() => { new PasswordCredential({ 'id': undefined }); });
assert_throws(new TypeError(),
() => { new PasswordCredential({ 'id': '' }); });
assert_throws(new TypeError(),
() => { new PasswordCredential({ 'password': undefined }); });
assert_throws(new TypeError(),
() => { new PasswordCredential({ 'password': '' }); });
assert_throws(new TypeError(),
() => { new PasswordCredential({ 'id': undefined, 'password': undefined }); });
assert_throws(new TypeError(),
() => { new PasswordCredential({ 'id': undefined, 'password': '' }); });
assert_throws(new TypeError(),
() => { new PasswordCredential({ 'id': undefined, 'password': undefined }); });
}, 'PasswordCredential objects require IDs and Passwords');
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,15 @@ FederatedCredential* FederatedCredential::create(WebFederatedCredential* webFede

FederatedCredential* FederatedCredential::create(const FederatedCredentialData& data, ExceptionState& exceptionState)
{
if (data.id().isEmpty()) {
exceptionState.throwTypeError("'id' must not be empty.");
return nullptr;
}
if (data.provider().isEmpty()) {
exceptionState.throwTypeError("'provider' must not be empty.");
return nullptr;
}

KURL iconURL = parseStringAsURL(data.iconURL(), exceptionState);
KURL providerURL = parseStringAsURL(data.provider(), exceptionState);
if (exceptionState.hadException())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,19 @@ PasswordCredential* PasswordCredential::create(WebPasswordCredential* webPasswor

PasswordCredential* PasswordCredential::create(const PasswordCredentialData& data, ExceptionState& exceptionState)
{
if (data.id().isEmpty()) {
exceptionState.throwTypeError("'id' must not be empty.");
return nullptr;
}
if (data.password().isEmpty()) {
exceptionState.throwTypeError("'password' must not be empty.");
return nullptr;
}

KURL iconURL = parseStringAsURL(data.iconURL(), exceptionState);
if (exceptionState.hadException())
return nullptr;

return new PasswordCredential(data.id(), data.password(), data.name(), iconURL);
}

Expand Down

0 comments on commit 80aa06d

Please sign in to comment.