@@ -9,11 +9,30 @@ 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 ) :
fixtures = [ ' fixtures/data.json ' ]
@@ -69,55 +88,43 @@ class RegistrationTestCase(TestCase):
self . assertTrue ( user . has_perm ( ' main.has_control_access ' ) )
class MakeEngineerTestCase ( TestCase ) :
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 ( User . objects . get ( email = self . light_agent ) )
self . admin_client = Client ( )
self . admin_client . force_login ( User . objects . get ( email = self . admin ) )
class MakeEngineerTestCase ( UsersBase TestCase) :
@patch ( ' main.extra_func.zenpy ' )
def test_redirect ( self , Z enpyM ock) :
def test_become_engineer_ redirect ( self , _z enpy_m ock) :
user = User . 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 )
@patch ( ' main.extra_func.zenpy ' )
def test_light_agent_make_engineer ( self , Z enpyM ock) :
self . client . post ( reverse_lazy ( ' work_become_engineer ' ) )
self . assertEqual ( Z enpyM ock. update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
def test_light_agent_make_engineer ( self , z enpy_m ock) :
self . agent_ client. post ( reverse_lazy ( ' work_become_engineer ' ) )
self . assertEqual ( z enpy_m ock. update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
@patch ( ' main.extra_func.zenpy ' )
def test_admin_make_engineer ( self , Z enpyM ock) :
def test_admin_make_engineer ( self , z enpy_m ock) :
self . admin_client . post ( reverse_lazy ( ' work_become_engineer ' ) )
self . assertEqual ( Z enpyM ock. update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
self . assertEqual ( z enpy_m ock. update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
@patch ( ' main.extra_func.zenpy ' )
def test_engineer_make_engineer ( self , Z enpyM ock) :
client = Client ( )
client . force_login ( User . objects . get ( email = self . engineer) )
client . post ( reverse_lazy ( ' work_become_engineer ' ) )
self . assertEqual ( ZenpyMock . update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
def test_engineer_make_engineer ( self , z enpy_m ock) :
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 , Z enpyM ock) :
def test_control_page_make_engineer_ one ( self , z enpy_m ock) :
self . admin_client . post (
reverse_lazy ( ' control ' ) ,
data = { ' users ' : [ User . objects . get ( email = self . light_agent ) . userprofile . id ] , ' engineer ' : ' engineer ' }
)
call_list = Z enpyM ock. update_user . call_args_list
call_list = z enpy_m ock. 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 [ ' engineer ' ] )
@patch ( ' main.extra_func.zenpy ' )
def test_control_page_make_many ( self , Z enpyM ock) :
def test_control_page_make_engineer_ many ( self , z enpy_m ock) :
self . admin_client . post (
reverse_lazy ( ' control ' ) ,
data = {
@@ -128,35 +135,120 @@ class MakeEngineerTestCase(TestCase):
' engineer ' : ' engineer '
}
)
call_list = Z enpyM ock. update_user . call_args_list
call_list = z enpy_m ock. 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 [ ' engineer ' ] )
class PasswordRese tTestCase( TestCase ) :
fixtures = [ ' fixtures/test_make_engineer.json ' ]
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 = User . 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 ' : [ User . 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 ' : [
User . objects . get ( email = self . light_agent ) . userprofile . id ,
User . 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 ) :
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 ( User . objects . get ( email = self . user ) )
def test_redirect ( self ) :
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 )
def test_send_email ( self ) :
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 ]
@@ -167,34 +259,31 @@ class PasswordResetTestCase(TestCase):
def test_email_invalid ( self ) :
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 ) :
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 ) :
fixtures = [ ' fixtures/test_make_engineer.json ' ]
class PasswordChangeTestCase ( UsersBase TestCase) :
def setUp ( self ) :
self . user = ' 123@test.ru '
self . client = Client ( )
self . client . force_login ( User . objects . get ( email = self . user ) )
super ( ) . setUp ( )
self . set_password ( )
def set_password ( self ) :
user : User = User . objects . get ( email = self . user )
user : User = User . objects . get ( email = self . light_agent )
user . set_password ( ' ImpossiblyHardPassword ' )
user . save ( )
self . client . force_login ( User . objects . get ( email = self . user ) )
self . agent_ client. force_login ( User . 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 ' ,
@@ -202,12 +291,12 @@ class PasswordChangeTestCase(TestCase):
' new_password2 ' : ' EasyPassword ' ,
}
)
user = User . objects . get ( email = self . user )
user = User . objects . get ( email = self . light_agent )
self . assertTrue ( user . check_password ( ' EasyPassword ' ) )
def test_invalid_old_password ( self ) :
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
data = {
' old_password ' : ' EasyPassword ' ,
@@ -219,7 +308,7 @@ class PasswordChangeTestCase(TestCase):
def test_different_new_passwords ( self ) :
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -231,7 +320,7 @@ class PasswordChangeTestCase(TestCase):
def test_invalid_new_password1 ( self ) :
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -243,7 +332,7 @@ class PasswordChangeTestCase(TestCase):
def test_invalid_new_password2 ( self ) :
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -255,104 +344,92 @@ class PasswordChangeTestCase(TestCase):
def test_invalid_new_password3 ( self ) :
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 ( User . objects . get ( email = self . engineer ) )
self . light_agent_client = Client ( )
self . light_agent_client . force_login ( User . objects . get ( email = self . light_agent ) )
@patch ( ' main.views.zenpy.get_user ' )
@patch ( ' main.extra_func.zenpy ' )
def test_redirect ( self , Z enpyM ock, G etU serM ock) :
def test_redirect ( self , _z enpy_m ock, g et_u ser_m ock) :
"""
Функция проверки переадресации пользователя на рабочую страницу.
"""
G etU serM ock. return_value = Mock ( )
g et_u ser_m ock. return_value = Mock ( )
user = User . 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 )
@patch ( ' main.views.zenpy ' )
@patch ( ' main.views.get_tickets_list_for_group ' )
def test_take_one_ticket ( self , T icketsM ock, Z enpyViewsM ock) :
def test_take_one_ticket ( self , group_t ickets_m ock, z enpy_m ock) :
"""
Функция проверки назначения одного тикета на engineer.
"""
T icketsM ock. return_value = [ Mock ( ) ]
Z enpyViewsM ock. 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 = Z enpyViewsM ock. update_tickets . call_args
self . assertEqual ( tickets [ 0 ] [ 0 ] [ 0 ] . assignee , Z enpyViewsM ock. get_user . return_value )
group_t ickets_m ock. return_value = [ Mock ( ) ]
z enpy_m ock. 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 = z enpy_m ock. update_tickets . call_args
self . assertEqual ( tickets [ 0 ] [ 0 ] [ 0 ] . assignee , z enpy_m ock. get_user . return_value )
@patch ( ' main.views.get_tickets_list_for_group ' )
@patch ( ' main.views.zenpy ' )
def test_take_many_tickets ( self , Z enpyM ock, T icketsM ock) :
def test_take_many_tickets ( self , z enpy_m ock, group_t ickets_m ock) :
"""
Функция проверки назначения нескольких тикетов на engineer.
"""
T icketsM ock. return_value = [ Mock ( ) ] * 3
Z enpyM ock. 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 } )
tickets = Z enpyM ock. update_tickets . call_args
group_t ickets_m ock. return_value = [ Mock ( ) ] * 3
z enpy_m ock. 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 ' : 3 } )
tickets = z enpy_m ock. update_tickets . call_args
for ticket in tickets [ 0 ] [ 0 ] :
self . assertEqual ( ticket . assignee , Z enpyM ock. get_user . return_value )
self . assertEqual ( ticket . assignee , z enpy_m ock. get_user . return_value )
@patch ( ' main.views.zenpy.get_user ' )
@patch ( ' main.views.zenpy ' )
def test_light_agent_take_ticket ( self , Z enpyM ock, G etU serM ock) :
def test_light_agent_take_ticket ( self , z enpy_m ock, g et_u ser_m ock) :
"""
Функция проверки попытки назначения тикета на light_agent.
"""
G etU serM ock. 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 } )
tickets = Z enpyM ock. update_tickets . call_args
g et_u ser_m ock. return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' light_agent ' ] )
self . agent_client . post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 3 } )
tickets = z enpy_m ock. 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 , TicketsMock , Z enpyM ock) :
def test_take_zero_tickets ( self , TicketsMock , z enpy_m ock) :
"""
Функция проверки попытки назначения нуля тикета на engineer.
"""
TicketsMock . return_value = [ Mock ( ) ] * 3
Z enpyM ock. 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 } )
tickets = Z enpyM ock. update_tickets . call_args [ 0 ] [ 0 ]
z enpy_m ock. 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 ' : 0 } )
tickets = z enpy_m ock. 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 , Z enpyM ock, T icketsM ock, ) :
def test_take_invalid_count_tickets ( self , z enpy_m ock, group_t ickets_m ock) :
"""
Функция проверки попытки назначения нуля тикетов на engineer.
"""
T icketsM ock. return_value = [ Mock ( ) ] * 3
Z enpyM ock. 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 ' } )
tickets = Z enpyM ock. update_tickets . call_args
group_t ickets_m ock. return_value = [ Mock ( ) ] * 3
z enpy_m ock. 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 ' : ' asd ' } )
tickets = z enpy_m ock. update_tickets . call_args
self . assertIsNone ( tickets )
@@ -416,6 +493,46 @@ class ProfileTestCase(TestCase):
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 = User . objects . get ( email = self . admin ) . userprofile
self . agent_profile = User . objects . get ( email = self . light_agent ) . userprofile
self . engineer_profile = User . 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 ' )
class ControlAccessTests ( TestCase ) :
fixtures = [ ' test_data_base.json ' ]