@@ -7,11 +7,30 @@ from django.http import HttpResponseRedirect
from django . template . loader import render_to_string
from django . template . loader import render_to_string
from django . test import TestCase , Client
from django . test import TestCase , Client
from django . urls import reverse , reverse_lazy
from django . urls import reverse , reverse_lazy
from django . utils import translation
from django . utils import translation , timezone
import access_controller . settings as sets
import access_controller . settings as sets
from main . zendesk_admin import zenpy
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 ) :
class RegistrationTestCase ( TestCase ) :
fixtures = [ ' fixtures/data.json ' ]
fixtures = [ ' fixtures/data.json ' ]
@@ -67,55 +86,43 @@ class RegistrationTestCase(TestCase):
self . assertTrue ( user . has_perm ( ' main.has_control_access ' ) )
self . assertTrue ( user . has_perm ( ' main.has_control_access ' ) )
class MakeEngineerTestCase ( TestCase ) :
class MakeEngineerTestCase ( UsersBase 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 ) )
@patch ( ' main.extra_func.zenpy ' )
@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 )
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 . assertRedirects ( resp , reverse ( ' work ' , args = [ user . id ] ) )
self . assertEqual ( resp . status_code , 302 )
self . assertEqual ( resp . status_code , 302 )
@patch ( ' main.extra_func.zenpy ' )
@patch ( ' main.extra_func.zenpy ' )
def test_light_agent_make_engineer ( self , Z enpyM ock) :
def test_light_agent_make_engineer ( self , z enpy_m ock) :
self . client . post ( reverse_lazy ( ' work_become_engineer ' ) )
self . agent_ 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 ' )
@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 . 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 ' )
@patch ( ' main.extra_func.zenpy ' )
def test_engineer_make_engineer ( self , Z enpyM ock) :
def test_engineer_make_engineer ( self , z enpy_m ock) :
client = Client ( )
self . engineer_client . post ( reverse_lazy ( ' work_become_engineer ' ) )
client . force_login ( User . objects . get ( email = self . engineer) )
self . assertEqual ( zenpy_mock . update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer' ] )
client . post ( reverse_lazy ( ' work_become_engineer ' ) )
self . assertEqual ( ZenpyMock . update_user . call_args [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
@patch ( ' main.extra_func.zenpy ' )
@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 (
self . admin_client . post (
reverse_lazy ( ' control ' ) ,
reverse_lazy ( ' control ' ) ,
data = { ' users ' : [ User . objects . get ( email = self . light_agent ) . userprofile . id ] , ' engineer ' : ' engineer ' }
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 ]
mock_object = call_list [ 0 ] [ 0 ] [ 0 ]
self . assertEqual ( len ( call_list ) , 1 )
self . assertEqual ( len ( call_list ) , 1 )
self . assertEqual ( mock_object . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
self . assertEqual ( mock_object . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
@patch ( ' main.extra_func.zenpy ' )
@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 (
self . admin_client . post (
reverse_lazy ( ' control ' ) ,
reverse_lazy ( ' control ' ) ,
data = {
data = {
@@ -126,35 +133,120 @@ class MakeEngineerTestCase(TestCase):
' engineer ' : ' engineer '
' 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 )
mock_objects = list ( call_list )
self . assertEqual ( len ( call_list ) , 2 )
self . assertEqual ( len ( call_list ) , 2 )
for obj in mock_objects :
for obj in mock_objects :
self . assertEqual ( obj [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
self . assertEqual ( obj [ 0 ] [ 0 ] . custom_role_id , sets . ZENDESK_ROLES [ ' engineer ' ] )
class PasswordRese tTestCase( TestCase ) :
class MakeLightAgen tTestCase( UsersBase TestCase) :
fixtures = [ ' fixtures/test_make_engineer.json ' ]
@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 ) :
def setUp ( self ) :
self . user = ' 123@test.ru '
super ( ) . setUp ( )
self . email_backend = ' django.core.mail.backends.locmem.EmailBackend '
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 ) :
def test_redirect ( self ) :
with self . settings ( EMAIL_BACKEND = self . email_backend ) :
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 . assertRedirects ( resp , reverse ( ' password_reset_done ' ) )
self . assertEqual ( resp . status_code , 302 )
self . assertEqual ( resp . status_code , 302 )
def test_send_email ( self ) :
def test_send_email ( self ) :
with self . settings ( EMAIL_BACKEND = self . email_backend ) :
with self . settings ( EMAIL_BACKEND = self . email_backend ) :
response : HttpResponseRedirect = \
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 ( response . status_code , 302 )
self . assertEqual ( len ( mail . outbox ) , 1 )
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
# context that the email template was rendered with
email_context = response . context [ 0 ] . dicts [ 1 ]
email_context = response . context [ 0 ] . dicts [ 1 ]
@@ -165,34 +257,31 @@ class PasswordResetTestCase(TestCase):
def test_email_invalid ( self ) :
def test_email_invalid ( self ) :
with self . settings ( EMAIL_BACKEND = self . email_backend ) and translation . override ( ' ru ' ) :
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 )
self . assertContains ( resp , ' Введите правильный адрес электронной почты. ' , count = 1 , status_code = 200 )
def test_user_does_not_exist ( self ) :
def test_user_does_not_exist ( self ) :
with self . settings ( EMAIL_BACKEND = self . email_backend ) :
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 . assertRedirects ( resp , reverse ( ' password_reset_done ' ) )
self . assertEqual ( resp . status_code , 302 )
self . assertEqual ( resp . status_code , 302 )
self . assertEqual ( len ( mail . outbox ) , 0 )
self . assertEqual ( len ( mail . outbox ) , 0 )
class PasswordChangeTestCase ( TestCase ) :
class PasswordChangeTestCase ( UsersBase TestCase) :
fixtures = [ ' fixtures/test_make_engineer.json ' ]
def setUp ( self ) :
def setUp ( self ) :
self . user = ' 123@test.ru '
super ( ) . setUp ( )
self . client = Client ( )
self . client . force_login ( User . objects . get ( email = self . user ) )
self . set_password ( )
self . set_password ( )
def set_password ( self ) :
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 . set_password ( ' ImpossiblyHardPassword ' )
user . save ( )
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 ) :
def test_change_successful ( self ) :
self . client . post (
self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
reverse_lazy ( ' password_change ' ) ,
data = {
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -200,12 +289,12 @@ class PasswordChangeTestCase(TestCase):
' new_password2 ' : ' EasyPassword ' ,
' new_password2 ' : ' EasyPassword ' ,
}
}
)
)
user = User . objects . get ( email = self . user )
user = User . objects . get ( email = self . light_agent )
self . assertTrue ( user . check_password ( ' EasyPassword ' ) )
self . assertTrue ( user . check_password ( ' EasyPassword ' ) )
def test_invalid_old_password ( self ) :
def test_invalid_old_password ( self ) :
with translation . override ( ' ru ' ) :
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
reverse_lazy ( ' password_change ' ) ,
data = {
data = {
' old_password ' : ' EasyPassword ' ,
' old_password ' : ' EasyPassword ' ,
@@ -217,7 +306,7 @@ class PasswordChangeTestCase(TestCase):
def test_different_new_passwords ( self ) :
def test_different_new_passwords ( self ) :
with translation . override ( ' ru ' ) :
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
reverse_lazy ( ' password_change ' ) ,
data = {
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -229,7 +318,7 @@ class PasswordChangeTestCase(TestCase):
def test_invalid_new_password1 ( self ) :
def test_invalid_new_password1 ( self ) :
with translation . override ( ' ru ' ) :
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
reverse_lazy ( ' password_change ' ) ,
data = {
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -241,7 +330,7 @@ class PasswordChangeTestCase(TestCase):
def test_invalid_new_password2 ( self ) :
def test_invalid_new_password2 ( self ) :
with translation . override ( ' ru ' ) :
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
reverse_lazy ( ' password_change ' ) ,
data = {
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
' old_password ' : ' ImpossiblyHardPassword ' ,
@@ -253,104 +342,92 @@ class PasswordChangeTestCase(TestCase):
def test_invalid_new_password3 ( self ) :
def test_invalid_new_password3 ( self ) :
with translation . override ( ' ru ' ) :
with translation . override ( ' ru ' ) :
resp = self . client . post (
resp = self . agent_ client. post (
reverse_lazy ( ' password_change ' ) ,
reverse_lazy ( ' password_change ' ) ,
data = {
data = {
' old_password ' : ' ImpossiblyHardPassword ' ,
' old_password ' : ' ImpossiblyHardPassword ' ,
' new_password1 ' : self . user ,
' new_password1 ' : self . light_agent ,
' new_password2 ' : self . user ,
' new_password2 ' : self . light_agent ,
}
}
)
)
self . assertContains ( resp , ' Введённый пароль слишком похож на имя пользователя ' , count = 1 , status_code = 200 )
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.views.zenpy.get_user ' )
@patch ( ' main.extra_func.zenpy ' )
@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 )
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 . assertRedirects ( resp , reverse ( ' work ' , args = [ user . id ] ) )
self . assertEqual ( resp . status_code , 302 )
self . assertEqual ( resp . status_code , 302 )
@patch ( ' main.views.zenpy ' )
@patch ( ' main.views.zenpy ' )
@patch ( ' main.views.get_tickets_list_for_group ' )
@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.
Функция проверки назначения одного тикета на engineer.
"""
"""
T icketsM ock. return_value = [ Mock ( ) ]
group_t ickets_m ock. return_value = [ Mock ( ) ]
Z enpyViewsM ock. get_user . return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' engineer ' ] )
z enpy_m 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 } )
self . engineer_ client. post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 1 } )
tickets = Z enpyViewsM ock. update_tickets . call_args
tickets = z enpy_m ock. update_tickets . call_args
self . assertEqual ( tickets [ 0 ] [ 0 ] [ 0 ] . assignee , Z enpyViewsM ock. get_user . return_value )
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.get_tickets_list_for_group ' )
@patch ( ' main.views.zenpy ' )
@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.
Функция проверки назначения нескольких тикетов на engineer.
"""
"""
T icketsM ock. return_value = [ Mock ( ) ] * 3
group_t ickets_m ock. return_value = [ Mock ( ) ] * 3
Z enpyM ock. get_user . return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' engineer ' ] )
z enpy_m 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 } )
self . engineer_ client. post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 3 } )
tickets = Z enpyM ock. update_tickets . call_args
tickets = z enpy_m ock. update_tickets . call_args
for ticket in tickets [ 0 ] [ 0 ] :
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.get_user ' )
@patch ( ' main.views.zenpy ' )
@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.
Функция проверки попытки назначения тикета на light_agent.
"""
"""
G etU serM ock. return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' light_agent ' ] )
g et_u ser_m 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 } )
self . agent_client . post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 3 } )
tickets = Z enpyM ock. update_tickets . call_args
tickets = z enpy_m ock. update_tickets . call_args
self . assertIsNone ( tickets )
self . assertIsNone ( tickets )
@patch ( ' main.views.zenpy ' )
@patch ( ' main.views.zenpy ' )
@patch ( ' main.views.get_tickets_list_for_group ' )
@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.
Функция проверки попытки назначения нуля тикета на engineer.
"""
"""
TicketsMock . return_value = [ Mock ( ) ] * 3
TicketsMock . return_value = [ Mock ( ) ] * 3
Z enpyM ock. get_user . return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' engineer ' ] )
z enpy_m 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 } )
self . engineer_ client. post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : 0 } )
tickets = Z enpyM ock. update_tickets . call_args [ 0 ] [ 0 ]
tickets = z enpy_m ock. update_tickets . call_args [ 0 ] [ 0 ]
self . assertListEqual ( tickets , [ ] )
self . assertListEqual ( tickets , [ ] )
@patch ( ' main.views.get_tickets_list_for_group ' )
@patch ( ' main.views.get_tickets_list_for_group ' )
@patch ( ' main.views.zenpy ' )
@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.
Функция проверки попытки назначения нуля тикетов на engineer.
"""
"""
T icketsM ock. return_value = [ Mock ( ) ] * 3
group_t ickets_m ock. return_value = [ Mock ( ) ] * 3
Z enpyM ock. get_user . return_value = Mock ( role = ' agent ' , custom_role_id = sets . ZENDESK_ROLES [ ' engineer ' ] )
z enpy_m 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 ' } )
self . engineer_ client. post ( reverse ( ' work_get_tickets ' ) , data = { ' count_tickets ' : ' asd ' } )
tickets = Z enpyM ock. update_tickets . call_args
tickets = z enpy_m ock. update_tickets . call_args
self . assertIsNone ( tickets )
self . assertIsNone ( tickets )
@@ -412,3 +489,43 @@ class ProfileTestCase(TestCase):
resp = self . client . get ( reverse ( ' profile ' ) )
resp = self . client . get ( reverse ( ' profile ' ) )
user = zenpy . get_user ( self . zendesk_agent_email )
user = zenpy . get_user ( self . zendesk_agent_email )
self . assertEqual ( resp . context [ ' profile ' ] . image , user . photo [ ' content_url ' ] if user . photo else None )
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 ' )