Skip to content
This repository was archived by the owner on Jul 6, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ private MobilePayResponse createMobilePayPayment(Map<String, Object> request) {
}
}

private Map<String, Object> createMobilePayRequest(OrderEntity order, PaymentRequest request) {
public Map<String, Object> createMobilePayRequest(OrderEntity order, PaymentRequest request) {
validationPaymentRequest(request);

Map<String, Object> paymentRequest = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.web.client.RestTemplate;

import java.util.Optional;

import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
Expand Down Expand Up @@ -94,4 +96,52 @@ void handlePaymentCallback_Expired() {

verify(paymentService).handlePaymentStatusUpdate(eq(1L), eq(PaymentStatus.EXPIRED));
}

@ParameterizedTest
@DisplayName("Validate Mobile Pay Reference Format")
@ValueSource(strings = {
"HotelHunger-order-1234-10050", // Typical case
"Commercify-order-9999-12345", // Different system name
"A1-order-1-100", // Minimum acceptable length
"VeryLongSystemName-order-999999-1000000" // Longer reference
})
void testValidMobilePayReferences(String reference) {
assertTrue(reference.matches("^[a-zA-Z0-9-]{8,50}$"),
"Reference should be valid: " + reference);
}

@ParameterizedTest
@DisplayName("Invalidate Incorrect Mobile Pay Reference Format")
@ValueSource(strings = {
"HotelHunger_order-1234-10050", // Contains underscore
"System!order-1234-10050", // Contains special character
"ab", // Too short
"ThisIsAVeryLongReferenceStringThatExceedsTheMaximumAllowedLengthOfFiftyCharacters" // Too long
})
void testInvalidMobilePayReferences(String reference) {
assertFalse(reference.matches("^[a-zA-Z0-9-]{8,50}$"),
"Reference should be invalid: " + reference);
}

@Test
@DisplayName("Validate Reference Generation Components")
void testMobilePayReferenceGeneration() {
// Assuming you have a method to generate the reference
// This is a placeholder - adjust based on your actual reference generation method
PaymentEntity testPayment = PaymentEntity.builder()
.id(1234L)
.build();

String generatedReference = "Commercify-order-" + testPayment.getId() + "-10050";

// Validate reference format
assertTrue(generatedReference.matches("^[a-zA-Z0-9-]{8,50}$"),
"Generated reference should match the required format");

// Additional checks
assertTrue(generatedReference.startsWith("Commercify-order-"),
"Reference should start with system name and 'order-'");
assertTrue(generatedReference.contains("-10050"),
"Reference should contain the total amount");
}
}
Loading