test: fix tests
This commit is contained in:
parent
ef31f44a0b
commit
d768763da4
1 changed files with 47 additions and 54 deletions
|
|
@ -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})
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue