Пример #1
0
 def test_verify_invalid(self):
     with assert_raises(HookError):
         utils.verify_hook_signature(
             self.node_settings,
             HOOK_PAYLOAD,
             {'X-Hub-Signature': 'invalid'}
         )
Пример #2
0
 def test_verify_invalid(self):
     with assert_raises(HookError):
         utils.verify_hook_signature(
             self.node_settings,
             HOOK_PAYLOAD,
             {'X-Hub-Signature': 'invalid'}
         )
Пример #3
0
 def test_verify_valid(self):
     try:
         utils.verify_hook_signature(
             self.node_settings, HOOK_PAYLOAD, {
                 'X-Hub-Signature':
                 make_signature(
                     self.node_settings.hook_secret,
                     HOOK_PAYLOAD,
                 )
             })
     except HookError:
         assert 0
Пример #4
0
 def test_verify_valid(self):
     try:
         utils.verify_hook_signature(
             self.node_settings,
             HOOK_PAYLOAD,
             {
                 'X-Hub-Signature': make_signature(
                     self.node_settings.hook_secret,
                     HOOK_PAYLOAD,
                 )
             }
         )
     except HookError:
         assert 0
Пример #5
0
def github_hook_callback(node_addon, **kwargs):
    """Add logs for commits from outside OSF.

    """
    if request.json is None:
        return {}

    # Fail if hook signature is invalid
    verify_hook_signature(
        node_addon,
        request.data,
        request.headers,
    )

    node = kwargs['node'] or kwargs['project']

    payload = request.json

    for commit in payload.get('commits', []):

        # TODO: Look up OSF user by commit

        # Skip if pushed by OSF
        if commit['message'] and commit['message'] in MESSAGES.values():
            continue

        _id = commit['id']
        date = dateparse(commit['timestamp'])
        committer = commit['committer']['name']

        # Add logs
        for path in commit.get('added', []):
            add_hook_log(
                node, node_addon, 'github_' + NodeLog.FILE_ADDED,
                path, date, committer, include_urls=True, sha=_id,
            )
        for path in commit.get('modified', []):
            add_hook_log(
                node, node_addon, 'github_' + NodeLog.FILE_UPDATED,
                path, date, committer, include_urls=True, sha=_id,
            )
        for path in commit.get('removed', []):
            add_hook_log(
                node, node_addon, 'github_' + NodeLog.FILE_REMOVED,
                path, date, committer,
            )

    node.save()
Пример #6
0
 def test_verify_no_secret(self):
     self.node_settings.hook_secret = None
     with assert_raises(HookError):
         utils.verify_hook_signature(self.node_settings, {}, {})
Пример #7
0
def github_hook_callback(node_addon, **kwargs):
    """Add logs for commits from outside OSF.

    """
    if request.json is None:
        return {}

    # Fail if hook signature is invalid
    utils.verify_hook_signature(
        node_addon,
        request.data,
        request.headers,
    )

    node = kwargs['node'] or kwargs['project']

    payload = request.json

    for commit in payload.get('commits', []):

        # TODO: Look up OSF user by commit

        # Skip if pushed by OSF
        if commit['message'] and commit['message'] in utils.MESSAGES.values():
            continue

        _id = commit['id']
        date = dateparse(commit['timestamp'])
        committer = commit['committer']['name']

        # Add logs
        for path in commit.get('added', []):
            add_hook_log(
                node,
                node_addon,
                'github_' + models.NodeLog.FILE_ADDED,
                path,
                date,
                committer,
                include_urls=True,
                sha=_id,
            )
        for path in commit.get('modified', []):
            add_hook_log(
                node,
                node_addon,
                'github_' + models.NodeLog.FILE_UPDATED,
                path,
                date,
                committer,
                include_urls=True,
                sha=_id,
            )
        for path in commit.get('removed', []):
            add_hook_log(
                node,
                node_addon,
                'github_' + models.NodeLog.FILE_REMOVED,
                path,
                date,
                committer,
            )

    node.save()
Пример #8
0
 def test_verify_no_secret(self):
     self.node_settings.hook_secret = None
     with assert_raises(HookError):
         utils.verify_hook_signature(self.node_settings, {}, {})