Esempio n. 1
0
 def test_invalid_info(self):
     build = BuildFactory.build()
     info = io.BytesIO('\n'.join(['%s=%s' % (k, v) for k, v in create_info(build).items()]).encode('utf-8'))
     with create_spk(build, info=info) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Invalid INFO', str(cm.exception))
Esempio n. 2
0
    def test_post_conflict(self):
        user = UserFactory(
            roles=[Role.find("developer"),
                   Role.find("package_admin")])
        db.session.commit()

        architectures = [
            Architecture.find("88f628x"),
            Architecture.find("cedarview")
        ]
        build = BuildFactory.build(architectures=architectures)
        with create_spk(build) as spk:
            self.assert201(
                self.client.post(
                    url_for("api.packages"),
                    headers=authorization_header(user),
                    data=spk.read(),
                ))
            spk.seek(0)
            response = self.client.post(
                url_for("api.packages"),
                headers=authorization_header(user),
                data=spk.read(),
            )
        self.assert409(response)
        self.assertIn(
            "Conflicting architectures: 88f628x, cedarview",
            response.data.decode(response.charset),
        )
Esempio n. 3
0
 def test_invalid_info(self):
     build = BuildFactory.build()
     info = io.BytesIO('\n'.join(['%s=%s' % (k, v) for k, v in create_info(build).items()]).encode('utf-8'))
     with create_spk(build, info=info) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Invalid INFO', str(cm.exception))
Esempio n. 4
0
 def test_not_signed(self):
     build = BuildFactory.build(version__upgrade_wizard=True)
     with create_spk(build) as f:
         spk = SPK(f)
     with self.assertRaises(ValueError) as cm:
         spk.unsign()
     self.assertEqual('Not signed', str(cm.exception))
Esempio n. 5
0
 def test_invalid_info_package(self):
     build = BuildFactory.build(
         version__package__name="Invalid package name")
     with create_spk(build) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual("Invalid INFO package", str(cm.exception))
Esempio n. 6
0
 def test_info_blank_like(self):
     build = BuildFactory.build()
     info = io.BytesIO("\n".join([
         '%s="%s"\n' % (k, v) for k, v in create_info(build).items()
     ]).encode("utf-8"))
     with create_spk(build, info=info) as f:
         SPK(f)
Esempio n. 7
0
 def test_not_signed(self):
     build = BuildFactory.build(version__upgrade_wizard=True)
     with create_spk(build) as f:
         spk = SPK(f)
     with self.assertRaises(ValueError) as cm:
         spk.unsign()
     self.assertEqual("Not signed", str(cm.exception))
Esempio n. 8
0
 def test_invalid_info_icon(self):
     build = BuildFactory.build()
     info = create_info(build)
     info['package_icon_120'] = 'package_icon_120'
     with create_spk(build, info=info) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Invalid INFO icon: package_icon_120', str(cm.exception))
Esempio n. 9
0
 def test_wrong_info_encoding(self):
     build = BuildFactory.build()
     info = create_info(build)
     info['description'] = 'Description en français'
     with create_spk(build, info=info, info_encoding='latin-1') as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Wrong INFO encoding', str(cm.exception))
Esempio n. 10
0
 def test_wrong_conf_privilege_encoding(self):
     build = BuildFactory.build(
         version__conf_privilege=json.dumps({"déçu": {"run-as": "<run-as>"}})
     )
     with create_spk(build, conf_privilege_encoding="latin-1") as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual("Wrong conf/privilege encoding", str(cm.exception))
Esempio n. 11
0
 def test_wrong_conf_conflicts_encoding(self):
     build = BuildFactory.build(
         version__conf_conflicts=json.dumps({"déçu": {"dsm_min_ver": "5.0-4300"}})
     )
     with create_spk(build, conf_conflicts_encoding="latin-1") as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual("Wrong conf/PKG_CONX encoding", str(cm.exception))
Esempio n. 12
0
 def test_invalid_info_boolean_startable(self):
     build = BuildFactory.build()
     info = create_info(build)
     info['startable'] = 'Something'
     with create_spk(build, info=info) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Invalid INFO boolean: startable', str(cm.exception))
Esempio n. 13
0
 def test_invalid_info_icon(self):
     build = BuildFactory.build()
     info = create_info(build)
     info['package_icon_120'] = 'package_icon_120'
     with create_spk(build, info=info) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Invalid INFO icon: package_icon_120', str(cm.exception))
