Migrate PaymentsControllerTest to JUnit 5

This commit is contained in:
Chris Eager 2021-07-23 14:07:27 -05:00 committed by Chris Eager
parent ff627793d6
commit 831023e41d
1 changed files with 29 additions and 29 deletions

View File

@ -5,11 +5,23 @@
package org.whispersystems.textsecuregcm.tests.controllers; package org.whispersystems.textsecuregcm.tests.controllers;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import io.dropwizard.auth.PolymorphicAuthValueFactoryProvider;
import io.dropwizard.testing.junit5.DropwizardExtensionsSupport;
import io.dropwizard.testing.junit5.ResourceExtension;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import javax.ws.rs.core.Response;
import org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory; import org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory;
import org.junit.Before; import org.junit.jupiter.api.BeforeEach;
import org.junit.ClassRule; import org.junit.jupiter.api.Test;
import org.junit.Test; import org.junit.jupiter.api.extension.ExtendWith;
import org.whispersystems.textsecuregcm.auth.DisabledPermittedAccount; import org.whispersystems.textsecuregcm.auth.DisabledPermittedAccount;
import org.whispersystems.textsecuregcm.auth.ExternalServiceCredentialGenerator; import org.whispersystems.textsecuregcm.auth.ExternalServiceCredentialGenerator;
import org.whispersystems.textsecuregcm.auth.ExternalServiceCredentials; import org.whispersystems.textsecuregcm.auth.ExternalServiceCredentials;
@ -20,42 +32,30 @@ import org.whispersystems.textsecuregcm.entities.CurrencyConversionEntityList;
import org.whispersystems.textsecuregcm.storage.Account; import org.whispersystems.textsecuregcm.storage.Account;
import org.whispersystems.textsecuregcm.tests.util.AuthHelper; import org.whispersystems.textsecuregcm.tests.util.AuthHelper;
import javax.ws.rs.core.Response; @ExtendWith(DropwizardExtensionsSupport.class)
import java.util.List; class PaymentsControllerTest {
import java.util.Map;
import java.util.Optional;
import io.dropwizard.auth.PolymorphicAuthValueFactoryProvider;
import io.dropwizard.testing.junit.ResourceTestRule;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class PaymentsControllerTest {
private static final ExternalServiceCredentialGenerator paymentsCredentialGenerator = mock(ExternalServiceCredentialGenerator.class); private static final ExternalServiceCredentialGenerator paymentsCredentialGenerator = mock(ExternalServiceCredentialGenerator.class);
private static final CurrencyConversionManager currencyManager = mock(CurrencyConversionManager.class); private static final CurrencyConversionManager currencyManager = mock(CurrencyConversionManager.class);
private final ExternalServiceCredentials validCredentials = new ExternalServiceCredentials("username", "password"); private final ExternalServiceCredentials validCredentials = new ExternalServiceCredentials("username", "password");
@ClassRule private static final ResourceExtension resources = ResourceExtension.builder()
public static final ResourceTestRule resources = ResourceTestRule.builder() .addProvider(AuthHelper.getAuthFilter())
.addProvider(AuthHelper.getAuthFilter()) .addProvider(new PolymorphicAuthValueFactoryProvider.Binder<>(ImmutableSet.of(Account.class, DisabledPermittedAccount.class)))
.addProvider(new PolymorphicAuthValueFactoryProvider.Binder<>(ImmutableSet.of(Account.class, DisabledPermittedAccount.class))) .setTestContainerFactory(new GrizzlyWebTestContainerFactory())
.setTestContainerFactory(new GrizzlyWebTestContainerFactory()) .addResource(new PaymentsController(currencyManager, paymentsCredentialGenerator))
.addResource(new PaymentsController(currencyManager, paymentsCredentialGenerator)) .build();
.build();
@Before @BeforeEach
public void setup() { void setup() {
when(paymentsCredentialGenerator.generateFor(eq(AuthHelper.VALID_UUID.toString()))).thenReturn(validCredentials); when(paymentsCredentialGenerator.generateFor(eq(AuthHelper.VALID_UUID.toString()))).thenReturn(validCredentials);
when(currencyManager.getCurrencyConversions()).thenReturn(Optional.of(new CurrencyConversionEntityList(List.of(new CurrencyConversionEntity("FOO", Map.of("USD", 2.35, "EUR", 1.89)), new CurrencyConversionEntity("BAR", Map.of("USD", 1.50, "EUR", 0.98))), System.currentTimeMillis()))); when(currencyManager.getCurrencyConversions()).thenReturn(Optional.of(new CurrencyConversionEntityList(List.of(new CurrencyConversionEntity("FOO", Map.of("USD", 2.35, "EUR", 1.89)), new CurrencyConversionEntity("BAR", Map.of("USD", 1.50, "EUR", 0.98))), System.currentTimeMillis())));
} }
@Test @Test
public void testGetAuthToken() { void testGetAuthToken() {
ExternalServiceCredentials token = ExternalServiceCredentials token =
resources.getJerseyTest() resources.getJerseyTest()
.target("/v1/payments/auth") .target("/v1/payments/auth")
@ -68,7 +68,7 @@ public class PaymentsControllerTest {
} }
@Test @Test
public void testInvalidAuthGetAuthToken() { void testInvalidAuthGetAuthToken() {
Response response = Response response =
resources.getJerseyTest() resources.getJerseyTest()
.target("/v1/payments/auth") .target("/v1/payments/auth")
@ -80,7 +80,7 @@ public class PaymentsControllerTest {
} }
@Test @Test
public void testDisabledGetAuthToken() { void testDisabledGetAuthToken() {
Response response = Response response =
resources.getJerseyTest() resources.getJerseyTest()
.target("/v1/payments/auth") .target("/v1/payments/auth")
@ -91,7 +91,7 @@ public class PaymentsControllerTest {
} }
@Test @Test
public void testGetCurrencyConversions() { void testGetCurrencyConversions() {
CurrencyConversionEntityList conversions = CurrencyConversionEntityList conversions =
resources.getJerseyTest() resources.getJerseyTest()
.target("/v1/payments/conversions") .target("/v1/payments/conversions")