Example #1
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),
        )
Example #2
0
 def test_incorrect_architecture(self):
     architecture = Architecture.find('88f6281', syno=True)
     build = BuildFactory(active=True, version__report_url=None,
                          architectures=[architecture], firmware=Firmware.find(1594))
     db.session.commit()
     self.assertEqual(Download.query.count(), 0)
     response = self.client.get(url_for('nas.download', architecture_id=Architecture.find('cedarview').id,
                                        firmware_build=4458, build_id=build.id))
     self.assert400(response)
     self.assertEqual(Download.query.count(), 0)
Example #3
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))
Example #4
0
 def test_incorrect_architecture(self):
     architecture = Architecture.find('88f6281', syno=True)
     build = BuildFactory(active=True,
                          version__report_url=None,
                          architectures=[architecture],
                          firmware=Firmware.find(1594))
     db.session.commit()
     self.assertEqual(Download.query.count(), 0)
     response = self.client.get(
         url_for('nas.download',
                 architecture_id=Architecture.find('cedarview').id,
                 firmware_build=4458,
                 build_id=build.id))
     self.assert400(response)
     self.assertEqual(Download.query.count(), 0)
Example #5
0
 def test_stable_build_active_stable_download_count(self):
     package = PackageFactory()
     build = BuildFactory(
         active=True,
         version__report_url=None,
         version__package=package,
         architectures=[Architecture.find("cedarview")],
         firmware=Firmware.find(1594),
     )
     DownloadFactory.create_batch(1, build=build, date=datetime.now())
     DownloadFactory.create_batch(2,
                                  build=build,
                                  date=datetime.now() - timedelta(days=30))
     DownloadFactory.create_batch(4,
                                  build=build,
                                  date=datetime.now() - timedelta(days=100))
     db.session.commit()
     data = dict(arch="cedarview", build="1594", language="enu")
     response = self.client.post(url_for("nas.catalog"), data=data)
     self.assert200(response)
     self.assertHeader(response, "Content-Type", "application/json")
     catalog = json.loads(response.data.decode(response.charset))
     self.assertEqual(len(catalog), 1)
     self.assertEqual(catalog[0]["download_count"], 7)
     self.assertEqual(catalog[0]["recent_download_count"], 3)
Example #6
0
 def test_stable_build_active_stable_null_data(self):
     build = BuildFactory(
         active=True,
         version__report_url=None,
         version__changelog=None,
         version__distributor=None,
         version__distributor_url=None,
         version__maintainer=None,
         version__maintainer_url=None,
         version__service_dependencies=[],
         version__dependencies=None,
         version__conflicts=None,
         version__package__add_screenshot=False,
         architectures=[Architecture.find("88f6281", syno=True)],
         firmware=Firmware.find(1594),
     )
     db.session.commit()
     data = dict(arch="88f6281", build="1594", language="enu")
     response = self.client.post(url_for("nas.catalog"), data=data)
     self.assert200(response)
     self.assertHeader(response, "Content-Type", "application/json")
     catalog = json.loads(response.data.decode(response.charset))
     self.assertEqual(len(catalog), 1)
     self.assertCatalogEntry(catalog[0], build, data,
                             dict(arch="88f628x", build="1594"))
Example #7
0
 def test_generic(self):
     architecture = Architecture.find("88f6281", syno=True)
     build = BuildFactory(
         active=True,
         version__report_url=None,
         architectures=[architecture],
         firmware=Firmware.find(1594),
     )
     db.session.commit()
     self.assertEqual(Download.query.count(), 0)
     response = self.client.get(
         url_for(
             "nas.download",
             architecture_id=architecture.id,
             firmware_build=4458,
             build_id=build.id,
         ),
         environ_base={"REMOTE_ADDR": "127.0.0.1"},
         headers={"User-Agent": "My User Agent"},
     )
     self.assert302(response)
     self.assertEqual(Download.query.count(), 1)
     download = Download.query.first()
     self.assertEqual(download.ip_address, "127.0.0.1")
     self.assertEqual(download.user_agent, "My User Agent")
     self.assertEqual(download.firmware_build, 4458)
     self.assertAlmostEqual(
         download.date,
         datetime.utcnow().replace(microsecond=0),
         delta=timedelta(seconds=10),
     )
