Skip to content

Commit 55cd7db

Browse files
authored
Merge pull request #3759 from Kunal-Somani/tests/get-helper-file-views
tests: add tests for get_helper_file and get_helper_file_list views
2 parents f88e07a + 309a851 commit 55cd7db

1 file changed

Lines changed: 88 additions & 0 deletions

File tree

academy/tests.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,94 @@ def test_path_traversal_rejected(self):
382382
self.assertEqual(response.status_code, 403)
383383

384384

385+
class GetHelperFileViewTests(TestCase):
386+
"""Tests for get_helper_file and get_helper_file_list endpoints."""
387+
388+
def setUp(self):
389+
self.tmp = tempfile.mkdtemp()
390+
self.fal = FAL_RA(self.tmp, self.tmp)
391+
from academy import error_handler
392+
393+
self._orig_fal = error_handler.local_fal
394+
error_handler.local_fal = FAL_RA(self.tmp, self.tmp)
395+
Exercise.objects.create(
396+
exercise_id="helper_test_ex",
397+
name="Helper Test Exercise",
398+
description="Test",
399+
url="helper_test_ex",
400+
)
401+
helper_dir = os.path.join(self.tmp, "helper_test_ex", "python_template")
402+
os.makedirs(helper_dir, exist_ok=True)
403+
with open(os.path.join(helper_dir, "helper.py"), "w") as f:
404+
f.write("# helper content")
405+
with open(os.path.join(helper_dir, "model.onnx"), "wb") as f:
406+
f.write(b"TESTBIN")
407+
408+
def tearDown(self):
409+
from academy import error_handler
410+
411+
error_handler.local_fal = self._orig_fal
412+
shutil.rmtree(self.tmp, ignore_errors=True)
413+
414+
def test_get_helper_file_missing_project_returns_400(self):
415+
response = self.client.get(
416+
"/academy/get_helper_file/",
417+
{"language": "python", "filename": "helper.py"},
418+
)
419+
self.assertEqual(response.status_code, 400)
420+
421+
def test_get_helper_file_missing_filename_returns_text_file(self):
422+
response = self.client.get(
423+
"/academy/get_helper_file/",
424+
{
425+
"project": "helper_test_ex",
426+
"language": "python",
427+
"filename": "helper.py",
428+
},
429+
)
430+
self.assertEqual(response.status_code, 200)
431+
self.assertIn("content", response.json())
432+
433+
def test_get_helper_file_binary_returns_base64(self):
434+
response = self.client.get(
435+
"/academy/get_helper_file/",
436+
{
437+
"project": "helper_test_ex",
438+
"language": "python",
439+
"filename": "model.onnx",
440+
"binary": "true",
441+
},
442+
)
443+
self.assertEqual(response.status_code, 200)
444+
self.assertIn("content", response.json())
445+
446+
def test_get_helper_file_text_without_binary_flag(self):
447+
response = self.client.get(
448+
"/academy/get_helper_file/",
449+
{
450+
"project": "helper_test_ex",
451+
"language": "python",
452+
"filename": "helper.py",
453+
},
454+
)
455+
self.assertEqual(response.status_code, 200)
456+
self.assertEqual(response.json()["content"], "# helper content")
457+
458+
def test_get_helper_file_list_missing_project_returns_400(self):
459+
response = self.client.get(
460+
"/academy/get_helper_file_list/",
461+
{"language": "python"},
462+
)
463+
self.assertEqual(response.status_code, 400)
464+
465+
def test_get_helper_file_list_valid_returns_200(self):
466+
response = self.client.get(
467+
"/academy/get_helper_file_list/",
468+
{"project": "helper_test_ex", "language": "python"},
469+
)
470+
self.assertEqual(response.status_code, 200)
471+
472+
385473
class TemplateTests(TestCase):
386474
"""Tests for academy/templates.py select_template function."""
387475

0 commit comments

Comments
 (0)