From 5e518b741704b738e29352c341ee6a956cce1fff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=B7=E6=B8=A1?= Date: Thu, 27 Dec 2018 10:12:55 +0800 Subject: check runtime `FormData` and `Headers` params (#1415) --- js/form_data_test.ts | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) (limited to 'js/form_data_test.ts') diff --git a/js/form_data_test.ts b/js/form_data_test.ts index f3fbdd872..109220f63 100644 --- a/js/form_data_test.ts +++ b/js/form_data_test.ts @@ -96,3 +96,73 @@ test(function formDataParamsForEachSuccess() { }); assertEqual(callNum, init.length); }); + +test(function formDataParamsArgumentsCheck() { + const methodRequireOneParam = ["delete", "getAll", "get", "has", "forEach"]; + + const methodRequireTwoParams = ["append", "set"]; + + methodRequireOneParam.forEach(method => { + const formData = new FormData(); + let hasThrown = 0; + let errMsg = ""; + try { + formData[method](); + hasThrown = 1; + } catch (err) { + errMsg = err.message; + if (err instanceof TypeError) { + hasThrown = 2; + } else { + hasThrown = 3; + } + } + assertEqual(hasThrown, 2); + assertEqual( + errMsg, + `FormData.${method} requires at least 1 argument, but only 0 present` + ); + }); + + methodRequireTwoParams.forEach(method => { + const formData = new FormData(); + let hasThrown = 0; + let errMsg = ""; + + try { + formData[method](); + hasThrown = 1; + } catch (err) { + errMsg = err.message; + if (err instanceof TypeError) { + hasThrown = 2; + } else { + hasThrown = 3; + } + } + assertEqual(hasThrown, 2); + assertEqual( + errMsg, + `FormData.${method} requires at least 2 arguments, but only 0 present` + ); + + hasThrown = 0; + errMsg = ""; + try { + formData[method]("foo"); + hasThrown = 1; + } catch (err) { + errMsg = err.message; + if (err instanceof TypeError) { + hasThrown = 2; + } else { + hasThrown = 3; + } + } + assertEqual(hasThrown, 2); + assertEqual( + errMsg, + `FormData.${method} requires at least 2 arguments, but only 1 present` + ); + }); +}); -- cgit v1.2.3