/*******************************************************************************
* Copyright (c) 2014 EclipseSource and others. All rights reserved. This program and the
* accompanying materials are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html Contributors: EclipseSource - initial API and
* implementation
******************************************************************************/
package com.eclipsesource.tabris.tracking.internal.piwik.request;
import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeyProvider.getRequestKey;
import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.ACTION_URL;
import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.API_VERSION;
import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.RANDOM;
import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.REC;
import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.SITE_ID;
import static org.junit.Assert.assertEquals;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import com.eclipsesource.tabris.tracking.internal.Requestable;
import com.eclipsesource.tabris.tracking.internal.piwik.model.PiwikConfiguration;
import com.eclipsesource.tabris.tracking.internal.piwik.model.action.Action;
public class PiwikRequestTest {
@Test( expected = IllegalArgumentException.class )
public void testFailsWithNullConfiguration() {
new PiwikRequest( null, new Action( "foo" ), new TestRequestable( "baz", "bar" ) );
}
@Test
public void testAddsParametersFromConfiguration() {
PiwikRequest request = new PiwikRequest( new PiwikConfiguration( "apiVersion", 2 ),
new Action( "actionUrl" ),
new TestRequestable( "baz", "bac" ) );
assertEquals( "apiVersion", request.assemble().get( getRequestKey( API_VERSION ) ) );
assertEquals( Integer.valueOf( 2 ), request.assemble().get( getRequestKey( SITE_ID ) ) );
}
@Test( expected = IllegalArgumentException.class )
public void testFailsWithNullAction() {
new PiwikRequest( new PiwikConfiguration( "apiVersion", 2 ),
null,
new TestRequestable( "foo", "bar" ) );
}
@Test
public void testSetsActionAsParameter() {
PiwikRequest request = new PiwikRequest( new PiwikConfiguration( "apiVersion", 2 ),
new Action( "actionUrl" ),
new TestRequestable( "foo", "bar" ) );
assertEquals( "actionUrl", request.assemble().get( getRequestKey( ACTION_URL ) ) );
}
@Test
public void testSetsUuidForRandAsParameter() {
PiwikRequest request = new PiwikRequest( new PiwikConfiguration( "apiVersion", 2 ),
new Action( "actionUrl" ),
new TestRequestable( "foo", "bar" ) );
String clientId = ( String )request.assemble().get( getRequestKey( RANDOM ) );
assertEquals( 36, clientId.length() );
}
@Test
public void testSetsRecAsParameter() {
PiwikRequest request = new PiwikRequest( new PiwikConfiguration( "apiVersion", 2 ),
new Action( "actionUrl" ),
new TestRequestable( "foo", "bar" ) );
assertEquals( Integer.valueOf( 1 ), request.assemble().get( getRequestKey( REC ) ) );
}
@Test
public void testAddsParameterFromRequestables() {
TestRequestable requestable1 = new TestRequestable( "foo", "bar" );
TestRequestable requestable2 = new TestRequestable( "foo2", "bar2" );
PiwikRequest request = new PiwikRequest( new PiwikConfiguration( "apiVersion", 2 ),
new Action( "actionUrl" ),
requestable1,
requestable2 );
Map<String, Object> parameter = request.assemble();
assertEquals( "bar", parameter.get( "foo" ) );
assertEquals( "bar2", parameter.get( "foo2" ) );
}
private static class TestRequestable implements Requestable {
private final HashMap<String, Object> parameter;
public TestRequestable( String key, String value ) {
this.parameter = new HashMap<String, Object>();
parameter.put( key, value );
}
@Override
public Map<String, Object> getParameter() {
return parameter;
}
}
}