def test_parse_json_threshold_reached(self): """ Assert that exception is thrown when rate limit threshold is reached. """ project = models.Project( name="foobar", homepage="https://foobar.com", version_url="foo/bar", backend=BACKEND, ) json = { "data": { "repository": { "refs": { "totalCount": 0 } }, "rateLimit": { "limit": 5000, "remaining": 500, "resetAt": "2008-09-03T20:56:35.450686", }, } } with self.assertRaises(RateLimitException): backend.parse_json(json, project) self.assertEqual(backend.reset_time, "2008-09-03T20:56:35.450686")
def test_parse_json_with_errors(self): """Test parsing JSON flagging errors.""" json = {"errors": [{"type": "FOO", "message": "BAR"}]} with self.assertRaises(AnityaPluginException) as excinfo: backend.parse_json(json, self.project) self.assertIn('"FOO": "BAR"', str(excinfo.exception))
def test_parse_json_threshold_exceeded(self): """Test behavior when rate limit threshold is exceeded.""" # Limit reached json = { "data": { "repository": {"refs": {"totalCount": 0}}, "rateLimit": { "limit": 5000, "remaining": 0, "resetAt": "2008-09-03T20:56:35.450686", }, } } with self.assertRaises(RateLimitException): backend.parse_json(json, self.project) self.assertEqual(backend.reset_time, "2008-09-03T20:56:35.450686")
def test_parse_json(self): """Test parsing a JSON response without errors.""" json = { "data": { "repository": { "refs": { "totalCount": 1, "edges": [ { "node": { "name": "1.0", "target": { "commitUrl": "https://foobar.com/foo/bar/commits/12345678" }, }, } ], }, }, "rateLimit": {"limit": 5000, "remaining": 5000, "resetAt": "dummy"}, } } exp = [ { "version": "1.0", "commit_url": "https://foobar.com/foo/bar/commits/12345678", } ] obs = backend.parse_json(json, self.project) self.assertEqual(exp, obs)
def test_parse_json_tag_missing(self): """Test parsing a JSON skips releases where tag is missing.""" project = models.Project( name="foobar", homepage="https://foobar.com", version_url="foo/bar", backend=BACKEND, releases_only=True, ) json = { "data": { "repository": { "releases": { "totalCount": 1, "edges": [ { "node": { "name": "This is a release", "tag": None }, }, ], }, }, "rateLimit": { "limit": 5000, "remaining": 5000, "resetAt": "dummy" }, } } obs = backend.parse_json(json, project) self.assertEqual([], obs)
def test_parse_json(self): """ Assert parsing json""" project = models.Project( name='foobar', homepage='https://foobar.com', version_url='foo/bar', backend=BACKEND, ) json = {"errors": [{"type": "FOO", "message": "BAR"}]} self.assertRaises(AnityaPluginException, backend.parse_json, json, project) # Limit reached json = { "data": { "repository": { "refs": { "totalCount": 0 } }, "rateLimit": { "limit": 5000, "remaining": 0, "resetAt": "2008-09-03T20:56:35.450686" } } } self.assertRaises(RateLimitException, backend.parse_json, json, project) json = { "data": { "repository": { "refs": { "totalCount": 1, "edges": [{ "node": { "name": "1.0" } }] } }, "rateLimit": { "limit": 5000, "remaining": 5000, "resetAt": "dummy" } } } exp = [u'1.0'] obs = backend.parse_json(json, project) self.assertEqual(exp, obs)
def test_parse_json(self): """ Assert parsing json""" project = models.Project( name="foobar", homepage="https://foobar.com", version_url="foo/bar", backend=BACKEND, ) json = {"errors": [{"type": "FOO", "message": "BAR"}]} self.assertRaises(AnityaPluginException, backend.parse_json, json, project) # Limit reached json = { "data": { "repository": {"refs": {"totalCount": 0}}, "rateLimit": { "limit": 5000, "remaining": 0, "resetAt": "2008-09-03T20:56:35.450686", }, } } self.assertRaises(RateLimitException, backend.parse_json, json, project) json = { "data": { "repository": { "refs": {"totalCount": 1, "edges": [{"node": {"name": "1.0"}}]} }, "rateLimit": {"limit": 5000, "remaining": 5000, "resetAt": "dummy"}, } } exp = [u"1.0"] obs = backend.parse_json(json, project) self.assertEqual(exp, obs)