예제 #1
0
 def test_missing_secret(self):
     self.request = FakeRequest(content=gitJsonPayloadTag)
     self.request.uri = "/change_hook/gitlab"
     self.request.args = {'codebase': ['MyCodebase']}
     self.request.method = "POST"
     yield self.request.test_render(self.changeHook)
     expected = b'Invalid secret'
     self.assertEqual(self.request.written, expected)
     self.assertEqual(len(self.changeHook.master.addedChanges), 0)
예제 #2
0
 def testPullRequestNotMergeableEvent(self):
     self.request = FakeRequest(
         content=giteaJsonPullRequestPayloadNotMergeable)
     self.request.uri = b'/change_hook/gitea'
     self.request.method = b'POST'
     self.request.received_headers[_HEADER_EVENT_TYPE] = b"pull_request"
     yield self.request.test_render(self.changeHook)
     self.assertEqual(len(self.changeHook.master.data.updates.changesAdded),
                      0)
    def getRequest(self):
        req = FakeRequest()
        req.method = "GET"
        req.uri = "/projects/Example%20Project/builders/runtests/builds/39/steps/Test%20IL2Cpp%20Unit%20Tests/logs/TestReport.html?_branch="
        req.clientproto = "HTTP/1.1"
        req.args = {}
        req.prepath = ""

        return req
예제 #4
0
 def test_valid_secret(self):
     self.request = FakeRequest(content=gitJsonPayload)
     self.request.received_headers[_HEADER_GITLAB_TOKEN] = self._SECRET
     self.request.received_headers[_HEADER_EVENT] = b"Push Hook"
     self.request.uri = b"/change_hook/gitlab"
     self.request.method = b"POST"
     yield self.request.test_render(self.changeHook)
     self.assertEqual(len(self.changeHook.master.data.updates.changesAdded),
                      2)
예제 #5
0
 def testGitWithChange(self):
     self.request = FakeRequest()
     self.request.content = StringIO(gitJsonPayload)
     self.request.received_headers[_HEADER_CT] = _CT_JSON
     self.request.uri = "/change_hook/planio"
     self.request.method = "POST"
     res = yield self.request.test_render(self.changeHook)
     self.check_changes(
         res, project="sample_project.buildout", codebase="myCode")
예제 #6
0
    def setUp(self):
        self.request_data = {
            'builder': ['TestBuilder'],
            'size': 'normal',
        }

        self.request = FakeRequest(self.request_data)
        self.request.uri = '/png'
        self.request.method = 'GET'
예제 #7
0
 def prepare_request(self, **kwargs):
     payload = {"update_id": 12345}
     payload.update(kwargs)
     content = unicode2bytes(json.dumps(payload))
     request = FakeRequest(content=content)
     request.uri = b"/bot12345:secret"
     request.method = b"POST"
     request.received_headers[b'Content-Type'] = b"application/json"
     return request
예제 #8
0
 def testInvalidSecret(self):
     self.request = FakeRequest(content=giteaInvalidSecretPush)
     self.request.uri = b'/change_hook/gitea'
     self.request.method = b'POST'
     self.request.received_headers[_HEADER_EVENT_TYPE] = b"push"
     self.request.received_headers[
         _HEADER_SIGNATURE] = giteaJsonPushPayload_Signature
     yield self.request.test_render(self.changeHook)
     self.assertEqual(len(self.changeHook.master.data.updates.changesAdded),
                      0)
예제 #9
0
    def testNewHandler(self):
        self.request = FakeRequest(content=giteaJsonPushPayload)
        self.request.uri = b'/change_hook/gitea'
        self.request.method = b'POST'
        self.request.received_headers[_HEADER_EVENT_TYPE] = b'release'
        self.request.received_headers[
            _HEADER_SIGNATURE] = giteaJsonPushPayload_Signature
        yield self.request.test_render(self.changeHook)

        self.checkChanges()
예제 #10
0
 def testGitWithChange_WithMR(self):
     self.request = FakeRequest(content=gitJsonPayloadMR)
     self.request.uri = b"/change_hook/gitlab"
     self.request.args = {b'codebase': [b'MyCodebase']}
     self.request.received_headers[_HEADER_EVENT] = b"Merge Request Hook"
     self.request.method = b"POST"
     res = yield self.request.test_render(self.changeHook)
     self.check_changes_mr_event(res, codebase="MyCodebase")
     change = self.changeHook.master.addedChanges[0]
     self.assertEqual(change["category"], "merge_request")
