def test_fetch_users(self): with self.settings(BRIDGE_GWS_CACHE='/tmp/gwsuser1'): loader = GwsBridgeLoader(BridgeWorker()) user_list = loader.fetch_users() self.assertEqual(len(user_list), 7) self.assertEqual(sorted(user_list), [ 'affiemp', 'error500', 'faculty', 'javerage', 'not_in_pws', 'retiree', 'staff' ])
def test_account_not_changed(self): with self.settings(BRIDGE_USER_WORK_POSITIONS=2): set_db_records() loader = GwsBridgeLoader(BridgeWorker()) person = get_person('javerage') hrp_wkr = get_worker(person) bridge_account = loader.get_bridge().get_user_by_uwnetid( 'javerage') self.assertTrue( loader.account_not_changed(bridge_account, person, hrp_wkr))
def test_match_bridge_account(self): # 500 error uw_acc = set_uw_account("error500") loader = GwsBridgeLoader(BridgeWorker()) self.assertRaises(DataFailureException, loader.match_bridge_account, uw_acc) # account not exist uw_acc = set_uw_account("affiemp") loader = GwsBridgeLoader(BridgeWorker()) bri_acc = loader.match_bridge_account(uw_acc) self.assertIsNone(bri_acc) # account is deleted uw_acc = set_uw_account("staff") bri_acc = loader.match_bridge_account(uw_acc) self.assertIsNone(bri_acc) # exists an account with a prior netid uw_acc = set_uw_account("faculty") uw_acc.prev_netid = 'tyler' bri_acc = loader.match_bridge_account(uw_acc) self.assertEqual(bri_acc.netid, 'tyler') # exists two accounts (one with Lreaning History one without), # pick the one with LH uw_acc = set_uw_account("retiree") uw_acc.bridge_id = 204 uw_acc.prev_netid = "ellen" uw_acc1 = set_uw_account("ellen") bri_acc = loader.match_bridge_account(uw_acc) self.assertEqual(bri_acc.netid, 'ellen') self.assertEqual(bri_acc.bridge_id, 194)
def test_load_abort(self): with self.settings(ERRORS_TO_ABORT_LOADER=[500], BRIDGE_USER_WORK_POSITIONS=2, BRIDGE_GWS_CACHE='/tmp/gwsuser3'): set_db_err_records() loader = GwsBridgeLoader(BridgeWorker()) self.assertRaises(DataFailureException, loader.load)
def test_regid_change_user(self): user = UwBridgeUser(netid='javerage', regid="0136CCB8F66711D5BE060004AC494FFE", last_visited_at=get_now(), first_name="Changed", last_name="Regid") user.save() loader = GwsBridgeLoader(CsvWorker()) loader.load() self.assertEqual(loader.get_regid_changed_count(), 1) users = loader.worker.get_users_regid_changed() self.assertEqual(users[0].netid, "javerage") self.assertEqual(users[0].regid, "9136CCB8F66711D5BE060004AC494FFE") self.assertTrue(users[0].regid_changed())
def test_load_new_users_with_hrp(self): loader = GwsBridgeLoader(CsvWorker(), include_hrp=True) loader.load() self.assertEqual(loader.get_total_count(), 12) self.assertEqual(loader.get_new_user_count(), 8) self.assertEqual(loader.get_loaded_count(), 8) self.assertEqual(loader.get_netid_changed_count(), 0) self.assertEqual(loader.get_regid_changed_count(), 0)
def test_restore_user(self): user = UwBridgeUser(netid='javerage', regid="9136CCB8F66711D5BE060004AC494FFE", last_visited_at=get_now(), disabled=True, email='*****@*****.**', first_name="James", last_name="Changed") user.save() loader = GwsBridgeLoader(CsvWorker()) loader.load() self.assertEqual(loader.get_restored_count(), 1) users = loader.worker.get_users_to_restore() self.assertEqual(users[0].netid, "javerage") self.assertEqual(users[0].regid, "9136CCB8F66711D5BE060004AC494FFE") self.assertTrue(users[0].is_restore())
def test_del_bridge_account(self): loader = GwsBridgeLoader(BridgeWorker()) ellen = loader.get_bridge().get_user_by_uwnetid('ellen') self.assertFalse(loader.del_bridge_account(ellen)) retiree = loader.get_bridge().get_user_by_uwnetid('retiree') self.assertTrue(loader.del_bridge_account(retiree)) self.assertEqual(loader.get_deleted_count(), 1)
def test_load_user_csv_file(self): with self.settings(BRIDGE_IMPORT_USER_FILE_SIZE=3): user_loader = GwsBridgeLoader(CsvWorker(), include_hrp=False) maker = CsvFileMaker(user_loader) fp = maker.get_file_path() self.assertTrue(re.match(PATTERN, fp)) self.assertEqual(user_loader.get_loaded_count(), 8) self.assertEqual(user_loader.get_deleted_count(), 0) self.assertEqual(user_loader.get_netid_changed_count(), 0) self.assertEqual(user_loader.get_regid_changed_count(), 0) number_users_wrote = maker.make_load_user_files() self.assertTrue(maker.is_file_wrote()) self.assertEqual(number_users_wrote, 8) self.assertTrue(os.path.exists(fp + "/busrs1.csv")) self.assertTrue(os.path.exists(fp + "/busrs2.csv")) self.assertTrue(os.path.exists(fp + "/busrs3.csv")) os.remove(fp + "/busrs1.csv") os.remove(fp + "/busrs2.csv") os.remove(fp + "/busrs3.csv") os.rmdir(fp)
def test_load_users_no_hrp(self): user = UwBridgeUser(netid='javerage', regid="9136CCB8F66711D5BE060004AC494FFE", last_visited_at=get_now(), email='*****@*****.**', first_name="James", last_name="Changed") user.save() loader = GwsBridgeLoader(CsvWorker()) loader.load() self.assertEqual(loader.get_total_count(), 12) self.assertEqual(loader.get_new_user_count(), 7) self.assertEqual(loader.get_loaded_count(), 8) self.assertEqual(loader.get_netid_changed_count(), 0) self.assertEqual(loader.get_regid_changed_count(), 0)
def test_is_priority_change(self): loader = GwsBridgeLoader(BridgeWorker()) uw_acc = UwAccount.objects.create(netid="affiemp") self.assertTrue(loader.is_priority_change(uw_acc)) uw_acc = set_uw_account("faculty") uw_acc.prev_netid = "tyler" self.assertTrue(loader.is_priority_change(uw_acc)) uw_acc = set_uw_account("leftuw") uw_acc.terminate_at = get_now() self.assertTrue(loader.is_priority_change(uw_acc)) uw_acc = set_uw_account("staff") uw_acc.disabled = True self.assertTrue(loader.is_priority_change(uw_acc))
def handle(self, *args, **options): source = options['data-source'] try: include_hrp = options['--include-hrp'] is not None except KeyError: include_hrp = False if source == 'gws': loader = GwsBridgeLoader(BridgeWorker(), include_hrp=include_hrp) elif source == 'db': loader = UserUpdater(BridgeWorker(), include_hrp=include_hrp) elif source == 'bridge': loader = BridgeChecker(BridgeWorker(), include_hrp=include_hrp) elif source == 'rerun': loader = Reloader(BridgeWorker(), include_hrp=include_hrp) else: print "Invalid data source, abort!" return loader.load() print datetime.now() print "Checked all %d users in %s\n" % (loader.get_total_count(), source) print "total %d users loaded\n" % loader.get_loaded_count() print "%d new users added\n" % loader.get_new_user_count() print "%d users changed netid\n" % loader.get_netid_changed_count() print "%d users changed regid\n" % loader.get_regid_changed_count() print "%d users deleted\n" % loader.get_deleted_count() print "%d users restored\n" % loader.get_restored_count() if loader.has_error(): print "Errors: %s" % loader.get_error_report()
def test_apply_change_to_bridge(self): loader = GwsBridgeLoader(BridgeWorker()) # add new account uw_acc = set_uw_account("affiemp") affiemp = get_person("affiemp") loader.apply_change_to_bridge(uw_acc, affiemp) self.assertEqual(loader.get_new_user_count(), 1) self.assertEqual(loader.get_updated_count(), 0) # restore uw_acc = set_uw_account("staff") uw_acc.set_bridge_id(196) uw_acc.set_disable() staff = get_person("staff") loader.apply_change_to_bridge(uw_acc, staff) self.assertEqual(loader.get_restored_count(), 1) self.assertEqual(loader.get_updated_count(), 1) # change uid and update uw_acc = set_uw_account('faculty') uw_acc.prev_netid = 'tyler' uw_acc.set_bridge_id(198) faculty = get_person("faculty") loader.apply_change_to_bridge(uw_acc, faculty) self.assertEqual(loader.get_netid_changed_count(), 1) self.assertEqual(loader.get_updated_count(), 2) # change uid and update uw_acc = set_uw_account("retiree") uw_acc.bridge_id = 204 uw_acc.prev_netid = "ellen" retiree = get_person("retiree") loader.apply_change_to_bridge(uw_acc, retiree) self.assertEqual(loader.get_netid_changed_count(), 2) self.assertEqual(loader.get_updated_count(), 3)
def test_field_not_changed(self): with self.settings(BRIDGE_USER_WORK_POSITIONS=2): loader = GwsBridgeLoader(BridgeWorker()) person = get_person('javerage') hrp_wkr = get_worker(person) bridge_account = loader.get_bridge().get_user_by_uwnetid( 'javerage') self.assertTrue(loader.regid_not_changed(bridge_account, person)) self.assertTrue(loader.eid_not_changed(bridge_account, person)) self.assertTrue(loader.sid_not_changed(bridge_account, person)) self.assertTrue( loader.pos_data_not_changed(bridge_account, hrp_wkr)) person = get_person('faculty') hrp_wkr = get_worker(person) bridge_account = loader.get_bridge().get_user_by_uwnetid('tyler') self.assertFalse(loader.regid_not_changed(bridge_account, person)) self.assertFalse(loader.eid_not_changed(bridge_account, person)) self.assertFalse(loader.sid_not_changed(bridge_account, person)) self.assertFalse( loader.pos_data_not_changed(bridge_account, hrp_wkr))
def test_load_gws(self): with self.settings(ERRORS_TO_ABORT_LOADER=[], BRIDGE_USER_WORK_POSITIONS=2, BRIDGE_GWS_CACHE='/tmp/gwsuser2'): set_db_records() loader = GwsBridgeLoader(BridgeWorker()) loader.load() self.assertEqual(loader.get_total_count(), 7) self.assertEqual(loader.get_total_checked_users(), 6) self.assertEqual(loader.get_new_user_count(), 1) self.assertEqual(loader.get_restored_count(), 1) self.assertEqual(loader.get_netid_changed_count(), 2) self.assertEqual(loader.get_updated_count(), 3) self.assertTrue(loader.has_error())
def handle(self, *args, **options): timer = Timer() logger.info("Start at {0}".format(datetime.now())) source = options['data-source'] workr = BridgeWorker() if source == 'gws': loader = GwsBridgeLoader(workr) elif source == 'db-emp': loader = ActiveWkrLoader(workr) elif source == 'db-other': loader = OtherUserLoader(workr) elif source == 'bridge': loader = BridgeChecker(workr) elif source == 'pws': loader = PwsBridgeLoader(workr) elif source == 'hrp': loader = HrpBridgeLoader(workr) else: logger.info("Invalid data source, abort!") return try: loader.load() except Exception as ex: logger.error(str(ex)) log_resp_time(logger, "Load users", timer) logger.info("Checked {0:d} users, source: {1}\n".format( loader.get_total_checked_users(), source)) logger.info("{0:d} new users added\n".format( loader.get_new_user_count())) logger.info("{0:d} users changed netid\n".format( loader.get_netid_changed_count())) logger.info("{0:d} users deleted\n".format( loader.get_deleted_count())) logger.info("{0:d} users restored\n".format( loader.get_restored_count())) logger.info("{0:d} users updated\n".format( loader.get_updated_count())) if loader.has_error(): logger.error("Errors: {0}".format(loader.get_error_report()))