| @@ 426-461 (lines=36) @@ | ||
| 423 | self.assertEqual(404, response.code) |
|
| 424 | ||
| 425 | ||
| 426 | class TestEvaluationPlaneHandlerEnabled(AsyncHTTPTestCase): |
|
| 427 | @classmethod |
|
| 428 | def setUpClass(cls): |
|
| 429 | prefix = "__TestEvaluationPlaneHandlerEnabled_" |
|
| 430 | ||
| 431 | # create config file |
|
| 432 | cls.config_file = tempfile.NamedTemporaryFile( |
|
| 433 | mode="w+t", prefix=prefix, suffix=".conf", delete=False |
|
| 434 | ) |
|
| 435 | cls.config_file.write( |
|
| 436 | "[TabPy]\n" |
|
| 437 | f"TABPY_EVALUATE_ENABLE = true" |
|
| 438 | ) |
|
| 439 | cls.config_file.close() |
|
| 440 | ||
| 441 | cls.script = ( |
|
| 442 | '{"data":{"_arg1":[2,3],"_arg2":[3,-1]},'
|
|
| 443 | '"script":"res=[]\\nfor i in range(len(_arg1)):\\n ' |
|
| 444 | 'res.append(_arg1[i] * _arg2[i])\\nreturn res"}' |
|
| 445 | ) |
|
| 446 | ||
| 447 | @classmethod |
|
| 448 | def tearDownClass(cls): |
|
| 449 | os.remove(cls.config_file.name) |
|
| 450 | ||
| 451 | def get_app(self): |
|
| 452 | self.app = TabPyApp(self.config_file.name) |
|
| 453 | return self.app._create_tornado_web_app() |
|
| 454 | ||
| 455 | def test_evaluation_enabled(self): |
|
| 456 | response = self.fetch( |
|
| 457 | "/evaluate", |
|
| 458 | method="POST", |
|
| 459 | body=self.script |
|
| 460 | ) |
|
| 461 | self.assertEqual(200, response.code) |
|
| 462 | ||
| 463 | class TestEvaluationPlaneHandlerMaxRequestSize(AsyncHTTPTestCase): |
|
| 464 | @classmethod |
|
| @@ 293-328 (lines=36) @@ | ||
| 290 | self.assertEqual(406, response.code) |
|
| 291 | ||
| 292 | ||
| 293 | class TestEvaluationPlaneHandlerDisabledWithoutAuth(AsyncHTTPTestCase): |
|
| 294 | @classmethod |
|
| 295 | def setUpClass(cls): |
|
| 296 | prefix = "__TestEvaluationPlaneHandlerDisabledWithoutAuth_" |
|
| 297 | ||
| 298 | # create config file |
|
| 299 | cls.config_file = tempfile.NamedTemporaryFile( |
|
| 300 | mode="w+t", prefix=prefix, suffix=".conf", delete=False |
|
| 301 | ) |
|
| 302 | cls.config_file.write( |
|
| 303 | "[TabPy]\n" |
|
| 304 | f"TABPY_EVALUATE_ENABLE = false" |
|
| 305 | ) |
|
| 306 | cls.config_file.close() |
|
| 307 | ||
| 308 | cls.script = ( |
|
| 309 | '{"data":{"_arg1":[2,3],"_arg2":[3,-1]},'
|
|
| 310 | '"script":"res=[]\\nfor i in range(len(_arg1)):\\n ' |
|
| 311 | 'res.append(_arg1[i] * _arg2[i])\\nreturn res"}' |
|
| 312 | ) |
|
| 313 | ||
| 314 | @classmethod |
|
| 315 | def tearDownClass(cls): |
|
| 316 | os.remove(cls.config_file.name) |
|
| 317 | ||
| 318 | def get_app(self): |
|
| 319 | self.app = TabPyApp(self.config_file.name) |
|
| 320 | return self.app._create_tornado_web_app() |
|
| 321 | ||
| 322 | def test_evaluation_disabled_fails(self): |
|
| 323 | response = self.fetch( |
|
| 324 | "/evaluate", |
|
| 325 | method="POST", |
|
| 326 | body=self.script |
|
| 327 | ) |
|
| 328 | self.assertEqual(404, response.code) |
|
| 329 | ||
| 330 | ||
| 331 | class TestEvaluationPlaneHandlerDisabledWithAuth(AsyncHTTPTestCase): |
|
| @@ 525-559 (lines=35) @@ | ||
| 522 | self.assertEqual("Error processing script", message)
|
|
| 523 | ||
| 524 | ||
| 525 | class TestEvaluationPlaneHandlerDefault(AsyncHTTPTestCase): |
|
| 526 | @classmethod |
|
| 527 | def setUpClass(cls): |
|
| 528 | prefix = "__TestEvaluationPlaneHandlerDefault_" |
|
| 529 | ||
| 530 | # create config file |
|
| 531 | cls.config_file = tempfile.NamedTemporaryFile( |
|
| 532 | mode="w+t", prefix=prefix, suffix=".conf", delete=False |
|
| 533 | ) |
|
| 534 | cls.config_file.write( |
|
| 535 | "[TabPy]" |
|
| 536 | ) |
|
| 537 | cls.config_file.close() |
|
| 538 | ||
| 539 | cls.script = ( |
|
| 540 | '{"data":{"_arg1":[2,3],"_arg2":[3,-1]},'
|
|
| 541 | '"script":"res=[]\\nfor i in range(len(_arg1)):\\n ' |
|
| 542 | 'res.append(_arg1[i] * _arg2[i])\\nreturn res"}' |
|
| 543 | ) |
|
| 544 | ||
| 545 | @classmethod |
|
| 546 | def tearDownClass(cls): |
|
| 547 | os.remove(cls.config_file.name) |
|
| 548 | ||
| 549 | def get_app(self): |
|
| 550 | self.app = TabPyApp(self.config_file.name) |
|
| 551 | return self.app._create_tornado_web_app() |
|
| 552 | ||
| 553 | def test_evaluation_default(self): |
|
| 554 | response = self.fetch( |
|
| 555 | "/evaluate", |
|
| 556 | method="POST", |
|
| 557 | body=self.script |
|
| 558 | ) |
|
| 559 | self.assertEqual(200, response.code) |
|
| 560 | ||