예제 #11
0
 def test_event_property(self):
     self.request = FakeRequest(content=gitJsonPayload)
     self.request.received_headers[_HEADER_EVENT] = b"Push Hook"
     self.request.uri = b"/change_hook/gitlab"
     self.request.method = b"POST"
     yield self.request.test_render(self.changeHook)
     self.assertEqual(len(self.changeHook.master.addedChanges), 2)
     change = self.changeHook.master.addedChanges[0]
     self.assertEqual(change["properties"]["event"], "Push Hook")
     self.assertEqual(change["category"], "Push Hook")
예제 #12
0
    def testGitWithNoJson(self):
        self.request = FakeRequest()
        self.request.uri = b"/change_hook/gitlab"
        self.request.method = b"POST"
        self.request.received_headers[_HEADER_EVENT] = b"Push Hook"
        yield self.request.test_render(self.changeHook)

        self.assertEqual(len(self.changeHook.master.data.updates.changesAdded), 0)
        self.assertIn(b"Error loading JSON:", self.request.written)
        self.request.setResponseCode.assert_called_with(400, mock.ANY)
예제 #13
0
 def test_missing_secret(self):
     self.request = FakeRequest(content=gitJsonPayloadTag)
     self.request.uri = b"/change_hook/gitlab"
     self.request.args = {b'codebase': [b'MyCodebase']}
     self.request.method = b"POST"
     self.request.received_headers[_HEADER_EVENT] = b"Push Hook"
     yield self.request.test_render(self.changeHook)
     expected = b'Invalid secret'
     self.assertEqual(self.request.written, expected)
     self.assertEqual(len(self.changeHook.master.addedChanges), 0)
예제 #14
0
    def testGitWithChange(self):
        changeDict = {"payload": [gitJsonPayload]}
        self.request = FakeRequest(changeDict)
        self.request.uri = "/change_hook/github"
        self.request.method = "GET"
        d = self.request.test_render(self.changeHook)

        def check_changes(r):
            self.assertEquals(len(self.request.addedChanges), 2)
            change = self.request.addedChanges[0]

            self.assertEquals(change['files'], ['filepath.rb'])
            self.assertEquals(
                change["repository"], "http://github.com/defunkt/github")
            self.assertEquals(
                calendar.timegm(change["when_timestamp"].utctimetuple()),
                1203116237
            )
            self.assertEquals(
                change["author"], "Fred Flinstone <*****@*****.**>")
            self.assertEquals(
                change["revision"], '41a212ee83ca127e3c8cf465891ab7216a705f59')
            self.assertEquals(
                change["comments"], "okay i give in")
            self.assertEquals(
                change["branch"], "master")
            self.assertEquals(
                change["revlink"],
                "http://github.com/defunkt/github/commit/"
                "41a212ee83ca127e3c8cf465891ab7216a705f59"
            )

            change = self.request.addedChanges[1]
            self.assertEquals(change['files'], ['modfile', 'removedFile'])
            self.assertEquals(
                change["repository"], "http://github.com/defunkt/github")
            self.assertEquals(
                calendar.timegm(change["when_timestamp"].utctimetuple()),
                1203114994
            )
            self.assertEquals(
                change["author"], "Fred Flinstone <*****@*****.**>")
            self.assertEquals(change["src"], "git")
            self.assertEquals(
                change["revision"], 'de8251ff97ee194a289832576287d6f8ad74e3d0')
            self.assertEquals(change["comments"], "update pricing a tad")
            self.assertEquals(change["branch"], "master")
            self.assertEquals(
                change["revlink"],
                "http://github.com/defunkt/github/commit/"
                "de8251ff97ee194a289832576287d6f8ad74e3d0"
            )

        d.addCallback(check_changes)
        return d
예제 #15
0
    def testWithNoJson(self):
        request = FakeRequest()
        request.uri = '/change_hook/bitbucket'
        request.method = 'POST'

        yield request.test_render(self.change_hook)
        self.assertEqual(len(self.change_hook.master.addedChanges), 0)
        self.assertEqual(request.written, 'Error processing changes.')
        request.setResponseCode.assert_called_with(
            500, 'Error processing changes.')
        self.assertEqual(len(self.flushLoggedErrors()), 1)
예제 #16
0
    def testMercurialWithNoCommitsPayload(self):
        change_dict = {'payload': [mercurialJsonNoCommitsPayload]}

        request = FakeRequest(change_dict)
        request.uri = '/change_hook/bitbucket'
        request.method = 'POST'

        yield request.test_render(self.change_hook)

        self.assertEqual(len(self.change_hook.master.addedChanges), 0)
        self.assertEqual(request.written, 'no changes found')
