1- from unittest .mock import Mock
1+ from unittest .mock import Mock , patch
22from flask import json
33from flask .testing import FlaskClient
44from flask_restplus ._http import HTTPStatus
55from utils .azure_users import AzureConnection
6+ from faker import Faker
7+
8+ fake = Faker ()
9+
10+ valid_user_role_data = {'role' : 'admin' }
11+ user_id = fake .random_int (1 , 9999 )
612
713
814def test_users_response_contains_expected_props (
@@ -23,3 +29,37 @@ def test_users_response_contains_expected_props(
2329 assert 'name' in json .loads (response .data )[0 ]
2430 assert 'email' in json .loads (response .data )[0 ]
2531 assert 'role' in json .loads (response .data )[0 ]
32+
33+
34+ def test_update_user_role_response_contains_expected_props (
35+ client : FlaskClient ,
36+ valid_header : dict ,
37+ ):
38+ AzureConnection .update_user_role = Mock (
39+ return_value = [{'name' : 'dummy' , 'email' : 'dummy' , 'role' : 'dummy' }]
40+ )
41+
42+ response = client .put (
43+ f'/users/{ user_id } ' , headers = valid_header , json = valid_user_role_data
44+ )
45+
46+ assert HTTPStatus .OK == response .status_code
47+ assert 'name' in json .loads (response .data )[0 ]
48+ assert 'email' in json .loads (response .data )[0 ]
49+ assert 'role' in json .loads (response .data )[0 ]
50+
51+
52+ @patch ('utils.azure_users.AzureConnection' , new_callable = Mock )
53+ def test_update_user_role_is_being_called_with_valid_arguments (
54+ update_user_role_mock ,
55+ client : FlaskClient ,
56+ valid_header : dict ,
57+ ):
58+
59+ response = client .put (
60+ f'/users/{ user_id } ' , headers = valid_header , json = valid_user_role_data
61+ )
62+
63+ assert HTTPStatus .OK == response .status_code
64+ assert valid_user_role_data ['role' ] == 'admin'
65+ update_user_role_mock .assert_called_once ()
0 commit comments