def testOverrideDefaultConfiguration(self): source = httpsource.HttpFilesSource(self.config) self.assertEquals(source.conf['passwd_url'], 'PASSWD_URL') self.assertEquals(source.conf['group_url'], 'GROUP_URL') self.assertEquals(source.conf['shadow_url'], 'SHADOW_URL') self.assertEquals(source.conf['retry_delay'], 'TEST_RETRY_DELAY') self.assertEquals(source.conf['retry_max'], 'TEST_RETRY_MAX') self.assertEquals(source.conf['tls_cacertfile'], 'TEST_TLS_CACERTFILE') self.assertEquals(source.conf['http_proxy'], 'HTTP_PROXY')
def testRaiseConfigurationErrorOnUnsupportedProtocol(self): # connection should never be used in this case. mock_conn = self.mox.CreateMockAnything() mock_conn.setopt(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes() self.mox.StubOutWithMock(pycurl, 'Curl') pycurl.Curl().AndReturn(mock_conn) self.mox.ReplayAll() source = httpsource.HttpFilesSource({}) self.assertRaises(error.ConfigurationError, httpsource.UpdateGetter().GetUpdates, source, 'ftp://test_url', None)
def testDefaultConfiguration(self): source = httpsource.HttpFilesSource({}) self.assertEquals(source.conf['passwd_url'], httpsource.HttpFilesSource.PASSWD_URL) self.assertEquals(source.conf['shadow_url'], httpsource.HttpFilesSource.SHADOW_URL) self.assertEquals(source.conf['group_url'], httpsource.HttpFilesSource.GROUP_URL) self.assertEquals(source.conf['retry_max'], httpsource.HttpFilesSource.RETRY_MAX) self.assertEquals(source.conf['retry_delay'], httpsource.HttpFilesSource.RETRY_DELAY) self.assertEquals(source.conf['tls_cacertfile'], httpsource.HttpFilesSource.TLS_CACERTFILE) self.assertEquals(source.conf['http_proxy'], None)
def testNoUpdatesForTemporaryFailure(self): mock_conn = self.mox.CreateMockAnything() mock_conn.setopt(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes() mock_conn.perform() mock_conn.getinfo(pycurl.RESPONSE_CODE).AndReturn(304) self.mox.StubOutWithMock(pycurl, 'Curl') pycurl.Curl().AndReturn(mock_conn) self.mox.ReplayAll() config = {} source = httpsource.HttpFilesSource(config) result = httpsource.UpdateGetter().GetUpdates(source, 'https://TEST_URL', 37) self.assertEquals(result, [])
def testAcceptHttpProtocol(self): mock_conn = self.mox.CreateMockAnything() mock_conn.setopt(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes() mock_conn.perform() # We use code 304 since it basically shortcuts to the end of the method. mock_conn.getinfo(pycurl.RESPONSE_CODE).AndReturn(304) self.mox.StubOutWithMock(pycurl, 'Curl') pycurl.Curl().AndReturn(mock_conn) self.mox.ReplayAll() config = {} source = httpsource.HttpFilesSource(config) result = httpsource.UpdateGetter().GetUpdates(source, 'http://TEST_URL', None) self.assertEqual([], result)
def testRetryOnErrorCodeResponse(self): config = {'retry_delay': 5, 'retry_max': 3} mock_conn = self.mox.CreateMockAnything() mock_conn.setopt(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes() mock_conn.perform().MultipleTimes() mock_conn.getinfo(pycurl.RESPONSE_CODE).MultipleTimes().AndReturn(400) self.mox.StubOutWithMock(time, 'sleep') time.sleep(5) time.sleep(5) self.mox.StubOutWithMock(pycurl, 'Curl') pycurl.Curl().AndReturn(mock_conn) self.mox.ReplayAll() source = httpsource.HttpFilesSource(config) self.assertRaises(error.SourceUnavailable, httpsource.UpdateGetter().GetUpdates, source, url='https://TEST_URL', since=None)
def testGetUpdatesWithoutTimestamp(self): mock_conn = self.mox.CreateMockAnything() mock_conn.setopt(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes() mock_conn.perform() mock_conn.getinfo(pycurl.RESPONSE_CODE).AndReturn(200) mock_conn.getinfo(pycurl.INFO_FILETIME).AndReturn(-1) self.mox.StubOutWithMock(pycurl, 'Curl') pycurl.Curl().AndReturn(mock_conn) mock_map = self.mox.CreateMockAnything() getter = httpsource.UpdateGetter() self.mox.StubOutWithMock(getter, 'GetMap') getter.GetMap(cache_info=mox.IgnoreArg()).AndReturn(mock_map) self.mox.ReplayAll() config = {} source = httpsource.HttpFilesSource(config) result = getter.GetUpdates(source, 'https://TEST_URL', 1) self.assertEqual(mock_map, result)