示例#1
0
def test_cleanup_extracted_file():
    with freeze_time('2017-01-08 10:01:00'):
        viewer = FileViewer(make_file(1, get_file('webextension.xpi')))

        assert '0108' in viewer.dest
        assert not os.path.exists(viewer.dest)

        viewer.extract()

        assert os.path.exists(viewer.dest)

        # Cleaning up only cleans up yesterdays files so it doesn't touch
        # us today...
        cleanup_extracted_file()

        assert os.path.exists(viewer.dest)

    # Even hours later we don't cleanup yet...
    with freeze_time('2017-01-08 23:59:00'):
        assert os.path.exists(viewer.dest)

        cleanup_extracted_file()

        assert os.path.exists(viewer.dest)

    # But yesterday... we'll cleanup properly
    with freeze_time('2017-01-07 10:01:00'):
        assert os.path.exists(viewer.dest)

        cleanup_extracted_file()

        assert not os.path.exists(viewer.dest)
示例#2
0
    def upload_addon(self, xpi=None):
        """Upload an addon via devhub.

        This will use the override validation option.
        """
        file_path = get_file(xpi)
        self.selenium.find_element(*self._submit_addon_btn_locator).click()
        # Accept agreement
        devhub_agreement = DevHubAgreement(
            self.selenium, self.base_url
        ).wait_for_page_to_load()
        devhub_agreement.accept_agreement()
        self.selenium.find_element(*self._continue_sub_btn_locator).click()
        # Upload
        upload = self.selenium.find_element(*self._upload_addon_locator)
        upload.send_keys(file_path)
        self.wait.until(
            expected.element_to_be_clickable(self._submit_upload_btn_locator)
        )
        self.selenium.find_element(*self._submit_upload_btn_locator).click()
        # Submit no source code
        devhub_source = DevHubSource(
            self.selenium, self.base_url
        ).wait_for_page_to_load()
        devhub_source.dont_submit_source_code()
        from pages.desktop.devhub_submission import DevhubSubmission

        devhub = DevhubSubmission(self.selenium, self.base_url)
        return devhub.wait_for_page_to_load()
    def upload_addon(self, xpi=None):
        """Upload an addon via devhub.

        This will use the override validation option.
        """
        file_path = get_file(xpi)
        self.selenium.find_element(*self._submit_addon_btn_locator).click()
        # Accept agreement
        devhub_agreement = DevHubAgreement(
            self.selenium, self.base_url).wait_for_page_to_load()
        devhub_agreement.accept_agreement()
        self.selenium.find_element(*self._continue_sub_btn_locator).click()
        # Upload
        upload = self.selenium.find_element(*self._upload_addon_locator)
        upload.send_keys(file_path)
        self.wait.until(
            expected.element_to_be_clickable(self._submit_upload_btn_locator))
        self.selenium.find_element(*self._submit_upload_btn_locator).click()
        # Submit no source code
        devhub_source = DevHubSource(self.selenium,
                                     self.base_url).wait_for_page_to_load()
        devhub_source.dont_submit_source_code()
        from pages.desktop.devhub_submission import DevhubSubmission

        devhub = DevhubSubmission(self.selenium, self.base_url)
        return devhub.wait_for_page_to_load()
示例#4
0
    def upload_addon(self, xpi=None):
        """Upload an addon via devhub.

        This will use the override validation option.
        """
        file_path = get_file(xpi)
        self.selenium.find_element(*self._submit_addon_btn_locator).click()
        # Accept agreement
        agreement = False
        count = 0
        while agreement is not True and count < 5:
            try:
                devhub_agreement = DevHubAgreement(
                    self.selenium, self.base_url).wait_for_page_to_load()
                devhub_agreement.accept_agreement()
            except TimeoutException:
                # Do nothing, the agreement has already been excepted
                pass
            except NoSuchElementException:
                pass
            try:
                self.selenium.find_element(
                    *self._continue_sub_btn_locator).click()
            except NoSuchElementException as e:
                print(e)
                self.selenium.refresh
                count + 1
            else:
                agreement = True
        # Upload
        upload_finished = False
        count = 0
        while upload_finished is not True and count <= 5:
            try:
                upload = self.selenium.find_element(
                    *self._upload_addon_locator)
                upload.send_keys(file_path)
                self.wait.until(
                    expected.element_to_be_clickable(
                        self._submit_upload_btn_locator))
                self.selenium.find_element(
                    *self._submit_upload_btn_locator).click()
            except TimeoutException:
                upload_finished = False
            except Exception as e:
                self.selenium.refresh
                if count == 5:
                    raise e
                count + 1
            else:
                upload_finished = True
        # Submit no source code
        devhub_source = DevHubSource(self.selenium,
                                     self.base_url).wait_for_page_to_load()
        devhub_source.dont_submit_source_code()
        from pages.desktop.devhub_submission import DevhubSubmission

        devhub = DevhubSubmission(self.selenium, self.base_url)
        return devhub.wait_for_page_to_load()
示例#5
0
def test_parse_search_empty_shortname():
    fname = get_file('search_empty_shortname.xml')

    with pytest.raises(forms.ValidationError) as excinfo:
        utils.parse_search(fname)

    assert (
        six.text_type(excinfo.value.message) ==
        'Could not parse uploaded file, missing or empty <ShortName> element')
