def testMigration3to4(self): testCfg = { "main": { "configVersion": 3, u"baseUrl": u"https://www.somedomain.com/nzbhydra" }, "downloader": { "nzbAddingType": "redirect" } } with open("testsettings.cfg", "wb") as settingsfile: cfg = testCfg cfg["main"]["baseUrl"] = u"https://www.somedomain.com/nzbhydra" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(cfg["main"]["externalUrl"], "https://www.somedomain.com/nzbhydra", json.dumps(cfg)) self.assertEqual(cfg["main"]["urlBase"], "/nzbhydra") with open("testsettings.cfg", "wb") as settingsfile: cfg = testCfg cfg["main"]["baseUrl"] = u"https://127.0.0.1/nzbhydra/" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(cfg["main"]["externalUrl"], "https://127.0.0.1/nzbhydra") self.assertEqual(cfg["main"]["urlBase"], "/nzbhydra") with open("testsettings.cfg", "wb") as settingsfile: cfg = testCfg cfg["main"]["baseUrl"] = u"https://www.somedomain.com/" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(cfg["main"]["externalUrl"], "https://www.somedomain.com") self.assertIsNone(cfg["main"]["urlBase"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = testCfg cfg["main"]["baseUrl"] = None json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertIsNone(cfg["main"]["externalUrl"]) self.assertIsNone(cfg["main"]["urlBase"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = testCfg cfg["main"]["nzbAddingType"] = "direct" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual("redirect", cfg["downloader"]["nzbAddingType"])
def testMigration3to4(self): testCfg = { "main": { "configVersion": 3, u"baseUrl": u"https://www.somedomain.com/nzbhydra" }, "downloader": { "nzbAddingType": "redirect" }} with open("testsettings.cfg", "wb") as settingsfile: cfg = testCfg cfg["main"]["baseUrl"] = u"https://www.somedomain.com/nzbhydra" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(cfg["main"]["externalUrl"], "https://www.somedomain.com/nzbhydra", json.dumps(cfg)) self.assertEqual(cfg["main"]["urlBase"], "/nzbhydra") with open("testsettings.cfg", "wb") as settingsfile: cfg = testCfg cfg["main"]["baseUrl"] = u"https://127.0.0.1/nzbhydra/" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(cfg["main"]["externalUrl"], "https://127.0.0.1/nzbhydra") self.assertEqual(cfg["main"]["urlBase"], "/nzbhydra") with open("testsettings.cfg", "wb") as settingsfile: cfg = testCfg cfg["main"]["baseUrl"] = u"https://www.somedomain.com/" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(cfg["main"]["externalUrl"], "https://www.somedomain.com") self.assertIsNone(cfg["main"]["urlBase"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = testCfg cfg["main"]["baseUrl"] = None json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertIsNone(cfg["main"]["externalUrl"]) self.assertIsNone(cfg["main"]["urlBase"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = testCfg cfg["main"]["nzbAddingType"] = "direct" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual("redirect", cfg["downloader"]["nzbAddingType"])
def testMigration12to13(self): testCfg = { "main": { "configVersion": 12, }, "indexers": { "binsearch": {}, "nzbclub": {}, "nzbindex": {}, "omgwtfnzbs": {}, "womble": {}, "newznab": [{}, {}] } } with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") print(json.dumps(cfg)) config.logLogMessages() self.assertIsNone(cfg["indexers"]["binsearch"]["hitLimit"]) self.assertIsNone(cfg["indexers"]["nzbclub"]["hitLimit"]) self.assertIsNone(cfg["indexers"]["nzbindex"]["hitLimit"]) self.assertIsNone(cfg["indexers"]["omgwtfnzbs"]["hitLimit"]) self.assertIsNone(cfg["indexers"]["womble"]["hitLimit"]) self.assertIsNone(cfg["indexers"]["newznab"][0]["hitLimit"]) self.assertIsNone(cfg["indexers"]["newznab"][1]["hitLimit"]) self.assertEqual(arrow.get(0), cfg["indexers"]["newznab"][0]["hitLimitResetTime"]) self.assertEqual(arrow.get(0), cfg["indexers"]["newznab"][1]["hitLimitResetTime"])
def testMigration10to11(self): testCfg = { "main": { "configVersion": 10 }, "auth": { "users": [{ "name": None }, { "name": "whatever" }] } } self.assertTrue("name" in testCfg["auth"]["users"][0].keys()) self.assertTrue("name" in testCfg["auth"]["users"][1].keys()) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(2, len(cfg["auth"]["users"])) self.assertIsNone(cfg["auth"]["users"][0]["username"]) self.assertEqual("whatever", cfg["auth"]["users"][1]["username"]) self.assertFalse("name" in cfg["auth"]["users"][0].keys()) self.assertFalse("name" in cfg["auth"]["users"][1].keys())
def testMigration10to11(self): testCfg = { "main": { "configVersion": 10 }, "auth": { "users": [ { "name": None }, { "name": "whatever" } ] } } self.assertTrue("name" in testCfg["auth"]["users"][0].keys()) self.assertTrue("name" in testCfg["auth"]["users"][1].keys()) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(2, len(cfg["auth"]["users"])) self.assertIsNone(cfg["auth"]["users"][0]["username"]) self.assertEqual("whatever", cfg["auth"]["users"][1]["username"]) self.assertFalse("name" in cfg["auth"]["users"][0].keys()) self.assertFalse("name" in cfg["auth"]["users"][1].keys())
def testMigration7to8(self): testCfg = { "main": { "configVersion": 7, "logging": { "logfile-level": "", "logfile-filename": 22 } }, "indexers": { "Binsearch": {}, "NZBClub": {}, "NZBIndex": {}, "Womble": {}, "newznab1": { "accessType": "both", "apikey": "apikey1", "name": "newznab1", "enabled": False }, "newznab2": { "apikey": "apikey2", "name": "newznab2", "enabled": False } } } with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(2, len(cfg["indexers"]["newznab"]), json.dumps(cfg)) self.assertEqual("newznab1", cfg["indexers"]["newznab"][0]["name"]) self.assertEqual("newznab2", cfg["indexers"]["newznab"][1]["name"]) self.assertTrue("accessType" in cfg["indexers"]["newznab"][0].keys()) self.assertTrue("accessType" in cfg["indexers"]["newznab"][1].keys())
def testMigration12to13(self): testCfg = { "main": { "configVersion": 12, }, "indexers": { "binsearch": {}, "nzbclub": {}, "nzbindex": {}, "omgwtfnzbs": {}, "womble": {}, "newznab": [ {}, {} ] } } with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") print(json.dumps(cfg)) config.logLogMessages() self.assertIsNone(cfg["indexers"]["binsearch"]["hitLimit"]) self.assertIsNone(cfg["indexers"]["nzbclub"]["hitLimit"]) self.assertIsNone(cfg["indexers"]["nzbindex"]["hitLimit"]) self.assertIsNone(cfg["indexers"]["omgwtfnzbs"]["hitLimit"]) self.assertIsNone(cfg["indexers"]["womble"]["hitLimit"]) self.assertIsNone(cfg["indexers"]["newznab"][0]["hitLimit"]) self.assertIsNone(cfg["indexers"]["newznab"][1]["hitLimit"]) self.assertEqual(arrow.get(0), cfg["indexers"]["newznab"][0]["hitLimitResetTime"]) self.assertEqual(arrow.get(0), cfg["indexers"]["newznab"][1]["hitLimitResetTime"])
def testMigration8to9(self): testCfg = { "main": { "adminPassword": None, "adminUsername": None, "configVersion": 8, "enableAdminAuth": False, "enableAdminAuthForStats": False, "enableAuth": False, "password": None, "username": None } } with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) json.dump(cfg, settingsfile) cfg = migrate("testsettings.cfg") self.assertEqual(1, len(cfg["auth"]["users"])) self.assertIsNone(cfg["auth"]["users"][0]["name"]) self.assertIsNone(cfg["auth"]["users"][0]["password"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeAdmin"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) cfg["main"]["enableAuth"] = True cfg["main"]["username"] = "******" cfg["main"]["password"] = "******" json.dump(cfg, settingsfile) cfg = migrate("testsettings.cfg") self.assertEqual(1, len(cfg["auth"]["users"])) self.assertEqual("u", cfg["auth"]["users"][0]["name"]) self.assertEqual("p", cfg["auth"]["users"][0]["password"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeAdmin"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) cfg["main"]["enableAuth"] = True cfg["main"]["username"] = "******" cfg["main"]["password"] = "******" cfg["main"]["enableAdminAuth"] = True cfg["main"]["adminUsername"] = "******" cfg["main"]["adminPassword"] = "******" json.dump(cfg, settingsfile) cfg = migrate("testsettings.cfg") self.assertEqual(2, len(cfg["auth"]["users"])) self.assertEqual("u", cfg["auth"]["users"][0]["name"]) self.assertEqual("p", cfg["auth"]["users"][0]["password"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeStats"]) self.assertEqual(False, cfg["auth"]["users"][0]["maySeeAdmin"]) self.assertEqual("au", cfg["auth"]["users"][1]["name"]) self.assertEqual("ap", cfg["auth"]["users"][1]["password"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeAdmin"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) cfg["main"]["enableAuth"] = True cfg["main"]["username"] = "******" cfg["main"]["password"] = "******" cfg["main"]["enableAdminAuth"] = True cfg["main"]["enableAdminAuthForStats"] = True cfg["main"]["adminUsername"] = "******" cfg["main"]["adminPassword"] = "******" json.dump(cfg, settingsfile) cfg = migrate("testsettings.cfg") self.assertEqual(2, len(cfg["auth"]["users"])) self.assertEqual("u", cfg["auth"]["users"][0]["name"]) self.assertEqual("p", cfg["auth"]["users"][0]["password"]) self.assertEqual(False, cfg["auth"]["users"][0]["maySeeStats"]) self.assertEqual(False, cfg["auth"]["users"][0]["maySeeAdmin"]) self.assertEqual("au", cfg["auth"]["users"][1]["name"]) self.assertEqual("ap", cfg["auth"]["users"][1]["password"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeAdmin"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) cfg["main"]["enableAuth"] = False cfg["main"]["enableAdminAuthForStats"] = False cfg["main"]["enableAdminAuth"] = True cfg["main"]["adminUsername"] = "******" cfg["main"]["adminPassword"] = "******" json.dump(cfg, settingsfile) cfg = migrate("testsettings.cfg") self.assertEqual(2, len(cfg["auth"]["users"])) self.assertIsNone(cfg["auth"]["users"][0]["name"]) self.assertIsNone(cfg["auth"]["users"][0]["password"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeStats"]) self.assertFalse(cfg["auth"]["users"][0]["maySeeAdmin"]) self.assertEqual("au", cfg["auth"]["users"][1]["name"]) self.assertEqual("ap", cfg["auth"]["users"][1]["password"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeAdmin"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) cfg["main"]["enableAuth"] = False cfg["main"]["enableAdminAuth"] = True cfg["main"]["enableAdminAuthForStats"] = True cfg["main"]["adminUsername"] = "******" cfg["main"]["adminPassword"] = "******" json.dump(cfg, settingsfile) cfg = migrate("testsettings.cfg") self.assertEqual(2, len(cfg["auth"]["users"])) self.assertIsNone(cfg["auth"]["users"][0]["name"]) self.assertIsNone(cfg["auth"]["users"][0]["password"]) self.assertFalse(cfg["auth"]["users"][0]["maySeeStats"]) self.assertFalse(cfg["auth"]["users"][0]["maySeeAdmin"]) self.assertEqual("au", cfg["auth"]["users"][1]["name"]) self.assertEqual("ap", cfg["auth"]["users"][1]["password"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeAdmin"])
def testMigration8to9(self): testCfg = { "main": { "adminPassword": None, "adminUsername": None, "configVersion": 8, "enableAdminAuth": False, "enableAdminAuthForStats": False, "enableAuth": False, "password": None, "username": None } } with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(1, len(cfg["auth"]["users"]), json.dumps(cfg)) self.assertIsNone(cfg["auth"]["users"][0]["username"]) self.assertIsNone(cfg["auth"]["users"][0]["password"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeAdmin"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) cfg["main"]["enableAuth"] = True cfg["main"]["username"] = "******" cfg["main"]["password"] = "******" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(1, len(cfg["auth"]["users"])) self.assertEqual("u", cfg["auth"]["users"][0]["username"]) self.assertEqual("p", cfg["auth"]["users"][0]["password"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeAdmin"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) cfg["main"]["enableAuth"] = True cfg["main"]["username"] = "******" cfg["main"]["password"] = "******" cfg["main"]["enableAdminAuth"] = True cfg["main"]["adminUsername"] = "******" cfg["main"]["adminPassword"] = "******" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(2, len(cfg["auth"]["users"])) self.assertEqual("u", cfg["auth"]["users"][0]["username"]) self.assertEqual("p", cfg["auth"]["users"][0]["password"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeStats"]) self.assertEqual(False, cfg["auth"]["users"][0]["maySeeAdmin"]) self.assertEqual("au", cfg["auth"]["users"][1]["username"]) self.assertEqual("ap", cfg["auth"]["users"][1]["password"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeAdmin"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) cfg["main"]["enableAuth"] = True cfg["main"]["username"] = "******" cfg["main"]["password"] = "******" cfg["main"]["enableAdminAuth"] = True cfg["main"]["enableAdminAuthForStats"] = True cfg["main"]["adminUsername"] = "******" cfg["main"]["adminPassword"] = "******" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(2, len(cfg["auth"]["users"])) self.assertEqual("u", cfg["auth"]["users"][0]["username"]) self.assertEqual("p", cfg["auth"]["users"][0]["password"]) self.assertEqual(False, cfg["auth"]["users"][0]["maySeeStats"]) self.assertEqual(False, cfg["auth"]["users"][0]["maySeeAdmin"]) self.assertEqual("au", cfg["auth"]["users"][1]["username"]) self.assertEqual("ap", cfg["auth"]["users"][1]["password"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeAdmin"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) cfg["main"]["enableAuth"] = False cfg["main"]["enableAdminAuthForStats"] = False cfg["main"]["enableAdminAuth"] = True cfg["main"]["adminUsername"] = "******" cfg["main"]["adminPassword"] = "******" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(2, len(cfg["auth"]["users"])) self.assertIsNone(cfg["auth"]["users"][0]["username"]) self.assertIsNone(cfg["auth"]["users"][0]["password"]) self.assertTrue(cfg["auth"]["users"][0]["maySeeStats"]) self.assertFalse(cfg["auth"]["users"][0]["maySeeAdmin"]) self.assertEqual("au", cfg["auth"]["users"][1]["username"]) self.assertEqual("ap", cfg["auth"]["users"][1]["password"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeAdmin"]) with open("testsettings.cfg", "wb") as settingsfile: cfg = copy.copy(testCfg) cfg["main"]["enableAuth"] = False cfg["main"]["enableAdminAuth"] = True cfg["main"]["enableAdminAuthForStats"] = True cfg["main"]["adminUsername"] = "******" cfg["main"]["adminPassword"] = "******" json.dump(cfg, settingsfile) cfg = config.migrate("testsettings.cfg") self.assertEqual(2, len(cfg["auth"]["users"])) self.assertIsNone(cfg["auth"]["users"][0]["username"]) self.assertIsNone(cfg["auth"]["users"][0]["password"]) self.assertFalse(cfg["auth"]["users"][0]["maySeeStats"]) self.assertFalse(cfg["auth"]["users"][0]["maySeeAdmin"]) self.assertEqual("au", cfg["auth"]["users"][1]["username"]) self.assertEqual("ap", cfg["auth"]["users"][1]["password"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeStats"]) self.assertTrue(cfg["auth"]["users"][1]["maySeeAdmin"])