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)
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)
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))
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
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
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)
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)
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
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