def test_assert_that_a_app_can_be_added_by_api(self, mozwebqa): mock_app = MockApplication() # generate mock app mock_app.name = 'API %s' % mock_app.name # API mk_api = MarketplaceAPI(credentials=mozwebqa.credentials['api']) # init API client mk_api.submit_app(mock_app) # submit app app_status = mk_api.app_status(mock_app) # get app data from API # Selenium dev_home = Home(mozwebqa) dev_home.go_to_developers_homepage() dev_home.login(user="******") dev_submissions = dev_home.header.click_my_submissions() dev_submissions.sorter.sort_by('created') apps = dev_submissions.submitted_apps app_names = [] for app in apps: app_names.append(app.name) Assert.contains(app_status['name'], app_names)
def test_assert_that_a_app_can_be_added_by_api(self, mozwebqa): mock_app = MockApplication() # generate mock app mock_app.name = 'API %s' % mock_app.name # API mk_api = MarketplaceAPI( credentials=mozwebqa.credentials['api']) # init API client mk_api.submit_app(mock_app) # submit app app_status = mk_api.app_status(mock_app) # get app data from API # Selenium dev_home = Home(mozwebqa) dev_home.go_to_developers_homepage() dev_home.login(user="******") dev_submissions = dev_home.header.click_my_submissions() dev_submissions.sorter.sort_by('created') apps = dev_submissions.submitted_apps app_names = [] for app in apps: app_names.append(app.name) Assert.contains(app_status['name'], app_names)
def test_that_checks_the_deletion_of_a_review(self, mozwebqa): """ https://moztrap.mozilla.org/manage/case/648/ """ # Step 1 - Create new review mock_review = MockReview() mk_api = MarketplaceAPI(credentials=mozwebqa.credentials['api']) app = mk_api.get_app(self.test_app) review_id = mk_api.submit_app_review(app['id'], mock_review.body, mock_review.rating) # Step 2 - Login into Marketplace home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.login(user="******") home_page.wait_notification_box_not_visible() Assert.true(home_page.is_the_current_page) # Step 3 - Search for the test app and go to its details page search_page = home_page.header.search(self.test_app) details_page = search_page.results[0].click_name() Assert.true(details_page.is_the_current_page) # Step 4 - Go to reviews page reviews_page = details_page.click_reviews_button() # Step 5 - Delete review reviews = reviews_page.reviews[0] reviews.delete() Assert.true(reviews_page.notification_visible) Assert.equal(reviews_page.notification_message, "Review deleted") Assert.false(reviews.is_review_visible)
def test_assert_that_a_app_can_be_added_and_deleted_via_the_api(self, mozwebqa_devhub_logged_in): mock_app = MockApplication() # generate mock app # init API client mk_api = MarketplaceAPI.get_client(mozwebqa_devhub_logged_in.base_url, mozwebqa_devhub_logged_in.credentials) mk_api.submit_app(mock_app) # submit app app_status = mk_api.app_status(mock_app) # get app data from API # check that app is pending Assert.equal(2, app_status['status']) # Check for app on the site dev_home = Home(mozwebqa_devhub_logged_in) app_status_page = dev_home.go_to_app_status_page(mock_app) Assert.contains(mock_app.name, app_status_page.page_title) # Delete the app mk_api.delete_app(mock_app) app_status_page = dev_home.go_to_app_status_page(mock_app) Assert.contains("We're sorry, but we can't find what you're looking for.", app_status_page.app_not_found_message)
def test_assert_that_a_app_can_be_added_and_deleted_via_the_api(self, mozwebqa): mock_app = MockApplication() # generate mock app # init API client mk_api = MarketplaceAPI.get_client(mozwebqa.base_url, mozwebqa.credentials) mk_api.submit_app(mock_app) # submit app app_status = mk_api.app_status(mock_app) # get app data from API # check that app is pending Assert.equal(2, app_status['status']) # Check for app on the site dev_home = Home(mozwebqa) dev_home.go_to_developers_homepage() dev_home.login(user="******") mock_app['url_end'] = app_status['slug'] app_status_page = dev_home.go_to_apps_status_page(mock_app) Assert.contains(mock_app.name, app_status_page.page_title) # Delete the app mk_api.delete_app(mock_app) app_status_page = dev_home.go_to_apps_status_page(mock_app) Assert.contains("We're sorry, but we can't find what you're looking for.", app_status_page.app_not_found_message)
def test_that_deletes_app(self, mozwebqa): mock_app = MockApplication() # generate mock app mock_app.name = 'API %s' % mock_app.name # init API client mk_api = MarketplaceAPI.get_client(mozwebqa.base_url, mozwebqa.credentials) mk_api.submit_app(mock_app) # submit app app_status = mk_api.app_status(mock_app) # get app data from API dev_home = Home(mozwebqa) dev_home.go_to_developers_homepage() dev_home.login(user="******") my_apps = dev_home.header.click_my_submissions() app_name = app_status['name'] self._delete_app(mozwebqa, app_name) Assert.true(my_apps.is_notification_visible) Assert.true(my_apps.is_notification_successful, my_apps.notification_message) Assert.equal("App deleted.", my_apps.notification_message) for i in range(1, my_apps.paginator.total_page_number + 1): for app in my_apps.submitted_apps: Assert.not_equal(app.name, app_name) if my_apps.paginator.is_paginator_present: if not my_apps.paginator.is_first_page_disabled: my_apps.paginator.click_next_page()
def _reviews_setup(self, mozwebqa): self.mk_api = MarketplaceAPI(credentials=mozwebqa.credentials['api']) # init API client # Submit a review using marketplace API mock_review = MockReview() home_page = Home(mozwebqa) self.app_name, self.review_id = self.mk_api.submit_app_review_for_either( home_page.app_under_test, mock_review.body, mock_review.rating)
def _reviews_setup(self, mozwebqa): # init API client self.mk_api = MarketplaceAPI.get_client(mozwebqa.base_url, mozwebqa.credentials) # Submit a review using marketplace API mock_review = MockReview() home_page = Home(mozwebqa) self.app_name, self.review_id = self.mk_api.submit_app_review_for_either( home_page.app_under_test, mock_review.body, mock_review.rating)
def test_that_checks_the_editing_of_a_review(self, mozwebqa): mk_api = MarketplaceAPI(credentials=mozwebqa.credentials['api']) # init API client # Get test app's details app = mk_api.get_app(self.test_app) # Submit a review using marketplace API mock_review = MockReview() review_id = mk_api.submit_app_review(app['id'], mock_review.body, mock_review.rating) # Login into Marketplace home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.login(user="******") Assert.true(home_page.is_the_current_page) # Search for the test app and go to its details page search_page = home_page.header.search(self.test_app) details_page = search_page.results[0].click_name() Assert.true(details_page.is_the_current_page) Assert.true(details_page.is_edit_review_button_visible) Assert.equal(details_page.edit_review_button, "Edit Your Review") # Write a review edit_review = details_page.click_edit_review() mock_review = MockReview() details_page = edit_review.write_a_review(mock_review['rating'], mock_review['body']) # Check notification Assert.equal(details_page.notification_message, "Review updated successfully") # Go to reviews page and verify reviews = details_page.click_reviews_button() Assert.equal(reviews.logged_in_users_review.text, mock_review['body']) Assert.equal(reviews.logged_in_users_review.rating, mock_review['rating']) # Clean up mk_api.delete_app_review(review_id)
def free_app(request): """Return a free app created via the Marketplace API, and automatically delete the app after the test.""" mozwebqa = request.getfuncargvalue('mozwebqa') request.app = MockApplication() api = MarketplaceAPI.get_client(mozwebqa.base_url, mozwebqa.credentials) api.submit_app(request.app) # This acts like a tearDown, running after each test function def fin(): # If the app is being deleted by the test, set the id to 0 if hasattr(request, 'app') and request.app['id'] > 0: api.delete_app(request.app) request.addfinalizer(fin) return request.app
def _reviews_setup(self, mozwebqa): self.mk_api = MarketplaceAPI.get_client(mozwebqa.base_url, mozwebqa.credentials)
def api(existing_user, mozwebqa): host = urlparse(mozwebqa.base_url).hostname key = existing_user['api'][host]['key'] secret = existing_user['api'][host]['secret'] return MarketplaceAPI(key, secret, host)
class TestReviews: def _reviews_setup(self, mozwebqa): self.mk_api = MarketplaceAPI(credentials=mozwebqa.credentials['api']) # init API client # Submit a review using marketplace API mock_review = MockReview() home_page = Home(mozwebqa) self.app_name, self.review_id = self.mk_api.submit_app_review_for_either( home_page.app_under_test, mock_review.body, mock_review.rating) @pytest.mark.skipif("webdriver.__version__ >= '2.32.0'", reason='Issue 5735: Firefox-Driver 2.33.0 falsely reports elements not to be visible') def test_that_checks_the_addition_of_a_review(self, mozwebqa): self._reviews_setup(mozwebqa) # delete the review before getting started self.mk_api.delete_app_review(self.review_id) # so that teardown does not try to delete the review del self.review_id # Step 1 - Login into Marketplace mock_review = MockReview() home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.login(user="******") Assert.true(home_page.is_the_current_page) # Step 2 - Search for the test app and go to its details page search_page = home_page.header.search(self.app_name) details_page = search_page.results[0].click_name() Assert.true(details_page.is_the_current_page) Assert.true(details_page.is_write_review_button_visible) Assert.equal(details_page.write_review_button, "Write a Review") # Step 3 - Write a review add_review_box = details_page.click_write_review() details_page = add_review_box.write_a_review(mock_review['rating'], mock_review['body']) # Step 4 - Check review Assert.true(details_page.notification_visible, "Review not added: %s" % details_page.success_message) Assert.equal(details_page.notification_message, "Your review was posted") Assert.equal(details_page.first_review_rating, mock_review['rating']) Assert.equal(details_page.first_review_body, mock_review['body']) def test_that_checks_the_editing_of_a_review(self, mozwebqa): self._reviews_setup(mozwebqa) home_page = Home(mozwebqa) home_page.go_to_homepage() # Login into Marketplace home_page.login(user="******") Assert.true(home_page.is_the_current_page) # Search for the test app and go to its details page search_page = home_page.header.search(self.app_name) details_page = search_page.results[0].click_name() Assert.true(details_page.is_the_current_page) Assert.true(details_page.is_edit_review_button_visible) Assert.equal(details_page.edit_review_button, "Edit Your Review") # Write a review edit_review = details_page.click_edit_review() mock_review = MockReview() details_page = edit_review.write_a_review(mock_review['rating'], mock_review['body']) # Check notification Assert.equal(details_page.notification_message, "Review updated successfully") # Go to reviews page and verify reviews = details_page.click_reviews_button() Assert.equal(reviews.logged_in_users_review.text, mock_review['body']) Assert.equal(reviews.logged_in_users_review.rating, mock_review['rating']) # Clean up self.mk_api.delete_app_review(self.review_id) @pytest.mark.xfail(reason="Need different apps for different tests for reviews. Issue https://github.com/mozilla/marketplace-tests/issues/320.") def test_that_checks_the_deletion_of_a_review(self, mozwebqa): """ https://moztrap.mozilla.org/manage/case/648/ """ self._reviews_setup(mozwebqa) # Step 1 - Login into Marketplace home_page = Home(mozwebqa) home_page.go_to_homepage() home_page.login(user="******") home_page.wait_notification_box_not_visible() Assert.true(home_page.is_the_current_page) # Step 3 - Search for the test app and go to its details page search_page = home_page.header.search(self.app_name) details_page = search_page.results[0].click_name() Assert.true(details_page.is_the_current_page) # Step 4 - Go to reviews page reviews_page = details_page.click_reviews_button() # Step 5 - Delete review reviews = reviews_page.reviews[0] reviews.delete() Assert.true(reviews_page.notification_visible) Assert.equal(reviews_page.notification_message, "Review deleted") Assert.false(reviews.is_review_visible) def teardown(self): # Clean up review for the tests that create a new review if hasattr(self, 'review_id'): try: self.mk_api.delete_app_review(self.review_id) except HTTPError: # don't do anything when this exception is raised as # test_that_checks_the_deletion_of_a_review probably passed pass