def test_fetch_from_non_set_cache(self): """Test if a error is raised when the cache was not set""" dockerhub = DockerHub('grimoirelab', 'perceval') with self.assertRaises(CacheError): _ = [item for item in dockerhub.fetch_from_cache()]
def test_fetch_from_empty_cache(self): """Test if there are not any event returned when the cache is empty""" cache = Cache(self.tmp_path) dockerhub = DockerHub('grimoirelab', 'perceval', cache=cache) cached_items = [item for item in dockerhub.fetch_from_cache()] self.assertEqual(len(cached_items), 0)
def setUp(self): super().setUp() self.backend_write_archive = DockerHub('grimoirelab', 'perceval', archive=self.archive) self.backend_read_archive = DockerHub('grimoirelab', 'perceval', archive=self.archive)
def test_fetch_from_cache(self, mock_utcnow): """Test whether the cache works""" setup_http_server() # First, we fetch the items from the server, # storing them in a cache. We do it twice as each call # to fetch only returns one item. cache = Cache(self.tmp_path) dockerhub = DockerHub('grimoirelab', 'perceval', cache=cache) mock_utcnow.return_value = datetime.datetime( 2017, 1, 1, tzinfo=dateutil.tz.tzutc()) items = [item for item in dockerhub.fetch()] mock_utcnow.return_value = datetime.datetime( 2017, 1, 2, tzinfo=dateutil.tz.tzutc()) aux = [item for item in dockerhub.fetch()] items.extend(aux) self.assertEqual(len(httpretty.httpretty.latest_requests), 2) # Now, we get the items from the cache. # The items should be the same and there won't be # any new request to the server cached_items = [item for item in dockerhub.fetch_from_cache()] self.assertEqual(len(cached_items), len(items)) expected = [(1483228800.0, '0fa16dc4edab9130a14914a8d797f634d13b4ff4', 1483228800.0), (1483315200.0, '0ce2bdf5ddeef42886d9ce4b573c98345e6f1b9a', 1483315200.0)] self.assertEqual(len(cached_items), len(expected)) for x in range(len(cached_items)): item = cached_items[x] expc = expected[x] self.assertEqual(item['data']['fetched_on'], expc[0]) self.assertEqual(item['uuid'], expc[1]) self.assertEqual(item['origin'], 'https://hub.docker.com/grimoirelab/perceval') self.assertEqual(item['updated_on'], expc[2]) self.assertEqual(item['category'], 'dockerhub-data') self.assertEqual(item['tag'], 'https://hub.docker.com/grimoirelab/perceval') # Compare chached and fetched task self.assertDictEqual(item['data'], items[x]['data']) # No more requests were sent self.assertEqual(len(httpretty.httpretty.latest_requests), 2)
def test_parse_json(self): """Test if it parses a JSON stream""" raw_json = read_file('data/dockerhub/dockerhub_repository_1.json') item = DockerHub.parse_json(raw_json) self.assertEqual(item['user'], 'grimoirelab') self.assertEqual(item['name'], 'perceval')
def test_search_fields(self, mock_utcnow): """Test whether the search_fields is properly set""" mock_utcnow.return_value = datetime.datetime( 2017, 1, 1, tzinfo=dateutil.tz.tzutc()) setup_http_server() dockerhub = DockerHub('grimoirelab', 'perceval') items = [item for item in dockerhub.fetch()] self.assertEqual(len(items), 1) item = items[0] self.assertEqual(dockerhub.metadata_id(item['data']), item['search_fields']['item_id']) self.assertEqual(item['data']['name'], 'perceval') self.assertEqual(item['data']['name'], item['search_fields']['name']) self.assertEqual(item['data']['namespace'], 'grimoirelab') self.assertEqual(item['data']['namespace'], item['search_fields']['namespace'])
def test_shortcut_official_owner(self): """Test if the shortcut owner is replaced when it is given on init""" # Value '_' should be replaced by 'library' dockerhub = DockerHub('_', 'redis', tag='test') expected_origin = urijoin(DOCKERHUB_URL, 'library', 'redis') self.assertEqual(dockerhub.owner, 'library') self.assertEqual(dockerhub.repository, 'redis') self.assertEqual(dockerhub.origin, expected_origin)
def test_fetch(self, mock_utcnow): """Test whether it fetches data from a repository""" mock_utcnow.return_value = datetime.datetime(2017, 1, 1, tzinfo=dateutil.tz.tzutc()) setup_http_server() dockerhub = DockerHub('grimoirelab', 'perceval') items = [item for item in dockerhub.fetch()] self.assertEqual(len(items), 1) item = items[0] self.assertEqual(item['data']['fetched_on'], 1483228800.0) self.assertEqual(item['uuid'], '0fa16dc4edab9130a14914a8d797f634d13b4ff4') self.assertEqual(item['origin'], 'https://hub.docker.com/grimoirelab/perceval') self.assertEqual(item['updated_on'], 1483228800.0) self.assertEqual(item['category'], 'dockerhub-data') self.assertEqual(item['tag'], 'https://hub.docker.com/grimoirelab/perceval') # Check requests self.assertEqual(len(httpretty.httpretty.latest_requests), 1)
def test_initialization(self): """Test whether attributes are initializated""" dockerhub = DockerHub('grimoirelab', 'perceval', tag='test') expected_origin = urijoin(DOCKERHUB_URL, 'grimoirelab', 'perceval') self.assertEqual(dockerhub.owner, 'grimoirelab') self.assertEqual(dockerhub.repository, 'perceval') self.assertEqual(dockerhub.origin, expected_origin) self.assertEqual(dockerhub.tag, 'test') self.assertIsNone(dockerhub.client) # When tag is empty or None it will be set to # the value in dockerhub = DockerHub('grimoirelab', 'perceval') self.assertEqual(dockerhub.origin, expected_origin) self.assertEqual(dockerhub.tag, expected_origin) dockerhub = DockerHub('grimoirelab', 'perceval', tag='') self.assertEqual(dockerhub.origin, expected_origin) self.assertEqual(dockerhub.tag, expected_origin)
def test_has_resuming(self): """Test if it returns True when has_resuming is called""" self.assertEqual(DockerHub.has_resuming(), True)
def test_has_caching(self): """Test if it returns False when has_caching is called""" self.assertEqual(DockerHub.has_caching(), False)