def test_parse_search_empty_shortname():
    fname = get_file('search_empty_shortname.xml')

    with pytest.raises(forms.ValidationError) as excinfo:
        utils.parse_search(fname)

    assert (
        six.text_type(excinfo.value.message) ==
        'Could not parse uploaded file, missing or empty <ShortName> element')
示例#7
0
def test_parse_search_empty_shortname():
    from olympia.files.tests.test_file_viewer import get_file

    fname = get_file('search_empty_shortname.xml')

    with pytest.raises(forms.ValidationError) as excinfo:
        utils.parse_search(fname)

    assert (str(
        excinfo.value.message
    ) == 'Could not parse uploaded file, missing or empty <ShortName> element')
    def create_installable_addon(self):
        activate('en-US')

        # using whatever add-on you already have should work imho, otherwise
        # fall back to a new one for test purposes
        addon = self.create_featured_addon_with_version_for_install()

        # the user the add-on gets created with
        user = UserProfile.objects.get(username='******')

        user, _ = UserProfile.objects.get_or_create(pk=settings.TASK_USER_ID,
                                                    defaults={
                                                        'email':
                                                        '*****@*****.**',
                                                        'username': '******'
                                                    })

        # generate a proper uploaded file that simulates what django requires
        # as request.POST
        file_to_upload = 'webextension_signed_already.xpi'
        file_path = get_file(file_to_upload)

        # make sure we are not using the file in the source-tree but a
        # temporary one to avoid the files get moved somewhere else and
        # deleted from source tree
        with copy_file_to_temp(file_path) as temporary_path:
            data = open(temporary_path).read()
            filedata = SimpleUploadedFile(
                file_to_upload,
                data,
                content_type=mimetypes.guess_type(file_to_upload)[0])

            # now, lets upload the file into the system
            from olympia.devhub.views import handle_upload

            request = RequestFactory().get('/')
            request.user = user

            upload = handle_upload(
                filedata=filedata,
                request=request,
                channel=amo.RELEASE_CHANNEL_LISTED,
                addon=addon,
            )

            # And let's create a new version for that upload.
            create_version_for_upload(upload.addon, upload,
                                      amo.RELEASE_CHANNEL_LISTED)

            # Change status to public
            addon.update(status=amo.STATUS_PUBLIC)
示例#9
0
    def create_installable_addon(self):
        activate('en-US')

        # using whatever add-on you already have should work imho, otherwise
        # fall back to a new one for test purposes
        addon = self.create_featured_addon_with_version_for_install()

        # the user the add-on gets created with
        user = UserProfile.objects.get(username='******')

        user, _ = UserProfile.objects.get_or_create(
            pk=settings.TASK_USER_ID,
            defaults={'email': '*****@*****.**', 'username': '******'})

        # generate a proper uploaded file that simulates what django requires
        # as request.POST
        file_to_upload = 'webextension_signed_already.xpi'
        file_path = get_file(file_to_upload)

        # make sure we are not using the file in the source-tree but a
        # temporary one to avoid the files get moved somewhere else and
        # deleted from source tree
        with copy_file_to_temp(file_path) as temporary_path:
            data = open(temporary_path).read()
            filedata = SimpleUploadedFile(
                file_to_upload,
                data,
                content_type=mimetypes.guess_type(file_to_upload)[0])

            # now, lets upload the file into the system
            from olympia.devhub.views import handle_upload

            request = RequestFactory().get('/')
            request.user = user

            upload = handle_upload(
                filedata=filedata,
                request=request,
                channel=amo.RELEASE_CHANNEL_LISTED,
                addon=addon,
            )

            # And let's create a new version for that upload.
            create_version_for_upload(
                upload.addon, upload, amo.RELEASE_CHANNEL_LISTED)

            # Change status to public
            addon.update(status=amo.STATUS_PUBLIC)
示例#10
0
文件: devhub.py 项目: diox/olympia
    def upload_addon(self, xpi=None):
        """Upload an addon via devhub.

        This will use the override validation option.
        """
        file_path = get_file(xpi)
        self.selenium.find_element(*self._submit_addon_btn_locator).click()
        # Accept agreement
        try:
            devhub_agreement = DevHubAgreement(
                self.selenium, self.base_url
            ).wait_for_page_to_load()
        except TimeoutException:
            # Do nothing, the agreement has already been excepted
            pass
        else:
            devhub_agreement.accept_agreement()
        self.selenium.find_element(*self._continue_sub_btn_locator).click()
        # Upload
        upload_finished = False
        while upload_finished is not True:
            try:
                upload = self.selenium.find_element(
                    *self._upload_addon_locator)
                upload.send_keys(file_path)
                self.wait.until(
                    expected.element_to_be_clickable(
                        self._submit_upload_btn_locator)
                )
                self.selenium.find_element(
                    *self._submit_upload_btn_locator).click()
            except TimeoutException:
                upload_finished = False
            except Exception:
                raise Exception
            else:
                upload_finished = True
        # Submit no source code
        devhub_source = DevHubSource(
            self.selenium, self.base_url
        ).wait_for_page_to_load()
        devhub_source.dont_submit_source_code()
        from pages.desktop.devhub_submission import DevhubSubmission

        devhub = DevhubSubmission(self.selenium, self.base_url)
        return devhub.wait_for_page_to_load()