예제 #17
0
    def testGitWithNoCommitsPayload(self):
        change_dict = {b'payload': [gitJsonNoCommitsPayload]}

        request = FakeRequest(change_dict)
        request.uri = b'/change_hook/bitbucket'
        request.method = b'POST'

        yield request.test_render(self.change_hook)

        self.assertEqual(len(self.change_hook.master.data.updates.changesAdded), 0)
        self.assertEqual(request.written, b'no change found')
예제 #18
0
    def testGitWithNoJson(self):
        self.request = FakeRequest()
        self.request.uri = b"/change_hook/gitorious"
        self.request.method = b"GET"
        yield self.request.test_render(self.changeHook)

        expected = b"Error processing changes."
        self.assertEqual(len(self.changeHook.master.addedChanges), 0)
        self.assertEqual(self.request.written, expected)
        self.request.setResponseCode.assert_called_with(500, expected)
        self.assertEqual(len(self.flushLoggedErrors()), 1)
예제 #19
0
def _prepare_request(payload, headers=None, change_dict=None):
    headers = headers or {}
    request = FakeRequest(change_dict)
    request.uri = b"/change_hook/bitbucketcloud"
    request.method = b"POST"
    if isinstance(payload, text_type):
        payload = unicode2bytes(payload)
    request.content = BytesIO(payload)
    request.received_headers[b'Content-Type'] = _CT_JSON
    request.received_headers.update(headers)
    return request
예제 #20
0
    def testGitWithNoJson(self):
        self.request = FakeRequest()
        self.request.uri = "/change_hook/gitlab"
        self.request.method = "POST"
        d = self.request.test_render(self.changeHook)

        def check_changes(r):
            self.assertEquals(len(self.changeHook.master.addedChanges), 0)
            self.assertIn("Error loading JSON:", self.request.written)
            self.request.setResponseCode.assert_called_with(400, mock.ANY)

        d.addCallback(check_changes)
        return d
예제 #21
0
    def testGitWithNewTag(self):
        changeDict={"payload" : [gitJsonPayloadNewTag]}
        self.request = FakeRequest(changeDict)
        self.request.uri = "/coreos/change_hook/github"
        self.request.method = "GET"
        d = self.request.test_render(self.changeHook)
        def check_changes(r):
            expected = "no changes found"
            self.assertEquals(len(self.request.addedChanges), 0)
            self.assertEqual(self.request.written, expected)

        d.addCallback(check_changes)
        return d
예제 #22
0
 def testGitWithNoJson(self):
     self.request = FakeRequest()
     self.request.uri = "/change_hook/github"
     self.request.method = "GET"
     self.request.received_headers = {
         _HEADER_CT: _CT_ENCODED,
         _HEADER_EVENT: 'push'
     }
     yield self.request.test_render(self.changeHook)
     expected = "Error processing changes."
     self.assertEquals(len(self.request.addedChanges), 0)
     self.assertEqual(self.request.written, expected)
     self.request.setResponseCode.assert_called_with(500, expected)
     self.assertEqual(len(self.flushLoggedErrors()), 1)
예제 #23
0
    def testGitWithNoJson(self):
        self.request = FakeRequest()
        self.request.uri = "/coreos/change_hook/github"
        self.request.method = "GET"
        d = self.request.test_render(self.changeHook)
        def check_changes(r):
            expected = "Error processing changes."
            self.assertEquals(len(self.request.addedChanges), 0)
            self.assertEqual(self.request.written, expected)
            self.request.setResponseCode.assert_called_with(500, expected)
            self.assertEqual(len(self.flushLoggedErrors()), 1)

        d.addCallback(check_changes)
        return d
예제 #24
0
    def testReturnedUnknownPngOnunkwnownBuilder(self):
        status = FakeStatus()
        self.request = FakeRequest({'builder': ':)', 'size': 'normal'})
        self.request.uri = '/png'
        self.request.method = 'GET'
        yield self.request.test_render(pngstatus.PngStatusResource(status))

        png_file = open(
            '%s/../../status/web/files/unknown_normal.png' % (
                os.path.dirname(__file__),), 'rb'
        )
        png = png_file.read()
        png_file.close()
        self.assertEqual(self.request.written, png)