Esempio n. 14
0
 def test_post_conf_resource_invalid_json(self):
     build = BuildFactory.build(version__conf_resource='{"invalid": "json}')
     with create_spk(build) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual(
         "File conf/resource is not valid JSON", str(cm.exception),
     )
Esempio n. 15
0
 def test_checksum_mismatch(self):
     build = BuildFactory.build()
     info = create_info(build)
     info['checksum'] = 'checksum'
     with create_spk(build, info=info) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Checksum mismatch', str(cm.exception))
Esempio n. 16
0
 def test_generic(self):
     build = BuildFactory.build(version__upgrade_wizard=True)
     f = create_spk(build, signature="signature")
     spk = SPK(f)
     spk.unsign()
     with tarfile.open(fileobj=f, mode="r:") as tar:
         self.assertNotIn("syno_signature.asc", tar.getnames())
     f.close()
Esempio n. 17
0
 def test_invalid_spk(self):
     build = BuildFactory.build()
     with create_spk(build) as f:
         f.seek(50)
         invalid_spk = io.BytesIO(f.read())
     with self.assertRaises(SPKParseError) as cm:
         SPK(invalid_spk)
     self.assertEqual("Invalid SPK", str(cm.exception))
Esempio n. 18
0
 def test_invalid_info_boolean_startable(self):
     build = BuildFactory.build()
     info = create_info(build)
     info["startable"] = "Something"
     with create_spk(build, info=info) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual("Invalid INFO boolean: startable", str(cm.exception))
Esempio n. 19
0
 def test_empty_conf_folder(self):
     build = BuildFactory.build(version__conf_dependencies=None, version__conf_conflicts=None)
     info = create_info(build)
     info['support_conf_folder'] = 'yes'
     with create_spk(build, info=info, with_conf=True) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Empty conf folder', str(cm.exception))
Esempio n. 20
0
 def test_already_signed(self):
     build = BuildFactory.build(version__upgrade_wizard=True)
     with create_spk(build, signature='signature') as f:
         spk = SPK(f)
     spk._generate_signature = Mock(return_value='timestamped signature')
     with self.assertRaises(ValueError) as cm:
         spk.sign('timestamp_url', 'gnupghome')
     self.assertEqual('Already signed', str(cm.exception))
Esempio n. 21
0
 def test_generic(self):
     build = BuildFactory.build(version__upgrade_wizard=True)
     f = create_spk(build, signature='signature')
     spk = SPK(f)
     spk.unsign()
     with tarfile.open(fileobj=f, mode='r:') as tar:
         self.assertNotIn('syno_signature.asc', tar.getnames())
     f.close()
Esempio n. 22
0
 def test_missing_info_package(self):
     build = BuildFactory.build()
     info = create_info(build)
     del info["package"]
     with create_spk(build, info=info) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual("Missing INFO: package", str(cm.exception))
Esempio n. 23
0
 def test_empty_conf_folder(self):
     build = BuildFactory.build(version__conf_dependencies=None, version__conf_conflicts=None)
     info = create_info(build)
     info['support_conf_folder'] = 'yes'
     with create_spk(build, info=info, with_conf=True) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Empty conf folder', str(cm.exception))
Esempio n. 24
0
 def test_checksum_mismatch(self):
     build = BuildFactory.build()
     info = create_info(build)
     info["checksum"] = "checksum"
     with create_spk(build, info=info) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual("Checksum mismatch", str(cm.exception))
Esempio n. 25
0
 def test_missing_info_package(self):
     build = BuildFactory.build()
     info = create_info(build)
     del info['package']
     with create_spk(build, info=info) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Missing INFO: package', str(cm.exception))
Esempio n. 26
0
 def test_wrong_info_encoding(self):
     build = BuildFactory.build()
     info = create_info(build)
     info["description"] = "Description en français"
     with create_spk(build, info=info, info_encoding="latin-1") as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual("Wrong INFO encoding", str(cm.exception))
Esempio n. 27
0
 def test_missing_conf_folder(self):
     build = BuildFactory.build(version__conf_dependencies=None, version__conf_conflicts=None, version__conf_privilege=None, version__conf_resource=None)
     info = create_info(build)
     info['support_conf_folder'] = 'yes'
     with create_spk(build, info=info, with_conf=False) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Missing conf folder', str(cm.exception))
