This PR adds support for migrating data from OpsGenie to Grafana IRM. Closes https://github.com/grafana/irm/issues/1179
105 lines
3.7 KiB
Python
105 lines
3.7 KiB
Python
from unittest.mock import patch
|
|
|
|
from lib.opsgenie.resources.users import filter_users
|
|
|
|
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_USERS", None)
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_TEAM", None)
|
|
def test_filter_users_no_filters():
|
|
"""Test that filter_users returns all users when no filters are set."""
|
|
users = [
|
|
{"id": "u1", "teams": [{"id": "t1"}, {"id": "t2"}]},
|
|
{"id": "u2", "teams": [{"id": "t3"}]},
|
|
]
|
|
filtered = filter_users(users)
|
|
assert filtered == users
|
|
|
|
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_USERS", None)
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_TEAM", "t1")
|
|
def test_filter_users_by_team():
|
|
"""Test filtering users by team ID."""
|
|
users = [
|
|
{"id": "u1", "teams": [{"id": "t1"}, {"id": "t2"}]},
|
|
{"id": "u2", "teams": [{"id": "t3"}]},
|
|
{"id": "u3", "teams": [{"id": "t1"}, {"id": "t3"}]},
|
|
]
|
|
filtered = filter_users(users)
|
|
assert len(filtered) == 2
|
|
assert filtered[0]["id"] == "u1"
|
|
assert filtered[1]["id"] == "u3"
|
|
|
|
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_USERS", ["u1", "u3"])
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_TEAM", None)
|
|
def test_filter_users_by_user_ids():
|
|
"""Test filtering users by specific user IDs."""
|
|
users = [
|
|
{"id": "u1", "teams": [{"id": "t1"}]},
|
|
{"id": "u2", "teams": [{"id": "t2"}]},
|
|
{"id": "u3", "teams": [{"id": "t3"}]},
|
|
]
|
|
filtered = filter_users(users)
|
|
assert len(filtered) == 2
|
|
assert filtered[0]["id"] == "u1"
|
|
assert filtered[1]["id"] == "u3"
|
|
|
|
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_USERS", ["u1", "u4"])
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_TEAM", "t1")
|
|
def test_filter_users_by_team_and_user_ids():
|
|
"""Test filtering users by both team ID and user IDs."""
|
|
users = [
|
|
{"id": "u1", "teams": [{"id": "t1"}]}, # Matches both filters
|
|
{"id": "u2", "teams": [{"id": "t1"}]}, # Matches team only
|
|
{"id": "u3", "teams": [{"id": "t2"}]}, # Matches neither
|
|
{"id": "u4", "teams": [{"id": "t2"}]}, # Matches user ID only
|
|
]
|
|
filtered = filter_users(users)
|
|
assert len(filtered) == 1
|
|
assert filtered[0]["id"] == "u1" # Only user matching both filters
|
|
|
|
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_USERS", ["u1"])
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_TEAM", "t1")
|
|
def test_filter_users_empty_list():
|
|
"""Test filtering an empty user list."""
|
|
filtered = filter_users([])
|
|
assert filtered == []
|
|
|
|
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_USERS", None)
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_TEAM", "t3")
|
|
def test_filter_users_no_matching_team():
|
|
"""Test filtering when no users match the team filter."""
|
|
users = [
|
|
{"id": "u1", "teams": [{"id": "t1"}]},
|
|
{"id": "u2", "teams": [{"id": "t2"}]},
|
|
]
|
|
filtered = filter_users(users)
|
|
assert filtered == []
|
|
|
|
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_USERS", ["u3", "u4"])
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_TEAM", None)
|
|
def test_filter_users_no_matching_user_ids():
|
|
"""Test filtering when no users match the user ID filter."""
|
|
users = [
|
|
{"id": "u1", "teams": [{"id": "t1"}]},
|
|
{"id": "u2", "teams": [{"id": "t2"}]},
|
|
]
|
|
filtered = filter_users(users)
|
|
assert filtered == []
|
|
|
|
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_USERS", None)
|
|
@patch("lib.opsgenie.resources.users.OPSGENIE_FILTER_TEAM", "t1")
|
|
def test_filter_users_with_empty_teams():
|
|
"""Test filtering users that have no teams."""
|
|
users = [
|
|
{"id": "u1", "teams": []},
|
|
{"id": "u2", "teams": [{"id": "t1"}]},
|
|
]
|
|
filtered = filter_users(users)
|
|
assert len(filtered) == 1
|
|
assert filtered[0]["id"] == "u2"
|