Example #1
0
 def test_create_version_no_addon(self):
     creator = SitePermissionVersionCreator(
         user=user_factory(),
         remote_addr='4.8.15.16',
         install_origins=['https://example.com', 'https://foo.com'],
         site_permissions=['midi-sysex', 'webblah'],
     )
     version = creator.create_version()
     assert version
     addon = version.addon
     file_ = version.file
     # Reload to ensure everything was saved in database correctly.
     version.reload()
     addon.reload()
     file_.reload()
     assert version.pk
     assert version.channel == amo.RELEASE_CHANNEL_UNLISTED
     assert version.version == '1.0'
     assert sorted(version.installorigin_set.all().values_list(
         'origin', flat=True)) == [
             'https://example.com',
             'https://foo.com',
         ]
     assert addon.pk
     assert addon.status == amo.STATUS_NULL
     assert addon.type == amo.ADDON_SITE_PERMISSION
     assert list(addon.authors.all()) == [creator.user]
     assert file_.status == amo.STATUS_AWAITING_REVIEW
     assert file_._site_permissions
     assert file_._site_permissions.permissions == ['midi-sysex', 'webblah']
     activity = ActivityLog.objects.for_addons(addon).latest('pk')
     assert activity.user == creator.user
     assert activity.iplog_set.all()[0].ip_address == '4.8.15.16'
Example #2
0
def create_site_permission_version(*, user_pk, remote_addr, install_origins,
                                   site_permissions, **kwargs):
    # Can raise if the user does not exist, but that's ok, we don't want to go
    # any further if that's the case.
    user = UserProfile.objects.filter(deleted=False).get(pk=user_pk)
    generator = SitePermissionVersionCreator(
        user=user,
        remote_addr=remote_addr,
        install_origins=install_origins,
        site_permissions=site_permissions,
    )
    generator.create_version()
Example #3
0
 def test_create_zipfile(self):
     creator = SitePermissionVersionCreator(
         user=None,
         remote_addr=None,
         install_origins=None,
         site_permissions=None,
     )
     file_obj = creator._create_zipfile({'foo': 'bar'})
     assert file_obj.name == 'automatic.xpi'
     assert file_obj.size
     zip_file = zipfile.ZipFile(file_obj)
     assert zip_file.namelist() == ['manifest.json']
     manifest_contents = zipfile.ZipFile(file_obj).read('manifest.json')
     assert manifest_contents == b'{\n  "foo": "bar"\n}'
Example #4
0
 def test_create_version_existing_addon_but_user_is_not_an_author(self):
     creator = SitePermissionVersionCreator(
         user=user_factory(),
         remote_addr='4.8.15.16',
         install_origins=['https://example.com', 'https://foo.com'],
         site_permissions=['midi-sysex', 'webblah'],
     )
     addon = addon_factory(
         version_kw={'version': '1.0'},
         type=amo.ADDON_SITE_PERMISSION,
         users=[user_factory()],
     )
     self.make_addon_unlisted(addon)
     with self.assertRaises(ImproperlyConfigured):
         creator.create_version(addon=addon)
Example #5
0
 def test_create_manifest_multiple_origins_and_permissions(self):
     creator = SitePermissionVersionCreator(
         user=user_factory(),
         remote_addr='4.8.15.16',
         install_origins=['https://example.com', 'https://foo.com'],
         site_permissions=['midi-sysex', 'webblah'],
     )
     manifest_data = creator._create_manifest('2.0')
     assert manifest_data == {
         'browser_specific_settings': {
             'gecko': {
                 'strict_min_version': '97.0'
             }
         },
         'install_origins': ['https://example.com', 'https://foo.com'],
         'manifest_version': 2,
         'name': 'Site permissions for example.com, foo.com',
         'site_permissions': ['midi-sysex', 'webblah'],
         'version': '2.0',
     }
Example #6
0
 def test_create_manifest_with_guid(self):
     creator = SitePermissionVersionCreator(
         user=user_factory(),
         remote_addr='4.8.15.16',
         install_origins=['https://example.com'],
         site_permissions=['midi-sysex'],
     )
     manifest_data = creator._create_manifest('1.0', 'some@guid')
     guid = (
         manifest_data.get('browser_specific_settings', {})
         .get('gecko', {})
         .get('id')
     )
     assert guid == 'some@guid'
     assert manifest_data == {
         'browser_specific_settings': {
             'gecko': {'id': guid, 'strict_min_version': '97.0'}
         },
         'install_origins': ['https://example.com'],
         'manifest_version': 2,
         'name': 'Site permissions for example.com',
         'site_permissions': ['midi-sysex'],
         'version': '1.0',
     }
Example #7
0
    def test_create_version_existing_addon_wrong_origins(self):
        creator = SitePermissionVersionCreator(
            user=user_factory(),
            remote_addr='4.8.15.16',
            install_origins=['https://example.com', 'https://foo.com'],
            site_permissions=['midi-sysex', 'webblah'],
        )
        addon = addon_factory(
            version_kw={'version': '1.0'},
            type=amo.ADDON_SITE_PERMISSION,
            users=[creator.user],
        )
        initial_version = addon.versions.get()
        self.make_addon_unlisted(addon)
        with self.assertRaises(ImproperlyConfigured):
            creator.create_version(addon=addon)

        # Both need to match, not just one.
        initial_version.installorigin_set.create(origin='https://example.com')
        with self.assertRaises(ImproperlyConfigured):
            creator.create_version(addon=addon)