예제 #1
0
def FakeRequestMR(content):
    request = FakeRequest(content=content)
    request.uri = b"/change_hook/gitlab"
    request.args = {b'codebase': [b'MyCodebase']}
    request.received_headers[_HEADER_EVENT] = b"Merge Request Hook"
    request.method = b"POST"
    return request
    def testGitWithChange(self):
        change_dict = {b'payload': [gitJsonPayload]}

        request = FakeRequest(change_dict)
        request.received_headers[_HEADER_EVENT] = b"repo:push"
        request.uri = b'/change_hook/bitbucket'
        request.method = b'POST'

        yield request.test_render(self.change_hook)

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

        self.assertEqual(commit['files'], ['somefile.py'])
        self.assertEqual(
            commit['repository'], 'https://bitbucket.org/marcus/project-x/')
        self.assertEqual(
            calendar.timegm(commit['when_timestamp'].utctimetuple()),
            1338350336
        )
        self.assertEqual(
            commit['author'], 'Marcus Bertrand <*****@*****.**>')
        self.assertEqual(
            commit['revision'], '620ade18607ac42d872b568bb92acaa9a28620e9')
        self.assertEqual(
            commit['comments'], 'Added some more things to somefile.py')
        self.assertEqual(commit['branch'], 'master')
        self.assertEqual(
            commit['revlink'],
            'https://bitbucket.org/marcus/project-x/commits/'
            '620ade18607ac42d872b568bb92acaa9a28620e9'
        )
        self.assertEqual(
            commit['properties']['event'],
            'repo:push')
예제 #3
0
def _prepare_request(event, payload, _secret=None, headers=None):
    if headers is None:
        headers = dict()

    request = FakeRequest()

    request.uri = b"/change_hook/github"
    request.method = b"GET"
    request.received_headers = {
        _HEADER_EVENT: event
    }

    assert isinstance(payload, (bytes, list)), \
        "payload can only be bytes or list, not {}".format(type(payload))

    if isinstance(payload, bytes):
        request.content = BytesIO(payload)
        request.received_headers[_HEADER_CT] = _CT_JSON

        if _secret is not None:
            signature = hmac.new(unicode2bytes(_secret),
                                 msg=unicode2bytes(payload),
                                 digestmod=sha1)
            request.received_headers[_HEADER_SIGNATURE] = \
                'sha1={}'.format(signature.hexdigest())
    else:
        request.args[b'payload'] = payload
        request.received_headers[_HEADER_CT] = _CT_ENCODED

    request.received_headers.update(headers)

    # print request.received_headers

    return request
예제 #4
0
def _prepare_request(event, payload, _secret=None, headers=None):
    if headers is None:
        headers = dict()

    request = FakeRequest()

    request.uri = "/change_hook/github"
    request.method = "GET"
    request.received_headers = {
        _HEADER_EVENT: event
    }

    if isinstance(payload, str):
        request.content = StringIO(payload)
        request.received_headers[_HEADER_CT] = _CT_JSON

        if _secret is not None:
            signature = hmac.new(_secret, msg=payload, digestmod=sha1)
            request.received_headers[_HEADER_SIGNATURE] = \
                'sha1=%s' % (signature.hexdigest(),)
    else:
        request.args['payload'] = payload
        request.received_headers[_HEADER_CT] = _CT_ENCODED

    request.received_headers.update(headers)

    # print request.received_headers

    return request
    def testMercurialWithChange(self):
        change_dict = {'payload': [mercurialJsonPayload]}

        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['files'], ['somefile.py'])
        self.assertEqual(
            commit['repository'], 'https://bitbucket.org/marcus/project-x/')
        self.assertEqual(
            calendar.timegm(commit['when_timestamp'].utctimetuple()),
            1338350336
        )
        self.assertEqual(
            commit['author'], 'Marcus Bertrand <*****@*****.**>')
        self.assertEqual(
            commit['revision'], '620ade18607ac42d872b568bb92acaa9a28620e9')
        self.assertEqual(
            commit['comments'], 'Added some more things to somefile.py')
        self.assertEqual(commit['branch'], 'master')
        self.assertEqual(
            commit['revlink'],
            'https://bitbucket.org/marcus/project-x/commits/'
            '620ade18607ac42d872b568bb92acaa9a28620e9'
        )
    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 _prepare_request(payload, headers=None, change_dict=None):
    headers = headers or {}
    request = FakeRequest(change_dict)
    request.uri = "/change_hook/bitbucketserver"
    request.method = "POST"
    request.content = StringIO(payload)
    request.received_headers['Content-Type'] = _CT_JSON
    request.received_headers.update(headers)
    return request
    def testWithNoJson(self):
        request = FakeRequest()
        request.uri = "/change_hook/bitbucket"
        request.method = "POST"

        yield request.test_render(self.change_hook)
        self.assertEqual(len(request.addedChanges), 0)
        self.assertEqual(request.written, "Error processing changes.")
        request.setResponseCode.assert_called_with(500, "Error processing changes.")
        self.assertEqual(len(self.flushLoggedErrors()), 1)
예제 #9
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, b'Error processing changes.')
        request.setResponseCode.assert_called_with(
            500, b'Error processing changes.')
        self.assertEqual(len(self.flushLoggedErrors()), 1)
예제 #10
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.addedChanges), 0)
        self.assertEqual(request.written, b'no change found')
예제 #11
0
    def testMercurialWithNoCommitsPayload(self):
        change_dict = {b'payload': [mercurialJsonNoCommitsPayload]}

        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 testGitWithNoCommitsPayload(self):
        change_dict = {"payload": [gitJsonNoCommitsPayload]}

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

        yield request.test_render(self.change_hook)

        self.assertEqual(len(request.addedChanges), 0)
        self.assertEqual(request.written, "no changes found")
예제 #13
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
    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(request.addedChanges), 0)
        self.assertEqual(request.written, 'no changes found')
    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")
예제 #16
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')
예제 #18
0
def _prepare_request(payload, headers=None):
    if headers is None:
        headers = {
            "Content-type": "application/x-www-form-urlencoded",
            "Accept": "text/plain"}
    else:
        headers = {}

    if 'comments' not in payload:
        payload['comments'] = 'test_www_hook_base submission'  # Required field

    request = FakeRequest()

    request.uri = "/change_hook/base"
    request.method = "POST"
    request.args = payload
    request.received_headers.update(headers)

    return request
    def testMercurialWithChange(self):
        change_dict = {"payload": [mercurialJsonPayload]}

        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["files"], ["somefile.py"])
        self.assertEqual(commit["repository"], "https://bitbucket.org/marcus/project-x/")
        self.assertEqual(calendar.timegm(commit["when_timestamp"].utctimetuple()), 1338350336)
        self.assertEqual(commit["author"], "Marcus Bertrand <*****@*****.**>")
        self.assertEqual(commit["revision"], "620ade18607ac42d872b568bb92acaa9a28620e9")
        self.assertEqual(commit["comments"], "Added some more things to somefile.py")
        self.assertEqual(commit["branch"], "master")
        self.assertEqual(
            commit["revlink"], "https://bitbucket.org/marcus/project-x/" "620ade18607ac42d872b568bb92acaa9a28620e9"
        )