2828from unittest import mock
2929
3030from django .apps import apps
31- from django .core .exceptions import SuspiciousFileOperation
3231from django .http import FileResponse
3332from django .http .response import Http404
3433from django .test import TestCase
6059from scanpipe .tests import package_data2
6160from scanpipe .views import CodebaseResourceDetailsView
6261from scanpipe .views import ProjectActionView
63- from scanpipe .views import ProjectCodebaseView
62+ from scanpipe .views import ProjectCodebasePanelView
6463from scanpipe .views import ProjectDetailView
6564
6665scanpipe_app = apps .get_app_config ("scanpipe" )
@@ -676,22 +675,9 @@ def test_scanpipe_views_project_codebase_view(self):
676675 (self .project1 .codebase_path / "file.txt" ).touch ()
677676
678677 response = self .client .get (url )
679- self .assertContains (response , "/codebase/?current_dir=./dir1" )
680- self .assertContains (response , "/resources/./file.txt/" )
681-
682- data = {"current_dir" : "dir1" }
683- response = self .client .get (url , data = data )
684- self .assertContains (response , ".." )
685- self .assertContains (response , "/codebase/?current_dir=." )
686- self .assertContains (response , "/codebase/?current_dir=dir1/dir2" )
687-
688- data = {"current_dir" : "not_existing" }
689- response = self .client .get (url , data = data )
690- self .assertEqual (404 , response .status_code )
691-
692- data = {"current_dir" : "../" }
693- response = self .client .get (url , data = data )
694- self .assertEqual (404 , response .status_code )
678+ resource_tree_url = reverse ("project_resource_tree" , args = [self .project1 .slug ])
679+ self .assertContains (response , f"{ resource_tree_url } ?path=dir1" )
680+ self .assertContains (response , f"{ resource_tree_url } ?path=file.txt" )
695681
696682 def test_scanpipe_views_project_codebase_view_ordering (self ):
697683 url = reverse ("project_codebase" , args = [self .project1 .slug ])
@@ -703,47 +689,33 @@ def test_scanpipe_views_project_codebase_view_ordering(self):
703689 (self .project1 .codebase_path / "Dir" ).mkdir ()
704690
705691 response = self .client .get (url )
706- codebase_tree = response .context_data ["codebase_tree " ]
692+ codebase_tree = response .context_data ["codebase_root_tree " ]
707693 expected = ["Dir" , "Zdir" , "a" , "z" , "a.txt" , "z.txt" ]
708694 self .assertEqual (expected , [path .get ("name" ) for path in codebase_tree ])
709695
710- def test_scanpipe_views_project_codebase_view_get_tree (self ):
711- get_tree = ProjectCodebaseView . get_tree
696+ def test_scanpipe_views_project_codebase_view_get_root_tree (self ):
697+ get_root_tree = ProjectCodebasePanelView . get_root_tree
712698
713699 (self .project1 .codebase_path / "dir1" ).mkdir ()
714700 (self .project1 .codebase_path / "dir1/dir2" ).mkdir ()
715701 (self .project1 .codebase_path / "file.txt" ).touch ()
716702
717703 with mock .patch .object (scanpipe_app , "workspace_path" , "" ):
718704 self .assertEqual ("" , scanpipe_app .workspace_path )
719- with self .assertRaises (ValueError ) as e :
720- get_tree (self .project1 , current_dir = "" )
721-
722- with self .assertRaises (FileNotFoundError ):
723- get_tree (self .project1 , current_dir = "not_existing" )
724-
725- with self .assertRaises (SuspiciousFileOperation ) as e :
726- get_tree (self .project1 , current_dir = "../../" )
727- self .assertIn ("is located outside of the base path component" , str (e .exception ))
728-
729- codebase_tree = get_tree (self .project1 , current_dir = "" )
730- expected = [
731- {"name" : "dir1" , "is_dir" : True , "location" : "/dir1" },
732- {"name" : "file.txt" , "is_dir" : False , "location" : "/file.txt" },
733- ]
734- self .assertEqual (expected , codebase_tree )
705+ with self .assertRaises (ValueError ):
706+ get_root_tree (self .project1 )
735707
736- codebase_tree = get_tree (self .project1 , current_dir = "dir1" )
708+ codebase_tree = get_root_tree (self .project1 )
737709 expected = [
738- {"name" : ".. " , "is_dir" : True , "location" : "." },
739- {"name" : "dir2 " , "is_dir" : True , "location" : "dir1/dir2" },
710+ {"name" : "dir1 " , "is_dir" : True },
711+ {"name" : "file.txt " , "is_dir" : False },
740712 ]
741713 self .assertEqual (expected , codebase_tree )
742714
743715 shutil .rmtree (self .project1 .work_directory , ignore_errors = True )
744716 self .assertFalse (self .project1 .codebase_path .exists ())
745717 with self .assertRaises (Exception ):
746- get_tree (self .project1 , current_dir = "" )
718+ get_root_tree (self .project1 )
747719
748720 def test_scanpipe_views_project_archive_view (self ):
749721 url = reverse ("project_archive" , args = [self .project1 .slug ])
@@ -1682,12 +1654,12 @@ def test_scanpipe_views_project_resource_tree_table_view_with_path_directory(sel
16821654 self .assertEqual (["parent/child1.txt" , "parent/child2.py" ], resource_paths )
16831655
16841656 def test_scanpipe_views_project_resource_tree_table_view_with_path_file (self ):
1685- make_resource_file (self .project1 , path = "specific_file.txt" )
1657+ resource = make_resource_file (self .project1 , path = "specific_file.txt" )
16861658
16871659 url = reverse (
16881660 "project_resource_tree_table" , kwargs = {"slug" : self .project1 .slug }
16891661 )
1690- response = self .client .get (url + "?path=specific_file.txt " )
1662+ response = self .client .get (url + f "?path={ resource . path } " )
16911663
16921664 self .assertEqual (200 , response .status_code )
16931665 self .assertEqual ("specific_file.txt" , response .context ["path" ])
@@ -1708,23 +1680,6 @@ def test_scanpipe_views_project_resource_tree_table_view_empty_directory(self):
17081680 resources = list (response .context ["resources" ])
17091681 self .assertEqual (0 , len (resources ))
17101682
1711- def test_scanpipe_views_project_resource_tree_table_view_with_packages (self ):
1712- resource1 = make_resource_file (self .project1 , path = "file_with_package.txt" )
1713- package1 = DiscoveredPackage .create_from_data (self .project1 , package_data1 )
1714- package1 .add_resources ([resource1 ])
1715-
1716- url = reverse (
1717- "project_resource_tree_table" , kwargs = {"slug" : self .project1 .slug }
1718- )
1719- response = self .client .get (url + "?path=file_with_package.txt" )
1720-
1721- self .assertEqual (200 , response .status_code )
1722- resources = list (response .context ["resources" ])
1723- self .assertEqual (1 , len (resources ))
1724-
1725- resource = resources [0 ]
1726- self .assertTrue (resource .discovered_packages .exists ())
1727-
17281683 @mock .patch ("scanpipe.views.ProjectResourceTreeTableView.paginate_by" , 2 )
17291684 def test_scanpipe_views_project_resource_tree_table_view_pagination (self ):
17301685 make_resource_directory (self .project1 , path = "parent" )
@@ -1761,7 +1716,7 @@ def test_scanpipe_views_project_resource_tree_table_view_field_selection(self):
17611716 url = reverse (
17621717 "project_resource_tree_table" , kwargs = {"slug" : self .project1 .slug }
17631718 )
1764- response = self .client .get (url + "?path=test_file.py " )
1719+ response = self .client .get (url + f "?path={ resource . path } " )
17651720
17661721 self .assertEqual (200 , response .status_code )
17671722 resources = list (response .context ["resources" ])
@@ -1770,5 +1725,4 @@ def test_scanpipe_views_project_resource_tree_table_view_field_selection(self):
17701725 resource = resources [0 ]
17711726 self .assertEqual ("test_file.py" , resource .path )
17721727 self .assertEqual ("Python" , resource .programming_language )
1773- self .assertEqual ("text/x-python" , resource .mime_type )
17741728 self .assertEqual ("MIT" , resource .detected_license_expression )
0 commit comments