|
1 | 1 | package com.stripe.functional; |
2 | 2 |
|
3 | 3 | import static org.hamcrest.MatcherAssert.assertThat; |
| 4 | +import static org.junit.jupiter.api.Assertions.assertEquals; |
4 | 5 | import static org.junit.jupiter.api.Assertions.assertNotNull; |
5 | 6 | import static org.junit.jupiter.api.Assertions.assertThrows; |
| 7 | +import static org.junit.jupiter.api.Assertions.assertTrue; |
6 | 8 |
|
| 9 | +import com.google.common.collect.ImmutableList; |
| 10 | +import com.google.common.collect.ImmutableMap; |
7 | 11 | import com.google.gson.JsonSyntaxException; |
8 | 12 | import com.stripe.BaseStripeTest; |
9 | 13 | import com.stripe.exception.ApiException; |
|
18 | 22 | import com.stripe.net.StripeRequest; |
19 | 23 | import com.stripe.net.StripeResponse; |
20 | 24 | import com.stripe.net.StripeResponseGetter; |
| 25 | +import java.util.ArrayList; |
21 | 26 | import java.util.Collections; |
| 27 | +import java.util.List; |
| 28 | +import java.util.logging.Handler; |
| 29 | +import java.util.logging.Level; |
| 30 | +import java.util.logging.LogRecord; |
| 31 | +import java.util.logging.Logger; |
22 | 32 | import org.hamcrest.CoreMatchers; |
| 33 | +import org.junit.jupiter.api.AfterEach; |
| 34 | +import org.junit.jupiter.api.BeforeEach; |
23 | 35 | import org.junit.jupiter.api.Test; |
24 | 36 | import org.mockito.Mockito; |
25 | 37 |
|
26 | 38 | public class LiveStripeResponseGetterTest extends BaseStripeTest { |
| 39 | + private Logger stripeLogger; |
| 40 | + private CapturingHandler logHandler; |
| 41 | + |
| 42 | + private static class CapturingHandler extends Handler { |
| 43 | + final List<LogRecord> records = new ArrayList<>(); |
| 44 | + |
| 45 | + @Override |
| 46 | + public void publish(LogRecord record) { |
| 47 | + records.add(record); |
| 48 | + } |
| 49 | + |
| 50 | + @Override |
| 51 | + public void flush() {} |
| 52 | + |
| 53 | + @Override |
| 54 | + public void close() {} |
| 55 | + } |
| 56 | + |
| 57 | + @BeforeEach |
| 58 | + public void setUpLogger() { |
| 59 | + stripeLogger = Logger.getLogger("Stripe"); |
| 60 | + logHandler = new CapturingHandler(); |
| 61 | + logHandler.setLevel(Level.ALL); |
| 62 | + stripeLogger.addHandler(logHandler); |
| 63 | + stripeLogger.setLevel(Level.ALL); |
| 64 | + stripeLogger.setUseParentHandlers(false); |
| 65 | + } |
| 66 | + |
| 67 | + @AfterEach |
| 68 | + public void tearDownLogger() { |
| 69 | + stripeLogger.removeHandler(logHandler); |
| 70 | + stripeLogger.setUseParentHandlers(true); |
| 71 | + } |
| 72 | + |
| 73 | + @Test |
| 74 | + public void testStripeNoticeHeaderEmitsWarning() throws StripeException { |
| 75 | + HttpClient spy = Mockito.spy(new HttpURLConnectionClient()); |
| 76 | + StripeResponseGetter srg = new LiveStripeResponseGetter(spy); |
| 77 | + ApiResource.setGlobalResponseGetter(srg); |
| 78 | + StripeResponse response = |
| 79 | + new StripeResponse( |
| 80 | + 200, |
| 81 | + HttpHeaders.of( |
| 82 | + ImmutableMap.of( |
| 83 | + "Stripe-Notice", |
| 84 | + ImmutableList.of("This API version will be deprecated soon."))), |
| 85 | + "{\"id\": \"sub_123\", \"object\": \"subscription\"}"); |
| 86 | + Mockito.doReturn(response).when(spy).requestWithRetries(Mockito.<StripeRequest>any()); |
| 87 | + Subscription.retrieve("sub_123"); |
| 88 | + |
| 89 | + assertEquals(1, logHandler.records.size()); |
| 90 | + assertEquals(Level.WARNING, logHandler.records.get(0).getLevel()); |
| 91 | + assertEquals( |
| 92 | + "This API version will be deprecated soon.", logHandler.records.get(0).getMessage()); |
| 93 | + } |
| 94 | + |
| 95 | + @Test |
| 96 | + public void testNoStripeNoticeHeaderEmitsNoWarning() throws StripeException { |
| 97 | + HttpClient spy = Mockito.spy(new HttpURLConnectionClient()); |
| 98 | + StripeResponseGetter srg = new LiveStripeResponseGetter(spy); |
| 99 | + ApiResource.setGlobalResponseGetter(srg); |
| 100 | + StripeResponse response = |
| 101 | + new StripeResponse( |
| 102 | + 200, |
| 103 | + HttpHeaders.of(Collections.emptyMap()), |
| 104 | + "{\"id\": \"sub_123\", \"object\": \"subscription\"}"); |
| 105 | + Mockito.doReturn(response).when(spy).requestWithRetries(Mockito.<StripeRequest>any()); |
| 106 | + Subscription.retrieve("sub_123"); |
| 107 | + |
| 108 | + assertTrue(logHandler.records.isEmpty()); |
| 109 | + } |
| 110 | + |
27 | 111 | @Test |
28 | 112 | public void testInvalidJson() throws StripeException { |
29 | 113 | HttpClient spy = Mockito.spy(new HttpURLConnectionClient()); |
|
0 commit comments