def test_payload_bad_token(self):
   testee = BridgeProviderBitbucket({
     'username': '******',
     'password': '******',
     'incoming_token': 'glig',
     })
   headers = {
     'X-Event-Key': 'pullrequest:comment_created',
     }
   querystring={
     'token': 'bad_token',
     }
   with self.assertRaises(Exception) as cm: testee.parse_payload('{}',headers,querystring)
 def test_payload_bad_token(self):
     testee = BridgeProviderBitbucket({
         'username': '******',
         'password': '******',
         'incoming_token': 'glig',
     })
     headers = {
         'X-Event-Key': 'pullrequest:comment_created',
     }
     querystring = {
         'token': 'bad_token',
     }
     with self.assertRaises(Exception) as cm:
         testee.parse_payload('{}', headers, querystring)
  def test_payload_bad_event(self):
    testee = BridgeProviderBitbucket({
      'username': '******',
      'password': '******',
      'incoming_token': 'glig',
      })
    headers = {
      'X-Github-Event': 'badbadbad',
      }
    querystring={
      'token': 'glig',
      }

    with self.assertRaises(Exception) as cm: testee.parse_payload('{}',headers,querystring)
    def test_payload_bad_event(self):
        testee = BridgeProviderBitbucket({
            'username': '******',
            'password': '******',
            'incoming_token': 'glig',
        })
        headers = {
            'X-Github-Event': 'badbadbad',
        }
        querystring = {
            'token': 'glig',
        }

        with self.assertRaises(Exception) as cm:
            testee.parse_payload('{}', headers, querystring)
    def test_payload_push(self):
        testee = BridgeProviderBitbucket({
            'username': '******',
            'password': '******',
            'incoming_token': 'glig',
        })
        headers = {
            'X-Event-Key': 'repo:push',
        }
        querystring = {
            'token': 'glig',
        }
        body_path = os.path.join(os.path.dirname(__file__),
                                 'responses/bitbucket_code_push.txt')
        with open(body_path) as myfile:
            body = myfile.read()

        res = testee.parse_payload(body, headers, querystring)
        self.assertEqual(res['repo']['provider'], 'bitbucket')
        self.assertEqual(res['repo']['organization'], 'dy-devops')
        self.assertEqual(res['repo']['name'], 'janitor-starter')
        self.assertEqual(res['event']['type'], 'push')
        self.assertEqual(len(res['event']['changes']), 1)
        self.assertEqual(res['event']['changes'][0]['commit'],
                         'bf89e3d025b08c78009fc2c6884916add07314e1')
        self.assertEqual(res['event']['changes'][0]['branch'], 'bla')
    def test_payload_comment(self):
        testee = BridgeProviderBitbucket({
            'username': '******',
            'password': '******',
            'incoming_token': 'glig',
        })
        headers = {
            'X-Event-Key': 'pullrequest:comment_created',
        }
        querystring = {
            'token': 'glig',
        }
        testee.my_username = lambda: 'greg'
        body_path = os.path.join(os.path.dirname(__file__),
                                 'responses/bitbucket_pr_comment.txt')
        with open(body_path) as myfile:
            body = myfile.read()

        testee.get_commit_approval = MagicMock(return_value=True)
        res = testee.parse_payload(body, headers, querystring)
        self.assertEqual(res['repo']['provider'], 'bitbucket')
        self.assertEqual(res['repo']['organization'], 'dy-devops')
        self.assertEqual(res['repo']['name'], 'janitor-starter')
        self.assertEqual(res['event']['type'], 'pr:comment')
        self.assertEqual(res['event']['pr']['src_branch'], 'add-webshot')
        self.assertEqual(res['event']['pr']['dst_branch'], 'master')
        self.assertEqual(res['event']['pr']['same_repo'], True)
        self.assertEqual(res['event']['pr']['reviewers'], set(['BackSlasher']))
        self.assertEqual(res['event']['pr']['approvers'], set(['BackSlasher']))
        self.assertEqual(res['event']['pr']['id'], 1)
        self.assertEqual(res['event']['pr']['code_ok'], True)
  def test_payload_comment(self):
    testee = BridgeProviderBitbucket({
      'username': '******',
      'password': '******',
      'incoming_token': 'glig',
      })
    headers={
        'X-Event-Key': 'pullrequest:comment_created',
        }
    querystring={
        'token': 'glig',
        }
    testee.my_username = lambda: 'greg'
    body_path = os.path.join(os.path.dirname(__file__), 'responses/bitbucket_pr_comment.txt')
    with open (body_path) as myfile:
        body=myfile.read()

    testee.get_commit_approval = MagicMock(return_value=True)
    res = testee.parse_payload(body,headers,querystring)
    self.assertEqual(res['repo']['provider'],'bitbucket')
    self.assertEqual(res['repo']['organization'],'dy-devops')
    self.assertEqual(res['repo']['name'],'janitor-starter')
    self.assertEqual(res['event']['type'],'pr:comment')
    self.assertEqual(res['event']['pr']['src_branch'],'add-webshot')
    self.assertEqual(res['event']['pr']['dst_branch'],'master')
    self.assertEqual(res['event']['pr']['same_repo'],True)
    self.assertEqual(res['event']['pr']['reviewers'],set(['BackSlasher']))
    self.assertEqual(res['event']['pr']['approvers'],set(['BackSlasher']))
    self.assertEqual(res['event']['pr']['id'],1)
    self.assertEqual(res['event']['pr']['code_ok'],True)
  def test_payload_comment_no_mention(self):
    testee = BridgeProviderBitbucket({
      'username': '******',
      'password': '******',
      'incoming_token': 'glig',
      })
    headers={
        'X-Event-Key': 'pullrequest:comment_created',
        }
    querystring={
        'token': 'glig',
        }
    testee.my_username = lambda: 'greg'
    body_path = os.path.join(os.path.dirname(__file__), 'responses/bitbucket_pr_comment_nogreg.txt')
    with open (body_path) as myfile:
        body=myfile.read()

    testee.get_commit_approval = MagicMock(return_value=True)
    res = testee.parse_payload(body,headers,querystring)
    self.assertEqual(res,None)
    def test_payload_comment_no_mention(self):
        testee = BridgeProviderBitbucket({
            'username': '******',
            'password': '******',
            'incoming_token': 'glig',
        })
        headers = {
            'X-Event-Key': 'pullrequest:comment_created',
        }
        querystring = {
            'token': 'glig',
        }
        testee.my_username = lambda: 'greg'
        body_path = os.path.join(os.path.dirname(__file__),
                                 'responses/bitbucket_pr_comment_nogreg.txt')
        with open(body_path) as myfile:
            body = myfile.read()

        testee.get_commit_approval = MagicMock(return_value=True)
        res = testee.parse_payload(body, headers, querystring)
        self.assertEqual(res, None)
  def test_payload_push(self):
    testee = BridgeProviderBitbucket({
      'username': '******',
      'password': '******',
      'incoming_token': 'glig',
      })
    headers={
        'X-Event-Key': 'repo:push',
        }
    querystring={
        'token': 'glig',
        }
    body_path = os.path.join(os.path.dirname(__file__), 'responses/bitbucket_code_push.txt')
    with open (body_path) as myfile:
        body=myfile.read()

    res = testee.parse_payload(body,headers,querystring)
    self.assertEqual(res['repo']['provider'],'bitbucket')
    self.assertEqual(res['repo']['organization'],'dy-devops')
    self.assertEqual(res['repo']['name'],'janitor-starter')
    self.assertEqual(res['event']['type'],'push')
    self.assertEqual(len(res['event']['changes']),1)
    self.assertEqual(res['event']['changes'][0]['commit'],'bf89e3d025b08c78009fc2c6884916add07314e1')
    self.assertEqual(res['event']['changes'][0]['branch'],'bla')