/*******************************************************************************
* 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.util;
import static org.junit.Assert.assertEquals;
import java.util.Locale;
import org.junit.Before;
import org.junit.Test;
import com.eclipsesource.tabris.tracking.TrackingInfo;
public class IOSUserAgentGeneratorTest {
private IOSUserAgentGenerator generator;
@Before
public void setUp() {
generator = new IOSUserAgentGenerator();
}
@Test( expected = IllegalArgumentException.class )
public void testFailsWithNullTrackingInfo() {
generator.getUserAgent( null );
}
@Test( expected = IllegalStateException.class )
public void testFailsWithNullDeviceModel() {
TrackingInfo info = new TrackingInfo();
info.setDeviceOsVersion( "foo" );
info.setClientLocale( Locale.GERMAN );
generator.getUserAgent( info );
}
@Test( expected = IllegalStateException.class )
public void testFailsWithEmptyDeviceModel() {
TrackingInfo info = new TrackingInfo();
info.setDeviceModel( "" );
info.setClientLocale( Locale.GERMAN );
info.setDeviceOsVersion( "foo" );
generator.getUserAgent( info );
}
@Test( expected = IllegalStateException.class )
public void testFailsWithNullDeviceOsVersion() {
TrackingInfo info = new TrackingInfo();
info.setDeviceModel( "foo" );
info.setClientLocale( Locale.GERMAN );
generator.getUserAgent( info );
}
@Test( expected = IllegalStateException.class )
public void testFailsWithEmptyDeviceOsVersion() {
TrackingInfo info = new TrackingInfo();
info.setDeviceOsVersion( "" );
info.setDeviceModel( "foo" );
info.setClientLocale( Locale.GERMAN );
generator.getUserAgent( info );
}
@Test( expected = IllegalStateException.class )
public void testFailsWithNullLocale() {
TrackingInfo info = new TrackingInfo();
info.setDeviceModel( "foo" );
info.setDeviceOsVersion( "bar" );
generator.getUserAgent( info );
}
@Test
public void testGeneratesIOSUserAgent() {
TrackingInfo info = new TrackingInfo();
info.setDeviceModel( "foo" );
info.setDeviceOsVersion( "bar" );
info.setClientLocale( Locale.GERMAN );
String userAgent = generator.getUserAgent( info );
String expectedAgent = "Mozilla/5.0 (foo; U; CPU iPhone OS bar like Mac OS X; de ) AppleWebKit/532.9 (KHTML, like "
+ "Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7";
assertEquals( expectedAgent, userAgent );
}
}