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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 5
0
    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()
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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
Exemplo n.º 12
0
 def _reviews_setup(self, mozwebqa):
     self.mk_api = MarketplaceAPI.get_client(mozwebqa.base_url,
                                             mozwebqa.credentials)
Exemplo n.º 13
0
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)
Exemplo n.º 14
0
 def _reviews_setup(self, mozwebqa):
     self.mk_api = MarketplaceAPI.get_client(mozwebqa.base_url, mozwebqa.credentials)
Exemplo n.º 15
0
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