示例#1
0
 def test_build_formdata_with_add_metadata(self):
     """The data body sent to GitHub API, with additional metadata."""
     # we just need to test that nothing breaks
     # even if the data are empty
     form_object = {'foo': 'bar'}
     form_object = form.add_metadata(
         form_object, {'public_url': 'https://public.example.com'})
     actual = form.build_formdata(form_object)
     expected = {
         'body':
         '<!-- @browser: None -->\n<!-- @ua_header: None -->\n<!-- @reported_with: None -->\n<!-- @public_url: https://public.example.com -->\n\n**URL**: None\n\n**Browser / Version**: None\n**Operating System**: None\n**Tested Another Browser**: Unknown \n\n**Problem type**: Unknown\n**Description**: None\n**Steps to Reproduce**:\nNone\n\n\n\n_From [webcompat.com](https://webcompat.com/) with \u2764\ufe0f_',
         'title': 'None - unknown'
     }  # noqa
     self.assertIs(type(actual), dict)
     self.assertEqual(actual, expected)
     form_object2 = form.add_metadata(form_object, {'foo': 'bar'})
     actual2 = form.build_formdata(form_object2)
     expected = {
         'body':
         '<!-- @browser: None -->\n<!-- @ua_header: None -->\n<!-- @reported_with: None -->\n<!-- @foo: bar -->\n\n**URL**: None\n\n**Browser / Version**: None\n**Operating System**: None\n**Tested Another Browser**: Unknown \n\n**Problem type**: Unknown\n**Description**: None\n**Steps to Reproduce**:\nNone\n\n\n\n_From [webcompat.com](https://webcompat.com/) with \u2764\ufe0f_',
         'title': 'None - unknown'
     }  # noqa
     self.assertIs(type(actual2), dict)
     self.assertEqual(actual2, expected)
     form_object3 = form.add_metadata(form_object, {'😀': '😅'})
     actual3 = form.build_formdata(form_object3)
     expected = {
         'body':
         '<!-- @browser: None -->\n<!-- @ua_header: None -->\n<!-- @reported_with: None -->\n<!-- @😀: 😅 -->\n\n**URL**: None\n\n**Browser / Version**: None\n**Operating System**: None\n**Tested Another Browser**: Unknown \n\n**Problem type**: Unknown\n**Description**: None\n**Steps to Reproduce**:\nNone\n\n\n\n_From [webcompat.com](https://webcompat.com/) with \u2764\ufe0f_',
         'title': 'None - unknown'
     }  # noqa
     self.assertIs(type(actual3), dict)
     self.assertEqual(actual3, expected)
示例#2
0
 def test_build_formdata(self):
     """The data body sent to GitHub API."""
     # we just need to test that nothing breaks
     # even if the data are empty
     form_object = {'foo': 'bar'}
     actual = form.build_formdata(form_object)
     expected = {
         'body':
         u'<!-- @browser: None -->\n<!-- @ua_header: None -->\n<!-- @reported_with: None -->\n\n**URL**: None\n\n**Browser / Version**: None\n**Operating System**: None\n**Tested Another Browser**: Unknown\n\n**Problem type**: Unknown\n**Description**: None\n**Steps to Reproduce**:\nNone\n\n\n\n_From [webcompat.com](https://webcompat.com/) with \u2764\ufe0f_',
         'title': 'None - unknown'
     }  # nopep8
     self.assertIs(type(actual), dict)
     self.assertEqual(actual, expected)
     # testing for double URL Schemes.
     form_object = {'url': 'http://*****:*****@browser: None -->\n<!-- @ua_header: None -->\n<!-- @reported_with: None -->\n\n**URL**: https://example.com/\n\n**Browser / Version**: None\n**Operating System**: None\n**Tested Another Browser**: Unknown\n\n**Problem type**: Unknown\n**Description**: None\n**Steps to Reproduce**:\nNone\n\n\n\n_From [webcompat.com](https://webcompat.com/) with \u2764\ufe0f_',
         'title': 'example.com - unknown'
     }  # nopep8
     self.assertEqual(actual, expected)
     # testing with unicode strings.
     form_object = {'url': u'愛'}
     actual = form.build_formdata(form_object)
     expected = {
         'body':
         u'<!-- @browser: None -->\n<!-- @ua_header: None -->\n<!-- @reported_with: None -->\n\n**URL**: http://\u611b\n\n**Browser / Version**: None\n**Operating System**: None\n**Tested Another Browser**: Unknown\n\n**Problem type**: Unknown\n**Description**: None\n**Steps to Reproduce**:\nNone\n\n\n\n_From [webcompat.com](https://webcompat.com/) with \u2764\ufe0f_',
         'title': u'\u611b - unknown'
     }  # nopep8
     self.assertEqual(actual, expected)
示例#3
0
def report_issue(form, proxy=False):
    '''Report an issue, as a logged in user or anonymously.'''
    # /repos/:owner/:repo/issues
    path = 'repos/{0}'.format(REPO_URI)
    if proxy:
        return proxy_request('post', path,
                             data=json.dumps(build_formdata(form)))
    else:
        return github.post(path, build_formdata(form))
示例#4
0
def report_issue(form, proxy=False):
    '''Report an issue, as a logged in user or anonymously.'''
    # /repos/:owner/:repo/issues
    path = 'repos/{0}'.format(REPO_URI)
    if proxy:
        return proxy_request('post', path,
                             data=json.dumps(build_formdata(form)))
    else:
        return github.post(path, build_formdata(form))