Esempio n. 28
0
 def test_already_signed(self):
     build = BuildFactory.build(version__upgrade_wizard=True)
     with create_spk(build, signature="signature") as f:
         spk = SPK(f)
     spk._generate_signature = Mock(return_value="timestamped signature")
     with self.assertRaises(ValueError) as cm:
         spk.sign("timestamp_url", "gnupghome")
     self.assertEqual("Already signed", str(cm.exception))
Esempio n. 29
0
 def test_wrong_syno_signature_encoding(self):
     build = BuildFactory.build()
     with create_spk(
         build, signature="Signature française", signature_encoding="latin-1"
     ) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual("Wrong syno_signature.asc encoding", str(cm.exception))
Esempio n. 30
0
 def test_invalid_spk(self):
     build = BuildFactory.build()
     with create_spk(build) as f:
         f.seek(50)
         invalid_spk = io.BytesIO(f.read())
     with self.assertRaises(SPKParseError) as cm:
         SPK(invalid_spk)
     self.assertEqual('Invalid SPK', str(cm.exception))
Esempio n. 31
0
 def test_wrong_info_encoding(self):
     build = BuildFactory.build()
     info = create_info(build)
     info['description'] = 'Description en français'
     with create_spk(build, info=info, info_encoding='latin-1') as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Wrong INFO encoding', str(cm.exception))
Esempio n. 32
0
 def test_wrong_conf_resource_encoding(self):
     build = BuildFactory.build(version__conf_resource=json.dumps(
         {'déçu': {
             '<resource-id>': '<specification>'
         }}))
     with create_spk(build, conf_resource_encoding='latin-1') as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Wrong conf/resource encoding', str(cm.exception))
Esempio n. 33
0
 def test_wrong_conf_resource_encoding(self):
     build = BuildFactory.build(version__conf_resource=json.dumps(
         {"déçu": {
             "<resource-id>": "<specification>"
         }}, ensure_ascii=False))
     with create_spk(build, conf_resource_encoding="latin-1") as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual("Wrong conf/resource encoding", str(cm.exception))
Esempio n. 34
0
    def test_post_new_package_not_author_not_maintainer_user(self):
        user = UserFactory(roles=[Role.find('developer')])
        db.session.commit()

        with create_spk(BuildFactory.build()) as spk:
            response = self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                        data=spk.read())
        self.assert403(response)
        self.assertIn('Insufficient permissions to create new packages', response.data.decode(response.charset))
Esempio n. 35
0
 def test_wrong_conf_privilege_encoding(self):
     build = BuildFactory.build(version__conf_privilege=json.dumps(
         {'déçu': {
             'run-as': '<run-as>'
         }}))
     with create_spk(build, conf_privilege_encoding='latin-1') as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Wrong conf/privilege encoding', str(cm.exception))
Esempio n. 36
0
 def test_wrong_conf_conflicts_encoding(self):
     build = BuildFactory.build(version__conf_conflicts=json.dumps(
         {'déçu': {
             'dsm_min_ver': '5.0-4300'
         }}))
     with create_spk(build, conf_conflicts_encoding='latin-1') as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Wrong conf/PKG_CONX encoding', str(cm.exception))
Esempio n. 37
0
    def test_post_minimum(self):
        user = UserFactory(roles=[Role.find('developer'), Role.find('package_admin')])
        db.session.commit()

        build = BuildFactory.build()
        with create_spk(build) as spk:
            self.assert201(self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                            data=spk.read()))
        self.assertBuildInserted(Build.query.one(), build, user)
Esempio n. 38
0
    def test_post_signed(self):
        user = UserFactory(roles=[Role.find('developer'), Role.find('package_admin')])
        db.session.commit()

        build = BuildFactory.build()
        with create_spk(build, signature='signature') as spk:
            response = self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                        data=spk.read())
        self.assert422(response)
        self.assertIn('Package contains a signature', response.data.decode(response.charset))
Esempio n. 39
0
    def test_post_unknown_firmware(self):
        user = UserFactory(roles=[Role.find('developer')])
        db.session.commit()

        build = BuildFactory.build(firmware=Firmware(version='1.0', build=421))
        with create_spk(build) as spk:
            response = self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                        data=spk.read())
        self.assert422(response)
        self.assertIn('Unknown firmware', response.data.decode(response.charset))
