@@ -144,6 +144,32 @@ with_mock_api({
144144 " https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/permissions"
145145 )
146146 })
147+
148+ test_that(" Content$permissions_add() accepts connect_user object for users" , {
149+ con <- Connect $ new(server = " https://connect.example" , api_key = " fake" )
150+ item <- content_item(con , " f2f37341-e21d-3d80-c698-a935ad614066" )
151+ user_guid <- " a01792e3-2e67-402e-99af-be04a48da074"
152+ user <- structure(list (guid = user_guid ), class = " connect_user" )
153+
154+ expect_POST(
155+ item $ permissions_add(user , " user" , " viewer" ),
156+ " https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/permissions" ,
157+ ' {"principal_guid":"a01792e3-2e67-402e-99af-be04a48da074","principal_type":"user","role":"viewer"}'
158+ )
159+ })
160+
161+ test_that(" Content$permissions_update() accepts connect_user object for users" , {
162+ con <- Connect $ new(server = " https://connect.example" , api_key = " fake" )
163+ item <- content_item(con , " f2f37341-e21d-3d80-c698-a935ad614066" )
164+ user_guid <- " a01792e3-2e67-402e-99af-be04a48da074"
165+ user <- structure(list (guid = user_guid ), class = " connect_user" )
166+
167+ expect_PUT(
168+ item $ permissions_update(94 , user , " user" , " editor" ),
169+ " https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/permissions/94" ,
170+ ' {"principal_guid":"a01792e3-2e67-402e-99af-be04a48da074","principal_type":"user","role":"editor"}'
171+ )
172+ })
147173})
148174
149175without_internet({
@@ -467,6 +493,55 @@ test_that("get_content_packages() gets packages", {
467493 })
468494})
469495
496+ with_mock_api({
497+ test_that(" content_add_user() accepts connect_user object" , {
498+ con <- Connect $ new(server = " https://connect.example" , api_key = " fake" )
499+ item <- content_item(con , " f2f37341-e21d-3d80-c698-a935ad614066" )
500+ user_guid <- " a01792e3-2e67-402e-99af-be04a48da074"
501+ user <- structure(list (guid = user_guid ), class = " connect_user" )
502+
503+ expect_POST(
504+ suppressMessages(content_add_user(item , user )),
505+ " https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/permissions"
506+ )
507+
508+ # Test with list of connect_user objects
509+ user2 <- structure(list (guid = " b02892e3-2e67-402e-99af-be04a48da075" ), class = " connect_user" )
510+ expect_POST(
511+ suppressMessages(content_add_user(item , list (user , user2 ))),
512+ " https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066/permissions"
513+ )
514+ })
515+
516+ test_that(" get_user_permission() accepts connect_user object" , {
517+ con <- Connect $ new(server = " https://connect.example" , api_key = " fake" )
518+ item <- content_item(con , " f2f37341-e21d-3d80-c698-a935ad614066" )
519+ user_guid <- " a01792e3-2e67-402e-99af-be04a48da074"
520+ user <- structure(list (guid = user_guid ), class = " connect_user" )
521+
522+ # Test with GUID string - should work
523+ perm1 <- suppressMessages(get_user_permission(item , user_guid ))
524+
525+ # Test with connect_user object - should also work and return same result
526+ perm2 <- suppressMessages(get_user_permission(item , user ))
527+
528+ # Both should return the same permission (or NULL if not found)
529+ expect_equal(perm1 , perm2 )
530+ })
531+
532+ test_that(" content_update_owner() accepts connect_user object" , {
533+ con <- Connect $ new(server = " https://connect.example" , api_key = " fake" )
534+ item <- content_item(con , " f2f37341-e21d-3d80-c698-a935ad614066" )
535+ user_guid <- " a01792e3-2e67-402e-99af-be04a48da074"
536+ user <- structure(list (guid = user_guid ), class = " connect_user" )
537+
538+ expect_PATCH(
539+ suppressMessages(content_update_owner(item , user )),
540+ " https://connect.example/__api__/v1/content/f2f37341-e21d-3d80-c698-a935ad614066"
541+ )
542+ })
543+ })
544+
470545# content search ----
471546
472547with_mock_dir(" 2025.09.0" , {
0 commit comments