Beispiel #1
0
 def test_bb_v2_push(self, *mocks):
     payload = self._handle_first_push(get_obj('payload_bb_v2_push'),
                                       *mocks)
     launch_build, launch_notify, bbAPIcall = mocks[:3]
     payload = get_payload(get_obj('payload_bb_v2_push_2commits'))
     payload.handle()
     launch_notify.assert_called_once()
     launch_build.assert_not_called()
     # Prepare api response and push tag
     api_mock = bbAPIcall.return_value
     api_mock.branches_tags.return_value = {
         'branches': [{
             'name':
             'master',
             'changeset':
             'fd0af720f9465c98ed795b544b82334b0b5cc9b4'
         }],
         'tags': [{
             'name': '0.0.1',
             'changeset': 'fd0af720f9465c98ed795b544b82334b0b5cc9b4'
         }]
     }
     payload = get_payload(get_obj('payload_bb_v2_push_tag'))
     payload.handle()
     api_mock.branches_tags.assert_called_once()
     launch_build.assert_called_once()
 def test_bb_v2_push(self, *mocks):
     payload = self._handle_first_push(
         get_obj('payload_bb_v2_push'), *mocks
     )
     launch_build, launch_notify, bbAPIcall = mocks[:3]
     payload = get_payload(get_obj('payload_bb_v2_push_2commits'))
     payload.handle()
     launch_notify.assert_called_once()
     launch_build.assert_not_called()
     # Prepare api response and push tag
     api_mock = bbAPIcall.return_value
     api_mock.branches_tags.return_value = {
         'branches': [
             {
                 'name': 'master',
                 'changeset': 'fd0af720f9465c98ed795b544b82334b0b5cc9b4'
             }
         ],
         'tags': [
             {
                 'name': '0.0.1',
                 'changeset': 'fd0af720f9465c98ed795b544b82334b0b5cc9b4'
             }
         ]
     }
     payload = get_payload(get_obj('payload_bb_v2_push_tag'))
     payload.handle()
     api_mock.branches_tags.assert_called_once()
     launch_build.assert_called_once()
    def handle_wi(self, wid):
        """ Workitem handling function """
        wid.result = False

        if wid.fields.payload is None:
            raise RuntimeError("Missing mandatory field: payload")

        md5 = hashlib.md5(json.dumps(wid.fields.payload.as_dict(),
                                     sort_keys=True)).hexdigest()
        now = time.time()
        # purge seen hashes
        for seen_md5, seen_time in self.seen.items():
            if now - seen_time > 30:
                del self.seen[seen_md5]

        if md5 in self.seen:
            print("Ignoring duplicate webhook (possible resend or "
                  "github hook set at both repo and orginisation level)")
            print("Last seen %ss ago" % (now - self.seen[md5]))
            wid.result = True
            return
        self.seen[md5] = now

        print("Handling a webhook payload")
        payload = get_payload(wid.fields.payload.as_dict())
        payload.handle()
        print("Webhook handled")

        wid.result = True
    def handle_wi(self, wid):
        """ Workitem handling function """
        wid.result = False

        if wid.fields.payload is None:
            raise RuntimeError("Missing mandatory field: payload")

        md5 = hashlib.md5(json.dumps(wid.fields.payload.as_dict(),
                                     sort_keys=True)).hexdigest()
        now = time.time()
        # purge seen hashes
        for seen_md5, seen_time in self.seen.items():
            if now - seen_time > 30:
                del self.seen[seen_md5]

        if md5 in self.seen:
            print("Ignoring duplicate webhook (possible resend or "
                  "github hook set at both repo and orginisation level)")
            print("Last seen %ss ago" % now - seen_time)
            wid.result = True
            return
        self.seen[md5] = now

        print("Handling a webhook payload")
        payload = get_payload(wid.fields.payload.as_dict())
        payload.handle()
        print("Webhook handled")

        wid.result = True
