def bulk_article_delete(): # get the data from the request try: data = json.loads(request.data.decode("utf-8")) except: raise Api400Error("Supplied data was not valid JSON") ArticlesBulkApi.delete(data, current_user._get_current_object()) return no_content()
def bulk_article_delete(): # get the data from the request try: data = json.loads(request.data) except: raise Api400Error("Supplied data was not valid JSON") ArticlesBulkApi.delete(data, current_user._get_current_object()) return no_content()
def test_05_delete_articles_fail(self): # set up all the bits we need dataset = [] for i in range(10): data = ArticleFixtureFactory.make_incoming_api_article( doi="10.123/test/" + str(i), fulltext="http://example.com/" + str(i)) dataset.append(data) # create the main account we're going to work as article_owner = models.Account() article_owner.set_id("test") article_owner.set_name("Tester") article_owner.set_email("*****@*****.**") # create another account which will own the articles so the one # above will be "another user" trying to delete our precious articles. somebody_else = models.Account() somebody_else.set_id("somebody_else") somebody_else.set_name("Somebody Else") somebody_else.set_email("*****@*****.**") # add a journal to the article owner account to create that link # between account and articles journal = models.Journal(**JournalFixtureFactory.make_journal_source( in_doaj=True)) journal.set_owner(article_owner.id) journal.save() time.sleep(1) # call create on the objects (which will save it to the index) ids = ArticlesBulkApi.create(dataset, article_owner) # let the index catch up time.sleep(2) # call delete on the object in various context that will fail # without an account with self.assertRaises(Api401Error): ArticlesBulkApi.delete(ids, None) # with the wrong account article_owner.set_id("other") with self.assertRaises(Api400Error): ArticlesBulkApi.delete(ids, somebody_else) # on the wrong id ids.append("adfasdfhwefwef") article_owner.set_id("test") with self.assertRaises(Api400Error): ArticlesBulkApi.delete(ids, article_owner) with self.assertRaises(Api400Error): ArticlesBulkApi.delete(ids, article_owner)
def test_04_delete_article_success(self): # set up all the bits we need dataset = [] for i in range(10): data = ArticleFixtureFactory.make_incoming_api_article( doi="10.123/test/" + str(i), fulltext="http://example.com/" + str(i)) dataset.append(data) # create the account we're going to work as account = models.Account() account.set_id("test") account.set_name("Tester") account.set_email("*****@*****.**") # add a journal to the account journal = models.Journal(**JournalFixtureFactory.make_journal_source( in_doaj=True)) journal.set_owner(account.id) journal.save() time.sleep(1) # call create on the objects (which will save it to the index) ids = ArticlesBulkApi.create(dataset, account) # let the index catch up time.sleep(2) # now delete half of them dels = ids[:5] ArticlesBulkApi.delete(dels, account) # let the index catch up time.sleep(2) for id in dels: ap = models.Article.pull(id) assert ap is None for id in ids[5:]: ap = models.Article.pull(id) assert ap is not None
def test_05_delete_articles_fail(self): # set up all the bits we need dataset = [] for i in range(10): data = ArticleFixtureFactory.make_incoming_api_article(doi="10.123/test/" + str(i), fulltext="http://example.com/" + str(i)) dataset.append(data) # create the main account we're going to work as article_owner = models.Account() article_owner.set_id("test") article_owner.set_name("Tester") article_owner.set_email("*****@*****.**") # create another account which will own the articles so the one # above will be "another user" trying to delete our precious articles. somebody_else = models.Account() somebody_else.set_id("somebody_else") somebody_else.set_name("Somebody Else") somebody_else.set_email("*****@*****.**") # add a journal to the article owner account to create that link # between account and articles journal = models.Journal(**JournalFixtureFactory.make_journal_source(in_doaj=True)) journal.set_owner(article_owner.id) journal.save() time.sleep(1) # call create on the objects (which will save it to the index) ids = ArticlesBulkApi.create(dataset, article_owner) # let the index catch up time.sleep(2) # call delete on the object in various context that will fail # without an account with self.assertRaises(Api401Error): ArticlesBulkApi.delete(ids, None) # with the wrong account article_owner.set_id("other") with self.assertRaises(Api400Error): ArticlesBulkApi.delete(ids, somebody_else) # on the wrong id ids.append("adfasdfhwefwef") article_owner.set_id("test") with self.assertRaises(Api400Error): ArticlesBulkApi.delete(ids, article_owner) with self.assertRaises(Api400Error): ArticlesBulkApi.delete(ids, article_owner)
def test_04_delete_article_success(self): # set up all the bits we need dataset = [] for i in range(10): data = ArticleFixtureFactory.make_incoming_api_article(doi="10.123/test/" + str(i), fulltext="http://example.com/" + str(i)) dataset.append(data) # create the account we're going to work as account = models.Account() account.set_id("test") account.set_name("Tester") account.set_email("*****@*****.**") # add a journal to the account journal = models.Journal(**JournalFixtureFactory.make_journal_source(in_doaj=True)) journal.set_owner(account.id) journal.save() time.sleep(1) # call create on the objects (which will save it to the index) ids = ArticlesBulkApi.create(dataset, account) # let the index catch up time.sleep(2) # now delete half of them dels = ids[:5] ArticlesBulkApi.delete(dels, account) # let the index catch up time.sleep(2) for id in dels: ap = models.Article.pull(id) assert ap is None for id in ids[5:]: ap = models.Article.pull(id) assert ap is not None