GetAwayUsers

Returns a list of all the users marked as away in Cortex XSOAR.

python · Shift Management

Details

IDGetAwayUsers
Languagepython
From Version5.5.0
Docker Imagedemisto/python3:3.12.13.10116658
TagsShift Management widget

README

Returns a list of all the users marked as away in Cortex XSOAR

Script Data


Name Description
Script Type python3
Tags  
Cortex XSOAR Version 5.5.0

Inputs


There are no inputs for this script.

Outputs


Path Description Type
AwayUsers.id Away user ID. String
AwayUsers.username Away user username. String
AwayUsers.name Away user name. String
AwayUsers.phone Away user phone. String
AwayUsers.roles Away user roles. Unknown
AwayUsers.email Away user email. Unknown

Script Example


## Context Example

```json
{
    "CortexXSOAR": {
        "AwayUsers": {
            "email": "admintest@demisto.com",
            "id": "admin",
            "name": "Admin Dude",
            "phone": "+650-123456",
            "roles": {
                "demisto": [
                    "Administrator"
                ]
            },
            "username": "admin"
        }
    }
}

Human Readable Output

Away Users

Email Id Name Phone Roles Username
admintest@demisto.com admin Admin Dude +650-123456 demisto: Administrator admin
import json
from copy import deepcopy

import demistomock as demisto
import GetAwayUsers
import pytest


def util_load_json(path):
    with open(path, encoding="utf-8") as f:
        return json.loads(f.read())


away_user_data = util_load_json("test_data/away_user.json")
AWAY_USER = away_user_data
NOT_AWAY_USER = deepcopy(away_user_data)
NOT_AWAY_USER["isAway"] = False


@pytest.mark.parametrize(
    "mock_resp, expected",
    [
        (
            [{"Type": "1", "Contents": [AWAY_USER, NOT_AWAY_USER]}],
            [
                {
                    "email": "",
                    "id": "admin",
                    "name": "Admin",
                    "phone": "+650-123456",
                    "roles": {"demisto": ["Administrator"]},
                    "username": "admin",
                }
            ],
        ),
        ([{"Type": "1", "Contents": []}], None),
    ],
)
def test_script_valid(mocker, mock_resp, expected):
    """
    Given:

    When:
    - Calling to GetAwayUsers Script.

    Then:
    - Ensure expected outputs are returned.

    """
    from GetAwayUsers import main

    return_results_mock = mocker.patch.object(GetAwayUsers, "return_results")
    mocker.patch.object(demisto, "executeCommand", return_value=mock_resp)
    main()
    results = return_results_mock.call_args[0][0]
    assert results["EntryContext"].get("AwayUsers") == expected


def test_script_invalid(mocker):
    """
    Given:

    When:
    - Calling to GetAwayUsers Script. Error during the demisto.executeCommand to getUsers.

    Then:
    - Ensure error is returned.

    """
    from GetAwayUsers import main

    error_entry_type: int = 4
    mocker.patch.object(GetAwayUsers, "return_error")
    mocker.patch.object(demisto, "error")
    away_user = away_user_data
    not_away_user = deepcopy(away_user_data)
    not_away_user["isAway"] = False
    mocker.patch.object(
        demisto, "executeCommand", return_value=[{"Type": error_entry_type, "Contents": [away_user, not_away_user]}]
    )
    main()
    assert GetAwayUsers.return_error.called