OmgQueryResponseParserTest.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. package com.ruoyi.app.omgpay;
  2. import org.junit.jupiter.api.Test;
  3. import java.util.Map;
  4. import static org.junit.jupiter.api.Assertions.assertEquals;
  5. import static org.junit.jupiter.api.Assertions.assertThrows;
  6. class OmgQueryResponseParserTest {
  7. private final OmgQueryResponseParser parser = new OmgQueryResponseParser();
  8. @Test
  9. void preservesEveryActualFieldIncludingUnknownAndEmptyValues() {
  10. Map<String, String> fields = parser.parse(
  11. "MerchantTradeNo=OMG123&PaymentDate=&FutureField=A%26B&");
  12. assertEquals("OMG123", fields.get("MerchantTradeNo"));
  13. assertEquals("", fields.get("PaymentDate"));
  14. assertEquals("A&B", fields.get("FutureField"));
  15. }
  16. @Test
  17. void rejectsDuplicateMalformedAndOversizedResponses() {
  18. assertThrows(IllegalArgumentException.class,
  19. () -> parser.parse("TradeStatus=1&TradeStatus=0"));
  20. assertThrows(IllegalArgumentException.class,
  21. () -> parser.parse("TradeStatus=1&broken"));
  22. assertThrows(IllegalArgumentException.class,
  23. () -> parser.parse("TradeStatus=%ZZ"));
  24. assertThrows(IllegalArgumentException.class,
  25. () -> parser.parse("a=" + "x".repeat(OmgQueryResponseParser.MAX_RESPONSE_CHARS)));
  26. }
  27. }