# Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. # For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md import pytest from harness.interface.defs import status import copy @pytest.mark.rt1051 @pytest.mark.service_desktop_test @pytest.mark.usefixtures("phone_unlocked") def test_calendar(harness): # add events add_body = { "calendar_events":[ { "UID":"", "SUMMARY":"Testowy", "DTSTART":"20200129T123600", "DTEND":"20200129T124600", "RRULE":{ "COUNT":"0", "FREQ":"", "INTERVAL":"0" }, "VALARM":{ "ACTION":"", "TRIGGER":"" }, "provider":{ "iCalUid":"", "id":"", "type":"" } } ] } ret = harness.endpoint_request("events", "put", add_body) assert ret["status"] == status["OK"] #add second event second_event = copy.deepcopy(add_body) second_event["calendar_events"][0]["SUMMARY"] = "Testowy2" second_event["calendar_events"][0]["UID"] = 5 ret = harness.endpoint_request("events", "put", second_event) assert ret["status"] == status["OK"] # get all limited events get_body = {"offset": 0, "limit": 1} ret = harness.endpoint_request("events", "get", get_body) assert ret["status"] == status["OK"] assert len(ret["body"]["calendar_events"]) == 1 assert ret["body"]["totalCount"] == 2 for event in ret["body"]["calendar_events"]: assert event["SUMMARY"] == add_body["calendar_events"][0]["SUMMARY"] assert event["RRULE"]["COUNT"] == add_body["calendar_events"][0]["RRULE"]["COUNT"] assert event["RRULE"]["FREQ"] == add_body["calendar_events"][0]["RRULE"]["FREQ"] assert event["RRULE"]["INTERVAL"] == add_body["calendar_events"][0]["RRULE"]["INTERVAL"] assert event["VALARM"]["ACTION"] == add_body["calendar_events"][0]["VALARM"]["ACTION"] assert event["VALARM"]["TRIGGER"] == add_body["calendar_events"][0]["VALARM"]["TRIGGER"] assert event["provider"]["iCalUid"] == add_body["calendar_events"][0]["provider"]["iCalUid"] assert event["provider"]["id"] == add_body["calendar_events"][0]["provider"]["id"] assert event["provider"]["type"] == add_body["calendar_events"][0]["provider"]["type"] # remove event del_body = {"UID": ret["body"]["calendar_events"][0]["UID"]} ret = harness.endpoint_request("events", "del", del_body) assert ret["status"] == status["NoContent"] # check events after remove body = {"offset": 0, "limit": 1} ret = harness.endpoint_request("events", "get", body) assert ret["status"] == status["OK"] assert ret["body"]["totalCount"] == 1 # update event update_body = { "calendar_events":[ { "UID":ret["body"]["calendar_events"][0]["UID"], "SUMMARY":"TestowyUpdate", "DTSTART":"20200929T123600", "DTEND":"20200929T124600", "RRULE":{ "COUNT":"0", "FREQ":"", "INTERVAL":"0" }, "VALARM":{ "ACTION":"", "TRIGGER":"-PT5M" }, "provider":{ "iCalUid":"", "id":"", "type":"" } } ] } ret = harness.endpoint_request("events", "post", update_body) assert ret["status"] == status["NoContent"] # get updated event body = {"offset": 0, "limit": 1} ret = harness.endpoint_request("events", "get", body) assert ret["status"] == status["OK"] for event in ret["body"]["calendar_events"]: assert event["SUMMARY"] == update_body["calendar_events"][0]["SUMMARY"] assert event["RRULE"]["COUNT"] == update_body["calendar_events"][0]["RRULE"]["COUNT"] assert event["RRULE"]["FREQ"] == update_body["calendar_events"][0]["RRULE"]["FREQ"] assert event["RRULE"]["INTERVAL"] == update_body["calendar_events"][0]["RRULE"]["INTERVAL"] assert event["VALARM"]["ACTION"] == update_body["calendar_events"][0]["VALARM"]["ACTION"] assert event["VALARM"]["TRIGGER"] == update_body["calendar_events"][0]["VALARM"]["TRIGGER"] assert event["provider"]["iCalUid"] == update_body["calendar_events"][0]["provider"]["iCalUid"] assert event["provider"]["id"] == update_body["calendar_events"][0]["provider"]["id"] assert event["provider"]["type"] == update_body["calendar_events"][0]["provider"]["type"] assert ret["body"]["totalCount"] == 1 # remove second event body = {"offset": 0, "limit": 1} ret = harness.endpoint_request("events", "get", body) assert ret["status"] == status["OK"] del_body = {"UID": ret["body"]["calendar_events"][0]["UID"]} ret = harness.endpoint_request("events", "del", del_body) assert ret["status"] == status["NoContent"] # check events after remove body = {"offset": 0, "limit": 1} ret = harness.endpoint_request("events", "get", body) assert ret["status"] == status["OK"] assert ret["body"]["totalCount"] == 0 # INVALID FORMAT add_body_invalid = copy.deepcopy(add_body) update_body_invalid = copy.deepcopy(update_body) # add events invalid date and time formats # wrong month add_body_invalid["calendar_events"][0]["DTSTART"] = "20201329T123600" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # wrong day add_body_invalid["calendar_events"][0]["DTSTART"] = "20201132T123600" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # wrong year add_body_invalid["calendar_events"][0]["DTEND"] = "50201120T123600" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # wrong hour add_body_invalid["calendar_events"][0]["DTSTART"] = "20201120T253600" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # wrong minute add_body_invalid["calendar_events"][0]["DTEND"] = "20201122T126300" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # wrong second add_body_invalid["calendar_events"][0]["DTSTART"] = "20201122T1200OO" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) #wrong separator add_body_invalid["calendar_events"][0]["DTSTART"] = "20201122R120059" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # wrong length add_body_invalid["calendar_events"][0]["DTSTART"] = "20201122T12550000" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) add_body_invalid["calendar_events"][0]["DTEND"] = "201122T125500" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # Summary invalid add_body_invalid["calendar_events"][0]["SUMMARY"] = "" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] # Alarm invalid #trigger add_body_invalid["calendar_events"][0]["VALARM"]["TRIGGER"] = "-PTM" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) add_body_invalid["calendar_events"][0]["VALARM"]["TRIGGER"] = "-PT4T" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) add_body_invalid["calendar_events"][0]["VALARM"]["TRIGGER"] = "-PT63M" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # Recurrency Rule invalid # Freq add_body_invalid["calendar_events"][0]["RRULE"]["FREQ"] = "DAIL" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # Count add_body_invalid["calendar_events"][0]["RRULE"]["COUNT"] = "" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # interval add_body_invalid["calendar_events"][0]["RRULE"]["COUNT"] = "" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # UID invalid (UID should be empty in add event request) add_body_invalid["calendar_events"][0]["UID"] = "20201122T125500-63" ret = harness.endpoint_request("events", "put", add_body_invalid) assert ret["status"] == status["BadRequest"] add_body_invalid = copy.deepcopy(add_body) # UPDATE INVALID # UID invalid update_body_invalid["calendar_events"][0]["UID"] = "" ret = harness.endpoint_request("events", "post", update_body_invalid) assert ret["status"] == status["BadRequest"] update_body_invalid = copy.deepcopy(update_body_invalid) update_body_invalid["calendar_events"][0]["UID"] = "43526gsdgsa322" ret = harness.endpoint_request("events", "post", update_body_invalid) assert ret["status"] == status["BadRequest"] update_body_invalid = copy.deepcopy(update_body_invalid) # REMOVE INVALID # It is a valid UID, but not exist in any events in DB # (handle it in db) # del_body = {"UID": "20151122T125500-63"} # # ret = harness.endpoint_request("events", "post", del_body) # assert ret["status"] == status["InternalServerError"] # UID invalid del_body = {"UID": "20201122T125500-dadsadsada"} ret = harness.endpoint_request("events", "del", del_body) assert ret["status"] == status["BadRequest"] del_body = {"UID": "201122T125500-63"} ret = harness.endpoint_request("events", "del", del_body) assert ret["status"] == status["BadRequest"]