Exemple #1
0
    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)
Exemple #2
0
 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())
Exemple #3
0
 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())
Exemple #5
0
 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')
Exemple #6
0
 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')
Exemple #8
0
 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)
Exemple #11
0
 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')
Exemple #13
0
 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)
Exemple #15
0
 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)
Exemple #17
0
 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())
Exemple #19
0
 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
Exemple #20
0
 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())
Exemple #21
0
 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)
Exemple #23
0
 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
             ]
         })
Exemple #24
0
 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())
Exemple #26
0
 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)