Skip to content

Commit 761f3c6

Browse files
authored
Merge pull request #1071 from alphagov/PP-7609-Pact-test-for-GATEWAY_3DS_EXEMPTION_RESULT_OBTAINED
PP-7609 - Pact test for GATEWAY_3DS_EXEMPTION_RESULT_OBTAINED
2 parents 2cd3d3c + 4a2369c commit 761f3c6

3 files changed

Lines changed: 86 additions & 0 deletions

File tree

src/test/java/uk/gov/pay/ledger/pact/ConsumerContractTestSuite.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public static TestSuite suite() {
2525
consumerToJUnitTest.put("connector", new JUnit4TestAdapter(RefundIncludedInPayoutEventQueueContractTest.class));
2626
consumerToJUnitTest.put("connector", new JUnit4TestAdapter(CancelledByUserEventQueueContractTest.class));
2727
consumerToJUnitTest.put("connector", new JUnit4TestAdapter(UserEmailCollectedEventQueueContractTest.class));
28+
consumerToJUnitTest.put("connector", new JUnit4TestAdapter(Gateway3dsExemptionResultObtainedEventQueueContractTest.class));
2829
return CreateTestSuite.create(consumerToJUnitTest.build());
2930
}
3031

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package uk.gov.pay.ledger.pact;
2+
3+
import au.com.dius.pact.consumer.MessagePactBuilder;
4+
import au.com.dius.pact.consumer.MessagePactProviderRule;
5+
import au.com.dius.pact.consumer.Pact;
6+
import au.com.dius.pact.consumer.PactVerification;
7+
import au.com.dius.pact.model.v3.messaging.MessagePact;
8+
import org.junit.Rule;
9+
import org.junit.Test;
10+
import uk.gov.pay.ledger.rule.AppWithPostgresAndSqsRule;
11+
import uk.gov.pay.ledger.rule.SqsTestDocker;
12+
import uk.gov.pay.ledger.transaction.dao.TransactionDao;
13+
import uk.gov.pay.ledger.transaction.entity.TransactionEntity;
14+
import uk.gov.pay.ledger.util.fixture.QueuePaymentEventFixture;
15+
16+
import java.time.ZonedDateTime;
17+
import java.util.HashMap;
18+
import java.util.Map;
19+
import java.util.Optional;
20+
import java.util.concurrent.TimeUnit;
21+
22+
import static io.dropwizard.testing.ConfigOverride.config;
23+
import static org.awaitility.Awaitility.await;
24+
import static org.hamcrest.CoreMatchers.containsString;
25+
import static org.hamcrest.CoreMatchers.is;
26+
import static org.hamcrest.MatcherAssert.assertThat;
27+
import static uk.gov.pay.ledger.util.fixture.QueuePaymentEventFixture.aQueuePaymentEventFixture;
28+
29+
public class Gateway3dsExemptionResultObtainedEventQueueContractTest {
30+
@Rule
31+
public MessagePactProviderRule mockProvider = new MessagePactProviderRule(this);
32+
33+
@Rule
34+
public AppWithPostgresAndSqsRule appRule = new AppWithPostgresAndSqsRule(
35+
config("queueMessageReceiverConfig.backgroundProcessingEnabled", "true")
36+
);
37+
38+
private byte[] currentMessage;
39+
private String externalId = "gateway3dsExemptionResultObtained_externalId";
40+
private ZonedDateTime eventDate = ZonedDateTime.parse("2018-03-12T16:25:01.123456Z");
41+
42+
@Pact(provider = "connector", consumer = "ledger")
43+
public MessagePact createGateway3dsExemptionResultObtainedEventPact(MessagePactBuilder builder) {
44+
String gateway3dsExemptionResultObtainedEvent = "GATEWAY_3DS_EXEMPTION_RESULT_OBTAINED";
45+
QueuePaymentEventFixture gateway3dsExemptionResultObtained = aQueuePaymentEventFixture()
46+
.withResourceExternalId(externalId)
47+
.withEventDate(eventDate)
48+
.withEventType(gateway3dsExemptionResultObtainedEvent)
49+
.withDefaultEventDataForEventType(gateway3dsExemptionResultObtainedEvent);
50+
51+
Map<String, String> metadata = new HashMap<>();
52+
metadata.put("contentType", "application/json");
53+
54+
return builder
55+
.expectsToReceive("a gateway 3DS exemption result obtained message")
56+
.withMetadata(metadata)
57+
.withContent(gateway3dsExemptionResultObtained.getAsPact())
58+
.toPact();
59+
}
60+
61+
@Test
62+
@PactVerification({"connector"})
63+
public void test() {
64+
TransactionDao transactionDao = new TransactionDao(appRule.getJdbi());
65+
66+
appRule.getSqsClient().sendMessage(SqsTestDocker.getQueueUrl("event-queue"), new String(currentMessage));
67+
68+
await().atMost(1, TimeUnit.SECONDS).until(
69+
() -> transactionDao.findTransactionByExternalId(externalId).isPresent()
70+
&& transactionDao.findTransactionByExternalId(externalId).get().getTransactionDetails().contains("\"exemption3ds\""));
71+
72+
Optional<TransactionEntity> transaction = transactionDao.findTransactionByExternalId(externalId);
73+
74+
assertThat(transaction.isPresent(), is(true));
75+
assertThat(transaction.get().getExternalId(), is(externalId));
76+
assertThat(transaction.get().getTransactionDetails(), containsString("\"exemption3ds\": \"HONOURED\""));
77+
}
78+
79+
public void setMessage(byte[] messageContents) {
80+
currentMessage = messageContents;
81+
}
82+
}

src/test/java/uk/gov/pay/ledger/util/fixture/QueuePaymentEventFixture.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ public QueuePaymentEventFixture withDefaultEventDataForEventType(String eventTyp
181181
case "USER_EMAIL_COLLECTED":
182182
eventData = gsonBuilder.create().toJson(Map.of("email", "test@example.org"));
183183
break;
184+
case "GATEWAY_3DS_EXEMPTION_RESULT_OBTAINED":
185+
eventData = gsonBuilder.create().toJson(Map.of("exemption3ds", "HONOURED"));
186+
break;
184187
default:
185188
eventData = gsonBuilder.create().toJson(Map.of("event_data", "event_data"));
186189
}

0 commit comments

Comments
 (0)