@@ -78,12 +78,12 @@ def test_create_folder_with_parent():
7878
7979
8080@mock .patch ("sasctl.core.Session.request" )
81- def test_get_folder_with_path (request ):
82- """Verify that simple folder paths instead of names are handled ."""
81+ def test_get_folder_by_name (request ):
82+ """Verify that looking up a folder by name works ."""
8383 request .return_value .status_code = 200
8484 request .return_value .json .return_value = {"name" : "Spam" }
8585
86- folder = folders .get_folder ("/ Spam" )
86+ folder = folders .get_folder ("Spam" )
8787 assert folder is not None
8888 assert folder .name == "Spam"
8989
@@ -95,4 +95,63 @@ def test_get_folder_with_path(request):
9595
9696 # / should have been stripped out of folder name
9797 assert '"Spam"' in search_filter
98- assert '"/Spam"' not in search_filter
98+
99+
100+ @mock .patch ("sasctl.core.Session.request" )
101+ def test_get_folder_by_path (request ):
102+ """Verify that simple folder paths instead of names are handled."""
103+ request .return_value .status_code = 200
104+ request .return_value .json .return_value = {"name" : "Spam" }
105+
106+ folder = folders .get_folder ("/Spam" )
107+ assert folder is not None
108+ assert folder .name == "Spam"
109+
110+ # Should not have called list_folders to search. Should have been a direct call to lookup by path.
111+ assert request .call_count == 1
112+
113+ url , params = request .call_args_list [0 ]
114+ query_string = params ["params" ]
115+
116+ assert url [1 ] == "/folders/folders/@item"
117+ assert query_string ["path" ] == "/Spam"
118+
119+
120+ @mock .patch ("sasctl.core.Session.request" )
121+ def test_get_folder_by_path (request ):
122+ """Verify that complex folder paths are handled."""
123+ request .return_value .status_code = 200
124+ request .return_value .json .return_value = {"name" : "Spam" }
125+
126+ folder = folders .get_folder ("Spam/Eggs/Spam" )
127+ assert folder is not None
128+ assert folder .name == "Spam"
129+
130+ # Should not have called list_folders to search. Should have been a direct call to lookup by path.
131+ assert request .call_count == 1
132+
133+ url , params = request .call_args_list [0 ]
134+ query_string = params ["params" ]
135+
136+ assert url [1 ] == "/folders/folders/@item"
137+
138+ # Leading "/" should have been added
139+ assert query_string ["path" ] == "/Spam/Eggs/Spam"
140+
141+
142+ @mock .patch ("sasctl.core.Session.request" )
143+ def test_get_folder_by_delegate (request ):
144+ """Verify that folder can be found by using delegate strings (e.g. @public)."""
145+ request .return_value .status_code = 200
146+ request .return_value .json .return_value = {"name" : "Spam" }
147+
148+ folder = folders .get_folder ("@spam" )
149+ assert folder is not None
150+ assert folder .name == "Spam"
151+
152+ # Should not have called list_folders to search. Should have been a direct call to GET by id.
153+ assert request .call_count == 1
154+
155+ url , params = request .call_args_list [0 ]
156+ assert url [1 ] == "/folders/folders/@spam"
157+ assert params == {}
0 commit comments