Browse Source

补全 OMG 表单签名字段测试

qmj 1 week ago
parent
commit
8411c84371

+ 12 - 12
ruoyi-admin/src/test/java/com/ruoyi/app/omgpay/OmgPaymentFormFactoryTest.java

@@ -3,19 +3,19 @@ package com.ruoyi.app.omgpay;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
+import org.mockito.ArgumentCaptor;
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 
 import java.time.Clock;
 import java.time.Instant;
 import java.time.ZoneOffset;
+import java.util.LinkedHashMap;
 import java.util.Map;
-import java.util.Set;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.anyMap;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
@@ -42,11 +42,11 @@ class OmgPaymentFormFactoryTest {
         assertEquals("Y", credit.fields().get("NeedExtraPaidInfo"));
         assertEquals("https://foodieapi.waimai-paotui.com/pay/omg/result",
                 credit.fields().get("OrderResultURL"));
-        verify(signer).sign(org.mockito.ArgumentMatchers.argThat(fields -> fields.size() == 14
-                && "Credit".equals(fields.get("ChoosePayment"))
-                && "2".equals(fields.get("UnionPay"))
-                && !fields.containsKey("IgnorePayment")
-                && !fields.containsKey("CheckMacValue")), eq("KEY"), eq("IV"));
+        ArgumentCaptor<Map<String, String>> signedFields = ArgumentCaptor.forClass(Map.class);
+        verify(signer).sign(signedFields.capture(), eq("KEY"), eq("IV"));
+        Map<String, String> expectedSignedFields = new LinkedHashMap<>(credit.fields());
+        expectedSignedFields.remove("CheckMacValue");
+        assertEquals(expectedSignedFields, signedFields.getValue());
         assertThrows(UnsupportedOperationException.class, () -> credit.fields().put("extra", "value"));
     }
 
@@ -64,11 +64,11 @@ class OmgPaymentFormFactoryTest {
         assertEquals("ApplePay", applePay.fields().get("ChoosePayment"));
         assertFalse(applePay.fields().containsKey("UnionPay"));
         assertFalse(applePay.fields().containsKey("IgnorePayment"));
-        verify(signer).sign(org.mockito.ArgumentMatchers.argThat(fields -> fields.size() == 13
-                && "ApplePay".equals(fields.get("ChoosePayment"))
-                && !fields.containsKey("UnionPay")
-                && !fields.containsKey("IgnorePayment")
-                && !fields.containsKey("CheckMacValue")), eq("KEY"), eq("IV"));
+        ArgumentCaptor<Map<String, String>> signedFields = ArgumentCaptor.forClass(Map.class);
+        verify(signer).sign(signedFields.capture(), eq("KEY"), eq("IV"));
+        Map<String, String> expectedSignedFields = new LinkedHashMap<>(applePay.fields());
+        expectedSignedFields.remove("CheckMacValue");
+        assertEquals(expectedSignedFields, signedFields.getValue());
     }
 
     @ParameterizedTest