def test_create_offer_200_from_two_different_accounts(): """ Тест проверяет фунцию создания офферов с двух разных аккаунтов на один ивент. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] sign_up_response_2 = sign_up() assert sign_up_response_2.status_code == 200, sign_up_response_2.text account_id_2 = sign_up_response_2.json()["Account"]["ID"] x_auth_token_2 = {"X-Auth-Token": sign_up_response_2.json()["Token"]} create_offer_response = requests.post( f"{HOST}/offers", headers=x_auth_token_2, json={ "AccountID": account_id_2, "EventID": event_id } ) assert create_offer_response.status_code == 200, create_offer_response.text sign_up_response_3 = sign_up() assert sign_up_response_3.status_code == 200, sign_up_response_2.text account_id_3 = sign_up_response_3.json()["Account"]["ID"] x_auth_token_3 = {"X-Auth-Token": sign_up_response_3.json()["Token"]} create_offer_response = requests.post( f"{HOST}/offers", headers=x_auth_token_3, json={ "AccountID": account_id_3, "EventID": event_id } ) assert create_offer_response.status_code == 200, create_offer_response.text
def test_repeated_create_offer_400(): """ По бизнес-логике запрещено создавать два оффера c одного аккаунта на один ивент. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_token = {"X-Auth-Token": sign_up_response.json()["Token"]} create_events_response = requests.post( f"{HOST}/events", headers=account_token, json=create_valid_account_info() ) assert create_events_response.status_code == 200, create_events_response.text event_id = create_events_response.json()["ID"] sign_up_response_2 = sign_up() assert sign_up_response_2.status_code == 200, sign_up_response_2.text account_id_2 = sign_up_response_2.json()["Account"]["ID"] account_2_token = {"X-Auth-Token": sign_up_response_2.json()["Token"]} create_offer_response_1 = requests.post( f"{HOST}/offers", headers=account_2_token, json={ "AccountID": account_id_2, "EventID": event_id } ) assert create_offer_response_1.status_code == 200, create_offer_response_1.text create_offer_response_2 = requests.post( f"{HOST}/offers", headers=account_2_token, json={ "AccountID": account_id_2, "EventID": event_id } ) assert create_offer_response_2.status_code == 400, create_offer_response_2.text assert "fails" in create_offer_response_2.text
def test_update_events_owner_id_not_nil(): """ ID аккаунта не может ровняться нулю. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] event = create_valid_event_info(account_id) del event["OwnerID"] update_event_response = requests.put( f"{HOST}/events/{event_id}", headers=x_auth_token, json=event ) assert update_event_response.status_code == 200, update_event_response.text assert update_event_response.json()["OwnerID"] != 0
def test_check_timlines_not_nil(): """ Таймлайн ивента не должен быть нулём. Issue #41. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post(f"{HOST}/events", headers=x_auth_token, json=info) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] event_info_response = requests.get(f"{HOST}/events/{event_id}") assert event_info_response.status_code == 200, event_info_response.text event_info = event_info_response.json() timlelines = event_info["Timelines"] assert timlelines
def test_create_offer_400_id_doesnt_match(): """ Запрещено создавать оффер без подтверждения ID пользователя. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_events_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_events_response.status_code == 200, create_events_response.text event_id = create_events_response.json()["ID"] info['OwnerID'] = account_id + 1 create_offer_response = requests.post( f"{HOST}/offers", headers=x_auth_token, json={ "AccountID": info["OwnerID"], "EventID": event_id } ) assert create_offer_response.status_code == 400, create_offer_response.text assert "this account" in create_offer_response.text
def test_update_events_400_id_doesnt_match(): """ Запрещено обновлять ивент без подверждения ID пользователя. issues 54 """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] info['OwnerID'] = account_id + 1 update_event_response = requests.put( f"{HOST}/events/{event_id}", headers=x_auth_token, json=info ) assert update_event_response.status_code == 400, update_event_response.text assert "authorized" in update_event_response.text
def test_update_events_400_description_is_empty(): """ Тест проверяет возникновение ошибки при обновлении ивента без ввода описания ивента. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] event = create_valid_event_info(account_id) event["Description"] = "" del event["OwnerID"] update_event_response = requests.put( f"{HOST}/events/{event_id}", headers=x_auth_token, json=event ) assert update_event_response.status_code == 400, update_event_response.text assert "Description" in update_event_response.text
def test_create_offer_on_your_account_400(): """ Запрещено создавать оффер на собственный ивент. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] create_offer_response = requests.post( f"{HOST}/offers", headers=x_auth_token, json={ "AccountID": account_id, "EventID": event_id } ) assert create_offer_response.status_code == 400, create_offer_response.text assert "fails" in create_offer_response.text
def test_update_events_200(): """ Тест проверяет функцию обновления данных ивента с валидными данными. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] event = create_valid_event_info(account_id) del event["OwnerID"] update_event_response = requests.put( f"{HOST}/events/{event_id}", headers=x_auth_token, json=event ) assert update_event_response.status_code == 200, update_event_response.text
def test_create_event_timeline_is_not_in_the_present(): """ Таймлайн в ивенте разрешается устанавливать на 1 час позже чем время создания ивента. Тест проверяет возниконовение ошибки при создании ивента с таймлайном до этого часа. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) forbidden_time = datetime.now() + timedelta(minutes=55) info["Timelines"][0]["Start"] = forbidden_time.strftime(format_time) create_event_response_1 = requests.post(f"{HOST}/events", headers=x_auth_token, json=info) assert create_event_response_1.status_code == 400, create_event_response_1.text assert "early" in create_event_response_1.text create_event_response_2 = requests.post(f"{HOST}/events", headers=x_auth_token, json=info) assert create_event_response_2.status_code == 200, create_event_response_2.text
def test_update_events_400_not_authorized(): """ Запрещено обновлять ивент без авторизации. issues 53 """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] update_event_response = requests.put( f"{HOST}/events/{event_id}", json=info ) assert update_event_response.status_code == 400, update_event_response.text assert "X-Auth-Token" in create_event_response.text
def test_create_offer_400_account_that_created_the_event_deleted(): """ Запрещено создавать оффер на событие, созданное аккаунтом, который был удален. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] account_1_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_events_response = requests.post( f"{HOST}/events", headers=account_1_token, json=info ) assert create_events_response.status_code == 200, create_events_response.text event_id = create_events_response.json()["ID"] delete_account_response = requests.delete( f"{HOST}/accounts/{account_id}", headers=account_1_token ) assert delete_account_response.status_code == 204, delete_account_response.text sign_up_response_2 = sign_up() assert sign_up_response_2.status_code == 200, sign_up_response_2.text account_id_2 = sign_up_response_2.json()["Account"]["ID"] account_2_token = {"X-Auth-Token": sign_up_response_2.json()["Token"]} create_offer_response = requests.post( f"{HOST}/offers", headers=account_2_token, json={ "AccountID": account_id_2, "EventID": event_id } ) assert create_offer_response.status_code == 400, create_offer_response.text
def test_create_offer(): """ Тест проверяет функцию создания оффера. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] sign_up_response_2 = sign_up() assert sign_up_response_2.status_code == 200, sign_up_response_2.text account_id_2 = sign_up_response_2.json()["Account"]["ID"] account_2_token = {"X-Auth-Token": sign_up_response_2.json()["Token"]} create_offer_response = requests.post( f"{HOST}/offers", headers=account_2_token, json={ "AccountID": account_id_2, "EventID": event_id } ) assert create_offer_response.status_code == 200, create_offer_response.text
def test_create_event_400_not_authorized(): """ Тест проверяет функцию создания ивентов не авторизованным пользователем. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] info = create_valid_event_info(account_id) create_event_response = requests.post(f"{HOST}/events", json=info) assert create_event_response.status_code == 400, create_event_response.text assert "X-Auth-Token" in create_event_response.text
def test_create_event_200(): """ Тест проверяет функцию создания ивентов с валидными данными. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post(f"{HOST}/events", headers=x_auth_token, json=info) assert create_event_response.status_code == 200, create_event_response.text
def test_create_events_400_timeline_is_not_in_the_past(): """ Тест проверяет возниконовение ошибки при создании ивента с таймлайном который находится в прошедшем времени. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=create_invalid_event_info(account_id)) assert create_event_response.status_code == 400, create_event_response.text assert "early" in create_event_response.text
def test_update_events_info(): """ Тест проверяет обновление информации ивента. issue #56 """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] event = create_valid_event_info(account_id) event["Name"] += "test" event["Description"] += "test" event["IsPublic"] = True event["IsHidden"] = True update_event_response = requests.put( f"{HOST}/events/{event_id}", headers=x_auth_token, json=event ) assert update_event_response.status_code == 200, update_event_response.text event_info_response = requests.get(f"{HOST}/events/{event_id}") event_info = event_info_response.json() assert event_info_response.status_code == 200, event_info_response.text assert event_info["Name"] == event["Name"] assert event_info["Description"] == event["Description"] assert event_info["IsPublic"] == event["IsPublic"] assert event_info["IsHidden"] == event["IsHidden"]
def test_create_event_400_name_cant_be_empty(): """ Тест проверяет функцию создания ивентов с невалидными данными (Отсутствует значение ключа "Name" в теле запроса). """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) info["Name"] = "" create_event_response = requests.post(f"{HOST}/events", headers=x_auth_token, json=info) assert create_event_response.status_code == 400, create_event_response.text assert "Title" in create_event_response.text
def test_update_events_added_two_timelines(): """ Тест проверяет добавление дополнительного таймлана в ивент. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] timelines_2 = { "Start": "2021-01-02T17:05:05Z", "End": "2021-01-02T18:06:05Z", "Place": "Saint Petersburg" } event = create_valid_event_info(account_id) event["Timelines"].append(timelines_2) del event["OwnerID"] update_event_response = requests.put( f"{HOST}/events/{event_id}", headers=x_auth_token, json=event ) event_info = update_event_response.json() assert update_event_response.status_code == 200, update_event_response.text assert len(event_info["Timelines"]) == 2
def test_update_events_timelines(): """ Тест проверяет обновление данных в таймлайне ивента. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=info ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] event = create_valid_event_info(account_id) event["Timelines"][0]["Start"] = "2022-08-02T13:43:09.535504Z" event["Timelines"][0]["End"] = "2022-08-03T13:43:09.535504Z" event["Timelines"][0]["Place"] = "Moscow" update_event_response = requests.put( f"{HOST}/events/{event_id}", headers=x_auth_token, json=event ) assert update_event_response.status_code == 200, update_event_response.text event_info_response = requests.get(f"{HOST}/events/{event_id}") assert event_info_response.status_code == 200, event_info_response.text event_info = event_info_response.json() assert event_info["Timelines"] == event["Timelines"]
def test_update_events_del_one_timelines(): """ Тест проверяет удаление одного из таймлайнов ивента. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} event = create_valid_event_info(account_id) event["Timelines"].append( { "Start": "2021-01-02T17:05:05Z", "End": "2021-01-02T18:06:05Z", "Place": "Saint Petersburg" } ) create_event_response = requests.post( f"{HOST}/events", headers=x_auth_token, json=event ) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] del event["Timelines"][1] update_event_response = requests.put( f"{HOST}/events/{event_id}", headers=x_auth_token, json=event ) assert update_event_response.status_code == 200, update_event_response.text event_info = update_event_response.json() assert len(event_info["Timelines"]) == 1
def test_event_info_200(): """ Тест проверяет функцию получения информации об ивенте. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post(f"{HOST}/events", headers=x_auth_token, json=info) assert create_event_response.status_code == 200, create_event_response.text event_id = create_event_response.json()["ID"] event_info_response = requests.get(f"{HOST}/events/{event_id}") assert event_info_response.status_code == 200, event_info_response.text
def test_create_events_400_intersection_of_timelines(): """ Тест проверяет возниконовение ошибки при пересечении временных промежутков. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} event = create_valid_event_info(account_id) event["Timelines"].append({ "Start": "2021-01-02T17:05:05Z", "End": "2021-01-02T18:06:05Z", "Place": "Saint Petersburg" }) create_event_response = requests.post(f"{HOST}/events", headers=x_auth_token, json=event) assert create_event_response.status_code == 400, create_event_response.text assert "crossing" in create_event_response.text
def test_list_events_200(): """ Тест проверяет функцию получения списка ифентов у одного аккаунта. """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} info = create_valid_event_info(account_id) create_event_response = requests.post(f"{HOST}/events", headers=x_auth_token, json=info) assert create_event_response.status_code == 200, create_event_response.text list_events_response = requests.get(f"{HOST}/events", params={"account_id": account_id}) assert list_events_response.status_code == 200, list_events_response.text assert type(list_events_response.json()) == list
def test_create_events_400_start_after_end(): """ Запрещено задавать конец ивента раньше старта """ sign_up_response = sign_up() assert sign_up_response.status_code == 200, sign_up_response.text account_id = sign_up_response.json()["Account"]["ID"] x_auth_token = {"X-Auth-Token": sign_up_response.json()["Token"]} create_event_response = requests.post(f"{HOST}/events", headers=x_auth_token, json={ "Name": "1", "Description": "1", "OwnerID": account_id, "IsPublic": False, "isHidden": False, "Timelines": [{ "Start": "2006-01-02T17:05:05Z", "End": "2005-01-02T18:06:05Z", "Place": "Saint Petersburg" }] }) assert create_event_response.status_code == 400, create_event_response.text assert "Start" in create_event_response.text