@@ -12,11 +12,30 @@ from django.http import HttpResponseRedirect
from django . template . loader import render_to_string
from django . test import TestCase , Client
from django . urls import reverse , reverse_lazy
from django . utils import translation
from django . utils import translation , timezone
import access_controller . settings as sets
from main . zendesk_admin import zenpy
from main . extra_func import log
class UsersBaseTestCase ( TestCase ) :
""" Базовый класс загружения данных для тестов с пользователями """
fixtures = [ ' fixtures/test_users.json ' ]
def setUp ( self ) :
""" Добавление в переменные почт и клиентов для пользователей """
self . light_agent = ' 123@test.ru '
self . admin = ' admin@gmail.com '
self . engineer = ' customer@example.com '
self . agent_client = Client ( )
self . agent_client . force_login ( User . objects . get ( email = self . light_agent ) )
self . admin_client = Client ( )
self . admin_client . force_login ( User . objects . get ( email = self . admin ) )
self . engineer_client = Client ( )
self . engineer_client . force_login ( User . objects . get ( email = self . engineer ) )
class RegistrationTestCase ( TestCase ) :
"""
@@ -96,41 +115,27 @@ class RegistrationTestCase(TestCase):
self . assertTrue ( user . has_perm ( ' main.has_control_access ' ) )
class MakeEngineerTestCase ( TestCase ) :
class MakeEngineerTestCase ( UsersBase TestCase) :
"""
Класс тестов для проверки функции назначения роли engineer.
"""
fixtures = [ ' fixtures/test_make_engineer.json ' ]
def setUp ( self ) :
"""
Предустановленные значения для проведения тестов.
"""
self . light_agent = ' 123@test.ru '
self . admin = ' admin@gmail.com '
self . engineer = ' customer@example.com '
self . client = Client ( )
self . client . force_login ( get_user_model ( ) . objects . get ( email = self . light_agent ) )
self . admin_client = Client ( )
self . admin_client . force_login ( get_user_model ( ) . objects . get ( email = self . admin ) )
@patch ( ' main.extra_func.zenpy ' )
def test_redirect ( self , zenpy_mock ) :
def test_become_engineer_ redirect ( self , _ zenpy_mock) :
"""
Функция проверки переадресации пользователя на рабочую страницу после назначения роли engineer.
"""
user = get_user_model ( ) . objects . get ( email = self . light_agent )
resp = self . client . post ( reverse_lazy ( ' work_become_engineer ' ) )
resp = self . agent_ client. post ( reverse_lazy ( ' work_become_engineer ' ) )
self . assertRedirects ( resp , reverse ( ' work ' , args = [ user . id ] ) )
self . assertEqual ( resp . status_code , 302 )
self . assertFalse ( zenpy_mock . called )
self . assertFalse ( _ zenpy_mock. called )
@patch ( ' main.extra_func.zenpy ' )
def test_light_agent_make_engineer ( self , zenpy_mock ) :
"""
Функция проверки назначения light_agent на роль engineer.
"""
self . client . post ( reverse_lazy ( ' work_become_engineer ' ) )
self . agent_ client. post ( reverse_lazy ( ' work_become_engineer ' ) )
self . assertEqual ( zenpy_mock . update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
@patch ( ' main.extra_func.zenpy ' )
@@ -146,13 +151,11 @@ class MakeEngineerTestCase(TestCase):
"""
Функция проверки назначения engineer на роль engineer.
"""
client = Client ( )
client . force_login ( get_user_model ( ) . objects . get ( email = self . engineer ) )
client . post ( reverse_lazy ( ' work_become_engineer ' ) )
self . engineer_client . post ( reverse_lazy ( ' work_become_engineer ' ) )
self . assertEqual ( zenpy_mock . update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
@patch ( ' main.extra_func.zenpy ' )
def test_control_page_make_one ( self , zenpy_mock ) :
def test_control_page_make_engineer_ one ( self , zenpy_mock ) :
"""
Функция проверки назначения администратором на роль engineer одного пользователя.
"""
@@ -167,7 +170,7 @@ class MakeEngineerTestCase(TestCase):
self . assertEqual ( mock_object . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
@patch ( ' main.extra_func.zenpy ' )
def test_control_page_make_many ( self , zenpy_mock ) :
def test_control_page_make_engineer_ many ( self , zenpy_mock ) :
"""
Функция проверки назначения администратором на роль engineer нескольких пользователей.
"""
@@ -188,27 +191,111 @@ class MakeEngineerTestCase(TestCase):
self . assertEqual ( obj [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
class PasswordRese tTestCase( TestCase ) :
class MakeLightAgen tTestCase( UsersBase TestCase) :
@patch ( ' main.requester.TicketListRequester.get_tickets_list_for_user ' , side_effect = [ [ ] ] )
@patch ( ' main.extra_func.zenpy ' )
def test_hand_over_redirect ( self , _zenpy_mock , _user_tickets_mock ) :
user = get_user_model ( ) . objects . get ( email = self . engineer )
resp = self . engineer_client . post ( reverse_lazy ( ' work_hand_over ' ) )
self . assertRedirects ( resp , reverse ( ' work ' , args = [ user . id ] ) )
self . assertEqual ( resp . status_code , 302 )
@patch ( ' main.requester.TicketListRequester.get_tickets_list_for_user ' , side_effect = [ [ ] ] )
@patch ( ' main.extra_func.zenpy ' )
def test_engineer_make_light_agent_no_tickets ( self , zenpy_mock , _user_tickets_mock ) :
self . engineer_client . post ( reverse_lazy ( ' work_hand_over ' ) )
self . assertEqual ( zenpy_mock . update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' light_agent ' ] )
@patch ( ' main.requester.TicketListRequester.get_tickets_list_for_user ' , side_effect = [
[ Mock ( id = 1 , status = ' solved ' ) , Mock ( id = 2 , status = ' open ' ) , Mock ( id = 3 , status = ' open ' ) ]
] )
@patch ( ' main.extra_func.zenpy ' )
def test_engineer_make_light_agent_with_tickets ( self , zenpy_mock , _user_tickets_mock ) :
zenpy_mock . solved_tickets_user_id = Mock ( )
self . engineer_client . post ( reverse_lazy ( ' work_hand_over ' ) )
tickets_update = zenpy_mock . admin . tickets . update . call_args [ 0 ] [ 0 ]
self . assertEqual ( tickets_update [ 0 ] . assignee_id , zenpy_mock . solved_tickets_user_id )
self . assertIsNone ( tickets_update [ 1 ] . assignee )
self . assertIsNone ( tickets_update [ 2 ] . assignee )
self . assertEqual ( zenpy_mock . update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' light_agent ' ] )
@patch ( ' main.requester.TicketListRequester.get_tickets_list_for_user ' , side_effect = [ [ ] ] )
@patch ( ' main.extra_func.zenpy ' )
def test_admin_make_light_agent_no_tickets ( self , zenpy_mock , _user_tickets_mock ) :
self . admin_client . post ( reverse_lazy ( ' work_hand_over ' ) )
self . assertEqual ( zenpy_mock . update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' light_agent ' ] )
@patch ( ' main.requester.TicketListRequester.get_tickets_list_for_user ' , side_effect = [
[ Mock ( id = 1 , status = ' solved ' ) , Mock ( id = 2 , status = ' open ' ) , Mock ( id = 3 , status = ' open ' ) ]
] )
@patch ( ' main.extra_func.zenpy ' )
def test_admin_make_light_agent_with_tickets ( self , zenpy_mock , _user_tickets_mock ) :
zenpy_mock . solved_tickets_user_id = Mock ( )
self . admin_client . post ( reverse_lazy ( ' work_hand_over ' ) )
tickets_update = zenpy_mock . admin . tickets . update . call_args [ 0 ] [ 0 ]
self . assertEqual ( tickets_update [ 0 ] . assignee_id , zenpy_mock . solved_tickets_user_id )
self . assertIsNone ( tickets_update [ 1 ] . assignee )
self . assertIsNone ( tickets_update [ 2 ] . assignee )
self . assertEqual ( zenpy_mock . update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' light_agent ' ] )
@patch ( ' main.requester.TicketListRequester.get_tickets_list_for_user ' , side_effect = [ [ ] ] )
@patch ( ' main.extra_func.zenpy ' )
def test_light_agent_make_light_agent ( self , zenpy_mock , _user_tickets_mock ) :
self . agent_client . post ( reverse_lazy ( ' work_hand_over ' ) )
self . assertEqual ( zenpy_mock . update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' light_agent ' ] )
@patch ( ' main.requester.TicketListRequester.get_tickets_list_for_user ' , side_effect = [ [ ] ] )
@patch ( ' main.extra_func.zenpy ' )
def test_control_page_make_light_agent_one ( self , zenpy_mock , _user_tickets_mock ) :
self . admin_client . post (
reverse_lazy ( ' control ' ) ,
data = { ' users ' : [ get_user_model ( ) . objects . get ( email = self . engineer ) . userprofile . id ] , ' light_agent ' : ' light_agent ' }
)
call_list = zenpy_mock . update_user . call_args_list
mock_object = call_list [ 0 ] [ 0 ] [ 0 ]
self . assertEqual ( len ( call_list ) , 1 )
self . assertEqual ( mock_object . custom_role_id , sets . ZENDESK_ROLES [ ' light_agent ' ] )
@patch ( ' main.requester.TicketListRequester.get_tickets_list_for_user ' , side_effect = [ [ ] , [ ] ] )
@patch ( ' main.extra_func.zenpy ' )
def test_control_page_make_light_agent_many ( self , zenpy_mock , _user_tickets_mock ) :
self . admin_client . post (
reverse_lazy ( ' control ' ) ,
data = {
' users ' : [
get_user_model ( ) . objects . get ( email = self . light_agent ) . userprofile . id ,
get_user_model ( ) . objects . get ( email = self . engineer ) . userprofile . id ,
] ,
' light_agent ' : ' light_agent '
}
)
call_list = zenpy_mock . update_user . call_args_list
mock_objects = list ( call_list )
self . assertEqual ( len ( call_list ) , 2 )
for obj in mock_objects :
self . assertEqual ( obj [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' light_agent ' ] )
class PasswordResetTestCase ( UsersBaseTestCase ) :
"""
Класс тестов с б р о с а пароля.
"""
fixtures = [ ' fixtures/test_make_engineer.json ' ]
def setUp ( self ) :
"""
Предустановленные значения для проведения тестов.
"""
self . user = ' 123@test.ru '
super ( ) . setUp ( )
self . email_backend = ' django.core.mail.backends.locmem.EmailBackend '
self . client = Client ( )
self . client . force_login ( get_user_model ( ) . objects . get ( email = self . user ) )
def test_redirect ( self ) :
"""
Функция проверки переадресации на страницу уведомления о с б р о с е пароля на email.
"""
with self . settings ( EMAIL_BACKEND = self . email_backend ) :
resp = self . client . post ( reverse_lazy ( ' password_reset ' ) , data = { ' email ' : self . user } )
resp = self . agent_ client. post ( reverse_lazy ( ' password_reset ' ) , data = { ' email ' : self . light_agent } )
self . assertRedirects ( resp , reverse ( ' password_reset_done ' ) )
self . assertEqual ( resp . status_code , 302 )
@@ -218,10 +305,10 @@ class PasswordResetTestCase(TestCase):
"""
with self . settings ( EMAIL_BACKEND = self . email_backend ) :
response : HttpResponseRedirect = \
self . client . post ( reverse_lazy ( ' password_reset ' ) , data = { ' email ' : self . user } )
self . agent_ client. post ( reverse_lazy ( ' password_reset ' ) , data = { ' email ' : self . light_agent } )
self . assertEqual ( response . status_code , 302 )
self . assertEqual ( len ( mail . outbox ) , 1 )
self . assertEqual ( mail . outbox [ 0 ] . to , [ self . user ] )
self . assertEqual ( mail . outbox [ 0 ] . to , [ self . light_agent ] )
# context that the email template was rendered with
email_context = response . context [ 0 ] . dicts [ 1 ]
@@ -235,7 +322,7 @@ class PasswordResetTestCase(TestCase):
Функция проверки уведомления клиента о некорректности введенного email.
"""
with self . settings ( EMAIL_BACKEND = self . email_backend ) and translation . override ( ' ru ' ) :
resp = self . client . post ( reverse_lazy ( ' password_reset ' ) , data = { ' email ' : 1 } )
resp = self . agent_ client. post ( reverse_lazy ( ' password_reset ' ) , data = { ' email ' : 1 } )
self . assertContains ( resp , ' Введите правильный адрес электронной почты. ' , count = 1 , status_code = 200 )
def test_user_does_not_exist ( self ) :
@@ -243,41 +330,37 @@ class PasswordResetTestCase(TestCase):
Функция корректности отработки неверно введенного email.
"""
with self . settings ( EMAIL_BACKEND = self . email_backend ) :
resp = self . client . post ( reverse_lazy ( ' password_reset ' ) , data = { ' email ' : self . user + str ( random . random ( ) ) } )
resp = self . agent_ client. post ( reverse_lazy ( ' password_reset ' ) , data = { ' email ' : self . light_agent + str ( random . random ( ) ) } )
self . assertRedirects ( resp , reverse ( ' password_reset_done ' ) )
self . assertEqual ( resp . status_code , 302 )
self . assertEqual ( len ( mail . outbox ) , 0 )
class PasswordChangeTestCase ( TestCase ) :
class PasswordChangeTestCase ( UsersBase TestCase) :
"""
Класс тестирования смены пароля.
"""
fixtures = [ ' fixtures/test_make_engineer.json ' ]
def setUp ( self ) :
"""
Предустановленные значения для проведения тестов.
"""
self . user = ' 123@test.ru '
self . client = Client ( )
self . client . force_login ( get_user_model ( ) . objects . get ( email = self . user ) )
super ( ) . setUp ( )
self . set_password ( )
def set_password ( self ) :
"""
Пароль, сформированный для тестирования.
"""
user : get_user_model ( ) = get_user_model ( ) . objects . get ( email = self . user )
user : get_user_model ( ) = get_user_model ( ) . objects . get ( email = self . light_agent )
user . set_password ( ' ImpossiblyHardPassword ' )
user . save ( )
self . client . force_login ( get_user_model ( ) . objects . get ( email = self . user ) )
self . agent_ client. force_login ( get_user_model ( ) . objects . get ( email = self . light_agent ) )
def test_change_successful ( self ) :
"""
Функция тестирования успешного изменения пароля.
"""
self . client . post (
self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -285,7 +368,7 @@ class PasswordChangeTestCase(TestCase):
' new_password2 ' : ' EasyPassword ' ,
}
)
user = get_user_model ( ) . objects . get ( email = self . user )
user = get_user_model ( ) . objects . get ( email = self . light_agent )
self . assertTrue ( user . check_password ( ' EasyPassword ' ) )
def test_invalid_old_password ( self ) :
@@ -293,7 +376,7 @@ class PasswordChangeTestCase(TestCase):
Функция тестирования отработки неверно введенного старого пароля при смене.
"""
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
data = {
' old_password ' : ' EasyPassword ' ,
@@ -308,7 +391,7 @@ class PasswordChangeTestCase(TestCase):
Функция тестирования случая с вводом двух разных новых паролей.
"""
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -323,7 +406,7 @@ class PasswordChangeTestCase(TestCase):
Функция тестирования случая с неправильно подобранным новым паролем (слишком короткий).
"""
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -338,7 +421,7 @@ class PasswordChangeTestCase(TestCase):
Функция тестирования случая с неправильно подобранным новым паролем (употребляются только цифры).
"""
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -353,68 +436,56 @@ class PasswordChangeTestCase(TestCase):
Функция тестирования случая с неправильно подобранным новым паролем (совпадает с именем пользователя).
"""
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
' new_password1 ' : self . user ,
' new_password2 ' : self . user ,
' new_password1 ' : self . light_agent ,
' new_password2 ' : self . light_agent ,
}
)
self . assertContains ( resp , ' Введённый пароль слишком похож на имя пользователя ' , count = 1 , status_code = 200 )
class GetTicketsTestCase ( TestCase ) :
class GetTicketsTestCase ( UsersBase TestCase) :
"""
Класс тестов для проверки функции получения тикетов.
"""
fixtures = [ ' fixtures/test_make_engineer.json ' ]
def setUp ( self ) :
"""
Предустановленные значения для проведения тестов.
"""
self . light_agent = ' 123@test.ru '
self . engineer = ' customer@example.com '
self . client = Client ( )
self . client . force_login ( get_user_model ( ) . objects . get ( email = self . engineer ) )
self . light_agent_client = Client ( )
self . light_agent_client . force_login ( get_user_model ( ) . objects . get ( email = self . light_agent ) )
@patch ( ' main.views.zenpy.get_user ' )
@patch ( ' main.extra_func.zenpy ' )
def test_redirect ( self , zenpy_mock , get_user_mock ) :
def test_redirect ( self , _ zenpy_mock, get_user_mock ) :
"""
Функция проверки переадресации пользователя на рабочую страницу.
"""
get_user_mock . return_value = Mock ( )
user = get_user_model ( ) . objects . get ( email = self . engineer )
resp = self . client . post ( reverse ( ' work_get_tickets ' ) )
resp = self . engineer_ client. post ( reverse ( ' work_get_tickets ' ) )
self . assertRedirects ( resp , reverse ( ' work ' , args = [ user . id ] ) )
self . assertEqual ( resp . status_code , 302 )
self . assertFalse ( zenpy_mock . called )
self . assertFalse ( _ zenpy_mock. called )
@patch ( ' main.views.zenpy ' )
@patch ( ' main.views.get_tickets_list_for_group ' )
def test_take_one_ticket ( self , tickets_mock , zenpy_views_ mock ) :
def test_take_one_ticket ( self , group_ tickets_mock, zenpy_mock ) :
"""
Функция проверки назначения одного тикета на engineer.
"""
tickets_mock . return_value = [ Mock ( ) ]
zenpy_views_ mock . get_user . return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' engineer ' ] )
self . client . post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 1 } )
tickets = zenpy_views_ mock . update_tickets . call_args
self . assertEqual ( tickets [ 0 ] [ 0 ] [ 0 ] . assignee , zenpy_views_ mock . get_user . return_value )
group_ tickets_mock. return_value = [ Mock ( ) ]
zenpy_mock . get_user . return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' engineer ' ] )
self . engineer_ client. post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 1 } )
tickets = zenpy_mock . update_tickets . call_args
self . assertEqual ( tickets [ 0 ] [ 0 ] [ 0 ] . assignee , zenpy_mock . get_user . return_value )
@patch ( ' main.views.get_tickets_list_for_group ' )
@patch ( ' main.views.zenpy ' )
def test_take_many_tickets ( self , zenpy_mock , tickets_mock ) :
def test_take_many_tickets ( self , zenpy_mock , group_ tickets_mock) :
"""
Функция проверки назначения нескольких тикетов на engineer.
"""
tickets_mock . return_value = [ Mock ( ) ] * 3
group_ tickets_mock. return_value = [ Mock ( ) ] * 3
zenpy_mock . get_user . return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' engineer ' ] )
self . client . post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 3 } )
self . engineer_ client. post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 3 } )
tickets = zenpy_mock . update_tickets . call_args
for ticket in tickets [ 0 ] [ 0 ] :
self . assertEqual ( ticket . assignee , zenpy_mock . get_user . return_value )
@@ -426,31 +497,31 @@ class GetTicketsTestCase(TestCase):
Функция проверки попытки назначения тикета на light_agent.
"""
get_user_mock . return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' light_agent ' ] )
self . light_ agent_client. post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 3 } )
self . agent_client . post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 3 } )
tickets = zenpy_mock . update_tickets . call_args
self . assertIsNone ( tickets )
@patch ( ' main.views.zenpy ' )
@patch ( ' main.views.get_tickets_list_for_group ' )
def test_take_zero_tickets ( self , t ickets_m ock, zenpy_mock ) :
def test_take_zero_tickets ( self , T icketsM ock, zenpy_mock ) :
"""
Функция проверки попытки назначения нуля тикета на engineer.
"""
t ickets_m ock. return_value = [ Mock ( ) ] * 3
T icketsM ock. return_value = [ Mock ( ) ] * 3
zenpy_mock . get_user . return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' engineer ' ] )
self . client . post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 0 } )
self . engineer_ client. post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 0 } )
tickets = zenpy_mock . update_tickets . call_args [ 0 ] [ 0 ]
self . assertListEqual ( tickets , [ ] )
@patch ( ' main.views.get_tickets_list_for_group ' )
@patch ( ' main.views.zenpy ' )
def test_take_invalid_count_tickets ( self , zenpy_mock , tickets_mock ) :
def test_take_invalid_count_tickets ( self , zenpy_mock , group_ tickets_mock) :
"""
Функция проверки попытки назначения нуля тикетов на engineer.
"""
tickets_mock . return_value = [ Mock ( ) ] * 3
group_ tickets_mock. return_value = [ Mock ( ) ] * 3
zenpy_mock . get_user . return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' engineer ' ] )
self . client . post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : ' asd ' } )
self . engineer_ client. post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : ' asd ' } )
tickets = zenpy_mock . update_tickets . call_args
self . assertIsNone ( tickets )
@@ -513,3 +584,43 @@ class ProfileTestCase(TestCase):
resp = self . client . get ( reverse ( ' profile ' ) )
user = zenpy . get_user ( self . zendesk_agent_email )
self . assertEqual ( resp . context [ ' profile ' ] . image , user . photo [ ' content_url ' ] if user . photo else None )
class LoggingTestCase ( UsersBaseTestCase ) :
def setUp ( self ) :
super ( ) . setUp ( )
self . admin_profile = get_user_model ( ) . objects . get ( email = self . admin ) . userprofile
self . agent_profile = get_user_model ( ) . objects . get ( email = self . light_agent ) . userprofile
self . engineer_profile = get_user_model ( ) . objects . get ( email = self . engineer ) . userprofile
@staticmethod
def get_file_output ( ) :
file = open ( ' logs/logs.csv ' , ' r ' )
file_output = file . readlines ( ) [ - 1 ]
file . close ( )
return file_output
def test_engineer_with_admin ( self ) :
log ( self . engineer_profile , self . admin_profile )
file_output = self . get_file_output ( )
self . assertEqual ( file_output , f ' UserForAccessTest,engineer, '
f ' { str ( timezone . now ( ) . today ( ) ) [ : 16 ] } ,ZendeskAdmin \n ' )
def test_engineer_without_admin ( self ) :
log ( self . engineer_profile )
file_output = self . get_file_output ( )
self . assertEqual ( file_output , f ' UserForAccessTest,engineer, '
f ' { str ( timezone . now ( ) . today ( ) ) [ : 16 ] } ,UserForAccessTest \n ' )
def test_light_agent_with_admin ( self ) :
log ( self . agent_profile , self . admin_profile )
file_output = self . get_file_output ( )
self . assertEqual ( file_output , f ' UserForAccessTest,light_agent, '
f ' { str ( timezone . now ( ) . today ( ) ) [ : 16 ] } ,ZendeskAdmin \n ' )
def test_light_agent_without_admin ( self ) :
log ( self . agent_profile )
file_output = self . get_file_output ( )
self . assertEqual ( file_output , f ' UserForAccessTest,light_agent, '
f ' { str ( timezone . now ( ) . today ( ) ) [ : 16 ] } ,UserForAccessTest \n ' )