예제 #1
0
    def test_sharedfile_saved_to_group_shake(self):
        test_files = os.path.join(os.path.dirname(os.path.dirname(__file__)), "files")
        file_key = Sourcefile.get_sha1_file_key(test_files + "/1.png")
        shutil.copyfile("%s/1.png" % (test_files), "/tmp/%s" % (file_key))

        #create a new shake
        group_shake = Shake(user_id=self.user.id, type='group', title='asdf', name='asdf')
        group_shake.save()

        a_shared_file = Sharedfile.create_from_file("/tmp/%s" % (file_key),"1.png", file_key, "image/png", self.user.id, group_shake.id)
        self.assertTrue(group_shake.can_update(self.user.id))

        a_shared_file.add_to_shake(self.user.shake())

        ssfs = Shakesharedfile.all()
        for ssf in ssfs:
            self.assertEqual(ssf.sharedfile_id, a_shared_file.id)
예제 #2
0
class ShakeModelTests(BaseTestCase):
    def setUp(self):
        super(ShakeModelTests, self).setUp()
        self.user = User(name='admin',
                         email='*****@*****.**',
                         email_confirmed=1,
                         is_paid=1)
        self.user.set_password('asdfasdf')
        self.user.save()

        self.shake = Shake(user_id=self.user.id,
                           name='asdf',
                           type='group',
                           title='My Test Shake',
                           description='Testing this shake test.')
        self.shake.save()

    def test_correct_owner_is_returned(self):
        """
        Verifies the owner is correctly returned
        """
        self.assertEqual(self.user.id, self.shake.user_id)

    def test_correct_page_image_is_returned(self):
        """
        If an image exists, it should return the correct path.
        """
        self.assertEqual(None, self.shake.page_image())
        self.assertEqual('/static/images/default-icon-venti.svg',
                         self.user.shake().page_image())
        self.shake.image = 1
        self.shake.save
        self.assertEqual(
            'https://%s.s3.amazonaws.com/account/1/shake_asdf.jpg' %
            options.aws_bucket, self.shake.page_image())

    def test_correct_thumbnail_url_is_returned(self):
        """
        If an image exists, it should return the correct thumbnail path
        """
        self.assertEqual(
            'https://mltshp-cdn.com/static/images/default-icon-venti.svg',
            self.shake.thumbnail_url())
        self.assertEqual(
            'https://mltshp-cdn.com/static/images/default-icon-venti.svg',
            self.user.shake().thumbnail_url())
        self.shake.image = 1
        self.shake.save()
        self.assertEqual(
            'https://%s.s3.amazonaws.com/account/1/shake_asdf_small.jpg' %
            options.aws_bucket, self.shake.thumbnail_url())

    def test_correct_path_is_returned(self):
        """
        Simply returns the correct path for the shake
        """
        self.assertEqual('/asdf', self.shake.path())
        self.assertEqual('/user/admin', self.user.shake().path())

    def test_correct_display_name_is_returned(self):
        """
        Display name or title is returned if set.
        """
        self.assertEqual('My Test Shake', self.shake.display_name())
        self.assertEqual('admin', self.user.shake().display_name())

    def test_user_can_update_shake(self):
        """
        Tests that a user can and cannot update a certain shake
        """
        user1 = User(name='user1',
                     email='*****@*****.**',
                     email_confirmed=1,
                     is_paid=1)
        user1.set_password('asdfasdf')
        user1.save()
        user2 = User(name='user2',
                     email='*****@*****.**',
                     email_confirmed=1,
                     is_paid=1)
        user2.set_password('asdfasdf')
        user2.save()

        self.shake.add_manager(user1)

        self.assertTrue(self.shake.can_update(user1.id))
        self.assertTrue(self.shake.can_update(self.user.id))
        self.assertFalse(self.shake.can_update(user2.id))

    def test_saving_validates_title(self):
        """
        Creates shakes with valid and invalid titles
        """
        valid_titles = ['asdf', 'This is a test.']
        invalid_titles = ['', None]
        identifier = 1

        for title in valid_titles:
            self.assertTrue(
                Shake(user_id=self.user.id,
                      title=title,
                      name='testing%s' % (identifier),
                      type='group').save())
            identifier += 1
        for title in invalid_titles:
            self.assertFalse(
                Shake(user_id=self.user.id,
                      title=title,
                      name='testing%s' % (identifier),
                      type='group').save())
            identifier += 1

    def test_saving_validates_name(self):
        """
        Creates shakes with valid and invalid names
        """
        valid_names = [
            'a-b-c', 'qwerty', '1234', '2a93sfj', 'asdfgasdfgasdfgasdfgasdfg'
        ]
        invalid_names = [
            '',
            None,
            'a x',
            'AsDf',
            'static',  #asdf exists in the setup, static is reserved
            'asdfgasdfgasdfgasdfgasdfgx'
        ]  #too long

        for name in valid_names:
            self.assertTrue(
                Shake(user_id=self.user.id,
                      title="some text",
                      name=name,
                      type='group').save())
        for name in invalid_names:
            self.assertFalse(
                Shake(user_id=self.user.id,
                      title="some text",
                      name=name,
                      type='group').save())

    def test_subscribers(self):
        """
        Tests whether subscribers returned are the subscribers to a particular shake.
        """
        user1 = User(name='user1',
                     email='*****@*****.**',
                     email_confirmed=1,
                     is_paid=1)
        user1.set_password('asdfasdf')
        user1.save()
        user2 = User(name='user2',
                     email='*****@*****.**',
                     email_confirmed=1,
                     is_paid=1)
        user2.set_password('asdfasdf')
        user2.save()

        user1.subscribe(self.shake)
        user2.subscribe(self.shake)

        self.assertTrue(user1.id in [s.id for s in self.shake.subscribers()])
        self.assertTrue(user2.id in [s.id for s in self.shake.subscribers()])

        user1.unsubscribe(self.shake)
        self.assertFalse(user1.id in [s.id for s in self.shake.subscribers()])

        user1.subscribe(self.shake)
        self.assertTrue(user1.id in [s.id for s in self.shake.subscribers()])

    def test_paginated_sharedfiles_and_count(self):
        """
        Tests both the pagination of a shake's shared files and the count
        """
        sharedfiles = []
        sourcefile = Sourcefile(width=20,
                                height=20,
                                file_key="asdf",
                                thumb_key="asdf_t")
        sourcefile.save()

        for i in range(31):
            sf = Sharedfile(source_id=sourcefile.id,
                            name="my shared file",
                            user_id=self.user.id,
                            content_type="image/png",
                            share_key="1",
                            description="some\ndescription\nhere",
                            source_url="https://www.mltshp.com/?hi")
            sf.save()
            sf.add_to_shake(self.shake)
            sharedfiles.append(sf)

        self.assertEqual(len(self.shake.sharedfiles()), 10)  #default
        self.assertEqual(len(self.shake.sharedfiles(page=1)), 10)
        self.assertEqual(len(self.shake.sharedfiles(page=2)), 10)
        self.assertEqual(len(self.shake.sharedfiles(page=3)), 10)
        self.assertEqual(len(self.shake.sharedfiles(page=4)), 1)

        self.assertEqual(len(self.shake.sharedfiles(page=1, per_page=31)), 31)

    def test_adding_manager(self):
        """
        Verifies adding a new manager works
        """
        user1 = User(name='user1',
                     email='*****@*****.**',
                     email_confirmed=1,
                     is_paid=1)
        user1.set_password('asdfasdf')
        user1.save()

        self.shake.add_manager(user1)
        self.assertTrue(user1.id in [m.id for m in self.shake.managers()])
        self.shake.remove_manager(user1)
        self.assertFalse(user1.id in [m.id for m in self.shake.managers()])
        self.shake.add_manager(user1)
        self.assertTrue(user1.id in [m.id for m in self.shake.managers()])

    def test_can_edit(self):
        """
        Tests whether a user has the ability to edit a shake
        """
        user1 = User(name='user1',
                     email='*****@*****.**',
                     email_confirmed=1,
                     is_paid=1)
        user1.set_password('asdfasdf')
        user1.save()

        self.assertTrue(self.shake.can_edit(self.user))
        self.assertFalse(self.shake.can_edit(user1))