File: test_communication_identifier_serializer.py

package info (click to toggle)
python-azure 20230112%2Bgit-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 749,544 kB
  • sloc: python: 6,815,827; javascript: 287; makefile: 195; xml: 109; sh: 105
file content (134 lines) | stat: -rw-r--r-- 5,721 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
130
131
132
133
134
# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See LICENSE.txt in the project root for
# license information.
# -------------------------------------------------------------------------
import unittest
from azure.communication.chat._communication_identifier_serializer import serialize_identifier, deserialize_identifier
from azure.communication.chat._generated.models import(
    CommunicationIdentifierModel,
    MicrosoftTeamsUserIdentifierModel,
    CommunicationUserIdentifierModel,
    PhoneNumberIdentifierModel
)
from azure.communication.chat._shared.models import(
    CommunicationUserIdentifier,
    CommunicationCloudEnvironment,
    UnknownIdentifier,
    PhoneNumberIdentifier,
    MicrosoftTeamsUserIdentifier
)

class CommunicationUserIdentifierSerializerTest(unittest.TestCase):
    def setUp(self):
        self.testPhoneNumber="+12223334444"
        self.testUserModel = CommunicationUserIdentifierModel(id="User Id")
        self.testPhoneNumberModel = PhoneNumberIdentifierModel(value=self.testPhoneNumber)
        self.testTeamsUserModel = MicrosoftTeamsUserIdentifierModel(user_id="Microsoft Teams User Id",
                                                                   is_anonymous=True,
                                                                   cloud=CommunicationCloudEnvironment.PUBLIC)


    def test_serialize_communication_user(self):
        communication_identifier_model = serialize_identifier(
            CommunicationUserIdentifier("an id")
        )

        assert communication_identifier_model['communication_user']['id'] is "an id"

    def test_deserialize_communication_user(self):
        communication_identifier_actual = deserialize_identifier(
            CommunicationIdentifierModel(
                raw_id="an id",
                communication_user=self.testUserModel
            )
        )

        communication_identifier_expected = CommunicationUserIdentifier("an id")

        assert isinstance(communication_identifier_actual, CommunicationUserIdentifier)
        assert communication_identifier_actual.properties['id'] == communication_identifier_expected.properties['id']

    def test_serialize_unknown_identifier(self):
        unknown_identifier_model = serialize_identifier(
            UnknownIdentifier("an id")
        )

        assert unknown_identifier_model['raw_id'] is "an id"

    def test_deserialize_unknown_identifier(self):
        unknown_identifier_actual = deserialize_identifier(
            CommunicationIdentifierModel(
                raw_id="an id"
            )
        )

        unknown_identifier_expected = UnknownIdentifier("an id")

        assert isinstance(unknown_identifier_actual, UnknownIdentifier)
        assert unknown_identifier_actual.raw_id == unknown_identifier_expected.raw_id

    def test_serialize_phone_number(self):
        phone_number_identifier_model = serialize_identifier(
            PhoneNumberIdentifier("phonenumber")
        )

        assert phone_number_identifier_model['phone_number']['value'] is "phonenumber"

    def test_deserialize_phone_number(self):
        phone_number_identifier_actual = deserialize_identifier(
            CommunicationIdentifierModel(
                raw_id="someid",
                phone_number=self.testPhoneNumberModel
            )
        )

        phone_number_identifier_expected = PhoneNumberIdentifier(self.testPhoneNumber, raw_id="someid")

        assert isinstance(phone_number_identifier_actual, PhoneNumberIdentifier)
        assert phone_number_identifier_actual.properties['value'] == phone_number_identifier_expected.properties['value']
        assert phone_number_identifier_actual.raw_id == phone_number_identifier_expected.raw_id

    def test_serialize_teams_user(self):
        teams_user_identifier_model = serialize_identifier(
            MicrosoftTeamsUserIdentifier(
                user_id="teamsid",
                cloud=CommunicationCloudEnvironment.PUBLIC,
                raw_id="someid"
            )
        )

        assert teams_user_identifier_model['microsoft_teams_user']['user_id'] is "teamsid"
        assert teams_user_identifier_model['microsoft_teams_user']['cloud'] is CommunicationCloudEnvironment.PUBLIC
        assert teams_user_identifier_model['raw_id'] is "someid"

    def test_deserialize_teams_user(self):
        teams_user_identifier_actual = deserialize_identifier(
            CommunicationIdentifierModel(
                raw_id="someid",
                microsoft_teams_user=self.testTeamsUserModel
            )
        )

        teams_user_identifier_expected = MicrosoftTeamsUserIdentifier(
            raw_id="someid",
            user_id="Microsoft Teams User Id",
            cloud=CommunicationCloudEnvironment.PUBLIC,
            is_anonymous=True
        )

        assert isinstance(teams_user_identifier_actual, MicrosoftTeamsUserIdentifier)
        assert teams_user_identifier_actual.raw_id == teams_user_identifier_expected.raw_id
        assert teams_user_identifier_actual.properties['user_id'] == teams_user_identifier_expected.properties['user_id']
        assert teams_user_identifier_actual.properties['is_anonymous'] == teams_user_identifier_expected.properties['is_anonymous']
        assert teams_user_identifier_actual.properties['cloud'] == teams_user_identifier_expected.properties['cloud']

    def test_serialize_foreign_throws(self):
        foreign_obj = "Foreign object"
        self.assertRaises(
            TypeError,
            lambda : serialize_identifier(foreign_obj)
        )

if __name__ == "__main__":
    unittest.main()