Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // TODO(robliao,vadimt): Determine the granularity of testing to perform. | 5 // TODO(robliao,vadimt): Determine the granularity of testing to perform. |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Test fixture for background.js. | 8 * Test fixture for background.js. |
| 9 * @constructor | 9 * @constructor |
| 10 * @extends {testing.Test} | 10 * @extends {testing.Test} |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 45 testTaskPair(RETRY_DISMISS_TASK_NAME, RETRY_DISMISS_TASK_NAME, true); | 45 testTaskPair(RETRY_DISMISS_TASK_NAME, RETRY_DISMISS_TASK_NAME, true); |
| 46 testTaskPair(RETRY_DISMISS_TASK_NAME, STATE_CHANGED_TASK_NAME, false); | 46 testTaskPair(RETRY_DISMISS_TASK_NAME, STATE_CHANGED_TASK_NAME, false); |
| 47 | 47 |
| 48 testTaskPair(STATE_CHANGED_TASK_NAME, UPDATE_CARDS_TASK_NAME, false); | 48 testTaskPair(STATE_CHANGED_TASK_NAME, UPDATE_CARDS_TASK_NAME, false); |
| 49 testTaskPair(STATE_CHANGED_TASK_NAME, DISMISS_CARD_TASK_NAME, false); | 49 testTaskPair(STATE_CHANGED_TASK_NAME, DISMISS_CARD_TASK_NAME, false); |
| 50 testTaskPair(STATE_CHANGED_TASK_NAME, RETRY_DISMISS_TASK_NAME, false); | 50 testTaskPair(STATE_CHANGED_TASK_NAME, RETRY_DISMISS_TASK_NAME, false); |
| 51 testTaskPair(STATE_CHANGED_TASK_NAME, STATE_CHANGED_TASK_NAME, false); | 51 testTaskPair(STATE_CHANGED_TASK_NAME, STATE_CHANGED_TASK_NAME, false); |
| 52 }); | 52 }); |
| 53 | 53 |
| 54 /** | 54 /** |
| 55 * Server Request Tests | |
| 56 */ | |
| 57 TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestSuccess', function() { | |
| 58 expectServerRequests(this, 200, '{}'); | |
| 59 var callbackCalled = false; | |
| 60 requestFromServer('GET', 'test/target').then(function(request) { | |
| 61 callbackCalled = true; | |
| 62 assertTrue(request.status === 200); | |
| 63 assertTrue(request.responseText === '{}'); | |
| 64 }); | |
| 65 assertTrue(callbackCalled); | |
| 66 }); | |
| 67 | |
| 68 TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestForbidden', function() { | |
| 69 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'
| |
| 70 this.mockApis.expects(once()).authenticationManager_removeToken(ANYTHING); | |
| 71 | |
| 72 expectServerRequests(this, 403, ''); | |
| 73 | |
| 74 var callbackCalled = false; | |
| 75 requestFromServer('GET', 'test/target').then(function(request) { | |
| 76 // The promise is resolved even on HTTP failures. | |
| 77 callbackCalled = true; | |
| 78 assertTrue(request.status === 403); | |
| 79 }); | |
| 80 assertTrue(callbackCalled); | |
| 81 }); | |
| 82 | |
| 83 TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestNoAuth', function() { | |
| 84 this.makeAndRegisterMockApis(['authenticationManager.removeToken']); | |
| 85 this.mockApis.expects(once()).authenticationManager_removeToken(ANYTHING); | |
| 86 | |
| 87 expectServerRequests(this, 401, ''); | |
| 88 | |
| 89 var callbackCalled = false; | |
| 90 requestFromServer('GET', 'test/target').then(function(request) { | |
| 91 // The promise is resolved even on HTTP failures. | |
| 92 callbackCalled = true; | |
| 93 assertTrue(request.status === 401); | |
| 94 }); | |
| 95 assertTrue(callbackCalled); | |
| 96 }); | |
| 97 | |
| 98 function expectServerRequests(fixture, httpStatus, responseText) { | |
| 99 fixture.makeAndRegisterMockApis([ | |
| 100 'authenticationManager.getAuthToken', | |
| 101 'buildServerRequest' | |
| 102 ]); | |
| 103 | |
| 104 function XMLHttpRequest() {} | |
| 105 | |
| 106 XMLHttpRequest.prototype = { | |
| 107 addEventListener: function(type, listener, wantsUntrusted) {}, | |
| 108 setRequestHeader: function(header, value) {}, | |
| 109 send: function() {} | |
| 110 } | |
| 111 | |
| 112 fixture.mockApis.expects(once()).authenticationManager_getAuthToken() | |
| 113 .will(returnValue(Promise.resolve('token'))); | |
| 114 | |
| 115 var mockXMLHttpRequest = mock(XMLHttpRequest); | |
| 116 var mockXMLHttpRequestProxy = mockXMLHttpRequest.proxy(); | |
| 117 fixture.mockApis.expects(once()) | |
| 118 .buildServerRequest(ANYTHING, ANYTHING, ANYTHING) | |
| 119 .will(returnValue(mockXMLHttpRequestProxy)); | |
| 120 | |
| 121 mockXMLHttpRequest.expects(once()) | |
| 122 .setRequestHeader('Authorization', 'Bearer token'); | |
| 123 | |
| 124 var loadEndSavedArgs = new SaveMockArguments(); | |
| 125 mockXMLHttpRequest.expects(once()) | |
| 126 .addEventListener( | |
| 127 loadEndSavedArgs.match(eq('loadend')), | |
| 128 loadEndSavedArgs.match(ANYTHING), | |
| 129 loadEndSavedArgs.match(eq(false))); | |
| 130 | |
| 131 mockXMLHttpRequestProxy.status = httpStatus; | |
| 132 mockXMLHttpRequestProxy.response = responseText; | |
| 133 mockXMLHttpRequestProxy.responseText = responseText; | |
| 134 | |
| 135 mockXMLHttpRequest.expects(once()).send() | |
| 136 .will(invokeCallback(loadEndSavedArgs, 1, mockXMLHttpRequestProxy)); | |
| 137 } | |
| 138 | |
| 139 TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestNoToken', function() { | |
| 140 this.makeAndRegisterMockApis([ | |
| 141 'authenticationManager.getAuthToken', | |
| 142 'buildServerRequest' | |
| 143 ]); | |
| 144 | |
| 145 this.mockApis.expects(once()).authenticationManager_getAuthToken() | |
| 146 .will(returnValue(Promise.reject())); | |
| 147 this.mockApis.expects(never()).buildServerRequest() | |
| 148 | |
| 149 var thenCalled = false; | |
| 150 var catchCalled = false; | |
| 151 requestFromServer('GET', 'test/target').then(function(request) { | |
| 152 thenCalled = true; | |
| 153 }).catch(function() { | |
| 154 catchCalled = true; | |
| 155 }); | |
| 156 assertFalse(thenCalled); | |
| 157 assertTrue(catchCalled); | |
| 158 }) | |
| 159 | |
| 160 /** | |
| 55 * Mocks global functions and APIs that initialize() depends upon. | 161 * Mocks global functions and APIs that initialize() depends upon. |
| 56 * @param {Test} fixture Test fixture. | 162 * @param {Test} fixture Test fixture. |
| 57 */ | 163 */ |
| 58 function mockInitializeDependencies(fixture) { | 164 function mockInitializeDependencies(fixture) { |
| 59 fixture.makeAndRegisterMockGlobals([ | 165 fixture.makeAndRegisterMockGlobals([ |
| 60 'recordEvent', | 166 'recordEvent', |
| 61 'setBackgroundEnable', | 167 'setBackgroundEnable', |
| 62 'startPollingCards' | 168 'startPollingCards' |
| 63 ]); | 169 ]); |
| 64 fixture.makeAndRegisterMockApis([ | 170 fixture.makeAndRegisterMockApis([ |
| (...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 768 eqJSON({ | 874 eqJSON({ |
| 769 notificationGroups: expectedUpdatedGroups, | 875 notificationGroups: expectedUpdatedGroups, |
| 770 recentDismissals: {}})); | 876 recentDismissals: {}})); |
| 771 | 877 |
| 772 this.mockGlobals.expects(once()). | 878 this.mockGlobals.expects(once()). |
| 773 recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS); | 879 recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS); |
| 774 | 880 |
| 775 // Invoking the tested function. | 881 // Invoking the tested function. |
| 776 processServerResponse(serverResponse, fakeOnCardShownFunction); | 882 processServerResponse(serverResponse, fakeOnCardShownFunction); |
| 777 }); | 883 }); |
| OLD | NEW |