Просмотр исходного кода

fix(eiam): accept empty delete response

malk 1 неделя назад
Родитель
Сommit
b4571fd97b

+ 2 - 1
mjava/src/main/java/com/malk/service/eiam/impl/EiamClient_UserImpl.java

@@ -75,7 +75,8 @@ public class EiamClient_UserImpl implements EiamClient_User {
                                       String userId) {
         String response = UtilHttp.doDelete(userUrl(instanceId, applicationId, userId),
                 headers(accessToken), null, (Map) null);
-        return parseResponse(response);
+        // prd DeleteUser 成功时允许返回空响应体,HTTP 层未抛异常即视为删除成功。
+        return parseActionResponse(response);
     }
 
     /**

+ 23 - 0
mjava/src/test/java/com/malk/service/eiam/impl/EiamClient_UserImplTest.java

@@ -76,4 +76,27 @@ public class EiamClient_UserImplTest {
             server.stop(0);
         }
     }
+
+    @Test
+    public void deleteUser_emptyResponse_returnsSuccessPayload() throws Exception {
+        HttpServer server = HttpServer.create(new InetSocketAddress(0), 0);
+        server.createContext("/v2/instance/application/users/user_test", exchange -> {
+            exchange.sendResponseHeaders(204, -1);
+            exchange.close();
+        });
+        server.start();
+        try {
+            EiamConf conf = new EiamConf();
+            conf.setBaseUrl("http://127.0.0.1:" + server.getAddress().getPort());
+            EiamClient_UserImpl client = new EiamClient_UserImpl();
+            ReflectionTestUtils.setField(client, "eiamConf", conf);
+
+            EiamApiResponse response = client.deleteUser("token", "instance", "application",
+                    "user_test");
+
+            assertNull(response.getCode());
+        } finally {
+            server.stop(0);
+        }
+    }
 }