File tree Expand file tree Collapse file tree 3 files changed +56
-2
lines changed Expand file tree Collapse file tree 3 files changed +56
-2
lines changed Original file line number Diff line number Diff line change 1+ import warnings
2+
3+
4+ # From https://github.com/posit-dev/py-shiny/blob/f6b92d8cf49a90f3b3dbb636cd6d7fdeee244cfd/shiny/_deprecated.py#L15C1-L28C1
5+ # Create our own warning class instead of using built-in DeprecationWarning, because we
6+ # want to be able to control display of these messages without interfering with the
7+ # user's control of DeprecationWarning.
8+ # 2024-11: Change base class to DeprecationWarning
9+ class PositConnectDeprecationWarning (DeprecationWarning ):
10+ pass
11+
12+
13+ # By default DeprecationWarnings aren't shown; we want to always show them.
14+ warnings .simplefilter ("always" , PositConnectDeprecationWarning )
15+
16+
17+ def warn_deprecated (message : str , stacklevel : int = 3 ):
18+ warnings .warn (message , PositConnectDeprecationWarning , stacklevel = stacklevel )
19+
20+
21+ def warn_deprecated_and_removed_in_future (message : str , stacklevel : int = 3 ):
22+ message += " This method will be removed in a future release."
23+ warnings .warn (message , PositConnectDeprecationWarning , stacklevel = stacklevel )
Original file line number Diff line number Diff line change 66
77from requests .sessions import Session as Session
88
9+ from ._deprecated import warn_deprecated_and_removed_in_future
910from .resources import Resource , ResourceParameters , Resources
1011
1112if TYPE_CHECKING :
1415
1516
1617class Permission (Resource ):
18+ def delete (self ) -> None :
19+ """[Deprecated] Delete the permission."""
20+ warn_deprecated_and_removed_in_future ("Please use .destroy() instead of .delete()." )
21+
22+ self .destroy ()
23+
1724 def destroy (self ) -> None :
18- """Delete the permission."""
25+ """Destroy the permission."""
1926 path = f"v1/content/{ self ['content_guid' ]} /permissions/{ self ['id' ]} "
2027 url = self .params .url + path
2128 self .params .session .delete (url )
Original file line number Diff line number Diff line change 66import responses
77from responses import matchers
88
9+ from posit .connect ._deprecated import PositConnectDeprecationWarning
910from posit .connect .groups import Group
1011from posit .connect .permissions import Permission , Permissions
1112from posit .connect .resources import ResourceParameters
1516from .api import load_mock , load_mock_dict , load_mock_list
1617
1718
18- class TestPermissionDelete :
19+ class TestPermissionDestroy :
1920 @responses .activate
2021 def test (self ):
2122 # data
@@ -38,6 +39,29 @@ def test(self):
3839 # assert
3940 assert mock_delete .call_count == 1
4041
42+ @responses .activate
43+ def test_destroy_deprecated (self ):
44+ # data
45+ uid = "94"
46+ content_guid = "f2f37341-e21d-3d80-c698-a935ad614066"
47+
48+ # behavior
49+ mock_delete = responses .delete (
50+ f"https://connect.example/__api__/v1/content/{ content_guid } /permissions/{ uid } " ,
51+ )
52+
53+ # setup
54+ params = ResourceParameters (requests .Session (), Url ("https://connect.example/__api__" ))
55+ fake_permission = load_mock_dict (f"v1/content/{ content_guid } /permissions/{ uid } .json" )
56+ permission = Permission (params , ** fake_permission )
57+
58+ # invoke
59+ with pytest .warns (PositConnectDeprecationWarning , match = "destroy" ):
60+ permission .delete ()
61+
62+ # assert
63+ assert mock_delete .call_count == 1
64+
4165
4266class TestPermissionUpdate :
4367 @responses .activate
You can’t perform that action at this time.
0 commit comments