Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def testRequestBuilderLimitNegativeOne(self):
""" Should skip limit = 100 param if limit is set to -1
"""
zot = z.Zotero("myuserID", "user", "myuserkey")
zot.add_parameters(limit=-1, start=7)
self.assertEqual(parse_qs("start=7&format=json"), parse_qs(zot.url_params))
def testParseAttachmentsJSONDoc(self):
""" Ensure that attachments are being correctly parsed """
zot = z.Zotero("myuserid", "user", "myuserkey")
HTTPretty.register_uri(
HTTPretty.GET,
"https://api.zotero.org/users/myuserid/items",
content_type="application/json",
body=self.attachments_doc,
)
attachments_data = zot.items()
self.assertEqual(u"1641 Depositions", attachments_data["data"]["title"])
def testParamsBlankAfterCall(self):
""" self.url_params should be blank after an API call
"""
zot = z.Zotero("myuserID", "user", "myuserkey")
HTTPretty.register_uri(
HTTPretty.GET,
"https://api.zotero.org/users/myuserID/items",
content_type="application/json",
body=self.items_doc,
)
zot.items()
self.assertEqual(None, zot.url_params)
def testResponseUnsupported(self):
""" Ensure that an error is properly raised for 400
"""
zot = z.Zotero("myuserID", "user", "myuserkey")
HTTPretty.register_uri(
HTTPretty.GET,
"https://api.zotero.org/users/myuserID/items",
content_type="application/json",
body=self.items_doc,
status=400,
)
with self.assertRaises(z.ze.UnsupportedParams):
zot.items()
def testParseCollectionVersionsResponse(self):
""" Check that parsing version dict returned by format = versions works """
zot = z.Zotero("myuserid", "user", "myuserkey")
HTTPretty.register_uri(
HTTPretty.GET,
"https://api.zotero.org/users/myuserid/collections?format=versions",
content_type="application/json",
body=self.collection_versions,
)
iversions = zot.collection_versions()
self.assertEqual(iversions["RRK27C5F"], 4000)
self.assertEqual(iversions["EAWCSKSF"], 4087)
self.assertEqual(len(iversions), 2)
def testGetTemplate(self):
""" Ensure that item templates are retrieved and converted into dicts
"""
zot = z.Zotero("myuserID", "user", "myuserkey")
HTTPretty.register_uri(
HTTPretty.GET,
"https://api.zotero.org/items/new?itemType=book",
content_type="application/json",
body=self.item_templt,
)
t = zot.item_template("book")
self.assertEqual("book", t["itemType"])
def testTooManyItems(self):
""" Should fail because we're passing too many items
"""
itms = [i for i in range(51)]
zot = z.Zotero("myuserID", "user", "myuserkey")
with self.assertRaises(z.ze.TooManyItems):
zot.create_items(itms)
def testParseItemJSONDoc(self):
""" Should successfully return a list of item dicts, key should match
input doc's zapi:key value, and author should have been correctly
parsed out of the XHTML payload
"""
zot = z.Zotero("myuserID", "user", "myuserkey")
HTTPretty.register_uri(
HTTPretty.GET,
"https://api.zotero.org/users/myuserID/items",
content_type="application/json",
body=self.item_doc,
)
items_data = zot.items()
self.assertEqual(u"X42A7DEE", items_data["data"]["key"])
self.assertEqual(
u"Institute of Physics (Great Britain)",
items_data["data"]["creators"][0]["name"],
)
self.assertEqual(u"book", items_data["data"]["itemType"])
test_dt = parser.parse("2011-01-13T03:37:29Z")
incoming_dt = parser.parse(items_data["data"]["dateModified"])
self.assertEqual(test_dt, incoming_dt)
def testCreateCollectionError(self):
""" Ensure that collection creation fails with the wrong dict
"""
zot = z.Zotero("myuserID", "user", "myuserkey")
t = [{"foo": "bar"}]
with self.assertRaises(z.ze.ParamNotPassed):
t = zot.create_collections(t)
def testCollectionCreationLastModified(self):
""" Tests creation of a new collection with last_modified param
"""
zot = z.Zotero("myuserID", "user", "myuserkey")
HTTPretty.register_uri(
HTTPretty.POST,
"https://api.zotero.org/users/myuserID/collections",
body=self.creation_doc,
content_type="application/json",
status=200,
)
# now let's test something
resp = zot.create_collections(
[{"name": "foo", "key": "ABC123"}], last_modified=5
)
self.assertEqual("ABC123", resp["success"]["0"])
request = httpretty.last_request()
self.assertEqual(request.headers["If-Unmodified-Since-Version"], "5")