def test_multiple_commits(self): data = json.loads(self.json_data) result = utils.extract_gitlab_commit_data(data) self.assertEqual(len(result), 2) self.assertNotEqual(result[0], result[1])
def test_no_commits(self): data = json.loads(self.json_data) del data['commits'][0] del data['commits'][0] result = utils.extract_gitlab_commit_data(data) self.assertListEqual([], result)
def on_gitlab_push(self, request): """The endpoint for gitlab post commit hooks.""" self.log.debug('Received request: "{}".'.format(request)) if request.method == 'POST': if request.headers.get('content-type') == 'application/json': raw_data = request.stream.read().decode('utf-8') self.log.debug('Got POST data: "{}".'.format(raw_data)) extracted_commits = utils.extract_gitlab_commit_data(loads(raw_data)) for commit in extracted_commits: self.queue.put(commit) msg = 'Successfully extracted {} commits.'.format(len(extracted_commits)) self.log.info(msg) return Response(msg) else: msg = 'No POST data as application/json supplied.' self.log.warning(msg) return BadRequest(msg) else: return MethodNotAllowed()
def test_one_commit(self): data = json.loads(self.json_data) del data['commits'][1] result = utils.extract_gitlab_commit_data(data) self.assertEqual(len(result), 1) commit = result[0] self.assertEqual(commit['id'], 'b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327') self.assertEqual(commit['origin'], 'master') self.assertEqual(commit['message'], 'Update Catalan translation to e38cb41.') self.assertEqual(commit['timestamp'], '2011-12-12T14:27:31+02:00') self.assertEqual(commit['url'], 'http://localhost/diaspora/commits/b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327') self.assertEqual(commit['author_name'], 'Jordi Mallach') self.assertEqual(commit['author_email'], '*****@*****.**')