Example #8
0
def populate():
    """Populate the database with some packages"""
    from spkrepo.tests.common import BuildFactory, PackageFactory, VersionFactory
    with db.session.no_autoflush:
        # nzbget
        nzbget_package = PackageFactory(name='nzbget')
        nzbget_versions = [VersionFactory(package=nzbget_package, upstream_version='12.0', version=10,
                                          dependencies=None, report_url=None,
                                          install_wizard=True, upgrade_wizard=False),
                           VersionFactory(package=nzbget_package, upstream_version='13.0', version=11,
                                          dependencies=None, report_url=None,
                                          install_wizard=True, upgrade_wizard=False)]
        nzbget_builds = []
        for version in nzbget_versions:
            builds = BuildFactory.create_batch(2, version=version, active=True)
            nzbget_builds.extend(builds)

        # sickbeard
        sickbeard_package = PackageFactory(name='sickbeard')
        sickbeard_versions = [VersionFactory(package=sickbeard_package, upstream_version='20140528', version=3,
                                             dependencies='git', service_dependencies=[], report_url=None,
                                             install_wizard=False, upgrade_wizard=False, startable=True),
                              VersionFactory(package=sickbeard_package, upstream_version='20140702', version=4,
                                             dependencies='git', service_dependencies=[], report_url=None,
                                             install_wizard=False, upgrade_wizard=False, startable=True)]
        sickbeard_builds = []
        for version in sickbeard_versions:
            sickbeard_builds.append(BuildFactory(version=version, architectures=[Architecture.find('noarch')],
                                                 active=True))

        # git
        git_package = PackageFactory(name='git')
        git_versions = [VersionFactory(package=git_package, upstream_version='1.8.4', version=3,
                                       dependencies=None, service_dependencies=[], report_url=None,
                                       install_wizard=False, upgrade_wizard=False, startable=False),
                        VersionFactory(package=git_package, upstream_version='2.1.2', version=4,
                                       dependencies=None, service_dependencies=[], report_url=None,
                                       install_wizard=False, upgrade_wizard=False, startable=False)]
        git_builds = []
        for version in git_versions:
            builds = BuildFactory.create_batch(3, version=version, active=True)
            git_builds.extend(builds)

        # bitlbee
        bitlbee_package = PackageFactory(name='bitlbee')
        bitlbee_versions = [VersionFactory(package=bitlbee_package, upstream_version='3.2.2', version=9,
                                           dependencies=None, service_dependencies=[], report_url=None,
                                           install_wizard=False, upgrade_wizard=False, startable=True),
                            VersionFactory(package=bitlbee_package, upstream_version='3.2.3', version=10,
                                           dependencies=None, service_dependencies=[], report_url=None,
                                           install_wizard=False, upgrade_wizard=False, startable=True),
                            VersionFactory(package=bitlbee_package, upstream_version='3.3.0', version=11,
                                           dependencies=None, service_dependencies=[],
                                           install_wizard=False, upgrade_wizard=False, startable=True)]
        bitlbee_builds = []
        for version in bitlbee_versions:
            builds = BuildFactory.create_batch(3, version=version, active=True)
            bitlbee_builds.extend(builds)
    db.session.commit()
Example #9
0
 def test_stable_build_not_active_not_stable(self):
     BuildFactory(active=False, architectures=[Architecture.find('88f6281', syno=True)], firmware=Firmware.find(1594))
     db.session.commit()
     data = dict(arch='88f6281', build='1594', language='enu', package_update_channel='beta')
     response = self.client.post(url_for('nas.catalog'), data=data)
     self.assert200(response)
     self.assertHeader(response, 'Content-Type', 'application/json')
     catalog = json.loads(response.data.decode(response.charset))
     self.assertEqual(len(catalog), 0)
Example #10
0
 def test_stable_build_active_stable_different_firmware(self):
     BuildFactory(active=True, version__report_url=None, architectures=[Architecture.find('88f6281', syno=True)],
                  firmware=Firmware.find(4458))
     db.session.commit()
     data = dict(arch='88f6281', build='1594', language='enu')
     response = self.client.post(url_for('nas.catalog'), data=data)
     self.assert200(response)
     self.assertHeader(response, 'Content-Type', 'application/json')
     catalog = json.loads(response.data.decode(response.charset))
     self.assertEqual(len(catalog), 0)
Example #11
0
 def test_stable_build_active_not_stable(self):
     BuildFactory(active=True,
                  architectures=[Architecture.find('88f6281', syno=True)],
                  firmware=Firmware.find(1594))
     db.session.commit()
     data = dict(arch='88f6281', build='1594', language='enu')
     response = self.client.post(url_for('nas.catalog'), data=data)
     self.assert200(response)
     self.assertHeader(response, 'Content-Type', 'application/json')
     catalog = json.loads(response.data.decode(response.charset))
     self.assertEqual(len(catalog), 0)