Beispiel #5
0
    def handle_wi(self, wid):
        """ Workitem handling function """
        wid.result = False

        if wid.fields.payload is None:
            raise RuntimeError("Missing mandatory field: payload")

        payload = get_payload(wid.fields.payload.as_dict())
        payload.relay()

        wid.result = True
    def handle_wi(self, wid):
        """ Workitem handling function """
        wid.result = False

        if wid.fields.payload is None:
           raise RuntimeError("Missing mandatory field: payload")

        payload = get_payload(wid.fields.payload.as_dict())
        payload.relay()

        wid.result = True
Beispiel #7
0
    def trigger_relay(self, request, relaytargets):
        payloads = []
        for rt in relaytargets:
            urls = set([str(src) for src in rt.sources])
            mapobjs = WebHookMapping.objects.filter(
                reduce(operator.or_,
                       (models.Q(repourl__contains=u) for u in urls)))
            for mapobj in mapobjs:
                lsr = mapobj.lsr
                if lsr and lsr.payload:
                    payloads.append(get_payload(lsr.payload))

        for pld in payloads:
            pld.relay(relays=relaytargets)
 def test_bb_v2_push(self, *mocks):
     payload = self._handle_first_push(get_obj('payload_bb_v2_push'),
                                       *mocks)
     launch_build, launch_notify, bbAPIcall = mocks[:3]
     payload = get_payload(get_obj('payload_bb_v2_push_2commits'))
     payload.handle()
     launch_notify.assert_called_once()
     launch_build.assert_not_called()
     # Prepare api response and push tag
     api_mock = bbAPIcall.return_value
     api_mock.branches.return_value = [
         # Actual response has more stuf but only these are currently used
         {
             "name": "master",
             "target": {
                 "hash": "fd0af720f9465c98ed795b544b82334b0b5cc9b4"
             },
         },
     ]
     payload = get_payload(get_obj('payload_bb_v2_push_tag'))
     payload.handle()
     api_mock.branches.assert_called_once()
     launch_build.assert_called_once()
    def trigger_relay(self, request, relaytargets):
        payloads = []
        for rt in relaytargets:
            urls = set([str(src) for src in rt.sources])
            mapobjs = WebHookMapping.objects.filter(
                reduce(
                    operator.or_,
                    (models.Q(repourl__contains=u) for u in urls)
                )
            )
            for mapobj in mapobjs:
                lsr = mapobj.lsr
                if lsr and lsr.payload:
                    payloads.append(get_payload(lsr.payload))

        for pld in payloads:
            pld.relay(relays=relaytargets)
Beispiel #10
0
    def _handle_first_push(self, data, launch_build, launch_notify, bbAPIcall,
                           requests):
        # First push creates the placeholder mapping
        payload = get_payload(data)
        payload.handle()
        self.assertEqual(WebHookMapping.objects.count(), 1)
        self.assertEqual(LastSeenRevision.objects.count(), 1)
        whm = WebHookMapping.objects.first()
        launch_notify.assert_not_called()
        launch_build.assert_not_called()

        # Enable mapping
        whm.build = True
        whm.notify = True
        whm.project = 'test'
        whm.package = 'test'
        whm.save()
        return payload
    def _handle_first_push(
        self, data, launch_build, launch_notify, bbAPIcall, requests
    ):
        # First push creates the placeholder mapping
        payload = get_payload(data)
        payload.handle()
        self.assertEqual(
            WebHookMapping.objects.count(), 1
        )
        self.assertEqual(
            LastSeenRevision.objects.count(), 1
        )
        whm = WebHookMapping.objects.first()
        launch_notify.assert_not_called()
        launch_build.assert_not_called()

        # Enable mapping
        whm.build = True
        whm.notify = True
        whm.project = 'test'
        whm.package = 'test'
        whm.save()
        return payload
Beispiel #12
0
 def test_gh_push(self):
     p = get_payload(get_obj('payload_gh_push'))
     self.assertIsInstance(p, GhPush)
Beispiel #13
0
 def test_bb_v2_push(self):
     p = get_payload(get_obj('payload_bb_v2_push'))
     self.assertIsInstance(p, BbPushV2)
 def test_gh_push(self):
     p = get_payload(get_obj('payload_gh_push'))
     self.assertIsInstance(p, GhPush)
 def test_bb_v2_push(self):
     p = get_payload(get_obj('payload_bb_v2_push'))
     self.assertIsInstance(p, BbPushV2)