import demistomock as demisto from GetUsersOnCall import main USERS_ON_CALL_RESULTS = [ { "Type": 1, "Contents": [ { "email": "batman@demisto.com", "name": "Batman", "phone": "+650-123456", "roles": {"demisto": ["AnalystShift"]}, "username": "batman", }, { "email": "robin@demisto.com", "name": "Robin", "phone": "+650-655989", "roles": {"demisto": ["AnalystShift"]}, "username": "robin", }, { "email": "joker@demisto.com", "name": "The Joker", "phone": "+650-655989", "roles": {"demisto": ["AnalystShift"]}, "username": "joker", }, { "email": "bwaine@demisto.com", "name": "Bruce Waine", "phone": "+650-655989", "roles": {"demisto": ["AnalystShift"]}, "username": "brucewaine", }, ], "HumanReadable": "On-Call Team members\n" "|username|email|name|phone|roles|\n" "|---|---|---|---|---|\n" "| batman | batman@demisto.com | Batman | +650-123456 | demisto: AnalystShift |\n" "| robin | robin@demisto.com | Robin | +650-655989 | demisto: AnalystShift |\n" "| joker | joker@demisto.com | The Joker | +650-655989 | demisto: AnalystShift |\n" "| brucewaine | bwaine@demisto.com | Bruce Waine | +650-655989 | demisto: AnalystShift |\n", } ] GetUsersOOO_RESULT = [{"Type": 1, "EntryContext": {"ShiftManagment.OOOUsers": [{"username": "brucewaine"}]}}] AWAY_USERS = [{"Type": 1, "EntryContext": {"AwayUsers": [{"username": "batman"}]}}] def execute_command(name, args=None): if name == "getUsers": return USERS_ON_CALL_RESULTS elif name == "GetUsersOOO": return GetUsersOOO_RESULT elif name == "GetAwayUsers": return AWAY_USERS else: return None def test_get_users_on_call(mocker): mocker.patch.object(demisto, "executeCommand", side_effect=execute_command) mocker.patch.object(demisto, "results") # Validate that the output of the script is identical to the input human readable when all users (including Out Of # Office users) should be returned: mocker.patch.object(demisto, "args", return_value={"include_OOO_users": "true"}) main() results = demisto.results.call_args[0] assert len(results) == 1 assert USERS_ON_CALL_RESULTS[0]["HumanReadable"] == results[0]["Contents"] # Validate that the user that is defined in the `OOO List` is not in the output when filtering out the OOO users: mocker.patch.object(demisto, "args", return_value={"include_OOO_users": "false"}) main() results = demisto.results.call_args[0] assert "brucewaine" not in results[0]["Contents"] assert "batman" not in results[0]["Contents"]