Chromium Code Reviews| 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> |