Example #12
0
 def test_stable_build_active_stable_qstart_startable(self):
     build = BuildFactory(active=True, version__report_url=None, version__license=None,
                          version__install_wizard=False, version__startable=True,
                          architectures=[Architecture.find('88f6281', syno=True)], firmware=Firmware.find(1594))
     db.session.commit()
     data = dict(arch='88f6281', build='1594', language='enu')
     response = self.client.post(url_for('nas.catalog'), data=data)
     self.assert200(response)
     self.assertHeader(response, 'Content-Type', 'application/json')
     catalog = json.loads(response.data.decode(response.charset))
     self.assertEqual(len(catalog), 1)
     self.assertCatalogEntry(catalog[0], build, data, dict(arch='88f628x', build='1594'))
Example #13
0
 def test_stable_build_active_not_stable(self):
     BuildFactory(
         active=True,
         architectures=[Architecture.find("88f6281", syno=True)],
         firmware=Firmware.find(1594),
     )
     db.session.commit()
     data = dict(arch="88f6281", build="1594", language="enu")
     response = self.client.post(url_for("nas.catalog"), data=data)
     self.assert200(response)
     self.assertHeader(response, "Content-Type", "application/json")
     catalog = json.loads(response.data.decode(response.charset))
     self.assertEqual(len(catalog), 0)
Example #14
0
 def test_stable_build_active_stable_null_data(self):
     build = BuildFactory(active=True, version__report_url=None, version__changelog=None, version__distributor=None,
                          version__distributor_url=None, version__maintainer=None, version__maintainer_url=None,
                          version__service_dependencies=[], version__dependencies=None, version__conflicts=None,
                          version__package__add_screenshot=False,
                          architectures=[Architecture.find('88f6281', syno=True)], firmware=Firmware.find(1594))
     db.session.commit()
     data = dict(arch='88f6281', build='1594', language='enu')
     response = self.client.post(url_for('nas.catalog'), data=data)
     self.assert200(response)
     self.assertHeader(response, 'Content-Type', 'application/json')
     catalog = json.loads(response.data.decode(response.charset))
     self.assertEqual(len(catalog), 1)
     self.assertCatalogEntry(catalog[0], build, data, dict(arch='88f628x', build='1594'))
Example #15
0
 def test_stable_build_active_stable_download_count(self):
     package = PackageFactory()
     build = BuildFactory(active=True, version__report_url=None, version__package=package,
                          architectures=[Architecture.find('cedarview')], firmware=Firmware.find(1594))
     DownloadFactory.create_batch(1, build=build, date=datetime.now())
     DownloadFactory.create_batch(2, build=build, date=datetime.now() - timedelta(days=30))
     DownloadFactory.create_batch(4, build=build, date=datetime.now() - timedelta(days=100))
     db.session.commit()
     data = dict(arch='cedarview', build='1594', language='enu')
     response = self.client.post(url_for('nas.catalog'), data=data)
     self.assert200(response)
     self.assertHeader(response, 'Content-Type', 'application/json')
     catalog = json.loads(response.data.decode(response.charset))
     self.assertEqual(len(catalog), 1)
     self.assertEqual(catalog[0]['download_count'], 7)
     self.assertEqual(catalog[0]['recent_download_count'], 3)
Example #16
0
 def test_generic(self):
     architecture = Architecture.find('88f6281', syno=True)
     build = BuildFactory(active=True, version__report_url=None,
                          architectures=[architecture], firmware=Firmware.find(1594))
     db.session.commit()
     self.assertEqual(Download.query.count(), 0)
     response = self.client.get(url_for('nas.download', architecture_id=architecture.id,
                                        firmware_build=4458, build_id=build.id),
                                environ_base={'REMOTE_ADDR': '127.0.0.1'}, headers={'User-Agent': 'My User Agent'})
     self.assert302(response)
     self.assertEqual(Download.query.count(), 1)
     download = Download.query.first()
     self.assertEqual(download.ip_address, '127.0.0.1')
     self.assertEqual(download.user_agent, 'My User Agent')
     self.assertEqual(download.firmware_build, 4458)
     self.assertAlmostEqual(download.date, datetime.utcnow().replace(microsecond=0), delta=timedelta(seconds=10))
