File: test_phone_number_models.py

package info (click to toggle)
python-azure 20250603%2Bgit-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 851,724 kB
  • sloc: python: 7,362,925; ansic: 804; javascript: 287; makefile: 195; sh: 145; xml: 109
file content (129 lines) | stat: -rw-r--r-- 5,420 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------

import pytest
import azure.communication.phonenumbers._shared.models as models

test_user_id = "test_user_id"
test_unknown_id = "test_unknown_id"
test_phone_number = "+123456789101"


def test_communication_user_identifier():
    comm_user = models.CommunicationUserIdentifier(test_user_id)
    assert comm_user.kind == models.CommunicationIdentifierKind.COMMUNICATION_USER
    assert comm_user.raw_id == test_user_id
    assert comm_user.properties["id"] == test_user_id


def test_phone_number_identifier():
    phone_num = models.PhoneNumberIdentifier(test_phone_number)
    assert phone_num.kind == models.CommunicationIdentifierKind.PHONE_NUMBER
    assert phone_num.raw_id == f"{models.PHONE_NUMBER_PREFIX}{test_phone_number}"
    assert phone_num.properties["value"] == test_phone_number


def test_unknown_identifier():
    unknown = models.UnknownIdentifier(test_unknown_id)
    assert unknown.kind == models.CommunicationIdentifierKind.UNKNOWN
    assert unknown.raw_id == test_unknown_id
    assert unknown.properties == {}


def test_microsoft_teams_user_identifier():
    teams_user = models.MicrosoftTeamsUserIdentifier(test_user_id)
    assert teams_user.kind == models.CommunicationIdentifierKind.MICROSOFT_TEAMS_USER
    assert teams_user.raw_id == f"{models.TEAMS_USER_PUBLIC_CLOUD_PREFIX}{test_user_id}"
    assert teams_user.properties["user_id"] == test_user_id
    assert teams_user.properties["is_anonymous"] == False
    assert teams_user.properties["cloud"] == models.CommunicationCloudEnvironment.PUBLIC


def test_identifier_from_raw_id_phone_number():
    raw_id = f"{models.PHONE_NUMBER_PREFIX}{test_phone_number}"
    identifier = models.identifier_from_raw_id(raw_id)
    assert isinstance(identifier, models.PhoneNumberIdentifier)


def test_identifier_from_raw_id_teams_user():
    raw_id = f"{models.TEAMS_USER_PUBLIC_CLOUD_PREFIX}{test_user_id}"
    identifier = models.identifier_from_raw_id(raw_id)
    assert isinstance(identifier, models.MicrosoftTeamsUserIdentifier)


def test_identifier_from_raw_id_unknown():
    identifier = models.identifier_from_raw_id(test_unknown_id)
    assert isinstance(identifier, models.UnknownIdentifier)


def test_microsoft_teams_user_identifier_anonymous():
    teams_user = models.MicrosoftTeamsUserIdentifier(test_user_id, is_anonymous=True)
    assert teams_user.kind == models.CommunicationIdentifierKind.MICROSOFT_TEAMS_USER
    assert teams_user.raw_id == f"{models.TEAMS_USER_ANONYMOUS_PREFIX}{test_user_id}"
    assert teams_user.properties["user_id"] == test_user_id
    assert teams_user.properties["is_anonymous"] == True
    assert teams_user.properties["cloud"] == models.CommunicationCloudEnvironment.PUBLIC


def test_microsoft_teams_user_identifier_cloud_types():
    for cloud, prefix in zip(
        [models.CommunicationCloudEnvironment.DOD, models.CommunicationCloudEnvironment.GCCH],
        [models.TEAMS_USER_DOD_CLOUD_PREFIX, models.TEAMS_USER_GCCH_CLOUD_PREFIX],
    ):
        teams_user = models.MicrosoftTeamsUserIdentifier(test_user_id, cloud=cloud)
        assert teams_user.kind == models.CommunicationIdentifierKind.MICROSOFT_TEAMS_USER
        assert teams_user.raw_id == f"{prefix}{test_user_id}"
        assert teams_user.properties["user_id"] == test_user_id
        assert teams_user.properties["is_anonymous"] == False
        assert teams_user.properties["cloud"] == cloud


def test_identifier_from_raw_id_microsoft_teams_user():
    for prefix in [
        models.TEAMS_USER_ANONYMOUS_PREFIX,
        models.TEAMS_USER_PUBLIC_CLOUD_PREFIX,
        models.TEAMS_USER_DOD_CLOUD_PREFIX,
        models.TEAMS_USER_GCCH_CLOUD_PREFIX,
    ]:
        raw_id = f"{prefix}:{test_user_id}"
        identifier = models.identifier_from_raw_id(raw_id)
        assert isinstance(identifier, models.MicrosoftTeamsUserIdentifier)


def test_identifier_from_raw_id_communication_user():
    for prefix in [
        models.ACS_USER_PREFIX,
        models.ACS_USER_DOD_CLOUD_PREFIX,
        models.ACS_USER_GCCH_CLOUD_PREFIX,
        models.SPOOL_USER_PREFIX,
    ]:
        raw_id = f"{prefix}:{test_user_id}"
        identifier = models.identifier_from_raw_id(raw_id)
        assert isinstance(identifier, models.CommunicationUserIdentifier)


def test_communication_user_identifier_equality():
    user1 = models.CommunicationUserIdentifier(test_user_id)
    user2 = models.CommunicationUserIdentifier(test_user_id)
    user3 = models.CommunicationUserIdentifier(test_unknown_id)
    assert user1 == user2
    assert user1 != user3


def test_phone_number_identifier_equality():
    phone1 = models.PhoneNumberIdentifier(test_phone_number)
    phone2 = models.PhoneNumberIdentifier(test_phone_number)
    phone3 = models.PhoneNumberIdentifier("+0987654321")
    assert phone1 == phone2
    assert phone1 != phone3


def test_microsoft_teams_user_identifier_equality():
    user1 = models.MicrosoftTeamsUserIdentifier(test_user_id)
    user2 = models.MicrosoftTeamsUserIdentifier(test_user_id)
    user3 = models.MicrosoftTeamsUserIdentifier(test_unknown_id)
    assert user1 == user2
    assert user1 != user3