Chromium Code Reviews| Index: chrome/browser/resources/google_now/background_unittest.gtestjs |
| diff --git a/chrome/browser/resources/google_now/background_unittest.gtestjs b/chrome/browser/resources/google_now/background_unittest.gtestjs |
| index d9cbb07d13e028d8a8117377ba655d062ae20f70..14d8e58429e11417fd0ff857ca6979d62f869761 100644 |
| --- a/chrome/browser/resources/google_now/background_unittest.gtestjs |
| +++ b/chrome/browser/resources/google_now/background_unittest.gtestjs |
| @@ -52,6 +52,112 @@ TEST_F('GoogleNowBackgroundUnitTest', 'AreTasksConflicting', function() { |
| }); |
| /** |
| + * Server Request Tests |
| + */ |
| +TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestSuccess', function() { |
| + expectServerRequests(this, 200, '{}'); |
| + var callbackCalled = false; |
| + requestFromServer('GET', 'test/target').then(function(request) { |
| + callbackCalled = true; |
| + assertTrue(request.status === 200); |
| + assertTrue(request.responseText === '{}'); |
| + }); |
| + assertTrue(callbackCalled); |
| +}); |
| + |
| +TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestForbidden', function() { |
| + this.makeAndRegisterMockApis(['authenticationManager.removeToken']); |
|
rgustafson
2014/03/19 00:24:31
Just an FYI, 403 being here was a product of a pre
robliao
2014/03/19 00:43:39
If we're forbidden to accessing this resource, it'
|
| + this.mockApis.expects(once()).authenticationManager_removeToken(ANYTHING); |
| + |
| + expectServerRequests(this, 403, ''); |
| + |
| + var callbackCalled = false; |
| + requestFromServer('GET', 'test/target').then(function(request) { |
| + // The promise is resolved even on HTTP failures. |
| + callbackCalled = true; |
| + assertTrue(request.status === 403); |
| + }); |
| + assertTrue(callbackCalled); |
| +}); |
| + |
| +TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestNoAuth', function() { |
| + this.makeAndRegisterMockApis(['authenticationManager.removeToken']); |
| + this.mockApis.expects(once()).authenticationManager_removeToken(ANYTHING); |
| + |
| + expectServerRequests(this, 401, ''); |
| + |
| + var callbackCalled = false; |
| + requestFromServer('GET', 'test/target').then(function(request) { |
| + // The promise is resolved even on HTTP failures. |
| + callbackCalled = true; |
| + assertTrue(request.status === 401); |
| + }); |
| + assertTrue(callbackCalled); |
| +}); |
| + |
| +function expectServerRequests(fixture, httpStatus, responseText) { |
| + fixture.makeAndRegisterMockApis([ |
| + 'authenticationManager.getAuthToken', |
| + 'buildServerRequest' |
| + ]); |
| + |
| + function XMLHttpRequest() {} |
| + |
| + XMLHttpRequest.prototype = { |
| + addEventListener: function(type, listener, wantsUntrusted) {}, |
| + setRequestHeader: function(header, value) {}, |
| + send: function() {} |
| + } |
| + |
| + fixture.mockApis.expects(once()).authenticationManager_getAuthToken() |
| + .will(returnValue(Promise.resolve('token'))); |
| + |
| + var mockXMLHttpRequest = mock(XMLHttpRequest); |
| + var mockXMLHttpRequestProxy = mockXMLHttpRequest.proxy(); |
| + fixture.mockApis.expects(once()) |
| + .buildServerRequest(ANYTHING, ANYTHING, ANYTHING) |
| + .will(returnValue(mockXMLHttpRequestProxy)); |
| + |
| + mockXMLHttpRequest.expects(once()) |
| + .setRequestHeader('Authorization', 'Bearer token'); |
| + |
| + var loadEndSavedArgs = new SaveMockArguments(); |
| + mockXMLHttpRequest.expects(once()) |
| + .addEventListener( |
| + loadEndSavedArgs.match(eq('loadend')), |
| + loadEndSavedArgs.match(ANYTHING), |
| + loadEndSavedArgs.match(eq(false))); |
| + |
| + mockXMLHttpRequestProxy.status = httpStatus; |
| + mockXMLHttpRequestProxy.response = responseText; |
| + mockXMLHttpRequestProxy.responseText = responseText; |
| + |
| + mockXMLHttpRequest.expects(once()).send() |
| + .will(invokeCallback(loadEndSavedArgs, 1, mockXMLHttpRequestProxy)); |
| +} |
| + |
| +TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestNoToken', function() { |
| + this.makeAndRegisterMockApis([ |
| + 'authenticationManager.getAuthToken', |
| + 'buildServerRequest' |
| + ]); |
| + |
| + this.mockApis.expects(once()).authenticationManager_getAuthToken() |
| + .will(returnValue(Promise.reject())); |
| + this.mockApis.expects(never()).buildServerRequest() |
| + |
| + var thenCalled = false; |
| + var catchCalled = false; |
| + requestFromServer('GET', 'test/target').then(function(request) { |
| + thenCalled = true; |
| + }).catch(function() { |
| + catchCalled = true; |
| + }); |
| + assertFalse(thenCalled); |
| + assertTrue(catchCalled); |
| +}) |
| + |
| +/** |
| * Mocks global functions and APIs that initialize() depends upon. |
| * @param {Test} fixture Test fixture. |
| */ |