Package com.github.hakko.musiccabinet.ws.lastfm

Source Code of com.github.hakko.musiccabinet.ws.lastfm.AbstractWSPostClientTest

package com.github.hakko.musiccabinet.ws.lastfm;

import static com.github.hakko.musiccabinet.service.LastFmService.API_KEY;
import static com.github.hakko.musiccabinet.ws.lastfm.AbstractWSClient.HOST;
import static com.github.hakko.musiccabinet.ws.lastfm.AbstractWSClient.HTTP;
import static com.github.hakko.musiccabinet.ws.lastfm.AbstractWSClient.PARAM_API_KEY;
import static com.github.hakko.musiccabinet.ws.lastfm.AbstractWSClient.PARAM_API_SIG;
import static com.github.hakko.musiccabinet.ws.lastfm.AbstractWSClient.PARAM_METHOD;
import static com.github.hakko.musiccabinet.ws.lastfm.AbstractWSClient.PATH;
import static org.mockito.Mockito.when;

import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;

import com.github.hakko.musiccabinet.exception.ApplicationException;
import com.github.hakko.musiccabinet.util.ResourceUtil;

public class AbstractWSPostClientTest extends AbstractWSImplementationTest {

  private static final String FAILED_KEY_RESOURCE =
      "last.fm/xml/failed-key.xml";

  @Test
  public void validateURIBuilder() throws ApplicationException {
    URI uri = new AbstractWSPostClient() {
    }.getURI(new ArrayList<NameValuePair>());
    String expected = HTTP + "://" + HOST + PATH;

    Assert.assertNotNull(uri);
    Assert.assertEquals(expected, uri.toString());
  }

  @Test
  public void apiKeyGetsAddedAndSignatureGenerated() throws ApplicationException, IOException {
    final String method = "test.call";
   
    List<NameValuePair> params = new ArrayList<>();
    params.add(new BasicNameValuePair(PARAM_METHOD, method));

    TestWSPostAuthenticatedClient client = getTestWSClient(params, FAILED_KEY_RESOURCE);
    params = client.getParams();
   
    client.executeWSRequest(params);
   
    Assert.assertNotNull(params);
    Assert.assertEquals(3, params.size());
   
    assertHasParameter(params, PARAM_API_KEY, API_KEY);
    assertHasParameter(params, PARAM_METHOD, method);
    Assert.assertEquals(PARAM_API_SIG, params.get(2).getName());
  }
 
  /*
   * Help method to create a base TestWSClient.
   */
  private TestWSPostAuthenticatedClient getTestWSClient(List<NameValuePair> params,
      String responseURI) throws IOException {
    HttpClient httpClient = Mockito.mock(HttpClient.class);
    ClientConnectionManager connectionManager = Mockito.mock(
        ClientConnectionManager.class);
    when(httpClient.getConnectionManager()).thenReturn(connectionManager);

    StatusLine statusLine = Mockito.mock(StatusLine.class);
    when(statusLine.getStatusCode()).thenReturn(200);
   
    HttpEntity httpEntity = Mockito.mock(HttpEntity.class);
    when(httpEntity.getContent()).thenReturn(new ResourceUtil(responseURI).getInputStream());
   
    HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
    when(httpResponse.getStatusLine()).thenReturn(statusLine);
    when(httpResponse.getEntity()).thenReturn(httpEntity);
   
    when(httpClient.execute(Mockito.any(HttpUriRequest.class))).thenReturn(httpResponse);
   
    TestWSPostAuthenticatedClient testClient = new TestWSPostAuthenticatedClient(params);
    testClient.setHttpClient(httpClient);

    return testClient;
  }

}
TOP

Related Classes of com.github.hakko.musiccabinet.ws.lastfm.AbstractWSPostClientTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.