def test_save_resource_with_same_name_as_another_resource(self): """Should still generate a unique slug.""" user = self.create_user() with File(get_in_memory_image_file()) as tempfile: resource = Resource(name='wasabi peas', attachment=tempfile, created_by=user) resource.save() with File(get_in_memory_image_file()) as tempfile: new_resource = Resource(name='wasabi peas', attachment=tempfile, created_by=user) new_resource.save() self.assertTrue(new_resource.slug.startswith('wasabi-peas-')) self.assertNotEqual(new_resource.slug, resource.slug)
def test_upload_photos(self): """create_image should return JSON response with filelink and id.""" response = self.client.post(reverse('create_image'), {'file': get_in_memory_image_file()}) json_response = json.loads(response.content) self.assertTrue('filelink' in json_response[0].keys()) self.assertTrue(json_response[0]['filelink'].startswith( settings.ORIGIN)) self.assertTrue('id' in json_response[0].keys())
def test_save_new_resource(self): """Test saving a new Resource.""" with File(get_in_memory_image_file()) as tempfile: user = self.create_user() resource = Resource(name='something cool', attachment=tempfile, created_by=user) resource.save() self.assertEqual(resource.slug, 'something-cool')
def test_upload_photos(self): """create_image should return JSON response with filelink and id.""" response = self.client.post( reverse('create_image'), {'file': get_in_memory_image_file()} ) json_response = json.loads(response.content) self.assertTrue('filelink' in json_response[0].keys()) self.assertTrue( json_response[0]['filelink'].startswith(settings.ORIGIN)) self.assertTrue('id' in json_response[0].keys())
def test_delete(self): """Test deleting a resource.""" user = self.create_user() with File(get_in_memory_image_file()) as tempfile: resource = Resource(name='wasabi peas', attachment=tempfile, created_by=user) resource.save() self.assertEqual(resource.status, 'active') resource.delete() self.assertEqual(resource.status, 'deleted')
def setUp(self): """Prepare common items.""" self.group = mommy.make('groups.Group') self.user = self.create_user() self.resource = Resource.objects.create( attachment=get_in_memory_image_file(), name='test resource', created_by=self.user) self.resource.groups.add(self.group) self.url = reverse('update_resource', kwargs={'uuid': self.resource.uuid})
def test_save_new_resource(self): """Test saving a new Resource.""" with File(get_in_memory_image_file()) as tempfile: user = self.create_user() resource = Resource( name='something cool', attachment=tempfile, created_by=user ) resource.save() self.assertEqual(resource.slug, 'something-cool')
def test_process_image(self, mock): """Testing for process_image task""" image_mock = Mock() image_mock.image.read.return_value = get_in_memory_image_file().read() image_model = Mock() image_model.objects.get.return_value = image_mock mock.return_value = image_model tasks.process_image(image_id=1) self.assertEqual(image_mock.create_display_size.call_count, 1) self.assertEqual(image_mock.create_thumbnail.call_count, 1) self.assertEqual(image_mock.process_exif_data.call_count, 1)
def setUp(self): """Prepare common items.""" self.group = mommy.make('groups.Group') self.user = self.create_user() self.resource = Resource.objects.create( attachment=get_in_memory_image_file(), name='test resource', created_by=self.user ) self.resource.groups.add(self.group) self.url = reverse( 'delete_resource', kwargs={'uuid': self.resource.uuid})
def test_save_resource_with_same_name_as_another_resource(self): """Should still generate a unique slug.""" user = self.create_user() with File(get_in_memory_image_file()) as tempfile: resource = Resource( name='wasabi peas', attachment=tempfile, created_by=user ) resource.save() with File(get_in_memory_image_file()) as tempfile: new_resource = Resource( name='wasabi peas', attachment=tempfile, created_by=user ) new_resource.save() self.assertTrue(new_resource.slug.startswith('wasabi-peas-')) self.assertNotEqual(new_resource.slug, resource.slug)
def test_permission_required_to_create_resource(self): """User needs permission to create new resources.""" group = mommy.make('groups.Group') user = self.create_user() group.owners.add(user) self.login(user) response = self.client.post( reverse('create_resource'), { 'attachment': get_in_memory_image_file(), 'name': 'Test resource', 'groups': [group.pk] }) self.assertEqual(response.status_code, 403)
def test_delete(self): """Test deleting a resource.""" user = self.create_user() with File(get_in_memory_image_file()) as tempfile: resource = Resource( name='wasabi peas', attachment=tempfile, created_by=user ) resource.save() self.assertEqual(resource.status, 'active') resource.delete() self.assertEqual(resource.status, 'deleted')
def test_only_owner_can_modify_resource(self): """Only the creator of a resource should be able to modify it.""" user = self.create_user() permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') user.user_permissions.add(permission) self.group.owners.add(user) self.login(user) response = self.client.post( self.url, { 'attachment': get_in_memory_image_file(), 'name': 'agafdsafdsagewa', 'groups': [self.group.pk] }) self.assertEqual(response.status_code, 403)
def test_permission_required_to_create_resource(self): """User needs permission to create new resources.""" group = mommy.make('groups.Group') user = self.create_user() group.owners.add(user) self.login(user) response = self.client.post( reverse('create_resource'), { 'attachment': get_in_memory_image_file(), 'name': 'Test resource', 'groups': [group.pk] } ) self.assertEqual(response.status_code, 403)
def test_with_image(self): """Make sure the user's image gets set when it is provided.""" data = { 'image': get_in_memory_image_file(), 'timezone': 'US/Central', 'group_notification_period': 'none', 'email': self.user.email } response = self.client.post( reverse('update_user', args=(self.user.uuid, )), data) self.assertRedirects( response, reverse('user_details', kwargs={'user_uuid': self.user.uuid})) user = User.objects.get(pk=self.user.pk) data['image'].seek(0) self.assertEqual(user.image.image.read(), data['image'].read())
def test_only_owner_can_modify_resource(self): """Only the creator of a resource should be able to modify it.""" user = self.create_user() permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') user.user_permissions.add(permission) self.group.owners.add(user) self.login(user) response = self.client.post( self.url, { 'attachment': get_in_memory_image_file(), 'name': 'agafdsafdsagewa', 'groups': [self.group.pk] } ) self.assertEqual(response.status_code, 403)
def test_form_valid(self): """Test form_valid.""" permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') self.user.user_permissions.add(permission) self.group.owners.add(self.user) self.login(self.user) old_attachment = self.resource.attachment response = self.client.post( self.url, { 'attachment': get_in_memory_image_file(), 'name': 'agafdsafdsagewa', 'groups': [self.group.pk] }) self.assertRedirects(response, reverse('resources')) resource = Resource.objects.get(pk=self.resource.pk) self.assertEqual(resource.name, 'agafdsafdsagewa') self.assertNotEqual(resource.attachment, old_attachment)
def test_with_image(self): """Make sure the user's image gets set when it is provided.""" data = { 'image': get_in_memory_image_file(), 'timezone': 'US/Central', 'group_notification_period': 'none', 'email': self.user.email } response = self.client.post( reverse('update_user', args=(self.user.uuid,)), data) self.assertRedirects( response, reverse('user_profile'), target_status_code=302 ) user = User.objects.get(pk=self.user.pk) data['image'].seek(0) self.assertEqual(user.image.image.read(), data['image'].read())
def create_resource(self, **kwargs): """Creates a resource for testing.""" name = kwargs.get('name', 'test resource') if 'user' not in kwargs: user = self.create_user() else: user = kwargs['user'] if 'groups' not in kwargs: groups = [mommy.make('groups.Group')] groups[0].owners.add(user) else: groups = kwargs['groups'] with File(get_in_memory_image_file()) as tempfile: resource = Resource(name=name, attachment=tempfile, created_by=user) resource.save() resource.groups.add(*groups) return resource
def test_user_has_super_create_permission(self): """Users with elevated permissions can create resources anywhere.""" group = mommy.make('groups.Group') user = self.create_user() add_permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') anywhere_permission = Permission.objects.get_by_natural_key( 'can_add_resource_anywhere', 'resources', 'resource') user.user_permissions.add(add_permission, anywhere_permission) self.login(user) response = self.client.post( reverse('create_resource'), { 'attachment': get_in_memory_image_file(), 'name': 'fjkliogaer89u032fjkl', 'groups': [group.pk] }) self.assertRedirects(response, reverse('resources')) resource = Resource.objects.get(name='fjkliogaer89u032fjkl') self.assertTrue(resource.groups.filter(pk=group.pk).exists())
def test_user_has_super_create_permission_can_modify_any_resource(self): """A user with elevated permissions can edit any resource.""" user = self.create_user() add_permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') anywhere_permission = Permission.objects.get_by_natural_key( 'can_add_resource_anywhere', 'resources', 'resource') user.user_permissions.add(add_permission, anywhere_permission) self.login(user) old_attachment = self.resource.attachment response = self.client.post( self.url, { 'attachment': get_in_memory_image_file(), 'name': 'agafdsafdsagewa', 'groups': [self.group.pk] }) self.assertRedirects(response, reverse('resources')) resource = Resource.objects.get(pk=self.resource.pk) self.assertEqual(resource.name, 'agafdsafdsagewa') self.assertNotEqual(resource.attachment, old_attachment)
def test_form_valid(self): """Test form_valid.""" permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') self.user.user_permissions.add(permission) self.group.owners.add(self.user) self.login(self.user) old_attachment = self.resource.attachment response = self.client.post( self.url, { 'attachment': get_in_memory_image_file(), 'name': 'agafdsafdsagewa', 'groups': [self.group.pk] } ) self.assertRedirects(response, reverse('resources')) resource = Resource.objects.get(pk=self.resource.pk) self.assertEqual(resource.name, 'agafdsafdsagewa') self.assertNotEqual(resource.attachment, old_attachment)
def test_user_has_permission_but_is_not_group_owner(self): """Users can only create resources for groups they own.""" group = mommy.make('groups.Group') user = self.create_user() permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') user.user_permissions.add(permission) self.login(user) response = self.client.post( reverse('create_resource'), { 'attachment': get_in_memory_image_file(), 'name': 'Test resource', 'groups': [group.pk] }) self.assertEqual( response.context_data['form'].errors, { 'groups': [ u'Select a valid choice. ' u'%s is not one of the available choices.' % group.pk ] })
def create_resource(self, **kwargs): """Creates a resource for testing.""" name = kwargs.get('name', 'test resource') if 'user' not in kwargs: user = self.create_user() else: user = kwargs['user'] if 'groups' not in kwargs: groups = [mommy.make('groups.Group')] groups[0].owners.add(user) else: groups = kwargs['groups'] with File(get_in_memory_image_file()) as tempfile: resource = Resource( name=name, attachment=tempfile, created_by=user ) resource.save() resource.groups.add(*groups) return resource
def test_user_has_super_create_permission(self): """Users with elevated permissions can create resources anywhere.""" group = mommy.make('groups.Group') user = self.create_user() add_permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') anywhere_permission = Permission.objects.get_by_natural_key( 'can_add_resource_anywhere', 'resources', 'resource') user.user_permissions.add(add_permission, anywhere_permission) self.login(user) response = self.client.post( reverse('create_resource'), { 'attachment': get_in_memory_image_file(), 'name': 'fjkliogaer89u032fjkl', 'groups': [group.pk] } ) self.assertRedirects(response, reverse('resources')) resource = Resource.objects.get(name='fjkliogaer89u032fjkl') self.assertTrue(resource.groups.filter(pk=group.pk).exists())
def test_form_valid(self): """Test form_valid.""" group = mommy.make('groups.Group') group2 = mommy.make('groups.Group') user = self.create_user() permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') user.user_permissions.add(permission) group.owners.add(user) group2.owners.add(user) self.login(user) response = self.client.post( reverse('create_resource'), { 'attachment': get_in_memory_image_file(), 'name': 'fjkliogaer89u032fjkl', 'groups': [group.pk, group2.pk] }) self.assertRedirects(response, reverse('resources')) resource = Resource.objects.get(name='fjkliogaer89u032fjkl') self.assertEqual(resource.content_type, 'image/png') self.assertEqual(resource.created_by, user) self.assertEqual(resource.groups.count(), 2)
def test_user_has_super_create_permission_can_modify_any_resource(self): """A user with elevated permissions can edit any resource.""" user = self.create_user() add_permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') anywhere_permission = Permission.objects.get_by_natural_key( 'can_add_resource_anywhere', 'resources', 'resource') user.user_permissions.add(add_permission, anywhere_permission) self.login(user) old_attachment = self.resource.attachment response = self.client.post( self.url, { 'attachment': get_in_memory_image_file(), 'name': 'agafdsafdsagewa', 'groups': [self.group.pk] } ) self.assertRedirects(response, reverse('resources')) resource = Resource.objects.get(pk=self.resource.pk) self.assertEqual(resource.name, 'agafdsafdsagewa') self.assertNotEqual(resource.attachment, old_attachment)
def test_user_has_permission_but_is_not_group_owner(self): """Users can only create resources for groups they own.""" group = mommy.make('groups.Group') user = self.create_user() permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') user.user_permissions.add(permission) self.login(user) response = self.client.post( reverse('create_resource'), { 'attachment': get_in_memory_image_file(), 'name': 'Test resource', 'groups': [group.pk] } ) self.assertEqual( response.context_data['form'].errors, {'groups': [ u'Select a valid choice. ' u'%s is not one of the available choices.' % group.pk ]} )
def test_form_valid(self): """Test form_valid.""" group = mommy.make('groups.Group') group2 = mommy.make('groups.Group') user = self.create_user() permission = Permission.objects.get_by_natural_key( 'add_resource', 'resources', 'resource') user.user_permissions.add(permission) group.owners.add(user) group2.owners.add(user) self.login(user) response = self.client.post( reverse('create_resource'), { 'attachment': get_in_memory_image_file(), 'name': 'fjkliogaer89u032fjkl', 'groups': [group.pk, group2.pk] } ) self.assertRedirects(response, reverse('resources')) resource = Resource.objects.get(name='fjkliogaer89u032fjkl') self.assertEqual(resource.content_type, 'image/png') self.assertEqual(resource.created_by, user) self.assertEqual(resource.groups.count(), 2)