56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """impersonation tests"""
 | |
| from django.shortcuts import reverse
 | |
| from django.test.testcases import TestCase
 | |
| 
 | |
| from passbook.core.models import User
 | |
| 
 | |
| 
 | |
| class TestImpersonation(TestCase):
 | |
|     """impersonation tests"""
 | |
| 
 | |
|     def setUp(self) -> None:
 | |
|         super().setUp()
 | |
|         self.other_user = User.objects.create(username="to-impersonate")
 | |
|         self.pbadmin = User.objects.get(username="pbadmin")
 | |
| 
 | |
|     def test_impersonate_simple(self):
 | |
|         """test simple impersonation and un-impersonation"""
 | |
|         self.client.force_login(self.pbadmin)
 | |
| 
 | |
|         self.client.get(
 | |
|             reverse(
 | |
|                 "passbook_core:impersonate-init", kwargs={"user_id": self.other_user.pk}
 | |
|             )
 | |
|         )
 | |
| 
 | |
|         response = self.client.get(reverse("passbook_core:overview"))
 | |
|         self.assertIn(self.other_user.username, response.content.decode())
 | |
|         self.assertNotIn(self.pbadmin.username, response.content.decode())
 | |
| 
 | |
|         self.client.get(reverse("passbook_core:impersonate-end"))
 | |
| 
 | |
|         response = self.client.get(reverse("passbook_core:overview"))
 | |
|         self.assertNotIn(self.other_user.username, response.content.decode())
 | |
|         self.assertIn(self.pbadmin.username, response.content.decode())
 | |
| 
 | |
|     def test_impersonate_denied(self):
 | |
|         """test impersonation without permissions"""
 | |
|         self.client.force_login(self.other_user)
 | |
| 
 | |
|         self.client.get(
 | |
|             reverse(
 | |
|                 "passbook_core:impersonate-init", kwargs={"user_id": self.pbadmin.pk}
 | |
|             )
 | |
|         )
 | |
| 
 | |
|         response = self.client.get(reverse("passbook_core:overview"))
 | |
|         self.assertIn(self.other_user.username, response.content.decode())
 | |
|         self.assertNotIn(self.pbadmin.username, response.content.decode())
 | |
| 
 | |
|     def test_un_impersonate_empty(self):
 | |
|         """test un-impersonation without impersonating first"""
 | |
|         self.client.force_login(self.other_user)
 | |
| 
 | |
|         response = self.client.get(reverse("passbook_core:impersonate-end"))
 | |
|         self.assertRedirects(response, reverse("passbook_core:overview"))
 | 
