import demistomock as demisto
from GetShiftsPerUser import main
ROLES = [
{
"name": "Shift1",
"shifts": [
{"fromDay": 0, "fromHour": 8, "fromMinute": 0, "toDay": 3, "toHour": 12, "toMinute": 0},
{"fromDay": 4, "fromHour": 16, "fromMinute": 0, "toDay": 6, "toHour": 20, "toMinute": 0},
],
},
{"name": "Administrator", "shifts": None},
{
"name": "Shift2",
"shifts": [
{"fromDay": 0, "fromHour": 8, "fromMinute": 0, "toDay": 3, "toHour": 12, "toMinute": 0},
{"fromDay": 4, "fromHour": 16, "fromMinute": 0, "toDay": 6, "toHour": 20, "toMinute": 0},
{"fromDay": 1, "fromHour": 3, "fromMinute": 0, "toDay": 4, "toHour": 6, "toMinute": 0},
],
},
]
USERS = [
{
"Type": 1,
"Contents": [
{"id": "user1", "name": "User1", "roles": {"demisto": ["Shift1"]}, "allRoles": ["Shift1", "Administrator"]},
{"id": "admin", "name": "Admin", "roles": {"demisto": ["Administrator"]}, "allRoles": ["Administrator"]},
],
}
]
GET_ROLES_RESPONSE = [{"Type": 1, "Contents": ROLES}]
def execute_command(name, args=None):
if name == "getRoles":
return GET_ROLES_RESPONSE
elif name == "getUsers":
return USERS
else:
return None
def test_get_shifts_per_user(mocker):
mocker.patch.object(demisto, "executeCommand", side_effect=execute_command)
mocker.patch.object(demisto, "results")
mocker.patch.object(demisto, "args", return_value={"userId": "user1"})
main()
results = demisto.results.call_args[0]
assert len(results) == 1
assert """### User1's Shifts
|Start|End|
|---|---|
| Sunday 08:00 | Wednesday 12:00 |
| Thursday 16:00 | Saturday 20:00 |
""" in results[0]