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), )
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)
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))
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)
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"))
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), )
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)
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()
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)
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)
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)
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'))
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))
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)
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'))
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)
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))
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'))
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"))
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)
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()
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()