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)
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
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)
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")
def setUp(self): self.request_data = { 'builder': ['TestBuilder'], 'size': 'normal', } self.request = FakeRequest(self.request_data) self.request.uri = '/png' self.request.method = 'GET'
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
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)
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()
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")
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")
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)
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)
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
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)
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')
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')
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)
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
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
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
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)
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
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)
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
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')
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