def test_admin_inspect_pair_messages(database, mock_message): User.create_admin(2, 2, database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) character_hash_3 = User.create_user(4, 4, "Test user 3", database) character_hash_4 = User.create_user(5, 5, "Test user 4", database) client = BankingClientFactory(database).create_client(mock_message) results = client.admin_inspect_pair_history_messages( f"/admin_messages_history_pair {character_hash_2} {character_hash_3}") assert results == NO_MESSAGES_FOUND results = client.admin_inspect_pair_history_messages( f"/admin_messages_history_pair {character_hash_4} {character_hash_3}") assert results == NO_MESSAGES_FOUND Message.create_message(character_hash_2, character_hash_4, "100", database) Message.create_message(character_hash_2, character_hash_3, "100", database) Message.create_message(character_hash_2, "0000000000", "100", database) Message.create_message(character_hash_3, character_hash_4, "100", database) results = client.admin_inspect_pair_history_messages( f"/admin_messages_history_pair {character_hash_2} {character_hash_3}") assert results != NO_MESSAGES_FOUND results = client.admin_inspect_pair_history_messages( f"/admin_messages_history_pair {character_hash_4} {character_hash_3}") assert results != NO_MESSAGES_FOUND
def test_list_messages_pair(database): user_hash_1 = User.create_user(2, 2, "Test user 1", database) user_hash_2 = User.create_user(3, 3, "Test user 2", database) assert len(Message.inspect_pair_history_messages(user_hash_1, user_hash_2, database)) == 0 assert len(Message.inspect_pair_history_messages(user_hash_2, user_hash_1, database)) == 0 Message.create_message(user_hash_1, user_hash_2, "HELLO", database) assert len(Message.inspect_pair_history_messages(user_hash_1, user_hash_2, database)) == len(Message.inspect_pair_history_messages(user_hash_2, user_hash_1, database))
def test_create_transaction(database, mock_message): character_hash = User.create_user(2, 2, "Test user", database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) client = BankingClientFactory(database).create_client(mock_message) double_amount = DEFAULT_FINANCES * 2 half_amount = DEFAULT_FINANCES / 2 user2 = client.get_user_by_user_hash(character_hash_2) user1 = client.get_user_by_user_hash(character_hash) assert user2.finances == DEFAULT_FINANCES assert user1.finances == DEFAULT_FINANCES with pytest.raises(TransactionError): client.create_transaction(f"/send {character_hash_2} {double_amount}") with pytest.raises(TransactionError): client.create_transaction(f"/send {character_hash} {half_amount}") with pytest.raises(TransactionError): client.create_transaction(f"/send {character_hash_2} notanumber") with pytest.raises(TransactionError): client.create_transaction(f"/send {character_hash_2} 0") with pytest.raises(UserError): client.create_transaction(f"/send 1234567890 {half_amount}") sender_chat_id, reciever_chat_id, message = client.create_transaction( f"/send {character_hash_2} {half_amount}") user2 = client.get_user_by_user_hash(character_hash_2) user1 = client.get_user_by_user_hash(character_hash) assert user2.finances == DEFAULT_FINANCES + half_amount assert user1.finances == DEFAULT_FINANCES - half_amount assert sender_chat_id == user1.chat_id assert reciever_chat_id == user2.chat_id
def test_delete_contact(database, mock_message): character_hash = User.create_user(2, 2, "Test user", database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) client = BankingClientFactory(database).create_client(mock_message) client.add_contact(f"/add_contact {character_hash_2} somebody") assert client.delete_contact(f"/delete_contact {character_hash_2}" ) == ADDRESS_RECORD_DELETION_MESSAGE
def test_admin_inspect_messages(database, mock_message): User.create_admin(2, 2, database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) character_hash_3 = User.create_user(4, 4, "Test user 3", database) client = BankingClientFactory(database).create_client(mock_message) results = client.admin_inspect_messages( f"/admin_messages_history_sent {character_hash_2}", True) assert results == NO_MESSAGES_FOUND results = client.admin_inspect_messages( f"/admin_messages_history_recieved {character_hash_2}", False) assert results == NO_MESSAGES_FOUND results = client.admin_inspect_messages( f"/admin_messages_history_recieved {character_hash_3}", False) assert results == NO_MESSAGES_FOUND Message.create_message(character_hash_2, character_hash_3, "100", database) Message.create_message(character_hash_2, "0000000000", "100", database) results = client.admin_inspect_messages( f"/admin_messages_history_sent {character_hash_2}", True) assert results != NO_MESSAGES_FOUND results = client.admin_inspect_messages( f"/admin_messages_history_recieved {character_hash_2}", False) assert results == NO_MESSAGES_FOUND results = client.admin_inspect_messages( f"/admin_messages_history_recieved {character_hash_3}", False) assert results != NO_MESSAGES_FOUND
def test_admin_inspect_transactions(database, mock_message): User.create_admin(2, 2, database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) character_hash_3 = User.create_user(4, 4, "Test user 3", database) client = BankingClientFactory(database).create_client(mock_message) results = client.admin_inspect_transactions( f"/admin_history_sent {character_hash_2}", True) assert results == NO_TRANSACTIONS_FOUND results = client.admin_inspect_transactions( f"/admin_history_recieved {character_hash_2}", False) assert results == NO_TRANSACTIONS_FOUND results = client.admin_inspect_transactions( f"/admin_history_recieved {character_hash_3}", False) assert results == NO_TRANSACTIONS_FOUND Transaction.create_transaction(character_hash_2, character_hash_3, 100, database) Transaction.create_transaction(character_hash_2, "0000000000", 100, database) results = client.admin_inspect_transactions( f"/admin_history_sent {character_hash_2}", True) assert results != NO_TRANSACTIONS_FOUND results = client.admin_inspect_transactions( f"/admin_history_recieved {character_hash_2}", False) assert results == NO_TRANSACTIONS_FOUND results = client.admin_inspect_transactions( f"/admin_history_recieved {character_hash_3}", False) assert results != NO_TRANSACTIONS_FOUND
def test_list_transactions_sender(database): user_hash_1 = User.create_user(2, 2, "Test user 1", database) user_hash_2 = User.create_user(3, 3, "Test user 2", database) assert len(Transaction.list_transactions(user_hash_1, True, database)) == 0 assert len(Transaction.list_transactions(user_hash_2, True, database)) == 0 Transaction.create_transaction(user_hash_1, user_hash_2, 100, database) assert len(Transaction.list_transactions(user_hash_1, True, database)) == 1 assert len(Transaction.list_transactions(user_hash_2, True, database)) == 0
def test_delete_address_record(database): user_hash_1 = User.create_user(2, 2, "Test user 1", database) user_hash_2 = User.create_user(3, 3, "Test user 2", database) AddressRecord.create_address_record(user_hash_1, user_hash_2, "FIRST", database) assert len(AddressRecord.list_address_records(user_hash_1, database)) == 1 AddressRecord.delete_address_record(user_hash_1, user_hash_2, database) assert len(AddressRecord.list_address_records(user_hash_1, database)) == 0
def test_list_messages_sender(database): user_hash_1 = User.create_user(2, 2, "Test user 1", database) user_hash_2 = User.create_user(3, 3, "Test user 2", database) assert len(Message.inspect_messages(user_hash_1, True, database)) == 0 assert len(Message.inspect_messages(user_hash_2, True, database)) == 0 Message.create_message(user_hash_1, user_hash_2, "HELLO", database) assert len(Message.inspect_messages(user_hash_1, True, database)) == 1 assert len(Message.inspect_messages(user_hash_2, True, database)) == 0
def test_admin_hail_users(database, mock_message): User.create_admin(2, 2, database) character_hash = User.create_user(4, 4, "Test user", database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) client = BankingClientFactory(database).create_client(mock_message) message_list = client.admin_hail_users("/hail_users TEST MESSAGE") assert len(message_list) == 2 assert 2 not in [x.chat_id for x in message_list] assert message_list[0].message == "TEST MESSAGE"
def test_create_hacked_transaction_other(database, mock_message): User.create_admin(1, 1, database) character_hash = User.create_user(2, 2, "Test user", database) User.update_db_value(character_hash, "hacker_level", 1, database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) character_hash_4 = User.create_user(4, 4, "Test user 4", database) character_hash_5 = User.create_user(5, 5, "Test user 5", database) User.update_db_value(character_hash_4, "hacker_defence", 1, database) client = BankingClientFactory(database).create_client(mock_message) double_amount = DEFAULT_FINANCES * 2 half_amount = DEFAULT_FINANCES / 2 user2 = client.get_user_by_user_hash(character_hash_2) user1 = client.get_user_by_user_hash(character_hash) assert user2.finances == DEFAULT_FINANCES assert user1.finances == DEFAULT_FINANCES with pytest.raises(TransactionError): client.create_hacker_transaction_other( f"/h@ck_theft_other {character_hash_2} {character_hash_5} {double_amount}" ) with pytest.raises(TransactionError): client.create_hacker_transaction_other( f"/h@ck_theft_other {character_hash} {character_hash_5} {half_amount}" ) with pytest.raises(TransactionError): client.create_hacker_transaction_other( f"/h@ck_theft_other {character_hash_2} {character_hash_5} notanumber" ) with pytest.raises(TransactionError): client.create_hacker_transaction_other( f"/h@ck_theft_other {character_hash_2} {character_hash_5} 0") with pytest.raises(UserError): client.create_hacker_transaction_other( f"/h@ck_theft_other 1234567890 {character_hash_5} {half_amount}") with pytest.raises(HackerError): client.create_hacker_transaction_other( f"/h@ck_theft_other 0000000000 {character_hash_5} {half_amount}") hacker_hash, victim_chat_id, profiteer_chat_id, transaction_message, show_hack = client.create_hacker_transaction_other( f"/h@ck_theft_other {character_hash_2} {character_hash_5} {half_amount}" ) user2 = client.get_user_by_user_hash(character_hash_2) user5 = client.get_user_by_user_hash(character_hash_5) assert user2.finances == DEFAULT_FINANCES - half_amount assert user5.finances == DEFAULT_FINANCES + half_amount assert hacker_hash == client.user.character_hash assert victim_chat_id == user2.chat_id assert not show_hack hacker_hash, victim_chat_id, profiteer_chat_id, transaction_message, show_hack = client.create_hacker_transaction_other( f"/h@ck_theft_other {character_hash_4} {character_hash_5} {half_amount}" ) user4 = client.get_user_by_user_hash(character_hash_4) user5 = client.get_user_by_user_hash(character_hash_5) assert hacker_hash == client.user.character_hash assert victim_chat_id == user4.chat_id assert user4.finances == DEFAULT_FINANCES - half_amount assert user5.finances == DEFAULT_FINANCES + half_amount + half_amount assert show_hack
def test_inspect_all_transactions(database, mock_message): character_hash = User.create_user(2, 2, "Test user", database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) client = BankingClientFactory(database).create_client(mock_message) assert client.inspect_all_messages() == NO_MESSAGES_FOUND assert client.inspect_all_messages(character_hash_2) == NO_MESSAGES_FOUND reciever_chat_id, message = client.prepare_message(f"/message {character_hash_2} LaLaLaLa") client = BankingClientFactory(database).create_client(mock_message) assert client.inspect_all_messages() != NO_MESSAGES_FOUND assert client.inspect_all_messages(character_hash_2) != NO_MESSAGES_FOUND
def test_add_contact(database, mock_message): character_hash = User.create_user(2, 2, "Test user", database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) client = BankingClientFactory(database).create_client(mock_message) with pytest.raises(AddressRecordError): client.add_contact(f"/add_contact {character_hash} SELF") assert client.add_contact( f"/add_contact {character_hash_2} somebody") == ADDRESS_RECORD_ADDED with pytest.raises(AddressRecordError): client.add_contact(f"/add_contact {character_hash_2} somebody")
def test_inspect_messages(database, mock_message): character_hash = User.create_user(2, 2, "Test user", database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) client = BankingClientFactory(database).create_client(mock_message) assert client.inspect_messages(True) == NO_MESSAGES_FOUND assert client.inspect_messages(False) == NO_MESSAGES_FOUND chat_id, message = client.prepare_message(f"/message {character_hash_2} LaLaLaLa") client = BankingClientFactory(database).create_client(mock_message) assert client.inspect_messages(True) != NO_MESSAGES_FOUND assert client.inspect_messages(False) == NO_MESSAGES_FOUND assert client.inspect_messages(False, character_hash_2) != NO_MESSAGES_FOUND
def test_inspect_contact_list(database, mock_message): character_hash = User.create_user(2, 2, "Test user", database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) client = BankingClientFactory(database).create_client(mock_message) assert client.inspect_contact_list() == NO_ADDRESS_RECORDS assert client.inspect_contact_list(character_hash_2) == NO_ADDRESS_RECORDS client.add_contact(f"/add_contact {character_hash_2} somebody") client = BankingClientFactory(database).create_client(mock_message) client = BankingClientFactory(database).create_client(mock_message) assert client.inspect_contact_list() != NO_ADDRESS_RECORDS assert client.inspect_contact_list(character_hash_2) == NO_ADDRESS_RECORDS
def test_inspect_all_transactions(database, mock_message): character_hash = User.create_user(2, 2, "Test user", database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) client = BankingClientFactory(database).create_client(mock_message) assert client.inspect_all_transactions() == NO_TRANSACTIONS_FOUND assert client.inspect_all_transactions( character_hash_2) == NO_TRANSACTIONS_FOUND half_amount = DEFAULT_FINANCES / 2 sender_chat_id, reciever_chat_id, message = client.create_transaction( f"/send {character_hash_2} {half_amount}") client = BankingClientFactory(database).create_client(mock_message) assert client.inspect_all_transactions() != NO_TRANSACTIONS_FOUND assert client.inspect_all_transactions( character_hash_2) != NO_TRANSACTIONS_FOUND
def test_user_validation(database, mock_message): client = BankingClientFactory(database).create_client(mock_message) with pytest.raises(UserError): client.user_validation() character_hash = User.create_user(2, 2, "Test user", database) client = BankingClientFactory(database).create_client(mock_message) client.user_validation()
def test_create_user(database): character_hash = User.create_user(2, 2, "Test user", database) user_data = User.get_user_by_user_hash(character_hash, database) assert user_data is not None assert user_data.finances == DEFAULT_FINANCES user_data = User.get_user_by_user_hash("0000000000", database) assert user_data is None
def test_hack_inspect_transactions(database, mock_message): User.create_admin(1, 1, database) character_hash_1 = User.create_user(2, 2, "Test user", database) User.update_db_value(character_hash_1, "hacker_level", 1, database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) character_hash_3 = User.create_user(4, 4, "Test user 3", database) character_hash_4 = User.create_user(5, 5, "Test user 4", database) User.update_db_value(character_hash_3, "hacker_defence", 1, database) client = BankingClientFactory(database).create_client(mock_message) results, chat_id, show_hack = client.hack_inspect_transactions( f"/hack_history_sent {character_hash_2}", True) assert results == NO_TRANSACTIONS_FOUND assert not show_hack results, chat_id, show_hack = client.hack_inspect_transactions( f"/hack_history_recieved {character_hash_2}", False) assert results == NO_TRANSACTIONS_FOUND assert not show_hack results, chat_id, show_hack = client.hack_inspect_transactions( f"/hack_history_recieved {character_hash_3}", False) assert results == NO_TRANSACTIONS_FOUND assert show_hack Transaction.create_transaction(character_hash_2, character_hash_4, 100, database) Transaction.create_transaction(character_hash_2, character_hash_3, 100, database) Transaction.create_transaction(character_hash_2, "0000000000", 100, database) results, chat_id, show_hack = client.hack_inspect_transactions( f"/hack_history_sent {character_hash_2}", True) assert results != NO_TRANSACTIONS_FOUND assert not show_hack results, chat_id, show_hack = client.hack_inspect_transactions( f"/hack_history_recieved {character_hash_2}", False) assert results == NO_TRANSACTIONS_FOUND assert not show_hack results, chat_id, show_hack = client.hack_inspect_transactions( f"/hack_history_recieved {character_hash_3}", False) assert results != NO_TRANSACTIONS_FOUND assert show_hack with pytest.raises(HackerError): client.hack_inspect_transactions(f"/hack_history_recieved 0000000000", False)
def test_delete_user(database, mock_message): User.create_admin(2, 2, database) character_hash = User.create_user(3, 3, "Test user", database) client = BankingClientFactory(database).create_client(mock_message) assert client.get_user_by_user_hash(character_hash) is not None client.delete_user(f"/delete {character_hash}") with pytest.raises(UserError): client.get_user_by_user_hash(character_hash)
def test_create_admin(database, mock_message): character_hash = User.create_user(2, 2, "Test user", database) client = BankingClientFactory(database).create_client(mock_message) with pytest.raises(UserError): client.create_admin() mock_message.json['from']['id'] = 1 client = BankingClientFactory(database).create_client(mock_message) client.create_admin()
def test_inspect_all_users(database): data = User.inspect_all_users(database) assert len(data) == 0 User.create_admin(1, 1, database) data = User.inspect_all_users(database) assert len(data) == 1 character_hash = User.create_user(2, 2, "Test user", database) data = User.inspect_all_users(database) assert len(data) == 2
def test_update_db_value(database): character_hash = User.create_user(2, 2, "Test user", database) user_data = User.get_user_by_user_hash(character_hash, database) assert user_data is not None assert user_data.finances == DEFAULT_FINANCES User.update_db_value(character_hash, "finances", DEFAULT_FINANCES + 1, database) user_data = User.get_user_by_user_hash(character_hash, database) assert user_data is not None assert user_data.finances == DEFAULT_FINANCES + 1
def test_admin_inspect_user(database, mock_message): User.create_admin(2, 2, database) client = BankingClientFactory(database).create_client(mock_message) character_hash_2 = User.create_user(3, 3, "Test user 2", database) user2 = client.get_user_by_user_hash(character_hash_2) with pytest.raises(UserError): client.admin_inspect_user("/admin_inspect_user 1234567890") resulting_data = client.admin_inspect_user( f'/admin_inspect_user {character_hash_2}') assert resulting_data == str(user2)
def test_inspect_user(database, mock_message): User.create_admin(2, 2, database) character_hash = User.create_user(3, 3, "Test user", database) client = BankingClientFactory(database).create_client(mock_message) user = client.get_user_by_user_hash("0000000000") user2 = client.get_user_by_user_hash(character_hash) assert client.inspect_user() == str(user) assert client.inspect_user(character_hash) == str(user2) with pytest.raises(UserError): client.inspect_user("1234567890")
def test_hacker_validation(database, mock_message): character_hash = User.create_user(2, 2, "Test user", database) client = BankingClientFactory(database).create_client(mock_message) with pytest.raises(HackerError): client.hacker_validation(0) User.update_db_value(character_hash, "hacker_level", 1, database) client = BankingClientFactory(database).create_client(mock_message) with pytest.raises(HackerError): client.hacker_validation(2) client.hacker_validation(0)
def test_hack_inspect_pair_messages(database, mock_message): User.create_admin(1, 1, database) character_hash_1 = User.create_user(2, 2, "Test user", database) User.update_db_value(character_hash_1, "hacker_level", 1, database) character_hash_2 = User.create_user(3, 3, "Test user 2", database) character_hash_3 = User.create_user(4, 4, "Test user 3", database) character_hash_4 = User.create_user(5, 5, "Test user 4", database) User.update_db_value(character_hash_3, "hacker_defence", 1, database) User.update_db_value(character_hash_4, "hacker_defence", 2, database) client = BankingClientFactory(database).create_client(mock_message) results, chat_id, hash_1, chat_2_id, hash_2, show_hack = client.hack_inspect_pair_history_messages( f"/hack_messages_history_pair {character_hash_2} {character_hash_3}") assert results == NO_MESSAGES_FOUND assert not show_hack results, chat_id, hash_1, chat_2_id, hash_2, show_hack = client.hack_inspect_pair_history_messages( f"/hack_messages_history_pair {character_hash_4} {character_hash_3}") assert results == NO_MESSAGES_FOUND assert show_hack with pytest.raises(HackerError): client.hack_inspect_pair_history_messages( f"/hack_messages_history_pair {character_hash_4} 0000000000") Message.create_message(character_hash_2, character_hash_4, "100", database) Message.create_message(character_hash_2, character_hash_3, "100", database) Message.create_message(character_hash_2, "0000000000", "100", database) Message.create_message(character_hash_3, character_hash_4, "100", database) results, chat_id, hash_1, chat_2_id, hash_2, show_hack = client.hack_inspect_pair_history_messages( f"/hack_messages_history_pair {character_hash_2} {character_hash_3}") assert results != NO_MESSAGES_FOUND assert not show_hack results, chat_id, hash_1, chat_2_id, hash_2, show_hack = client.hack_inspect_pair_history_messages( f"/hack_messages_history_pair {character_hash_2} 0000000000") assert results != NO_MESSAGES_FOUND assert not show_hack results, chat_id, hash_1, chat_2_id, hash_2, show_hack = client.hack_inspect_pair_history_messages( f"/hack_messages_history_pair {character_hash_4} {character_hash_3}") assert results != NO_MESSAGES_FOUND assert show_hack
def test_set_attribute(database, mock_message): User.create_admin(2, 2, database) character_hash = User.create_user(3, 3, "Test user", database) client = BankingClientFactory(database).create_client(mock_message) user = client.get_user_by_user_hash(character_hash) assert user.finances == DEFAULT_FINANCES with pytest.raises(UserError): client.set_attribute("/set_attribute 1234567890 finances 0") assert client.set_attribute(f"/set_attribute {character_hash} finances 0" ) == ATTRIBUTE_UPDATE_MESSAGE user = client.get_user_by_user_hash(character_hash) assert user.finances == 0
def test_prepare_message(database, mock_message): User.create_admin(1, 1, database) character_hash = User.create_user(2, 2, "Test user", database) client = BankingClientFactory(database).create_client(mock_message) admin = client.get_user_by_user_hash("0000000000") with pytest.raises(UserError): client.prepare_message("/message 1234567890 LaLaLaLa") with pytest.raises(MessageError): client.prepare_message(f"/message {client.user.character_hash} LaLaLaLa") chat_id, message = client.prepare_message("/message 0000000000 LaLaLaLa") assert message == "LaLaLaLa" assert chat_id == admin.chat_id
def test_get_admin_list(database): admin_list = User.get_admin_list(database) assert len(admin_list) == 0 User.create_admin(1, 1, database) admin_list = User.get_admin_list(database) assert len(admin_list) == 1 character_hash = User.create_user(2, 2, "Test user", database) admin_list = User.get_admin_list(database) assert len(admin_list) == 1 user_data = User.get_user_by_user_hash(character_hash, database) User.update_db_value(character_hash, "is_admin", 1, database) admin_list = User.get_admin_list(database) assert len(admin_list) == 2