Esempio n. 40
0
    def test_post_unknown_architecture(self):
        user = UserFactory(roles=[Role.find('developer')])
        db.session.commit()

        build = BuildFactory.build(architectures=[Architecture(code='newarch')])
        with create_spk(build) as spk:
            response = self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                        data=spk.read())
        self.assert422(response)
        self.assertIn('Unknown architecture: newarch', response.data.decode(response.charset))
Esempio n. 41
0
    def test_post_existing_package_maintainer_user(self):
        user = UserFactory(roles=[Role.find('developer')])
        package = PackageFactory(maintainers=[user])
        db.session.commit()

        build = BuildFactory.build(version__package=package)
        db.session.expire(package)
        with create_spk(build) as spk:
            self.assert201(self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                            data=spk.read()))
Esempio n. 42
0
    def test_post_invalid_spk(self):
        user = UserFactory(roles=[Role.find('developer'), Role.find('package_admin')])
        db.session.commit()

        build = BuildFactory.build()
        with create_spk(build) as spk:
            spk.seek(100)
            response = self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                        data=spk.read())
        self.assert422(response)
        self.assertIn('Invalid SPK', response.data.decode(response.charset))
Esempio n. 43
0
    def test_post_new_package_not_author_not_maintainer_user(self):
        user = UserFactory(roles=[Role.find('developer')])
        db.session.commit()

        with create_spk(BuildFactory.build()) as spk:
            response = self.client.post(url_for('api.packages'),
                                        headers=authorization_header(user),
                                        data=spk.read())
        self.assert403(response)
        self.assertIn('Insufficient permissions to create new packages',
                      response.data.decode(response.charset))
Esempio n. 44
0
    def test_post_existing_package_maintainer_user(self):
        user = UserFactory(roles=[Role.find('developer')])
        package = PackageFactory(maintainers=[user])
        db.session.commit()

        build = BuildFactory.build(version__package=package)
        db.session.expire(package)
        with create_spk(build) as spk:
            self.assert201(
                self.client.post(url_for('api.packages'),
                                 headers=authorization_header(user),
                                 data=spk.read()))
Esempio n. 45
0
    def test_post_unknown_firmware(self):
        user = UserFactory(roles=[Role.find('developer')])
        db.session.commit()

        build = BuildFactory.build(firmware=Firmware(version='1.0', build=421))
        with create_spk(build) as spk:
            response = self.client.post(url_for('api.packages'),
                                        headers=authorization_header(user),
                                        data=spk.read())
        self.assert422(response)
        self.assertIn('Unknown firmware',
                      response.data.decode(response.charset))
Esempio n. 46
0
    def test_post_wrong_version(self):
        user = UserFactory(roles=[Role.find('developer'), Role.find('package_admin')])
        db.session.commit()

        build = BuildFactory.build()
        info = create_info(build)
        info['version'] = '1.2.3~4'
        with create_spk(build, info=info) as spk:
            response = self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                        data=spk.read())
        self.assert422(response)
        self.assertIn('Invalid version', response.data.decode(response.charset))
Esempio n. 47
0
    def test_post_wrong_description_language(self):
        user = UserFactory(roles=[Role.find('developer'), Role.find('package_admin')])
        db.session.commit()

        build = BuildFactory.build()
        info = create_info(build)
        info['description_zzz'] = 'description_zzz'
        with create_spk(build, info=info) as spk:
            response = self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                        data=spk.read())
        self.assert422(response)
        self.assertIn('Unknown INFO description language', response.data.decode(response.charset))