示例#5
0
def report_issue(form, proxy=False):
    '''Report an issue, as a logged in user or anonymously.'''
    # /repos/:owner/:repo/issues
    path = 'repos/{0}'.format(REPO_URI)
    if proxy:
        # Return a Response object.
        response = proxy_request('post',
                                 path,
                                 data=json.dumps(build_formdata(form)))
        json_response = response.json()
    else:
        # Return JSON data as a dict
        json_response = github.post(path, build_formdata(form))
    return json_response
示例#6
0
def report_issue(form, proxy=False):
    """Report an issue, as a logged in user or anonymously."""
    # /repos/:owner/:repo/issues
    path = 'repos/{0}'.format(REPO_URI)
    submit_type = form.get('submit_type')
    if proxy and submit_type == 'github-proxy-report':
        # Return a Response object.
        response = proxy_request('post',
                                 path,
                                 data=json.dumps(build_formdata(form)))
        json_response = response.json()
    elif (not proxy) and submit_type == 'github-auth-report':
        # Return JSON data as a dict
        json_response = github.post(path, build_formdata(form))
    else:
        abort(400)
    return json_response
示例#7
0
def report_issue(form, proxy=False):
    """Report an issue, as a logged in user or anonymously."""
    # /repos/:owner/:repo/issues
    path = 'repos/{0}'.format(REPO_URI)
    submit_type = form.get('submit_type')
    if proxy and submit_type == 'github-proxy-report':
        # Return a Response object.
        response = proxy_request('post',
                                 path,
                                 data=json.dumps(build_formdata(form)))
        json_response = response.json()
    elif (not proxy) and submit_type == 'github-auth-report':
        # Return JSON data as a dict
        json_response = github.post(path, build_formdata(form))
    else:
        abort(400)
    return json_response
示例#8
0
    def test_build_formdata(self):
        """The data body sent to GitHup API."""
        form_object = {'foo': 'bar'}
        actual = form.build_formdata(form_object)

        # we just need to test that nothing breaks
        # even if the data are empty
        expected = {'body': u'<!-- @browser: None -->\n<!-- @ua_header: None -->\n<!-- @reported_with: None -->\n\n**URL**: None\n\n**Browser / Version**: None\n**Operating System**: None\n**Tested Another Browser**: Unknown\n\n**Problem type**: Unknown\n**Description**: None\n**Steps to Reproduce**:\nNone\n\n\n\n_From [webcompat.com](https://webcompat.com/) with \u2764\ufe0f_', 'title': 'None - unknown'}  # nopep8
        self.assertIs(type(actual), dict)
        self.assertEqual(actual, expected)
示例#9
0
 def test_build_formdata(self):
     """The data body sent to GitHub API."""
     # we just need to test that nothing breaks
     # even if the data are empty
     form_object = {'foo': 'bar'}
     actual = form.build_formdata(form_object)
     expected = {'body': u'<!-- @browser: None -->\n<!-- @ua_header: None -->\n<!-- @reported_with: None -->\n\n**URL**: None\n\n**Browser / Version**: None\n**Operating System**: None\n**Tested Another Browser**: Unknown\n\n**Problem type**: Unknown\n**Description**: None\n**Steps to Reproduce**:\nNone\n\n\n\n_From [webcompat.com](https://webcompat.com/) with \u2764\ufe0f_', 'title': 'None - unknown'}  # noqa
     self.assertIs(type(actual), dict)
     self.assertEqual(actual, expected)
     # testing for double URL Schemes.
     form_object = {'url': 'http://*****:*****@browser: None -->\n<!-- @ua_header: None -->\n<!-- @reported_with: None -->\n\n**URL**: https://example.com/\n\n**Browser / Version**: None\n**Operating System**: None\n**Tested Another Browser**: Unknown\n\n**Problem type**: Unknown\n**Description**: None\n**Steps to Reproduce**:\nNone\n\n\n\n_From [webcompat.com](https://webcompat.com/) with \u2764\ufe0f_', 'title': 'example.com - unknown'}  # noqa
     self.assertEqual(actual, expected)
     # testing with unicode strings.
     form_object = {'url': u'愛'}
     actual = form.build_formdata(form_object)
     expected = {'body': u'<!-- @browser: None -->\n<!-- @ua_header: None -->\n<!-- @reported_with: None -->\n\n**URL**: http://\u611b\n\n**Browser / Version**: None\n**Operating System**: None\n**Tested Another Browser**: Unknown\n\n**Problem type**: Unknown\n**Description**: None\n**Steps to Reproduce**:\nNone\n\n\n\n_From [webcompat.com](https://webcompat.com/) with \u2764\ufe0f_', 'title': u'\u611b - unknown'}  # noqa
     self.assertEqual(actual, expected)
示例#10
0
def report_private_issue(form, public_url):
    """Report the issue privately.

    This also allows us to pass in public_url metadata, to be
    embedded in the issue body.

    Returns None (so we don't accidentally leak data).
    """
    path = 'repos/{0}'.format(PRIVATE_REPO_URI)
    milestone = PRIVATE_REPO_MILESTONE
    form = add_metadata(form, {'public_url': public_url})
    formdata = build_formdata(form)
    # add the milestone number to set
    formdata['milestone'] = milestone
    proxy_request('post', path, data=json.dumps(formdata))
    return None
示例#11
0
def report_issue(form, proxy=False):
    """Report an issue, as a logged in user or anonymously."""
    # /repos/:owner/:repo/issues
    path = 'repos/{0}'.format(REPO_URI)
    submit_type = form.get('submit_type')
    if proxy and submit_type == 'github-proxy-report':
        status_code, json_response = report_public_issue()
        if status_code == 201:
            report_private_issue(form, json_response.get('html_url'))
        else:
            abort(400)
    elif (not proxy) and submit_type == 'github-auth-report':
        # returns JSON data as a dict
        json_response = github.post(path, build_formdata(form))
    else:
        abort(400)
    return json_response