test: fix tests

This commit is contained in:
Rohan Bansal 2019-08-28 14:00:50 +05:30
parent ef31f44a0b
commit d768763da4

View file

@ -10,95 +10,88 @@ from frappe.integrations.doctype.webhook.webhook import get_webhook_headers, get
class TestWebhook(unittest.TestCase):
def setUp(self):
# retrieve or create a User webhook for `after_insert`
webhook_fields = {
"webhook_doctype": "User",
"webhook_docevent": "after_insert",
"request_url": "https://httpbin.org/post"
}
if frappe.db.exists("Webhook", webhook_fields):
self.webhook = frappe.get_doc("Webhook", webhook_fields)
else:
self.webhook = frappe.new_doc("Webhook")
self.webhook.update(webhook_fields)
# create a User document
self.user = frappe.new_doc("User")
self.user.first_name = frappe.mock("name")
self.user.email = frappe.mock("email")
self.user.save()
def test_validate_doc_events(self):
"Test creating a submit-related webhook for a non-submittable DocType"
doc = frappe.new_doc("Webhook")
doc.webhook_doctype = "User"
doc.webhook_docevent = "on_submit"
doc.request_url = "https://httpbin.org/post"
self.assertRaises(frappe.ValidationError, doc.save)
self.webhook.webhook_docevent = "on_submit"
self.assertRaises(frappe.ValidationError, self.webhook.save)
def test_validate_request_url(self):
"Test validation for the webhook request URL"
doc = frappe.new_doc("Webhook")
doc.webhook_doctype = "User"
doc.webhook_docevent = "after_insert"
doc.request_url = "httpbin.org?post"
self.assertRaises(frappe.ValidationError, doc.save)
self.webhook.request_url = "httpbin.org?post"
self.assertRaises(frappe.ValidationError, self.webhook.save)
def test_validate_headers(self):
"Test validation for request headers"
doc = frappe.new_doc("Webhook")
doc.webhook_doctype = "User"
doc.webhook_docevent = "after_insert"
doc.request_url = "https://httpbin.org/post"
# test incomplete headers
doc.webhook_headers = [{
self.webhook.set("webhook_headers", [{
"key": "Content-Type"
}]
doc.save()
headers = get_webhook_headers(doc=None, webhook=doc)
}])
self.webhook.save()
headers = get_webhook_headers(doc=None, webhook=self.webhook)
self.assertEqual(headers, None)
# test complete headers
doc.webhook_headers = [{
self.webhook.set("webhook_headers", [{
"key": "Content-Type",
"value": "application/json"
}]
doc.save()
headers = get_webhook_headers(doc=None, webhook=doc)
}])
self.webhook.save()
headers = get_webhook_headers(doc=None, webhook=self.webhook)
self.assertEqual(headers, {"Content-Type": "application/json"})
def test_validate_request_body_form(self):
"Test validation of Form URL-Encoded request body"
doc = frappe.new_doc("Webhook")
doc.webhook_doctype = "User"
doc.webhook_docevent = "after_insert"
doc.request_url = "https://httpbin.org/post"
doc.request_structure = "Form URL-Encoded"
doc.set("webhook_data", [{
self.webhook.request_structure = "Form URL-Encoded"
self.webhook.set("webhook_data", [{
"fieldname": "name",
"key": "name"
}])
doc.webhook_json = """{
self.webhook.webhook_json = """{
"name": "Test User"
}"""
doc.save()
self.assertEqual(doc.webhook_json, None)
self.webhook.save()
self.assertEqual(self.webhook.webhook_json, None)
user = frappe.new_doc("User")
user.first_name = frappe.mock("name")
user.email = frappe.mock("email")
user.save()
data = get_webhook_data(user, webhook=doc)
self.assertEqual(data, {"name": user.name})
data = get_webhook_data(doc=self.user, webhook=self.webhook)
self.assertEqual(data, {"name": self.user.name})
def test_validate_request_body_json(self):
"Test validation of JSON request body"
doc = frappe.new_doc("Webhook")
doc.webhook_doctype = "User"
doc.webhook_docevent = "after_insert"
doc.request_url = "https://httpbin.org/post"
doc.request_structure = "JSON"
doc.set("webhook_data", [{
self.webhook.request_structure = "JSON"
self.webhook.set("webhook_data", [{
"fieldname": "name",
"key": "name"
}])
doc.webhook_json = """{
"name": "{{ doc.name }}"
self.webhook.webhook_json = """{
"name": "{{ self.webhook.name }}"
}"""
doc.save()
self.assertEqual(doc.webhook_data, [])
self.webhook.save()
self.assertEqual(self.webhook.webhook_data, [])
user = frappe.new_doc("User")
user.first_name = frappe.mock("name")
user.email = frappe.mock("email")
user.save()
data = get_webhook_data(user, webhook=doc)
self.assertEqual(data, {"name": user.name})
data = get_webhook_data(doc=self.user, webhook=self.webhook)
self.assertEqual(data, {"name": self.user.name})