Beispiel #1
0
def aggregate():
  """
  Aggregate information from both Bitbucket and Github APIs

  Query Params:
      bitbucket (str): Name of bitbucket organization
      github (str): Name of github organization

  Returns:
      dict|str: Aggregated results if both query parameters are provided or an error
      string indicating one or more query parameters were not successfully provided
  """
  app.logger.info("GET - Aggregator")
  args = request.args

  if not args.get('bitbucket') or not args.get('github'):
    return Response('Missing query string parameters "bitbucket" and/or "github"')

  app.logger.info("Bitbucket organization provided: %s", args.get('bitbucket'))
  app.logger.info("Github organization provided: %s", args.get('github'))

  bitbucket = Bitbucket(args.get('bitbucket'))
  github = Github(args.get('github'))

  bitbucket_results = bitbucket.make_response()
  github_results = github.make_response()

  results = combine(bitbucket_results, github_results)

  return jsonify(results)
    def test_make_response(self, mock_get):
        mock_responses = [Mock(), Mock(), Mock()]

        # get_all_repos
        mock_responses[0].headers = {}
        mock_responses[0].json.return_value = [{
            'name': 'test_repo',
            'fork': True,
            'topics': ['flask'],
            'watchers': 1
        }]

        # update_languages
        mock_responses[1].headers = {}
        mock_responses[1].json.return_value = {'php': 1}

        # get_followers_count
        mock_responses[2].headers = {}
        mock_responses[2].json.return_value = [{}]

        mock_get.side_effect = mock_responses

        g = Github('test')
        results = g.make_response()
        self.assertEqual(results['followers'], 1)
        self.assertEqual(results['repos']['forked'], 1)
        self.assertEqual(results['repos']['unforked'], 0)
        self.assertEqual(results['topics'], ['flask'])
        self.assertEqual(results['watchers'], 1)
 def test_make_response_no_connection(self, mock_get):
     mock_get.side_effect = requests.exceptions.RequestException()
     g = Github('test')
     results = g.make_response()
     self.assertEqual(results['followers'], 0)
     self.assertEqual(results['repos']['forked'], 0)
     self.assertEqual(results['repos']['unforked'], 0)
     self.assertEqual(results['topics'], [])
     self.assertEqual(results['watchers'], 0)