Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5665)

Unified Diff: chrome/test/data/extensions/api_test/webrequest/test_auth_required.html

Issue 8015004: webRequest.onAuthRequired listeners can provide authentication credentials. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix indent Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/api_test/webrequest/test_auth_required.html
diff --git a/chrome/test/data/extensions/api_test/webrequest/test_auth_required.html b/chrome/test/data/extensions/api_test/webrequest/test_auth_required.html
new file mode 100644
index 0000000000000000000000000000000000000000..94ae1240ddf10882aaf5aaa01d8f4165120515d1
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/webrequest/test_auth_required.html
@@ -0,0 +1,323 @@
+<script src="framework.js">
battre 2011/10/10 13:47:03 as some tests are blocking, there is a certain cha
+</script>
+<script>
+function getURLAuthRequired() {
+ return getServerURL('auth-basic');
+}
+
+runTests([
+ // onAuthRequired is not a blocking function in this variant.
+ function authRequiredNonBlocking() {
+ expect(
+ [ // events
+ { label: "onBeforeRequest",
+ event: "onBeforeRequest",
+ details: {
+ url: getURLAuthRequired(),
+ frameUrl: getURLAuthRequired()
+ }
+ },
+ { label: "onBeforeSendHeaders",
+ event: "onBeforeSendHeaders",
+ details: {
+ url: getURLAuthRequired(),
+ // Note: no requestHeaders because we don't ask for them.
+ },
+ },
+ { label: "onSendHeaders",
+ event: "onSendHeaders",
+ details: {
+ url: getURLAuthRequired(),
+ }
+ },
+ { label: "onHeadersReceived",
+ event: "onHeadersReceived",
+ details: {
+ url: getURLAuthRequired(),
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized"
+ }
+ },
+ { label: "onAuthRequired",
+ event: "onAuthRequired",
+ details: {
+ url: getURLAuthRequired(),
+ isProxy: false,
+ scheme: "basic",
+ realm: "testrealm",
+ challenger: {host: testServer, port: testServerPort},
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized",
+ }
+ },
+ { label: "onResponseStarted",
+ event: "onResponseStarted",
+ details: {
+ url: getURLAuthRequired(),
+ fromCache: false,
+ statusCode: 401,
+ ip: "127.0.0.1",
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized",
+ }
+ },
+ { label: "onCompleted",
+ event: "onCompleted",
+ details: {
+ url: getURLAuthRequired(),
+ fromCache: false,
+ statusCode: 401,
+ ip: "127.0.0.1",
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized",
+ }
+ },
+ ],
+ [ // event order
+ ["onBeforeRequest", "onBeforeSendHeaders", "onSendHeaders",
+ "onHeadersReceived", "onAuthRequired", "onResponseStarted",
+ "onCompleted"]
+ ],
+ {}, ["responseHeaders"]);
+ navigateAndWait(getURLAuthRequired());
+ },
+
+ // onAuthRequired is a blocking function but takes no action in this variant.
+ function authRequiredNoAction() {
+ expect(
+ [ // events
+ { label: "onBeforeRequest",
+ event: "onBeforeRequest",
+ details: {
+ url: getURLAuthRequired(),
+ frameUrl: getURLAuthRequired()
+ }
+ },
+ { label: "onBeforeSendHeaders",
+ event: "onBeforeSendHeaders",
+ details: {
+ url: getURLAuthRequired(),
+ // Note: no requestHeaders because we don't ask for them.
+ },
+ },
+ { label: "onSendHeaders",
+ event: "onSendHeaders",
+ details: {
+ url: getURLAuthRequired(),
+ }
+ },
+ { label: "onHeadersReceived",
+ event: "onHeadersReceived",
+ details: {
+ url: getURLAuthRequired(),
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized"
+ }
+ },
+ { label: "onAuthRequired",
+ event: "onAuthRequired",
+ details: {
+ url: getURLAuthRequired(),
+ isProxy: false,
+ scheme: "basic",
+ realm: "testrealm",
+ challenger: {host: testServer, port: testServerPort},
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized",
+ }
+ },
+ { label: "onResponseStarted",
+ event: "onResponseStarted",
+ details: {
+ url: getURLAuthRequired(),
+ fromCache: false,
+ statusCode: 401,
+ ip: "127.0.0.1",
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized",
+ }
+ },
+ { label: "onCompleted",
+ event: "onCompleted",
+ details: {
+ url: getURLAuthRequired(),
+ fromCache: false,
+ statusCode: 401,
+ ip: "127.0.0.1",
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized",
+ }
+ },
+ ],
+ [ // event order
+ ["onBeforeRequest", "onBeforeSendHeaders", "onSendHeaders",
+ "onHeadersReceived", "onAuthRequired", "onResponseStarted",
+ "onCompleted"]
+ ],
+ {}, ["responseHeaders"]);
battre 2011/10/10 13:47:03 forgot "blocking"?
cbentzel 2011/10/10 13:59:54 Oops! Thanks.
+ navigateAndWait(getURLAuthRequired());
+ },
+
+ // onAuthRequired is a blocking function that cancels the auth attempt.
+ function authRequiredCancelAuth() {
+ expect(
+ [ // events
+ { label: "onBeforeRequest",
+ event: "onBeforeRequest",
+ details: {
+ url: getURLAuthRequired(),
+ frameUrl: getURLAuthRequired()
+ },
+ retval: {}
+ },
+ { label: "onBeforeSendHeaders",
+ event: "onBeforeSendHeaders",
+ details: {
+ url: getURLAuthRequired(),
+ // Note: no requestHeaders because we don't ask for them.
+ },
+ retval: {}
+ },
+ { label: "onSendHeaders",
+ event: "onSendHeaders",
+ details: {
+ url: getURLAuthRequired(),
+ }
+ },
+ { label: "onHeadersReceived",
+ event: "onHeadersReceived",
+ details: {
+ url: getURLAuthRequired(),
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized"
+ }
+ },
+ { label: "onAuthRequired",
+ event: "onAuthRequired",
+ details: {
+ url: getURLAuthRequired(),
+ isProxy: false,
+ scheme: "basic",
+ realm: "testrealm",
+ challenger: {host: testServer, port: testServerPort},
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized",
+ },
+ retval: {cancel: true}
battre 2011/10/10 13:47:03 in all other handlers, {cancel: true} leads to "on
cbentzel 2011/10/10 13:59:54 Good question. I mentioned overloading "cancel" on
battre 2011/10/10 14:32:13 I guess I am OK with either approach.
+ },
+ { label: "onResponseStarted",
+ event: "onResponseStarted",
+ details: {
+ url: getURLAuthRequired(),
+ fromCache: false,
+ statusCode: 401,
+ ip: "127.0.0.1",
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized",
+ }
+ },
+ { label: "onCompleted",
+ event: "onCompleted",
+ details: {
+ url: getURLAuthRequired(),
+ fromCache: false,
+ statusCode: 401,
+ ip: "127.0.0.1",
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized",
+ }
+ },
+ ],
+ [ // event order
+ ["onBeforeRequest", "onBeforeSendHeaders", "onSendHeaders",
+ "onHeadersReceived", "onAuthRequired", "onResponseStarted",
+ "onCompleted"]
+ ],
+ {},
+ ["responseHeaders", "blocking"]);
+ navigateAndWait(getURLAuthRequired());
+ },
+
+ // onAuthRequired is a blocking function that sets authentication credentials.
+ // This needs to be done last, otherwise the authentication
+ // credentials will be cached and the other tests will fail.
+ function authRequiredSetAuth() {
+ expect(
+ [ // events
+ { label: "onBeforeRequest",
+ event: "onBeforeRequest",
+ details: {
+ url: getURLAuthRequired(),
+ frameUrl: getURLAuthRequired()
+ },
+ retval: {}
+ },
+ { label: "onBeforeSendHeaders",
+ event: "onBeforeSendHeaders",
+ details: {
+ url: getURLAuthRequired(),
+ // Note: no requestHeaders because we don't ask for them.
+ },
+ retval: {}
+ },
+ { label: "onSendHeaders",
+ event: "onSendHeaders",
+ details: {
+ url: getURLAuthRequired(),
+ }
+ },
+ { label: "onHeadersReceived",
+ event: "onHeadersReceived",
+ details: {
+ url: getURLAuthRequired(),
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized"
+ }
+ },
+ { label: "onAuthRequired",
+ event: "onAuthRequired",
+ details: {
+ url: getURLAuthRequired(),
+ isProxy: false,
+ scheme: "basic",
+ realm: "testrealm",
+ challenger: {host: testServer, port: testServerPort},
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.0 401 Unauthorized",
+ },
+ retval: {authCredentials: {username: "foo", password: "secret"}}
battre 2011/10/10 13:47:03 we could add a test case where we specify the wron
cbentzel 2011/10/10 13:59:54 Yes, we're asked again. I'll add a test case.
battre 2011/10/10 14:32:13 How about adding a counter "authorizationAttempt"?
cbentzel 2011/10/10 14:38:06 Arguably the extension author could maintain that
battre 2011/10/10 14:47:10 Ok, but then we should highlight this problem in t
cbentzel 2011/10/10 15:09:19 SGTM.
+ },
+ { label: "onResponseStarted",
+ event: "onResponseStarted",
+ details: {
+ url: getURLAuthRequired(),
+ fromCache: false,
+ statusCode: 200,
+ ip: "127.0.0.1",
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.1 200 OK",
+ }
+ },
+ { label: "onCompleted",
+ event: "onCompleted",
+ details: {
+ url: getURLAuthRequired(),
+ fromCache: false,
+ statusCode: 200,
+ ip: "127.0.0.1",
+ responseHeadersExist: true,
+ statusLine: "HTTP/1.1 200 OK",
+ }
+ },
+ ],
+ [ // event order
+ ["onBeforeRequest", "onBeforeSendHeaders", "onSendHeaders",
+ "onHeadersReceived", "onAuthRequired", "onResponseStarted",
+ "onCompleted"]
+ ],
+ {},
+ ["responseHeaders", "blocking"]);
+ navigateAndWait(getURLAuthRequired());
+ },
+]);
+</script>

Powered by Google App Engine
This is Rietveld 408576698