Esempio n. 48
0
    def test_generic(self):
        build = BuildFactory.build(version__upgrade_wizard=True,
                                   architectures=[Architecture.query.all()[0], Architecture.query.all()[1]])
        with create_spk(build, signature='signature') as f:
            spk = SPK(f)

        # info
        info_keys = ['arch', 'changelog', 'description', 'description_enu', 'displayname', 'displayname_enu',
                     'distributor', 'distributor_url', 'firmware', 'install_conflict_packages', 'install_dep_packages',
                     'install_dep_services', 'maintainer', 'maintainer_url', 'package', 'report_url',
                     'support_conf_folder', 'version']
        self.assertEqual(set(info_keys), set(spk.info.keys()))
        self.assertEqual({Architecture.from_syno.get(a, a) for a in spk.info['arch'].split()},
                         {a.code for a in build.architectures})
        self.assertEqual(build.version.changelog, spk.info['changelog'])
        self.assertEqual(build.version.descriptions['enu'].description, spk.info['description'])
        self.assertEqual(build.version.descriptions['enu'].description, spk.info['description_enu'])
        self.assertEqual(build.version.displaynames['enu'].displayname, spk.info['displayname'])
        self.assertEqual(build.version.displaynames['enu'].displayname, spk.info['displayname_enu'])
        self.assertEqual(build.version.distributor, spk.info['distributor'])
        self.assertEqual(build.version.distributor_url, spk.info['distributor_url'])
        self.assertEqual(build.firmware.firmware_string, spk.info['firmware'])
        self.assertEqual(build.version.conflicts, spk.info['install_conflict_packages'])
        self.assertEqual(build.version.dependencies, spk.info['install_dep_packages'])
        self.assertEqual(' '.join(s.code for s in build.version.service_dependencies), spk.info['install_dep_services'])
        self.assertEqual(build.version.maintainer, spk.info['maintainer'])
        self.assertEqual(build.version.maintainer_url, spk.info['maintainer_url'])
        self.assertEqual(build.version.package.name, spk.info['package'])
        self.assertEqual(build.version.report_url, spk.info['report_url'])
        self.assertEqual(build.version.conf_dependencies is not None or build.version.conf_conflicts is not None or \
                         build.version.conf_privilege is not None or build.version.conf_resource is not None,
                             spk.info['support_conf_folder'])
        self.assertEqual(build.version.version_string, spk.info['version'])

        # icons
        self.assertEqual(set(build.version.icons.keys()), set(spk.icons.keys()))

        # wizards
        if not build.version.install_wizard:
            self.assertNotIn('install', spk.wizards)
        else:
            self.assertIn('install', spk.wizards)
        if not build.version.upgrade_wizard:
            self.assertNotIn('upgrade', spk.wizards)
        else:
            self.assertIn('upgrade', spk.wizards)

        # license
        self.assertEqual(build.version.license, spk.license)

        # signature
        self.assertEqual('signature', spk.signature)
Esempio n. 49
0
    def test_post_not_startable(self):
        user = UserFactory(
            roles=[Role.find('developer'),
                   Role.find('package_admin')])
        db.session.commit()

        build = BuildFactory.build(version__startable=False)
        with create_spk(build) as spk:
            self.assert201(
                self.client.post(url_for('api.packages'),
                                 headers=authorization_header(user),
                                 data=spk.read()))
        self.assertBuildInserted(Build.query.one(), build, user)
Esempio n. 50
0
 def test_empty_conf_folder(self):
     build = BuildFactory.build(
         version__conf_dependencies=None,
         version__conf_conflicts=None,
         version__conf_privilege=None,
         version__conf_resource=None,
     )
     info = create_info(build)
     info["support_conf_folder"] = "yes"
     with create_spk(build, info=info, with_conf=True) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual("Empty conf folder", str(cm.exception))
Esempio n. 51
0
    def test_generic(self):
        build = BuildFactory.build(version__upgrade_wizard=True,
                                   architectures=[Architecture.query.all()[0], Architecture.query.all()[1]])
        with create_spk(build, signature='signature') as f:
            spk = SPK(f)

        # info
        info_keys = ['arch', 'changelog', 'description', 'description_enu', 'displayname', 'displayname_enu',
                     'distributor', 'distributor_url', 'firmware', 'install_conflict_packages', 'install_dep_packages',
                     'install_dep_services', 'maintainer', 'maintainer_url', 'package', 'report_url',
                     'support_conf_folder', 'version']
        self.assertEqual(set(info_keys), set(spk.info.keys()))
        self.assertEqual({Architecture.from_syno.get(a, a) for a in spk.info['arch'].split()},
                         {a.code for a in build.architectures})
        self.assertEqual(build.version.changelog, spk.info['changelog'])
        self.assertEqual(build.version.descriptions['enu'].description, spk.info['description'])
        self.assertEqual(build.version.descriptions['enu'].description, spk.info['description_enu'])
        self.assertEqual(build.version.displaynames['enu'].displayname, spk.info['displayname'])
        self.assertEqual(build.version.displaynames['enu'].displayname, spk.info['displayname_enu'])
        self.assertEqual(build.version.distributor, spk.info['distributor'])
        self.assertEqual(build.version.distributor_url, spk.info['distributor_url'])
        self.assertEqual(build.firmware.firmware_string, spk.info['firmware'])
        self.assertEqual(build.version.conflicts, spk.info['install_conflict_packages'])
        self.assertEqual(build.version.dependencies, spk.info['install_dep_packages'])
        self.assertEqual(' '.join(s.code for s in build.version.service_dependencies), spk.info['install_dep_services'])
        self.assertEqual(build.version.maintainer, spk.info['maintainer'])
        self.assertEqual(build.version.maintainer_url, spk.info['maintainer_url'])
        self.assertEqual(build.version.package.name, spk.info['package'])
        self.assertEqual(build.version.report_url, spk.info['report_url'])
        self.assertEqual(build.version.conf_dependencies is not None or build.version.conf_conflicts is not None,
                         spk.info['support_conf_folder'])
        self.assertEqual(build.version.version_string, spk.info['version'])

        # icons
        self.assertEqual(set(build.version.icons.keys()), set(spk.icons.keys()))

        # wizards
        if not build.version.install_wizard:
            self.assertNotIn('install', spk.wizards)
        else:
            self.assertIn('install', spk.wizards)
        if not build.version.upgrade_wizard:
            self.assertNotIn('upgrade', spk.wizards)
        else:
            self.assertIn('upgrade', spk.wizards)

        # license
        self.assertEqual(build.version.license, spk.license)

        # signature
        self.assertEqual('signature', spk.signature)
