def main_menu(): while True: print() print("-" * 20) print("Main menu") print("0) Quit") print("1) Enroll user") print("2) Authenticate user") print("3) Get authentication history") print("4) Generate users to input file") choice = input("Enter a number (1-3): ") try: if choice == "1": enroll_user_menu() elif choice == "2": authenticate_user_menu() elif choice == "3": get_authentication_history_menu() elif choice == "4": n = int(input("How many?: ")) users = [] for i in range(n): users.append(tutil.generate_random_user()) with open(input_file, 'w') as file: json.dump(users, file) print(f'{n} users generated to {input_file}') elif choice == "0": print("Exiting") return except Exception as e: print(e) print("Oops, something went wrong. Try again")
def enroll_user_menu(): print() print("Enroll user menu") print("0) Go back to main menu") print("1) Generate random user") print("2) Give user data manually") print("3) Select user from input file") option = input("Enter a number (0-2): ") user = None if option == "1": user = tutil.generate_random_user() print("Generated random user with following details") print_user(user) elif option == "2": user = enter_user_data() print("Following details were entered for user") print_user(user) elif option == "3": try: user = select_user_from_input_file() except CliInvalidChoice: print("You have entered an invalid choice.") return elif option == "0": return print("=" * 20) try: client.enroll(user) print(f'{user["roll_no"]} has been enrolled successfully') except (DuplicateUser, ): print("User already exists:", user["roll_no"]) print("=" * 20)
def test_2_within_threshold_authentication(self): logVerbose("\n#### Within threshold authentication") user = tutil.generate_random_user() client.enroll(user) logVerbose(user) user["fingerprint"] = tutil.alter_fingerprint(user["fingerprint"], exceed_threshold = False) logVerbose(user) client.verify(user)
def test_6_unknown_user(self): logVerbose("\n#### Trying to verify unknown user") user = tutil.generate_random_user() try: client.verify(user) raise Exception except UnknownUser: pass
def test_4_duplicate_enrollment(self): logVerbose("\n#### Duplicate enrollment") user = tutil.generate_random_user() client.enroll(user) try: client.enroll(user) raise Exception except DuplicateUser: pass
def test_5_wrong_pin_entry(self): logVerbose("\n#### Entering wrong pin") user = tutil.generate_random_user() client.enroll(user) user["pin"] = tutil.generate_pin() try: client.verify(user) raise Exception except WrongPin: pass
def test_7_auth_history(self): logVerbose("\n#### Checking authentication history") user = tutil.generate_random_user() client.enroll(user) logVerbose(user) attempts = 3 for i in range(attempts): client.verify(user) history = client.get_auth_history_by_roll_no(user["roll_no"]) logVerbose(history) self.assertTrue(len(history) == attempts)
def test_3_authentication_exceeding_threshold(self): logVerbose("\n#### Exceeding threshold authentication") user = tutil.generate_random_user() logVerbose(user) client.enroll(user) user["fingerprint"] = tutil.alter_fingerprint(user["fingerprint"], exceed_threshold = True) logVerbose(user) try: client.verify(user) # Test fails here raise Exception except AuthFailed: # Test passes here pass
def authenticate_user_menu(): print() print("Authenticate user menu") print("0) Go back to main menu") print("1) Generate random user") print("2) Give user data manually") print("3) Select user from input file") option = input("Enter a number (0-2): ") user = None if option == "1": user = tutil.generate_random_user() print("Generated random user with following details") print_user(user) elif option == "2": user = enter_user_data() print("Following details were entered for user") print_user(user) elif option == "3": try: user = select_user_from_input_file() except CliInvalidChoice: print("You have entered an invalid choice.") return elif option == "0": return print("=" * 20) try: client.verify(user) print(f'{user["roll_no"]} has been authenticated successfully') except AuthFailed: print(f'Could not authenticate the fingerprint for {user["roll_no"]}') except WrongPin: print( f'Could not retrieve user data of {user["roll_no"]}, wrong pin entered.' ) except UnknownUser: print( f'Please enroll the user {user["roll_no"]} before authenticating') print("=" * 20)
def test_1_excact_authentication(self): user = tutil.generate_random_user() logVerbose("\n#### Exact authentication") logVerbose(user) client.enroll(user) client.verify(user)