 ThanhPT
					
					2 years ago
						ThanhPT
					
					2 years ago
					
						
							committed by
							
								 GitHub
								GitHub
							
						 
					
				 
				
			 
		 
		
			
				
				  
				  No known key found for this signature in database
				  
				  	
						GPG Key ID: B5690EEEBB952194
				  	
				  
				
			
		
		
		
	
		
			
				 3 changed files with 
27 additions and 
0 deletions
			 
			
		 
		
			
				- 
					
					
					 
					src/keycloak/keycloak_admin.py
				
- 
					
					
					 
					src/keycloak/urls_patterns.py
				
- 
					
					
					 
					tests/test_keycloak_admin.py
				
					
					
						
							
								
									
										
											
	
		
			
				
					|  |  | @ -1468,6 +1468,24 @@ class KeycloakAdmin: | 
			
		
	
		
			
				
					|  |  |  |         ) | 
			
		
	
		
			
				
					|  |  |  |         return raise_error_from_response(data_raw, KeycloakPutError, expected_codes=[204]) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     def groups_count(self, query=None): | 
			
		
	
		
			
				
					|  |  |  |         """Count groups. | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         https://www.keycloak.org/docs-api/24.0.1/rest-api/index.html#_groups | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         :param query: (dict) Query parameters for groups count | 
			
		
	
		
			
				
					|  |  |  |         :type query: dict | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         :return: Keycloak Server Response | 
			
		
	
		
			
				
					|  |  |  |         :rtype: dict | 
			
		
	
		
			
				
					|  |  |  |         """ | 
			
		
	
		
			
				
					|  |  |  |         query = query or dict() | 
			
		
	
		
			
				
					|  |  |  |         params_path = {"realm-name": self.connection.realm_name} | 
			
		
	
		
			
				
					|  |  |  |         data_raw = self.connection.raw_get( | 
			
		
	
		
			
				
					|  |  |  |             urls_patterns.URL_ADMIN_GROUPS_COUNT.format(**params_path), **query | 
			
		
	
		
			
				
					|  |  |  |         ) | 
			
		
	
		
			
				
					|  |  |  |         return raise_error_from_response(data_raw, KeycloakGetError) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     def group_set_permissions(self, group_id, enabled=True): | 
			
		
	
		
			
				
					|  |  |  |         """Enable/Disable permissions for a group. | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | 
 | 
			
		
	
										
									
								
							
						 
					 
				 
			
		
			
				
					
					
						
							
								
									
										
											
	
		
			
				
					|  |  | @ -81,6 +81,7 @@ URL_ADMIN_USER_STORAGE = "admin/realms/{realm-name}/user-storage/{id}/sync" | 
			
		
	
		
			
				
					|  |  |  | URL_ADMIN_SERVER_INFO = "admin/serverinfo" | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | URL_ADMIN_GROUPS = "admin/realms/{realm-name}/groups" | 
			
		
	
		
			
				
					|  |  |  | URL_ADMIN_GROUPS_COUNT = "admin/realms/{realm-name}/groups/count" | 
			
		
	
		
			
				
					|  |  |  | URL_ADMIN_GROUP = "admin/realms/{realm-name}/groups/{id}" | 
			
		
	
		
			
				
					|  |  |  | URL_ADMIN_GROUP_BY_PATH = "admin/realms/{realm-name}/group-by-path/{path}" | 
			
		
	
		
			
				
					|  |  |  | URL_ADMIN_GROUP_CHILD = "admin/realms/{realm-name}/groups/{id}/children" | 
			
		
	
	
		
			
				
					|  |  | 
 | 
			
		
	
										
									
								
							
						 
					 
				 
			
		
			
				
					
					
						
							
								
									
										
											
	
		
			
				
					|  |  | @ -654,6 +654,14 @@ def test_groups(admin: KeycloakAdmin, user: str): | 
			
		
	
		
			
				
					|  |  |  |     group_id = admin.create_group(payload={"name": "main-group"}) | 
			
		
	
		
			
				
					|  |  |  |     assert group_id is not None, group_id | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     # Test group count | 
			
		
	
		
			
				
					|  |  |  |     count = admin.groups_count() | 
			
		
	
		
			
				
					|  |  |  |     assert count.get("count") == 1, count | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     # Test group count with query | 
			
		
	
		
			
				
					|  |  |  |     count = admin.groups_count(query={"search": "notpresent"}) | 
			
		
	
		
			
				
					|  |  |  |     assert count.get("count") == 0 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     # Test create subgroups | 
			
		
	
		
			
				
					|  |  |  |     subgroup_id_1 = admin.create_group(payload={"name": "subgroup-1"}, parent=group_id) | 
			
		
	
		
			
				
					|  |  |  |     subgroup_id_2 = admin.create_group(payload={"name": "subgroup-2"}, parent=group_id) | 
			
		
	
	
		
			
				
					|  |  | 
 |