예제 #1
0
 def test_checked_out_merge(self):
     user = factories.AuthUserFactory()
     node = ProjectFactory(creator=user)
     osfstorage = node.get_addon('osfstorage')
     root_node = osfstorage.get_root()
     file = root_node.append_file('test_file')
     user_merge_target = factories.AuthUserFactory()
     file.check_in_or_out(user, user, save=True)
     file.reload()
     assert_equal(file.checkout, user)
     user_merge_target.merge_user(user)
     file.reload()
     assert_equal(user_merge_target.id, file.checkout.id)
예제 #2
0
    def test_checkout_logs(self):
        non_admin = factories.AuthUserFactory()
        self.node.add_contributor(non_admin, permissions=['read', 'write'])
        self.node.save()
        self.file.check_in_or_out(non_admin, non_admin, save=True)
        self.file.reload()
        self.node.reload()
        assert_equal(self.file.checkout, non_admin)
        assert_equal(self.node.logs.latest().action, 'checked_out')
        assert_equal(self.node.logs.latest().user, non_admin)

        self.file.check_in_or_out(self.user, None, save=True)
        self.file.reload()
        self.node.reload()
        assert_equal(self.file.checkout, None)
        assert_equal(self.node.logs.latest().action, 'checked_in')
        assert_equal(self.node.logs.latest().user, self.user)

        self.file.check_in_or_out(self.user, self.user, save=True)
        self.file.reload()
        self.node.reload()
        assert_equal(self.file.checkout, self.user)
        assert_equal(self.node.logs.latest().action, 'checked_out')
        assert_equal(self.node.logs.latest().user, self.user)

        with assert_raises(FileNodeCheckedOutError):
            self.file.check_in_or_out(non_admin, None, save=True)

        with assert_raises(FileNodeCheckedOutError):
            self.file.check_in_or_out(non_admin, non_admin, save=True)
예제 #3
0
 def setUp(self):
     super(TestOsfStorageCheckout, self).setUp()
     self.user = factories.AuthUserFactory()
     self.node = ProjectFactory(creator=self.user)
     self.osfstorage = self.node.get_addon('osfstorage')
     self.root_node = self.osfstorage.get_root()
     self.file = self.root_node.append_file('3005')
예제 #4
0
    def test_attempt_delete_rented_file(self):
        user = factories.AuthUserFactory()
        file_checked = self.root_node.append_file('Newfile')
        file_checked.checkout = user
        file_checked.save()

        res = self.delete(file_checked, expect_errors=True)
        assert_equal(res.status_code, 403)
예제 #5
0
    def test_attempt_delete_folder_with_rented_file(self):
        folder = self.root_node.append_folder('Hotel Events')
        user = factories.AuthUserFactory()
        file_checked = folder.append_file('Checkout time')
        file_checked.checkout = user
        file_checked.save()

        res = self.delete(folder, expect_errors=True)
        assert_equal(res.status_code, 403)
예제 #6
0
    def test_attempt_delete_double_nested_folder_rented_file(self):
        folder = self.root_node.append_folder('One is not enough')
        folder_two = folder.append_folder('Two might be doe')
        user = factories.AuthUserFactory()
        file_checked = folder_two.append_file('We shall see')
        file_checked.checkout = user
        file_checked.save()

        res = self.delete(folder, expect_errors=True)
        assert_equal(res.status_code, 403)
예제 #7
0
    def test_upload_fail_to_create_version_due_to_checkout(self):
        user = factories.AuthUserFactory()
        name = 'Gunter\'s noise.mp3'
        self.node_settings.get_root().append_file(name)
        root = self.node_settings.get_root()
        file = root.find_child_by_name(name)
        file.checkout = user
        file.save()
        res = self.send_upload_hook(root, payload=self.make_payload(name=name), expect_errors=True)

        assert_equal(res.status_code, 403)
예제 #8
0
 def test_validate_location(self):
     creator = factories.AuthUserFactory()
     version = factories.FileVersionFactory.build(creator=creator, location={'invalid': True})
     with assert_raises(ValidationError):
         version.save()
     version.location = {
         'service': 'cloud',
         settings.WATERBUTLER_RESOURCE: 'osf',
         'object': 'object',
     }
     version.save()
예제 #9
0
 def test_remove_contributor_with_checked_file(self):
     user = factories.AuthUserFactory()
     models.Contributor.objects.create(node=self.node,
                                       user=user,
                                       visible=True)
     self.node.add_permission(user, ADMIN)
     self.file.check_in_or_out(self.user, self.user, save=True)
     self.file.reload()
     assert_equal(self.file.checkout, self.user)
     self.file.target.remove_contributors([self.user], save=True)
     self.file.reload()
     assert_equal(self.file.checkout, None)
예제 #10
0
 def test_remove_contributor_with_checked_file(self):
     user = factories.AuthUserFactory()
     Contributor.objects.create(node=self.node,
                                user=user,
                                admin=True,
                                write=True,
                                read=True,
                                visible=True)
     self.file.check_in_or_out(self.user, self.user, save=True)
     self.file.reload()
     assert_equal(self.file.checkout, self.user)
     self.file.node.remove_contributors([self.user], save=True)
     self.file.reload()
     assert_equal(self.file.checkout, None)
예제 #11
0
 def setUp(self):
     super(TestOsfStorageFileVersion, self).setUp()
     self.user = factories.AuthUserFactory()
     self.mock_date = datetime.datetime(1991, 10, 31, tzinfo=pytz.UTC)