def test_user_leave(create_input):
    assert channel_leave_v1(create_input[0][1]["token"],
                            create_input[1][0]["channel_id"]).json() == {}
    result = search_v2(create_input[0][1]["token"],
                       "Hey nice to meet you").json()
    assert type(result) == dict
    assert len(result["messages"]) == 0
def test_success_one_exact_match_channel(create_input):
    result = search_v2(create_input[0][1]["token"],
                       "Hey nice to meet you").json()
    assert type(result) == dict
    assert len(result["messages"]) == 1
    assert result["messages"][0]["u_id"] == create_input[0][1]["auth_user_id"]
    assert result["messages"][0]["message"] == "Hey nice to meet you"
def test_success_over_fifty_msgs_dm(create_input):
    for i in range(0, 167):
        message_senddm_v1(create_input[0][3]["token"],
                          create_input[2][1]["dm_id"],
                          f"Second dm extra message {i}.")
    result = search_v2(create_input[0][4]["token"], "Second").json()
    assert type(result) == dict
    assert len(result["messages"]) == 167
def test_success_over_fifty_msgs_channel(create_input):
    for i in range(0, 110):
        message_send_v2(create_input[0][0]["token"],
                        create_input[1][0]["channel_id"],
                        f"First channel extra message {i}.")
    result = search_v2(create_input[0][1]["token"], "First").json()
    assert type(result) == dict
    assert len(result["messages"]) == 110
def test_success_multiple_exact(create_input):
    result = search_v2(create_input[0][0]["token"], "Hey there").json()
    assert type(result) == dict
    assert len(result["messages"]) == 2
    assert result["messages"][0]["u_id"] == create_input[0][0]["auth_user_id"]
    assert result["messages"][1]["u_id"] == create_input[0][0]["auth_user_id"]
    assert result["messages"][0]["message"] == "Hey there"
    assert result["messages"][1]["message"] == "Hey there"
def test_success_multiple_substr(create_input):
    result = search_v2(create_input[0][0]["token"], "Hey").json()
    assert type(result) == dict
    assert len(result["messages"]) == 4
    assert result["messages"][0]["u_id"] == create_input[0][1]["auth_user_id"]
    assert result["messages"][1]["u_id"] == create_input[0][0]["auth_user_id"]
    assert result["messages"][2]["u_id"] == create_input[0][0]["auth_user_id"]
    assert result["messages"][3]["u_id"] == create_input[0][0]["auth_user_id"]
    assert result["messages"][0]["message"] == "Hey nice to meet you"
    assert result["messages"][1]["message"] == "Hey there"
    assert result["messages"][2]["message"] == "Hey there"
    assert result["messages"][3][
        "message"] == "Hey again. This is getting repetitive..."
def test_success_user_added_after_msg_send(create_input):
    assert channel_join_v2(create_input[0][4]["token"],
                           create_input[1][1]["channel_id"]).json() == {}
    result = search_v2(create_input[0][4]["token"], "to").json()
    assert type(result) == dict
    assert len(result["messages"]) == 4
    assert result["messages"][0]["u_id"] == create_input[0][3]["auth_user_id"]
    assert result["messages"][1]["u_id"] == create_input[0][2]["auth_user_id"]
    assert result["messages"][2]["u_id"] == create_input[0][1]["auth_user_id"]
    assert result["messages"][3]["u_id"] == create_input[0][3]["auth_user_id"]
    assert result["messages"][0]["message"] == "Me too!"
    assert result["messages"][1]["message"] == "I'm excited to be here!"
    assert result["messages"][2]["message"] == "Hey nice to meet you"
    assert result["messages"][3]["message"] == "Nice weather today aye..."
def test_invalid_token(create_input):
    assert search_v2("invalidtokenhere", "Hey").status_code == ACCESS_ERROR
def test_fail_empty_str(create_input):
    assert search_v2(create_input[0][0]["token"],
                     "").status_code == INPUT_ERROR
def test_fail_over_1000(create_input):
    query = "x" * 1001
    assert search_v2(create_input[0][0]["token"],
                     query).status_code == INPUT_ERROR
def test_success_one_substr_match_dm(create_input):
    result = search_v2(create_input[0][4]["token"], "lol").json()
    assert type(result) == dict
    assert len(result["messages"]) == 1
    assert result["messages"][0]["u_id"] == create_input[0][3]["auth_user_id"]
    assert result["messages"][0]["message"] == "Yeah true lol"
def test_success_one_substr_match_channel(create_input):
    result = search_v2(create_input[0][3]["token"], "weather").json()
    assert type(result) == dict
    assert len(result["messages"]) == 1
    assert result["messages"][0]["u_id"] == create_input[0][3]["auth_user_id"]
    assert result["messages"][0]["message"] == "Nice weather today aye..."
def test_success_one_exact_match_dm(create_input):
    result = search_v2(create_input[0][1]["token"], "Oh hi Mark").json()
    assert type(result) == dict
    assert len(result["messages"]) == 1
    assert result["messages"][0]["u_id"] == create_input[0][1]["auth_user_id"]
    assert result["messages"][0]["message"] == "Oh hi Mark"