def test_get_projects_as_anonymous(self): ProjectFactory.create_batch(size=5) url = reverse('project-list') response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.data, {'detail': 'Authentication credentials were not provided.'})
def test_unauthenticated(): ProjectFactory.create_batch(10, public=True) ProjectFactory.create_batch(10, public=False) view = ProjectList.as_view() factory = APIRequestFactory() request = factory.get('/projects/api/projects') response = view(request) assert len(response.data) == 10
def test_get_projects_as_admin(self): ProjectFactory.create_batch(size=5) user = AdminFactory() self.client.force_login(user) url = reverse('project-list') response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 0) self.assertEqual(len(Project.objects.available_for_user(user)), len(response.data))
def test_get_project_as_admin(self): project, *_ = ProjectFactory.create_batch(size=5) url = reverse('project-detail', args=(project.pk,)) user = AdminFactory() self.client.force_login(user) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(len(Project.objects.available_for_user(user)), 0)
def test_get_projects_as_owner(self): project, *_ = ProjectFactory.create_batch(size=4) self.client.force_login(project.owner) url = reverse('project-list') response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(Project.objects.filter(owner=project.owner).count(), len(response.data)) self.assertEqual(Project.objects.available_for_user(project.owner).count(), len(response.data)) self.assertEqual(project.name, response.data[0]['name'])
def test_authenticated(): ProjectFactory.create_batch(10, public=True) ProjectFactory.create_batch(10, public=False) # Create a user user = UserFactory.create() # Get required permission content_type = ContentType.objects.get_for_model(Project) permission = Permission.objects.get( codename='view_project', content_type=content_type, ) user.user_permissions.add(permission) # Make authenticated request view = ProjectList.as_view() factory = APIRequestFactory() request = factory.get('/projects/api/projects') force_authenticate(request, user=user) response = view(request) assert len(response.data) == 20
def handle(self, *args, **options): ProjectFactory.create_batch(5)