Example #1
0
 def test_delete_action_for_folder_deletes_subfolders_and_creates_trashed_file_nodes(self):
     file_node = self.get_test_file()
     subfolder = TestFolder(
         name="folder", node=self.project, path="/test/folder/", materialized_path="/test/folder/", versions=[]
     )
     subfolder.save()
     payload = {"provider": file_node.provider, "metadata": {"path": "/test/", "materialized": "/test/"}}
     views.addon_delete_file_node(
         self=None, node=self.project, user=self.user, event_type="file_removed", payload=payload
     )
     assert_false(StoredFileNode.load(file_node._id))
     assert_true(TrashedFileNode.load(file_node._id))
     assert_false(StoredFileNode.load(subfolder._id))
Example #2
0
 def test_delete_action_creates_trashed_file_node(self):
     file_node = self.get_test_file()
     payload = {"provider": file_node.provider, "metadata": {"path": "/test/Test", "materialized": "/test/Test"}}
     views.addon_delete_file_node(
         self=None, node=self.project, user=self.user, event_type="file_removed", payload=payload
     )
     assert_false(StoredFileNode.load(file_node._id))
     assert_true(TrashedFileNode.load(file_node._id))
Example #3
0
 def test_delete_action_for_folder_deletes_subfolders_and_creates_trashed_file_nodes(self):
     file_node = self.get_test_file()
     subfolder = TestFolder(
         name='folder',
         node=self.project,
         path='/test/folder/',
         materialized_path='/test/folder/',
         versions=[]
     )
     subfolder.save()
     payload = {
         'provider': file_node.provider,
         'metadata': {
             'path': '/test/',
             'materialized': '/test/'
         }
     }
     views.addon_delete_file_node(self=None, node=self.project, user=self.user, event_type='file_removed', payload=payload)
     assert_false(StoredFileNode.load(file_node._id))
     assert_true(TrashedFileNode.load(file_node._id))
     assert_false(StoredFileNode.load(subfolder._id))
Example #4
0
 def test_delete_action_creates_trashed_file_node(self):
     file_node = self.get_test_file()
     payload = {
         'provider': file_node.provider,
         'metadata': {
             'path': '/test/Test',
             'materialized': '/test/Test'
         }
     }
     views.addon_delete_file_node(self=None, node=self.project, user=self.user, event_type='file_removed', payload=payload)
     assert_false(StoredFileNode.load(file_node._id))
     assert_true(TrashedFileNode.load(file_node._id))
Example #5
0
 def test_delete_action_for_folder_deletes_subfolders_and_creates_trashed_file_nodes(self):
     file_node = self.get_test_file()
     subfolder = TestFolder(
         name='folder',
         node=self.project,
         path='/test/folder/',
         materialized_path='/test/folder/',
         versions=[]
     )
     subfolder.save()
     payload = {
         'provider': file_node.provider,
         'metadata': {
             'path': '/test/',
             'materialized': '/test/'
         }
     }
     views.addon_delete_file_node(self=None, node=self.project, user=self.user, event_type='file_removed', payload=payload)
     assert_false(StoredFileNode.load(file_node._id))
     assert_true(TrashedFileNode.load(file_node._id))
     assert_false(StoredFileNode.load(subfolder._id))
Example #6
0
 def test_delete_action_creates_trashed_file_node(self):
     file_node = self.get_test_file()
     payload = {
         'provider': file_node.provider,
         'metadata': {
             'path': '/test/Test',
             'materialized': '/test/Test'
         }
     }
     views.addon_delete_file_node(self=None, node=self.project, user=self.user, event_type='file_removed', payload=payload)
     assert_false(StoredFileNode.load(file_node._id))
     assert_true(TrashedFileNode.load(file_node._id))
Example #7
0
    def test_view_file_does_not_delete_file_when_requesting_invalid_version(self):
        with mock.patch(
            "website.addons.github.model.GitHubNodeSettings.is_private", new_callable=mock.PropertyMock
        ) as mock_is_private:
            mock_is_private.return_value = False

            file_node = self.get_test_file()
            assert_is(file_node.get_guid(), None)

            url = self.project.web_url_for(
                "addon_view_or_download_file", path=file_node.path.strip("/"), provider="github"
            )
            # First view generated GUID
            self.app.get(url, auth=self.user.auth)

            self.app.get(url + "?version=invalid", auth=self.user.auth, expect_errors=True)

            assert_is_not_none(StoredFileNode.load(file_node._id))
            assert_is_none(TrashedFileNode.load(file_node._id))
Example #8
0
def main():
    init_app(routes=False)
    dry = '--dry' in sys.argv
    if not dry:
        script_utils.add_file_logger(logger, __file__)
    with TokuTransaction():
        stored = StoredFileNode.find().get_keys()
        trashed = TrashedFileNode.find().get_keys()

        stored_set = set(stored)
        trashed_set = set(trashed)

        intersection = trashed_set & stored_set

        print('There are {} restored trashed file nodes'.format(len(intersection)))

        for trash_id in intersection:
            TrashedFileNode.remove_one(trash_id)
            print('Removed TrashedFileNode {}'.format(trash_id))

        if dry:
            raise RuntimeError('Dry run - rolling back transaction')
Example #9
0
    def test_view_file_does_not_delete_file_when_requesting_invalid_version(
            self):
        with mock.patch(
                'website.addons.github.model.GitHubNodeSettings.is_private',
                new_callable=mock.PropertyMock) as mock_is_private:
            mock_is_private.return_value = False

            file_node = self.get_test_file()
            assert_is(file_node.get_guid(), None)

            url = self.project.web_url_for(
                'addon_view_or_download_file',
                path=file_node.path.strip('/'),
                provider='github',
            )
            # First view generated GUID
            self.app.get(url, auth=self.user.auth)

            self.app.get(url + '?version=invalid',
                         auth=self.user.auth,
                         expect_errors=True)

            assert_is_not_none(StoredFileNode.load(file_node._id))
            assert_is_none(TrashedFileNode.load(file_node._id))