Code Duplication    Length = 35-36 lines in 3 locations

tests/unit/server_tests/test_evaluation_plane_handler.py 3 locations

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