def test_dates(self): """Check if it converts some dates to datetime objects""" date = str_to_datetime('2001-12-01') expected = datetime.datetime(2001, 12, 1, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('13-01-2001') expected = datetime.datetime(2001, 1, 13, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('12-01-01') expected = datetime.datetime(2001, 12, 1, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('2001-12-01 23:15:32') expected = datetime.datetime(2001, 12, 1, 23, 15, 32, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('2001-12-01 23:15:32 -0600') expected = datetime.datetime(2001, 12, 1, 23, 15, 32, tzinfo=dateutil.tz.tzoffset(None, -21600)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('2001-12-01 23:15:32Z') expected = datetime.datetime(2001, 12, 1, 23, 15, 32, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('Wed, 26 Oct 2005 15:20:32 -0100 (GMT+1)') expected = datetime.datetime(2005, 10, 26, 15, 20, 32, tzinfo=dateutil.tz.tzoffset(None, -3600)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('Wed, 22 Jul 2009 11:15:50 +0300 (FLE Daylight Time)') expected = datetime.datetime(2009, 7, 22, 11, 15, 50, tzinfo=dateutil.tz.tzoffset(None, 10800)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('Thu, 14 Aug 2008 02:07:59 +0200 CEST') expected = datetime.datetime(2008, 8, 14, 2, 7, 59, tzinfo=dateutil.tz.tzoffset(None, 7200)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('Thu, 14 Aug 2008 02:07:59 +0200 +0100') expected = datetime.datetime(2008, 8, 14, 2, 7, 59, tzinfo=dateutil.tz.tzoffset(None, 7200)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected)
def test_get_issues_empty(self): """Test get when the issue is empty API call""" from_date = str_to_datetime('2015-01-01') body = '{"total": 0, "maxResults": 0, "startAt": 0}' httpretty.register_uri(httpretty.GET, JIRA_SEARCH_URL, body=body, status=200) client = JiraClient(url='http://example.com', project='perceval', user='******', password='******', verify=False, cert=None, max_issues=1) pages = [page for page in client.get_issues(from_date)] expected_req = { 'expand': ['renderedFields,transitions,operations,changelog'], 'jql': ['project = perceval AND updated > 1420070400000 order by updated asc'], 'maxResults': ['1'], 'startAt': ['0'] } self.assertEqual(len(pages), 1) self.assertEqual(pages[0], body) self.assertDictEqual(httpretty.last_request().querystring, expected_req)
def test_get_pages_from_allrevisions_from_date(self): HTTPServer.routes() body = read_file('data/mediawiki_pages_allrevisions.json') client = MediaWikiClient(MEDIAWIKI_SERVER_URL) namespaces = ['0'] str_date = '2016-01-01 00:00' dt = str_to_datetime(str_date) from_date = datetime_to_utc(dt) response = client.get_pages_from_allrevisions(namespaces, from_date) req = HTTPServer.requests_http[-1] self.assertEqual(response, body) self.assertEqual(req.method, 'GET') self.assertRegex(req.path, '/api.php') # Check request params expected = { 'action': ['query'], 'list': ['allrevisions'], 'arvnamespace': ['0'], 'arvdir': ['newer'], 'arvlimit': ['max'], 'format': ['json'], 'arvprop': ['ids'], 'arvstart': ['2016-01-01T00:00:00Z'] } self.assertDictEqual(req.querystring, expected) from_date = datetime.datetime(2016, 1, 1, 0, 0, 0) with self.assertRaises(ValueError): _ = client.get_pages_from_allrevisions(namespaces, from_date)
def test_get_pages_from_allrevisions_from_date(self): HTTPServer.routes() body = read_file("data/mediawiki_pages_allrevisions.json") client = MediaWikiClient(MEDIAWIKI_SERVER_URL) namespaces = ["0"] str_date = "2016-01-01 00:00" dt = str_to_datetime(str_date) from_date = datetime_to_utc(dt) response = client.get_pages_from_allrevisions(namespaces, from_date) req = HTTPServer.requests_http[-1] self.assertEqual(response, body) self.assertEqual(req.method, "GET") self.assertRegex(req.path, "/api.php") # Check request params expected = { "action": ["query"], "list": ["allrevisions"], "arvnamespace": ["0"], "arvdir": ["newer"], "arvlimit": ["max"], "format": ["json"], "arvprop": ["ids"], "arvstart": ["2016-01-01T00:00:00Z"], } self.assertDictEqual(req.querystring, expected) from_date = datetime.datetime(2016, 1, 1, 0, 0, 0) with self.assertRaises(ValueError): _ = client.get_pages_from_allrevisions(namespaces, from_date)
def test_get_pages_from_allrevisions_from_date(self): HTTPServer.routes() body = read_file('data/mediawiki_pages_allrevisions.json') client = MediaWikiClient(MEDIAWIKI_SERVER_URL) namespaces = ['0'] str_date = '2016-01-01 00:00' dt = str_to_datetime(str_date) from_date = datetime_to_utc(dt) response = client.get_pages_from_allrevisions(namespaces, from_date) req = HTTPServer.requests_http[-1] self.assertEqual(response, body) self.assertEqual(req.method, 'GET') self.assertRegex(req.path, '/api.php') # Check request params expected = { 'action' : ['query'], 'list' : ['allrevisions'], 'arvnamespace':['0'], 'arvdir':['newer'], 'arvlimit':['max'], 'format':['json'], 'arvprop': ['ids'], 'arvstart': ['2016-01-01T00:00:00Z'] } self.assertDictEqual(req.querystring, expected) from_date = datetime.datetime(2016, 1, 1, 0, 0, 0) with self.assertRaises(ValueError): _ = client.get_pages_from_allrevisions(namespaces, from_date)
def test_get_issues(self): """Test get issues API call""" from_date = str_to_datetime('2015-01-01') requests = [] bodies_json = [ read_file('data/jira/jira_issues_page_1.json'), read_file('data/jira/jira_issues_page_2.json') ] bodies = bodies_json[:] bodies = list(bodies_json) def request_callback(method, uri, headers): body = bodies.pop(0) requests.append(httpretty.last_request()) return (200, headers, body) httpretty.register_uri(httpretty.GET, JIRA_SEARCH_URL, responses=[httpretty.Response(body=request_callback) \ for _ in range(2)]) client = JiraClient(url='http://example.com', project='perceval', user='******', password='******', verify=False, cert=None, max_issues=2) pages = [page for page in client.get_issues(from_date)] expected_req = [{ 'expand': ['renderedFields,transitions,operations,changelog'], 'jql': [' project = perceval AND updated > 1420070400000'], 'maxResults': ['2'], 'startAt': ['0'] }, { 'expand': ['renderedFields,transitions,operations,changelog'], 'jql': [' project = perceval AND updated > 1420070400000'], 'maxResults': ['2'], 'startAt': ['2'] }] self.assertEqual(len(pages), 2) self.assertEqual(requests[0].method, 'GET') self.assertRegex(requests[0].path, '/rest/api/2/search') self.assertDictEqual(requests[0].querystring, expected_req[0]) self.assertEqual(requests[1].method, 'GET') self.assertRegex(requests[1].path, '/rest/api/2/search') self.assertDictEqual(requests[1].querystring, expected_req[1]) self.assertEqual(pages[0], bodies_json[0]) self.assertEqual(pages[1], bodies_json[1])
def test_dates(self): """Check if it converts some dates to datetime objects""" date = str_to_datetime('2001-12-01') self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, datetime.datetime(2001, 12, 1)) date = str_to_datetime('13-01-2001') self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, datetime.datetime(2001, 1, 13)) date = str_to_datetime('12-01-01') self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, datetime.datetime(2001, 12, 1)) date = str_to_datetime('2001-12-01 23:15:32') self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, datetime.datetime(2001, 12, 1, 23, 15, 32))
def test_get_issues(self): """Test get issues API call""" from_date = str_to_datetime('2015-01-01') requests = [] bodies_json = [read_file('data/jira/jira_issues_page_1.json'), read_file('data/jira/jira_issues_page_2.json')] bodies = bodies_json[:] bodies = list(bodies_json) def request_callback(method, uri, headers): body = bodies.pop(0) requests.append(httpretty.last_request()) return (200, headers, body) httpretty.register_uri(httpretty.GET, JIRA_SEARCH_URL, responses=[httpretty.Response(body=request_callback) \ for _ in range(2)]) client = JiraClient(url='http://example.com', project='perceval', user='******', password='******', verify=False, cert=None, max_issues=2) pages = [page for page in client.get_issues(from_date)] expected_req = [{ 'expand': ['renderedFields,transitions,operations,changelog'], 'jql': ['project = perceval AND updated > 1420070400000 order by updated asc'], 'maxResults': ['2'], 'startAt': ['0'] }, { 'expand': ['renderedFields,transitions,operations,changelog'], 'jql': ['project = perceval AND updated > 1420070400000 order by updated asc'], 'maxResults': ['2'], 'startAt': ['2'] }] self.assertEqual(len(pages), 2) self.assertEqual(requests[0].method, 'GET') self.assertRegex(requests[0].path, '/rest/api/2/search') self.assertDictEqual(requests[0].querystring, expected_req[0]) self.assertEqual(requests[1].method, 'GET') self.assertRegex(requests[1].path, '/rest/api/2/search') self.assertDictEqual(requests[1].querystring, expected_req[1]) self.assertEqual(pages[0], bodies_json[0]) self.assertEqual(pages[1], bodies_json[1])
def test_dates(self): """Check if it converts some dates to datetime objects""" date = str_to_datetime('2001-12-01') expected = datetime.datetime(2001, 12, 1, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('13-01-2001') expected = datetime.datetime(2001, 1, 13, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('12-01-01') expected = datetime.datetime(2001, 12, 1, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('2001-12-01 23:15:32') expected = datetime.datetime(2001, 12, 1, 23, 15, 32, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('2001-12-01 23:15:32 -0600') expected = datetime.datetime(2001, 12, 1, 23, 15, 32, tzinfo=dateutil.tz.tzoffset(None, -21600)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('2001-12-01 23:15:32Z') expected = datetime.datetime(2001, 12, 1, 23, 15, 32, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected)
def test_fetch_from_date(self): """Test whether a list of issues is returned from a given date""" from_date = str_to_datetime('2015-01-01') bodies_json = read_file('data/jira/jira_issues_page_2.json') body = read_file('data/jira/jira_fields.json') httpretty.register_uri(httpretty.GET, JIRA_SEARCH_URL, body=bodies_json, status=200) httpretty.register_uri(httpretty.GET, JIRA_FIELDS_URL, body=body, status=200) jira = Jira(JIRA_SERVER_URL) issues = [issue for issue in jira.fetch(from_date)] expected_req = { 'expand': ['renderedFields,transitions,operations,changelog'], 'jql': ['updated > 1420070400000 order by updated asc'], 'startAt': ['0'] } self.assertEqual(len(issues), 1) self.assertEqual(issues[0]['origin'], 'http://example.com') self.assertEqual(issues[0]['uuid'], '2e988d555915991228d81144b018c8321d628265') self.assertEqual(issues[0]['updated_on'], 1457006245) self.assertEqual(issues[0]['category'], 'issue') self.assertEqual(issues[0]['tag'], 'http://example.com') request = httpretty.last_request() self.assertEqual(request.method, 'GET') self.assertRegex(request.path, '/rest/api/2/search') self.assertDictEqual(request.querystring, expected_req)
def test_dates(self): """Check if it converts some dates to datetime objects""" date = str_to_datetime('2001-12-01') expected = datetime.datetime(2001, 12, 1, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('13-01-2001') expected = datetime.datetime(2001, 1, 13, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('12-01-01') expected = datetime.datetime(2001, 12, 1, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('2001-12-01 23:15:32') expected = datetime.datetime(2001, 12, 1, 23, 15, 32, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('2001-12-01 23:15:32 -0600') expected = datetime.datetime(2001, 12, 1, 23, 15, 32, tzinfo=dateutil.tz.tzoffset(None, -21600)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('2001-12-01 23:15:32Z') expected = datetime.datetime(2001, 12, 1, 23, 15, 32, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('Wed, 26 Oct 2005 15:20:32 -0100 (GMT+1)') expected = datetime.datetime(2005, 10, 26, 15, 20, 32, tzinfo=dateutil.tz.tzoffset(None, -3600)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime( 'Wed, 22 Jul 2009 11:15:50 +0300 (FLE Daylight Time)') expected = datetime.datetime(2009, 7, 22, 11, 15, 50, tzinfo=dateutil.tz.tzoffset(None, 10800)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('Thu, 14 Aug 2008 02:07:59 +0200 CEST') expected = datetime.datetime(2008, 8, 14, 2, 7, 59, tzinfo=dateutil.tz.tzoffset(None, 7200)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) date = str_to_datetime('Thu, 14 Aug 2008 02:07:59 +0200 +0100') expected = datetime.datetime(2008, 8, 14, 2, 7, 59, tzinfo=dateutil.tz.tzoffset(None, 7200)) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected) # This date is invalid because the timezone section. # Timezone will be removed, setting UTC as default date = str_to_datetime('2001-12-01 02:00 +08888') expected = datetime.datetime(2001, 12, 1, 2, 0, 0, tzinfo=dateutil.tz.tzutc()) self.assertIsInstance(date, datetime.datetime) self.assertEqual(date, expected)