Example #1
0
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")
Example #2
0
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)
Example #3
0
 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)
Example #4
0
 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
Example #5
0
 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
Example #6
0
 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
Example #7
0
 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)
Example #8
0
 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
Example #9
0
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)
Example #10
0
 def test_1_excact_authentication(self):
     user = tutil.generate_random_user()
     logVerbose("\n#### Exact authentication")
     logVerbose(user)
     client.enroll(user)
     client.verify(user)