Example #17
0
 def test_stable_build_active_stable_qinst(self):
     build = BuildFactory(
         active=True,
         version__report_url=None,
         version__license=None,
         version__install_wizard=False,
         architectures=[Architecture.find('88f6281', syno=True)],
         firmware=Firmware.find(1594))
     db.session.commit()
     data = dict(arch='88f6281', build='1594', language='enu')
     response = self.client.post(url_for('nas.catalog'), data=data)
     self.assert200(response)
     self.assertHeader(response, 'Content-Type', 'application/json')
     catalog = json.loads(response.data.decode(response.charset))
     self.assertEqual(len(catalog), 1)
     self.assertCatalogEntry(catalog[0], build, data,
                             dict(arch='88f628x', build='1594'))
Example #18
0
 def test_stable_build_active_stable_5004(self):
     build = BuildFactory(
         active=True,
         version__report_url=None,
         architectures=[Architecture.find("88f6281", syno=True)],
         firmware=Firmware.find(1594),
     )
     db.session.commit()
     data = dict(arch="88f6281", build="5004", language="enu")
     response = self.client.post(url_for("nas.catalog"), data=data)
     self.assert200(response)
     self.assertHeader(response, "Content-Type", "application/json")
     catalog = json.loads(response.data.decode(response.charset))
     self.assertIn("packages", catalog)
     self.assertIn("keyrings", catalog)
     self.assertEqual(len(catalog["packages"]), 1)
     self.assertCatalogEntry(catalog["packages"][0], build, data,
                             dict(arch="88f628x", build="5004"))
Example #19
0
 def test_incorrect_firmware_build(self):
     architecture = Architecture.find("88f6281", syno=True)
     build = BuildFactory(
         active=True,
         version__report_url=None,
         architectures=[architecture],
         firmware=Firmware.find(1594),
     )
     db.session.commit()
     self.assertEqual(Download.query.count(), 0)
     response = self.client.get(
         url_for(
             "nas.download",
             architecture_id=architecture.id,
             firmware_build=1593,
             build_id=build.id,
         ))
     self.assert400(response)
     self.assertEqual(Download.query.count(), 0)
Example #20
0
def populate():
    """Populate the database with some packages"""
    from spkrepo.tests.common import BuildFactory, PackageFactory, VersionFactory
    with db.session.no_autoflush:
        # nzbget
        nzbget_package = PackageFactory(name='nzbget')
        nzbget_versions = [
            VersionFactory(package=nzbget_package,
                           upstream_version='12.0',
                           version=10,
                           dependencies=None,
                           report_url=None,
                           install_wizard=True,
                           upgrade_wizard=False),
            VersionFactory(package=nzbget_package,
                           upstream_version='13.0',
                           version=11,
                           dependencies=None,
                           report_url=None,
                           install_wizard=True,
                           upgrade_wizard=False)
        ]
        nzbget_builds = []
        for version in nzbget_versions:
            builds = BuildFactory.create_batch(2, version=version, active=True)
            nzbget_builds.extend(builds)

        # sickbeard
        sickbeard_package = PackageFactory(name='sickbeard')
        sickbeard_versions = [
            VersionFactory(package=sickbeard_package,
                           upstream_version='20140528',
                           version=3,
                           dependencies='git',
                           service_dependencies=[],
                           report_url=None,
                           install_wizard=False,
                           upgrade_wizard=False,
                           startable=True),
            VersionFactory(package=sickbeard_package,
                           upstream_version='20140702',
                           version=4,
                           dependencies='git',
                           service_dependencies=[],
                           report_url=None,
                           install_wizard=False,
                           upgrade_wizard=False,
                           startable=True)
        ]
        sickbeard_builds = []
        for version in sickbeard_versions:
            sickbeard_builds.append(
                BuildFactory(version=version,
                             architectures=[Architecture.find('noarch')],
                             active=True))

        # git
        git_package = PackageFactory(name='git')
        git_versions = [
            VersionFactory(package=git_package,
                           upstream_version='1.8.4',
                           version=3,
                           dependencies=None,
                           service_dependencies=[],
                           report_url=None,
                           install_wizard=False,
                           upgrade_wizard=False,
                           startable=False),
            VersionFactory(package=git_package,
                           upstream_version='2.1.2',
                           version=4,
                           dependencies=None,
                           service_dependencies=[],
                           report_url=None,
                           install_wizard=False,
                           upgrade_wizard=False,
                           startable=False)
        ]
        git_builds = []
        for version in git_versions:
            builds = BuildFactory.create_batch(3, version=version, active=True)
            git_builds.extend(builds)

        # bitlbee
        bitlbee_package = PackageFactory(name='bitlbee')
        bitlbee_versions = [
            VersionFactory(package=bitlbee_package,
                           upstream_version='3.2.2',
                           version=9,
                           dependencies=None,
                           service_dependencies=[],
                           report_url=None,
                           install_wizard=False,
                           upgrade_wizard=False,
                           startable=True),
            VersionFactory(package=bitlbee_package,
                           upstream_version='3.2.3',
                           version=10,
                           dependencies=None,
                           service_dependencies=[],
                           report_url=None,
                           install_wizard=False,
                           upgrade_wizard=False,
                           startable=True),
            VersionFactory(package=bitlbee_package,
                           upstream_version='3.3.0',
                           version=11,
                           dependencies=None,
                           service_dependencies=[],
                           install_wizard=False,
                           upgrade_wizard=False,
                           startable=True)
        ]
        bitlbee_builds = []
        for version in bitlbee_versions:
            builds = BuildFactory.create_batch(3, version=version, active=True)
            bitlbee_builds.extend(builds)
    db.session.commit()
