def test_auto_loading_generator(self): session = requests.Session() session.auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) session.headers.update({'Content-Type': 'application/json'}) pool = BasicResourcePool( urljoin(self.base_url, '/api/rest/v1/', 'products/'), session) c = pool.fetch_list() self.assertEqual(len(c._items), 10) i = 0 generator = c previousLink = generator.get_self_link() for item in generator: i += 1 self.assertNotEqual(generator.get_self_link(), generator.get_next_link()) if i + 5 % 10 == 0: self.assertNotEqual(generator.get_self_link(), previousLink) previousLink = generator.get_self_link() if i == 25: break # check that it iterated over 25 elements, but did not store them: self.assertEqual(len(c._items), 10) self.assertEqual(i, 25)
def test_auto_loading(self): session = requests.Session() session.auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) session.headers.update({'Content-Type': 'application/json'}) pool = BasicResourcePool( urljoin(self.base_url, '/api/rest/v1/', 'products/'), session) c = pool.fetch_list() firstElement = c.get_page_items()[0] self.assertEqual(len(c.get_page_items()), 10) for i in range(12): next(c) eleventhElement = c.get_page_items()[0] self.assertNotEqual(eleventhElement["identifier"], firstElement["identifier"]) self.assertEqual(len(c.get_page_items()), 10) for i in range(12): next(c) twentyonethElement = c.get_page_items()[0] self.assertNotEqual(twentyonethElement["identifier"], firstElement["identifier"]) self.assertNotEqual(twentyonethElement["identifier"], eleventhElement["identifier"]) self.assertEqual(len(c.get_page_items()), 10)
def test_invalid_refresh(self): auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) auth._request_a_token() with self.assertRaises(requests.exceptions.HTTPError): auth._refresh_token = "coucou" auth._refresh_the_token()
def test_query_products_with_auth(self): auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) r = requests.get(urljoin(self.base_url, "/api/rest/v1/products"), auth=auth) logger.debug(r) logger.debug(r.status_code) json_data = json.loads(r.text) logger.debug(json.dumps(json_data, indent=4, sort_keys=True))
def test_create_delete_from_json(self): session = requests.Session() session.auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) session.headers.update({'Content-Type': 'application/json'}) pool = BasicResourcePool( urljoin(self.base_url, '/api/rest/v1/', 'products/'), session) pool.create_item(json.loads(self.valid_product)) pool.delete_item('myawesometshirt')
def test_get_invalide_item(self): session = requests.Session() session.auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) session.headers.update({'Content-Type': 'application/json'}) pool = BasicResourcePool( urljoin(self.base_url, '/api/rest/v1/', 'products/'), session) with self.assertRaises(requests.HTTPError): item = pool.fetch_item('1111111137asdfsdfgsdf')
def test_should_refresh_request(self): auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) auth._request_a_token() logger.debug(int(time())) logger.debug(auth._expiry_date) self.assertFalse(auth._should_refresh_token()) auth._expiry_date = time() - 100 self.assertTrue(auth._should_refresh_token())
def test_fetch_item(self): session = requests.Session() session.auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) session.headers.update({'Content-Type': 'application/json'}) pool = BasicResourcePool( urljoin(self.base_url, '/api/rest/v1/', 'products/'), session) item = pool.fetch_item('1111111137') logger.debug(item) self.assertEqual(item['identifier'], '1111111137') self.assertEqual(len(item['categories']), 3)
def test_loading_fetch_next_page(self): session = requests.Session() session.auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) session.headers.update({'Content-Type': 'application/json'}) pool = ResourcePool( urljoin(self.base_url, '/api/rest/v1/', 'products/'), session) c = pool.fetch_list() self.assertEqual(len(c._items), 10) c.fetch_next_page() self.assertEqual(len(c._items), 20) c.fetch_next_page() self.assertEqual(len(c._items), 30)
def test_auto_loading_generator_ending(self): session = requests.Session() session.auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) session.headers.update({'Content-Type': 'application/json'}) pool = BasicResourcePool( urljoin(self.base_url, '/api/rest/v1/', 'families/'), session) c = pool.fetch_list() self.assertEqual(len(c._items), 10) i = 0 # for item in c.get_generator(): for item in c: i += 1 # checking that it did not raise any exception when trying to iterate # after the last element self.assertEqual(len(c._items), 7) self.assertEqual(i, 17)
def test_create_delete_from_real_element(self): session = requests.Session() session.auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) session.headers.update({'Content-Type': 'application/json'}) if False: session.auth._request_a_token() pool = BasicResourcePool( urljoin('http://localhost:8088', '/api/rest/v1/', 'products/'), session) else: pool = BasicResourcePool( urljoin(self.base_url, '/api/rest/v1/', 'products/'), session) initialItem = pool.fetch_item('Biker-jacket-polyester-xl') item = copy.deepcopy(initialItem) item['identifier'] = 'myawesometshirt' item['values']['ean'][0]['data'] = '1234567946367' item['values']['size'][0]['data'] = 'XS' pool.create_item(item) pool.delete_item('myawesometshirt')
def test_invalid_request(self): auth = Auth(self.base_url, self.client_id, "fake secret", self.username, self.password) with self.assertRaises(requests.exceptions.HTTPError): auth._request_a_token()
def test_valid(self): auth = Auth(self.base_url, self.client_id, self.secret, self.username, self.password) auth._request_a_token() auth._refresh_the_token()
def test_client_auth_object(self): auth=Auth(self.base_url, self.client_id, self.secret, self.username, self.password) akeneo = Client(self.base_url, session=None, auth=auth) item = akeneo.products.fetch_item('1111111137')