@@ -540,3 +540,81 @@ async def test_api_update_dn_invalid_new_superior(
540540
541541 assert isinstance (data , dict )
542542 assert data .get ("resultCode" ) == LDAPCodes .INVALID_DN_SYNTAX
543+
544+
545+ @pytest .mark .asyncio
546+ @pytest .mark .usefixtures ("adding_test_user" )
547+ @pytest .mark .usefixtures ("setup_session" )
548+ @pytest .mark .usefixtures ("session" )
549+ async def test_api_modify_dn_many (http_client : AsyncClient ) -> None :
550+ """Test API for bulk modify DN."""
551+ entry_dn_1 = "cn=test,dc=md,dc=test"
552+ entry_dn_2 = "cn=test2,dc=md,dc=test"
553+
554+ response = await http_client .post (
555+ "/entry/add" ,
556+ json = {
557+ "entry" : entry_dn_2 ,
558+ "password" : None ,
559+ "attributes" : [
560+ {"type" : "name" , "vals" : ["test2" ]},
561+ {"type" : "cn" , "vals" : ["test2" ]},
562+ {"type" : "objectClass" , "vals" : ["organization" , "top" ]},
563+ ],
564+ },
565+ )
566+ assert response .json ()["resultCode" ] == LDAPCodes .SUCCESS
567+
568+ response = await http_client .post (
569+ "/entry/update_many/dn" ,
570+ json = [
571+ {
572+ "entry" : entry_dn_1 ,
573+ "newrdn" : "cn=test" ,
574+ "deleteoldrdn" : True ,
575+ "new_superior" : "ou=testModifyDn1,dc=md,dc=test" ,
576+ },
577+ {
578+ "entry" : entry_dn_2 ,
579+ "newrdn" : "cn=test2" ,
580+ "deleteoldrdn" : True ,
581+ "new_superior" : "ou=testModifyDn1,dc=md,dc=test" ,
582+ },
583+ ],
584+ )
585+
586+ data = response .json ()
587+ assert all (
588+ result .get ("resultCode" ) == LDAPCodes .SUCCESS for result in data
589+ )
590+
591+
592+ @pytest .mark .asyncio
593+ @pytest .mark .usefixtures ("adding_test_user" )
594+ @pytest .mark .usefixtures ("setup_session" )
595+ @pytest .mark .usefixtures ("session" )
596+ async def test_api_modify_dn_many_with_error (http_client : AsyncClient ) -> None :
597+ """Test bulk modify DN with one invalid entry."""
598+ entry_dn = "cn=test,dc=md,dc=test"
599+
600+ response = await http_client .post (
601+ "/entry/update_many/dn" ,
602+ json = [
603+ {
604+ "entry" : entry_dn ,
605+ "newrdn" : "cn=test" ,
606+ "deleteoldrdn" : True ,
607+ "new_superior" : "ou=testModifyDn1,dc=md,dc=test" ,
608+ },
609+ {
610+ "entry" : "cn=nonExistent,dc=md,dc=test" ,
611+ "newrdn" : "cn=nonExistent" ,
612+ "deleteoldrdn" : True ,
613+ "new_superior" : "dc=md,dc=test" ,
614+ },
615+ ],
616+ )
617+
618+ data = response .json ()
619+ assert data [0 ].get ("resultCode" ) == LDAPCodes .SUCCESS
620+ assert data [1 ].get ("resultCode" ) == LDAPCodes .NO_SUCH_OBJECT
0 commit comments