Example #21
0
def populate():
    """Populate the database with some packages"""
    from spkrepo.tests.common import BuildFactory, PackageFactory, VersionFactory

    with db.session.no_autoflush:
        # nzbget
        nzbget_package = PackageFactory(name="nzbget")
        nzbget_versions = [
            VersionFactory(
                package=nzbget_package,
                upstream_version="12.0",
                version=10,
                dependencies=None,
                report_url=None,
                install_wizard=True,
                upgrade_wizard=False,
            ),
            VersionFactory(
                package=nzbget_package,
                upstream_version="13.0",
                version=11,
                dependencies=None,
                report_url=None,
                install_wizard=True,
                upgrade_wizard=False,
            ),
        ]
        nzbget_builds = []
        for version in nzbget_versions:
            builds = BuildFactory.create_batch(2, version=version, active=True)
            nzbget_builds.extend(builds)

        # sickbeard
        sickbeard_package = PackageFactory(name="sickbeard")
        sickbeard_versions = [
            VersionFactory(
                package=sickbeard_package,
                upstream_version="20140528",
                version=3,
                dependencies="git",
                service_dependencies=[],
                report_url=None,
                install_wizard=False,
                upgrade_wizard=False,
                startable=True,
            ),
            VersionFactory(
                package=sickbeard_package,
                upstream_version="20140702",
                version=4,
                dependencies="git",
                service_dependencies=[],
                report_url=None,
                install_wizard=False,
                upgrade_wizard=False,
                startable=True,
            ),
        ]
        sickbeard_builds = []
        for version in sickbeard_versions:
            sickbeard_builds.append(
                BuildFactory(
                    version=version,
                    architectures=[Architecture.find("noarch")],
                    active=True,
                ))

        # git
        git_package = PackageFactory(name="git")
        git_versions = [
            VersionFactory(
                package=git_package,
                upstream_version="1.8.4",
                version=3,
                dependencies=None,
                service_dependencies=[],
                report_url=None,
                install_wizard=False,
                upgrade_wizard=False,
                startable=False,
            ),
            VersionFactory(
                package=git_package,
                upstream_version="2.1.2",
                version=4,
                dependencies=None,
                service_dependencies=[],
                report_url=None,
                install_wizard=False,
                upgrade_wizard=False,
                startable=False,
            ),
        ]
        git_builds = []
        for version in git_versions:
            builds = BuildFactory.create_batch(3, version=version, active=True)
            git_builds.extend(builds)

        # bitlbee
        bitlbee_package = PackageFactory(name="bitlbee")
        bitlbee_versions = [
            VersionFactory(
                package=bitlbee_package,
                upstream_version="3.2.2",
                version=9,
                dependencies=None,
                service_dependencies=[],
                report_url=None,
                install_wizard=False,
                upgrade_wizard=False,
                startable=True,
            ),
            VersionFactory(
                package=bitlbee_package,
                upstream_version="3.2.3",
                version=10,
                dependencies=None,
                service_dependencies=[],
                report_url=None,
                install_wizard=False,
                upgrade_wizard=False,
                startable=True,
            ),
            VersionFactory(
                package=bitlbee_package,
                upstream_version="3.3.0",
                version=11,
                dependencies=None,
                service_dependencies=[],
                install_wizard=False,
                upgrade_wizard=False,
                startable=True,
            ),
        ]
        bitlbee_builds = []
        for version in bitlbee_versions:
            builds = BuildFactory.create_batch(3, version=version, active=True)
            bitlbee_builds.extend(builds)
    db.session.commit()