def setup_test_pgdb(): # create the first user if they don't already exist admin_user = User.get_existing_user_by_email(PGDB_TEST, TestData.USER_ADMIN["email_addr"]) if admin_user is None: admin_data = TestData.USER_ADMIN admin_user = User.create_new_user( DB_TUPLE_TEST, admin_data["email_addr"], admin_data["username"], admin_data["cleartext_password"], admin_data["user_statement"], admin_data["is_enabled"], admin_data["metaspace_privileges"], admin_data["creator"], ) ns_data = TestData.NODESPACE_1 Nodespace.create_new_nodespace( DB_TUPLE_TEST, ns_data["nodespace_name"], ns_data["nodespace_description"], admin_user.user_id )
def User_create_and_retrieve_test(): hans_data = TestData.USER_HANS admin_user = User.get_existing_user_by_email(PGDB_TEST, TestData.USER_ADMIN["email_addr"]) hans_data["creator"] = admin_user.user_id with AutoRollbackTransaction() as test_trans: creation_date_lb = DateTimeUtil.datetime_now_utc_aware() hans = User.create_new_user( DB_TUPLE_PT_NM, hans_data["email_addr"], hans_data["username"], hans_data["cleartext_password"], hans_data["user_statement"], hans_data["is_enabled"], hans_data["metaspace_privileges"], hans_data["creator"], ) creation_date_ub = DateTimeUtil.datetime_now_utc_aware() hans_data["user_id"] = hans.user_id hans_data["encrypted_password"] = hans.encrypted_password assert creation_date_lb <= hans.creation_date <= creation_date_ub for field_name in User.FIELD_NAMES: if field_name not in ["creation_date"]: assert hans_data[field_name] == vars(hans)[field_name] assert hans.check_password(hans_data["cleartext_password"]) == True assert hans.check_password(hans_data["new_cleartext_password"]) == False hans_data["old_encrypted_password"] = hans_data["encrypted_password"] hans_data["modifier"] = hans_data["creator"] hans.set_and_save_user_info( PGDB_TEST, hans_data["new_username"], hans_data["new_email_addr"], hans_data["new_user_statement"], hans_data["modifier"], ) modification_date_lb = DateTimeUtil.datetime_now_utc_aware() hans.set_and_save_metaspace_access( PGDB_TEST, hans_data["new_is_enabled"], hans_data["new_metaspace_privileges"], hans_data["modifier"] ) hans.set_and_save_encrypted_password(PGDB_TEST, hans_data["new_cleartext_password"], hans_data["modifier"]) modification_date_ub = DateTimeUtil.datetime_now_utc_aware() hans = User.get_existing_user_by_email(PGDB_TEST, hans_data["new_email_addr"]) hans_data["encrypted_password"] = hans.encrypted_password hans_by_id = User.get_existing_user_by_id(PGDB_TEST, hans.user_id) for field_name in User.FIELD_NAMES: assert getattr(hans, field_name) == getattr(hans_by_id, field_name) assert modification_date_lb <= hans.modification_date <= modification_date_ub assert hans.username == hans_data["new_username"] assert hans.email_addr == hans_data["new_email_addr"] assert hans.user_statement == hans_data["new_user_statement"] assert hans.metaspace_privileges == hans_data["new_metaspace_privileges"] assert hans.modifier == hans_data["modifier"] assert hans.check_password(hans_data["new_cleartext_password"]) == True assert hans.check_password(hans_data["cleartext_password"]) == False assert hans_data["encrypted_password"] != hans_data["old_encrypted_password"] latest_pw_chg_audit_entry = PasswordChangeAuditEntry.get_audit_log_entries_for_user(PGDB_TEST, hans.user_id)[0] latest_ms_priv_audit_entry = MetaspacePrivilegeAuditEntry.get_audit_log_entries_for_user( PGDB_TEST, hans.user_id )[0] assert latest_pw_chg_audit_entry.updated_user == hans.user_id assert latest_pw_chg_audit_entry.updating_user == hans.modifier assert modification_date_lb <= latest_pw_chg_audit_entry.passwd_chg_date <= modification_date_ub assert latest_ms_priv_audit_entry.updated_user == hans.user_id assert latest_ms_priv_audit_entry.updating_user == hans.modifier assert latest_ms_priv_audit_entry.new_privileges == hans.metaspace_privileges assert modification_date_lb <= latest_ms_priv_audit_entry.ms_priv_chg_date <= modification_date_ub # the following lines are more testing AutoRollbackTransaction hans = User.get_existing_user_by_email(PGDB_TEST, hans_data["email_addr"]) assert hans == None hans = User.get_existing_user_by_email(PGDB_TEST, hans_data["new_email_addr"]) assert hans == None