예제 #25
0
    def testGitWithNewTag(self):
        changeDict={"payload" : [gitJsonPayloadNewTag]}
        self.request = FakeRequest(changeDict)
        self.request.uri = "/coreos/change_hook/github"
        self.request.method = "GET"
        d = self.request.test_render(self.changeHook)
        def check_changes(r):
            self.assertEquals(len(self.request.addedChanges), 1)
            change = self.request.addedChanges[0]
            self.assertEquals(change['files'], ['filepath.rb'])
            self.assertEquals(change["branch"], "tags/v1.2.3")
            self.assertEquals(change["repository"], "http://github.com/defunkt/github")

        d.addCallback(check_changes)
        return d
예제 #26
0
    def testGitWithChangeAndProject(self):
        change_dict = {
            b'payload': [gitJsonPayload],
            b'project': [b'project-name']}

        request = FakeRequest(change_dict)
        request.uri = b'/change_hook/bitbucket'
        request.method = b'POST'

        yield request.test_render(self.change_hook)

        self.assertEqual(len(self.change_hook.master.data.updates.changesAdded), 1)
        commit = self.change_hook.master.data.updates.changesAdded[0]

        self.assertEqual(commit['project'], 'project-name')
    def testGitWithChangeAndProject(self):
        change_dict = {
            'payload': [gitJsonPayload],
            'project': ['project-name']}

        request = FakeRequest(change_dict)
        request.uri = '/change_hook/bitbucket'
        request.method = 'POST'

        yield request.test_render(self.change_hook)

        self.assertEqual(len(request.addedChanges), 1)
        commit = request.addedChanges[0]

        self.assertEqual(commit['project'], 'project-name')
예제 #28
0
    def test_ActionResource_exception(self):
        class MyActionResource(base.ActionResource):
            def performAction(self, request):
                return defer.fail(RuntimeError('sacrebleu'))

        rsrc = MyActionResource()
        request = FakeRequest()
        rsrc.render(request)
        d = request.deferred

        def check(f):
            f.trap(RuntimeError)
            # pass - all good!

        d.addErrback(check)
        return d
    def testGitWithChange(self):
        self.request = FakeRequest(content=gitJsonPayload)
        self.request.uri = "/change_hook/gitlab"
        self.request.method = "POST"
        d = self.request.test_render(self.changeHook)

        def check_changes(r):
            self.assertEquals(len(self.request.addedChanges), 2)
            change = self.request.addedChanges[0]

            self.assertEquals(change["repository"],
                              "git@localhost:diaspora.git")
            self.assertEquals(
                calendar.timegm(change["when_timestamp"].utctimetuple()),
                1323692851)
            self.assertEquals(change["author"],
                              "Jordi Mallach <*****@*****.**>")
            self.assertEquals(change["revision"],
                              'b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327')
            self.assertEquals(change["comments"],
                              "Update Catalan translation to e38cb41.")
            self.assertEquals(change["branch"], "master")
            self.assertEquals(
                change["revlink"],
                "http://localhost/diaspora/commits/b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327"
            )

            change = self.request.addedChanges[1]
            self.assertEquals(change["repository"],
                              "git@localhost:diaspora.git")
            self.assertEquals(
                calendar.timegm(change["when_timestamp"].utctimetuple()),
                1325626589)
            self.assertEquals(change["author"],
                              "GitLab dev user <gitlabdev@dv6700.(none)>")
            self.assertEquals(change["src"], "git")
            self.assertEquals(change["revision"],
                              'da1560886d4f094c3e6c9ef40349f7d38b5d27d7')
            self.assertEquals(change["comments"], "fixed readme")
            self.assertEquals(change["branch"], "master")
            self.assertEquals(
                change["revlink"],
                "http://localhost/diaspora/commits/da1560886d4f094c3e6c9ef40349f7d38b5d27d7"
            )

        d.addCallback(check_changes)
        return d
    def testGitWithNonBranchChanges(self):
        changeDict = {"payload": [gitJsonPayloadNonBranch]}
        self.request = FakeRequest(changeDict)
        self.request.uri = "/change_hook/github"
        self.request.method = "GET"
        self.request.received_headers = {
            'Content-Type': 'application/x-www-form-urlencoded',
            'X-GitHub-Event': 'push'
        }
        d = self.request.test_render(self.changeHook)

        def check_changes(r):
            expected = "no changes found"
            self.assertEquals(len(self.request.addedChanges), 0)
            self.assertEqual(self.request.written, expected)

        d.addCallback(check_changes)
        return d