def test_delete_review(self): # test_delete_review user = generic_model_access.get_profile('wsmith').user self.client.force_authenticate(user=user) air_mail_id = models.Listing.objects.get(title='Air Mail').id url = '/api/listing/{0!s}/review/'.format(air_mail_id) data = {'rate': 4, 'text': 'winston test review'} response = self.client.post(url, data, format='json') review_id = response.data['id'] self.assertEqual(response.status_code, status.HTTP_201_CREATED) # trying to delete it as a different user should fail... url = '/api/listing/{0!s}/review/{1!s}/'.format(air_mail_id, review_id) user = generic_model_access.get_profile('jones').user self.client.force_authenticate(user=user) response = self.client.delete(url, format='json') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) # ... unless that user is an org steward or apps mall steward user = generic_model_access.get_profile('julia').user self.client.force_authenticate(user=user) response = self.client.delete(url, format='json') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) # Check listing history url = '/api/listing/{0!s}/'.format(air_mail_id) response = unittest_request_helper(self, url, 'GET', username='******', status_code=200) data = response.data self.assertEquals(validate_listing_map_keys(data), []) self.assertEquals(data['last_activity']['author']['user']['username'], 'julia') self.assertEquals(data['last_activity']['action'], 'REVIEW_DELETED') self.assertEquals(data['last_activity']['listing']['id'], air_mail_id)
def test_search_agency(self): user = generic_model_access.get_profile('wsmith').user self.client.force_authenticate(user=user) url = '/api/listings/search/?agency=Minipax&agency=Miniluv' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) titles = [i['title'] for i in response.data] self.assertTrue('Chatter Box' in titles) for listing_map in response.data: self.assertEquals(validate_listing_map_keys(listing_map), [])
def test_self_deleted_listing(self): user = generic_model_access.get_profile('wsmith').user self.client.force_authenticate(user=user) url = '/api/self/listing/' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) titles = [i['id'] for i in response.data] self.assertTrue('1' not in titles) for listing_map in response.data: self.assertEquals(validate_listing_map_keys(listing_map), [])
def test_search_tags_startwith(self): user = generic_model_access.get_profile('wsmith').user self.client.force_authenticate(user=user) url = '/api/listings/search/?search=tag_' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) titles = [i['title'] for i in response.data] self.assertTrue('Air Mail' in titles) self.assertTrue(len(titles) == 1) for listing_map in response.data: self.assertEquals(validate_listing_map_keys(listing_map), [])
def test_search_offset_limit(self): user = generic_model_access.get_profile('wsmith').user self.client.force_authenticate(user=user) url = '/api/listings/search/?offset=1&limit=1' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) titles = [i['title'] for i in response.data['results']] # TODO: Not predictable, This will change every time listing.yaml changes self.assertTrue('Map of the world' in titles) self.assertEqual(len(titles), 1) for listing_map in response.data['results']: self.assertEquals(validate_listing_map_keys(listing_map), [])
def test_self_listing(self): user = generic_model_access.get_profile('julia').user self.client.force_authenticate(user=user) url = '/api/self/listing/' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) titles = [i['title'] for i in response.data] self.assertTrue('Bread Basket' in titles) self.assertTrue('Chatter Box' in titles) self.assertTrue('Air Mail' not in titles) for listing_map in response.data: self.assertEquals(validate_listing_map_keys(listing_map), [])
def test_search_text_partial(self): user = generic_model_access.get_profile('wsmith').user self.client.force_authenticate(user=user) url = '/api/listings/search/?search=air ma' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) titles = [i['title'] for i in response.data] excepted_titles = ['Air Mail'] # TODO: Figure out why 'air ma' returns # ['Sun', 'Barbecue', 'Wolf Finder', 'LIT RANCH', 'Navigation using Maps', # 'Air Mail', 'Rogue', 'Cheese and Crackers', # 'Double Heroides', 'KIAA0319', 'Karta GPS', 'Sir Baboon McGood'] self.assertEqual(titles, excepted_titles) for listing_map in response.data: self.assertEquals(validate_listing_map_keys(listing_map), [])
def test_search_tags(self): user = generic_model_access.get_profile('wsmith').user self.client.force_authenticate(user=user) url = '/api/listings/search/?search=demo_tag' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) titles = sorted([i['title'] for i in response.data]) listings_from_file = ListingFile.filter_listings( is_enabled=True, approval_status='APPROVED', tags__in=['demo_tag']) sorted_listings_from_file = sorted( [listing['title'] for listing in listings_from_file]) print(titles) print(sorted_listings_from_file) self.assertEqual(titles, sorted_listings_from_file) for listing_map in response.data: self.assertEquals(validate_listing_map_keys(listing_map), [])
def test_search_categories_multiple_with_space(self): user = generic_model_access.get_profile('wsmith').user self.client.force_authenticate(user=user) url = '/api/listings/search/?category=Health and Fitness&category=Communication' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) titles = sorted([i['title'] for i in response.data]) listings_from_file = ListingFile.filter_listings( is_enabled=True, approval_status='APPROVED', categories__in=['Health and Fitness', 'Communication']) sorted_listings_from_file = sorted( [listing['title'] for listing in listings_from_file]) self.assertEqual(titles, sorted_listings_from_file) # TODO: TEST listing_title = Newspaper when is_private = True for listing_map in response.data: self.assertEquals(validate_listing_map_keys(listing_map), [])
def test_search_categories_single_with_space(self): search_category = 'Health and Fitness' url = '/api/listings/search/?category={}'.format(search_category) response = unittest_request_helper(self, url, 'GET', username='******', status_code=200) titles = sorted([i['title'] for i in response.data]) listings_from_file = ListingFile.filter_listings( is_enabled=True, approval_status='APPROVED', categories__in=['Health and Fitness']) sorted_listings_from_file = sorted( [listing['title'] for listing in listings_from_file]) # TODO: TEST listing_title = Newspaper when is_private = True self.assertEqual(titles, sorted_listings_from_file) for listing_map in response.data: self.assertEquals(validate_listing_map_keys(listing_map), [])
def test_search_is_enable(self): user = generic_model_access.get_profile('wsmith').user self.client.force_authenticate(user=user) url = '/api/listings/search/?search=demo_tag&type=Web Application' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) titles_ids = [[record.get('title'), record.get('id')] for record in response.data] titles = sorted([i[0] for i in titles_ids]) expected_titles = [ 'Air Mail', 'Bread Basket', 'Chart Course', 'Chatter Box', 'Clipboard', 'FrameIt', 'Hatch Latch', 'JotSpot', 'LocationAnalyzer', 'LocationLister', 'LocationViewer', 'Monkey Finder', 'Skybox' ] self.assertEqual(titles, expected_titles) for listing_map in response.data: self.assertEquals(validate_listing_map_keys(listing_map), []) # Disable one app user = generic_model_access.get_profile('bigbrother').user self.client.force_authenticate(user=user) url = '/api/listing/{}/'.format(titles_ids[0][1]) title = 'JotSpot_disabled' data = { "title": title, "description": "description of app", "launch_url": "http://www.google.com/launch", "version_name": "1.0.0", "unique_name": "org.apps.julia-one", "what_is_new": "nothing is new", "description_short": "a shorter description", "requirements": "None", "is_private": "true", "is_enable": "false", "contacts": [{ "email": "*****@*****.**", "secure_phone": "111-222-3434", "unsecure_phone": "444-555-4545", "name": "me", "contact_type": { "name": "Government" } }, { "email": "*****@*****.**", "secure_phone": "222-222-3333", "unsecure_phone": "555-555-5555", "name": "you", "contact_type": { "name": "Military" } }], "security_marking": "UNCLASSIFIED", "listing_type": { "title": "Web Application" }, "small_icon": { "id": 1 }, "large_icon": { "id": 2 }, "banner_icon": { "id": 3 }, "large_banner_icon": { "id": 4 }, "categories": [{ "title": "Business" }, { "title": "Education" }], "owners": [{ "user": { "username": "******" } }, { "user": { "username": "******" } }], "tags": [{ "name": "demo" }, { "name": "map" }], "intents": [{ "action": "/application/json/view" }, { "action": "/application/json/edit" }], "doc_urls": [{ "name": "wiki", "url": "http://www.google.com/wiki" }, { "name": "guide", "url": "http://www.google.com/guide" }], "screenshots": [{ "small_image": { "id": 1 }, "large_image": { "id": 2 }, "description": "Test Description" }, { "small_image": { "id": 3 }, "large_image": { "id": 4 }, "description": "Test Description" }] } response = self.client.put(url, data, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) # Check user = generic_model_access.get_profile('wsmith').user self.client.force_authenticate(user=user) url = '/api/listings/search/?search=demo_tag&type=Web Application' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) titles_ids = [[record.get('title'), record.get('id')] for record in response.data] titles = sorted([i[0] for i in titles_ids]) expected_titles = [ 'Air Mail', 'Bread Basket', 'Chart Course', 'Chatter Box', 'Clipboard', 'FrameIt', 'Hatch Latch', 'LocationAnalyzer', 'LocationLister', 'LocationViewer', 'Monkey Finder', 'Skybox' ] self.assertEqual(titles, expected_titles) for listing_map in response.data: self.assertEquals(validate_listing_map_keys(listing_map), [])