Mercurial > hg > orthanc-tests
changeset 963:9866889be864
wsi: added test_search_active_users
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Mon, 07 Sep 2026 18:20:22 +0200 |
| parents | e585dc076aa5 |
| children | d038ae071934 |
| files | Plugins/WSI/Annotations.json Plugins/WSI/Annotations.py Plugins/WSI/AnnotationsLearnerToLearnerSharing.json |
| diffstat | 3 files changed, 96 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/Plugins/WSI/Annotations.json Fri Sep 04 18:13:38 2026 +0200 +++ b/Plugins/WSI/Annotations.json Mon Sep 07 18:20:22 2026 +0200 @@ -13,6 +13,7 @@ "AuthenticationHttpHeader" : "Mail", "EnableAnnotations" : true, "EnableAnnotationsSharing" : true, + "EnableLearnerToLearnerSharing" : false, "Instructors" : [ "admin@uclouvain.be", "instructor@uclouvain.be"
--- a/Plugins/WSI/Annotations.py Fri Sep 04 18:13:38 2026 +0200 +++ b/Plugins/WSI/Annotations.py Mon Sep 07 18:20:22 2026 +0200 @@ -96,6 +96,16 @@ return DoPost(ORTHANC, uri, body, headers = { 'Mail' : user }) +def UnpackSetOfStandardUsers(users): + s = [] + for user in users: + assert(user['type'] == 1) + assert(not user['name'] in s) + s.append(user['name']) + return s + + + class Orthanc(unittest.TestCase): def setUp(self): if (sys.version_info >= (3, 0)): @@ -105,7 +115,12 @@ DropOrthanc(ORTHANC) - for user in [ 'admin@uclouvain.be' ]: + for user in [ + 'admin@uclouvain.be', + 'instructor@uclouvain.be', + 'learner@uclouvain.be', + 'learner2@uclouvain.be', + ]: for project in [ '', 'hello' ]: layers = Execute('/wsi/api/list-user-layers', { 'project' : project }, user = user) @@ -141,15 +156,17 @@ 'resource' : 'test' }, headers = { 'Mail' : 'admin@uclouvain.be' }) - self.assertEqual(8, len(info)) + self.assertEqual(11, len(info)) self.assertEqual('', info['description']) self.assertEqual('', info['name']) self.assertEqual('', info['project']) self.assertEqual('admin@uclouvain.be', info['user']) - self.assertEqual('instructor', info['role']) + self.assertFalse(info['is_learner']) + self.assertTrue(info['is_instructor']) self.assertTrue(info['enabled']) self.assertTrue(info['persistent']) self.assertTrue(info['sharing']) + self.assertTrue('learner_to_learner_sharing' in info) info = DoPost(ORTHANC, '/wsi/api/workspace-info', { 'level' : 'Series', @@ -157,15 +174,17 @@ 'project' : 'hello', }, headers = { 'Mail' : 'learner@uclouvain.be' }) - self.assertEqual(8, len(info)) + self.assertEqual(11, len(info)) self.assertEqual('', info['description']) self.assertEqual('', info['name']) self.assertEqual('hello', info['project']) - self.assertEqual('learner', info['role']) self.assertEqual('learner@uclouvain.be', info['user']) + self.assertTrue(info['is_learner']) + self.assertFalse(info['is_instructor']) self.assertTrue(info['enabled']) self.assertTrue(info['persistent']) self.assertTrue(info['sharing']) + self.assertTrue('learner_to_learner_sharing' in info) def test_create_delete_layers(self): @@ -295,6 +314,55 @@ b['color'] = 'invalid' self.assertRaises(Exception, lambda: Execute('/wsi/api/save-user-layer', { 'layer' : b })) + + def test_search_active_users(self): + a = Execute('/wsi/api/create-user-layer') # admin@uclouvain.be + b = Execute('/wsi/api/create-user-layer', user = 'instructor@uclouvain.be') + c = Execute('/wsi/api/create-user-layer', user = 'learner@uclouvain.be') + d = Execute('/wsi/api/create-user-layer', user = 'learner2@uclouvain.be') + + v = UnpackSetOfStandardUsers(Execute('/wsi/api/search-active-users', { 'query' : '' })) + self.assertEqual(3, len(v)) + self.assertTrue('instructor@uclouvain.be' in v) + self.assertTrue('learner@uclouvain.be' in v) + self.assertTrue('learner2@uclouvain.be' in v) + + v = UnpackSetOfStandardUsers(Execute('/wsi/api/search-active-users', { 'query' : 'l' })) + self.assertEqual(3, len(v)) + self.assertTrue('instructor@uclouvain.be' in v) + self.assertTrue('learner@uclouvain.be' in v) + self.assertTrue('learner2@uclouvain.be' in v) + + v = UnpackSetOfStandardUsers(Execute('/wsi/api/search-active-users', { 'query' : 'lear' })) + self.assertEqual(2, len(v)) + self.assertTrue('learner@uclouvain.be' in v) + self.assertTrue('learner2@uclouvain.be' in v) + + v = UnpackSetOfStandardUsers(Execute('/wsi/api/search-active-users', { 'query' : 'ins' })) + self.assertEqual(1, len(v)) + self.assertTrue('instructor@uclouvain.be' in v) + + v = UnpackSetOfStandardUsers(Execute('/wsi/api/search-active-users', { 'query' : '' }, user = 'instructor@uclouvain.be')) + self.assertEqual(3, len(v)) + self.assertTrue('admin@uclouvain.be' in v) + self.assertTrue('learner@uclouvain.be' in v) + self.assertTrue('learner2@uclouvain.be' in v) + + info = Execute('/wsi/api/workspace-info') + pprint.pprint(info) + + v = UnpackSetOfStandardUsers(Execute('/wsi/api/search-active-users', { 'query' : '' }, user = 'learner@uclouvain.be')) + if info['learner_to_learner_sharing']: + self.assertEqual(3, len(v)) + self.assertTrue('admin@uclouvain.be' in v) + self.assertTrue('instructor@uclouvain.be' in v) + self.assertTrue('learner2@uclouvain.be' in v) + else: + self.assertEqual(2, len(v)) + self.assertTrue('admin@uclouvain.be' in v) + self.assertTrue('instructor@uclouvain.be' in v) + + try: print('\nStarting the tests...') unittest.main(argv = [ sys.argv[0] ] + args.options)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/WSI/AnnotationsLearnerToLearnerSharing.json Mon Sep 07 18:20:22 2026 +0200 @@ -0,0 +1,22 @@ +{ + "Plugins" : [ "${PWD}" ], + "StorageDirectory" : "/tmp/orthanc-storage/", + "RemoteAccessAllowed" : true, + "AuthenticationEnabled" : true, + "RegisteredUsers" : { + "alice" : "orthanctest" + }, + "ExecuteLuaEnabled": true, + + "WholeSlideImaging" : { + "AuthenticationSource" : "HttpHeader", + "AuthenticationHttpHeader" : "Mail", + "EnableAnnotations" : true, + "EnableAnnotationsSharing" : true, + "EnableLearnerToLearnerSharing" : true, + "Instructors" : [ + "admin@uclouvain.be", + "instructor@uclouvain.be" + ] + } +}