Esempio n. 52
0
    def test_post_conflict(self):
        user = UserFactory(roles=[Role.find('developer'), Role.find('package_admin')])
        db.session.commit()

        architectures = [Architecture.find('88f628x'), Architecture.find('cedarview')]
        build = BuildFactory.build(architectures=architectures)
        with create_spk(build) as spk:
            self.assert201(self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                            data=spk.read()))
            spk.seek(0)
            response = self.client.post(url_for('api.packages'), headers=authorization_header(user),
                                        data=spk.read())
        self.assert409(response)
        self.assertIn('Conflicting architectures: 88f628x, cedarview', response.data.decode(response.charset))
Esempio n. 53
0
 def test_generic(self):
     build = BuildFactory.build(version__upgrade_wizard=True)
     f = create_spk(build)
     spk = SPK(f)
     with tarfile.open(fileobj=f, mode='r:') as tar:
         self.assertNotIn('syno_signature.asc', tar.getnames())
     self.assertIsNone(spk.signature)
     spk._generate_signature = Mock(return_value='timestamped signature')
     spk.sign('timestamp_url', 'gnupghome')
     with tarfile.open(fileobj=f, mode='r:') as tar:
         self.assertIn('syno_signature.asc', tar.getnames())
         self.assertEqual(tar.extractfile('syno_signature.asc').read(), b'timestamped signature')
     self.assertEqual(spk.signature, 'timestamped signature')
     f.close()
Esempio n. 54
0
 def test_missing_72px_icon(self):
     build = BuildFactory.build(version__add_icon=False)
     with create_spk(build) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Missing 72px icon', str(cm.exception))
Esempio n. 55
0
 def test_wrong_conf_conflicts_encoding(self):
     build = BuildFactory.build(version__conf_conflicts=json.dumps({'déçu': {'dsm_min_ver': '5.0-4300'}}))
     with create_spk(build, conf_conflicts_encoding='latin-1') as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Wrong conf/PKG_CONX encoding', str(cm.exception))
Esempio n. 56
0
 def test_info_blank_like(self):
     build = BuildFactory.build()
     info = io.BytesIO('\n'.join(['%s="%s"\n' % (k, v) for k, v in create_info(build).items()]).encode('utf-8'))
     with create_spk(build, info=info) as f:
         SPK(f)
Esempio n. 57
0
 def test_info_boolean_no(self):
     build = BuildFactory.build(version__startable=False)
     with create_spk(build) as f:
         self.assertFalse(SPK(f).info['startable'])
Esempio n. 58
0
 def test_no_info(self):
     build = BuildFactory.build()
     with create_spk(build, with_info=False) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Missing INFO file', str(cm.exception))
Esempio n. 59
0
 def test_no_package_tgz(self):
     build = BuildFactory.build()
     with create_spk(build, with_package=False) as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Missing package.tgz file', str(cm.exception))
Esempio n. 60
0
 def test_wrong_license_encoding(self):
     build = BuildFactory.build(version__license='License française')
     with create_spk(build, license_encoding='latin-1') as f:
         with self.assertRaises(SPKParseError) as cm:
             SPK(f)
     self.assertEqual('Wrong LICENSE encoding', str(cm.exception))