/** * Expose {@link LineMessagingClient} as {@link Bean}. */ @Bean public LineMessagingClient lineMessagingClient( final ChannelTokenSupplier channelTokenSupplier) { return LineMessagingClient .builder(channelTokenSupplier) .apiEndPoint(lineBotProperties.getApiEndPoint()) .connectTimeout(lineBotProperties.getConnectTimeout()) .readTimeout(lineBotProperties.getReadTimeout()) .writeTimeout(lineBotProperties.getWriteTimeout()) .build(); }
static LineMessagingClientBuilder builder(ChannelTokenSupplier channelTokenSupplier) { return new LineMessagingClientBuilder().channelTokenSupplier(channelTokenSupplier); } }
/** * Build a new {@link ChannelManagementSyncClient}. */ public ChannelManagementSyncClient build() { final Builder okHttpClientBuilder = new Builder(); okHttpClientBuilder .addInterceptor(buildAuthenticationInterceptor(channelTokenSupplier)) .addInterceptor(buildLoggingInterceptor()); final OkHttpClient okHttpClient = okHttpClientBuilder.build(); final Retrofit.Builder retrofitBuilder = createDefaultRetrofitBuilder(); retrofitBuilder.client(okHttpClient); retrofitBuilder.baseUrl(apiEndPoint.toString()); final Retrofit retrofit = retrofitBuilder.build(); final ChannelManagementClientRetrofitIface retrofitIface = retrofit.create(ChannelManagementClientRetrofitIface.class); return ChannelManagementSyncClientImpl.of(retrofitIface); } }
@Override protected LineMessagingClient createLineMessagingClient(final MockWebServer mockWebServer) { return LineMessagingClient.builder(channelTokenSupplier) .apiEndPoint("http://localhost:" + mockWebServer.getPort()) .build(); } }
@Test public void testBuildWithFixedToken() throws InterruptedException { lineMessagingClient = new LineMessagingClientBuilder() .channelToken("MOCKED_TOKEN") .apiEndPoint("http://localhost:" + mockWebServer.getPort()) .build(); // Do lineMessagingClient.getProfile("TEST"); // Verify final RecordedRequest recordedRequest = mockWebServer.takeRequest(); assertThat(recordedRequest.getHeader("Authorization")) .isEqualTo("Bearer MOCKED_TOKEN"); }
@Test public void testBuildWithoutChannelToken() { assertThatThrownBy(() -> { new LineMessagingClientBuilder().build(); }).isInstanceOf(NullPointerException.class) .hasMessageContaining("channelTokenSupplier"); }
/** * Creates a new {@link LineMessagingService}. */ public LineMessagingClient build() { return new LineMessagingClientImpl(buildRetrofitIface()); } }
protected LineMessagingClient createLineMessagingClient(final MockWebServer mockWebServer) { return LineMessagingClient.builder("token") .apiEndPoint("http://localhost:" + mockWebServer.getPort()) .build(); }
/** * Expose {@link LineMessagingClient} as {@link Bean}. */ @Bean public LineMessagingClient lineMessagingClient( final ChannelTokenSupplier channelTokenSupplier) { return LineMessagingClient .builder(channelTokenSupplier) .apiEndPoint(lineBotProperties.getApiEndPoint()) .connectTimeout(lineBotProperties.getConnectTimeout()) .readTimeout(lineBotProperties.getReadTimeout()) .writeTimeout(lineBotProperties.getWriteTimeout()) .build(); }
@Before public void setUp() throws Exception { mockWebServer = new MockWebServer(); final String apiEndPoint = "http://" + mockWebServer.getHostName() + ':' + mockWebServer.getPort() + "/CanContainsRelative/"; target = LineMessagingClient .builder("SECRET") .apiEndPoint(apiEndPoint) .build(); }
/** * Creates a new {@link LineMessagingService}. */ LineMessagingService buildRetrofitIface() { if (okHttpClientBuilder == null) { okHttpClientBuilder = new OkHttpClient.Builder(); } // Add interceptors. if (addAuthenticationHeader) { okHttpClientBuilder.addInterceptor(buildAuthenticationInterceptor(channelTokenSupplier)); } if (additionalInterceptors != null) { additionalInterceptors.forEach(okHttpClientBuilder::addInterceptor); } okHttpClientBuilder.addInterceptor(buildLoggingInterceptor()); // Set timeout. okHttpClientBuilder .connectTimeout(connectTimeout, TimeUnit.MILLISECONDS) .readTimeout(readTimeout, TimeUnit.MILLISECONDS) .writeTimeout(writeTimeout, TimeUnit.MILLISECONDS); final OkHttpClient okHttpClient = okHttpClientBuilder.build(); if (retrofitBuilder == null) { retrofitBuilder = createDefaultRetrofitBuilder(); } retrofitBuilder.client(okHttpClient); retrofitBuilder.baseUrl(apiEndPoint); final Retrofit retrofit = retrofitBuilder.build(); return retrofit.create(LineMessagingService.class); }
@Test public void testBuilderWithChannelTokenSupplier() throws InterruptedException { lineMessagingClient = LineMessagingClient.builder(() -> "MOCKED_TOKEN") .apiEndPoint("http://localhost:" + mockWebServer.getPort()) .build(); // Do lineMessagingClient.getProfile("TEST"); // Verify final RecordedRequest recordedRequest = mockWebServer.takeRequest(); assertThat(recordedRequest.getHeader("Authorization")) .isEqualTo("Bearer MOCKED_TOKEN"); }
@Test(timeout = ASYNC_TEST_TIMEOUT) public void relativeRequestTest() throws Exception { final String apiEndPoint = "http://" + mockWebServer.getHostName() + ':' + mockWebServer.getPort() + "/CanContainsRelative/"; lineMessagingClient = LineMessagingClient .builder("SECRET") .apiEndPoint(apiEndPoint) .build(); final UserProfileResponse profileResponseMock = new UserProfileResponse("name", "userId", "https://line.me/picture_url", "Status message"); mockWebServer.enqueue(new MockResponse() .setResponseCode(200) .setBody(new ObjectMapper() .writeValueAsString(profileResponseMock))); // Do final UserProfileResponse actualResponse = lineMessagingClient.getProfile("USER_TOKEN").get(); // Verify final RecordedRequest recordedRequest = mockWebServer.takeRequest(); assertThat(recordedRequest.getPath()) .isEqualTo("/CanContainsRelative/v2/bot/profile/USER_TOKEN"); assertThat(actualResponse).isEqualTo(profileResponseMock); }