Encapsulate GeoLiteAPI class

This commit is contained in:
ljacqu
2016-06-26 23:09:27 +02:00
parent 1326606f37
commit 1361174892
6 changed files with 163 additions and 40 deletions
@@ -0,0 +1,104 @@
package fr.xephi.authme.util;
import com.maxmind.geoip.Country;
import com.maxmind.geoip.LookupService;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.io.File;
import java.io.IOException;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
/**
* Test for {@link GeoLiteAPI}.
*/
@RunWith(MockitoJUnitRunner.class)
public class GeoLiteAPITest {
private GeoLiteAPI geoLiteApi;
private File dataFolder;
@Mock
private LookupService lookupService;
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Before
public void initializeGeoLiteApi() throws IOException {
dataFolder = temporaryFolder.newFolder();
geoLiteApi = new GeoLiteAPI(dataFolder, lookupService);
}
@Test
public void shouldGetCountry() {
// given
String ip = "123.45.67.89";
String countryCode = "XX";
Country country = mock(Country.class);
given(country.getCode()).willReturn(countryCode);
given(lookupService.getCountry(ip)).willReturn(country);
// when
String result = geoLiteApi.getCountryCode(ip);
// then
assertThat(result, equalTo(countryCode));
verify(lookupService).getCountry(ip);
}
@Test
public void shouldNotLookUpCountryForLocalhostIp() {
// given
String ip = "127.0.0.1";
// when
String result = geoLiteApi.getCountryCode(ip);
// then
assertThat(result, equalTo("--"));
verify(lookupService, never()).getCountry(anyString());
}
@Test
public void shouldLookUpCountryName() {
// given
String ip = "24.45.167.89";
String countryName = "Ecuador";
Country country = mock(Country.class);
given(country.getName()).willReturn(countryName);
given(lookupService.getCountry(ip)).willReturn(country);
// when
String result = geoLiteApi.getCountryName(ip);
// then
assertThat(result, equalTo(countryName));
verify(lookupService).getCountry(ip);
}
@Test
public void shouldNotLookUpCountryNameForLocalhostIp() {
// given
String ip = "127.0.0.1";
// when
String result = geoLiteApi.getCountryName(ip);
// then
assertThat(result, equalTo("N/A"));
verify(lookupService, never()).getCountry(ip);
}
}
@@ -5,17 +5,18 @@ import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.output.MessageKey;
import fr.xephi.authme.permission.PermissionsManager;
import fr.xephi.authme.permission.PlayerStatePermission;
import fr.xephi.authme.runner.BeforeInjecting;
import fr.xephi.authme.runner.DelayedInjectionRunner;
import fr.xephi.authme.runner.InjectDelayed;
import fr.xephi.authme.settings.NewSetting;
import fr.xephi.authme.settings.properties.EmailSettings;
import fr.xephi.authme.settings.properties.RestrictionSettings;
import fr.xephi.authme.settings.properties.SecuritySettings;
import fr.xephi.authme.util.ValidationService.ValidationResult;
import org.bukkit.command.CommandSender;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Arrays;
import java.util.Collections;
@@ -28,9 +29,10 @@ import static org.mockito.Mockito.mock;
/**
* Test for {@link ValidationService}.
*/
@RunWith(MockitoJUnitRunner.class)
@RunWith(DelayedInjectionRunner.class)
public class ValidationServiceTest {
@InjectDelayed
private ValidationService validationService;
@Mock
private NewSetting settings;
@@ -38,8 +40,10 @@ public class ValidationServiceTest {
private DataSource dataSource;
@Mock
private PermissionsManager permissionsManager;
@Mock
private GeoLiteAPI geoLiteApi;
@Before
@BeforeInjecting
public void createService() {
given(settings.getProperty(RestrictionSettings.ALLOWED_PASSWORD_REGEX)).willReturn("[a-zA-Z]+");
given(settings.getProperty(SecuritySettings.MIN_PASSWORD_LENGTH)).willReturn(3);
@@ -47,7 +51,6 @@ public class ValidationServiceTest {
given(settings.getProperty(SecuritySettings.UNSAFE_PASSWORDS))
.willReturn(Arrays.asList("unsafe", "other-unsafe"));
given(settings.getProperty(EmailSettings.MAX_REG_PER_EMAIL)).willReturn(3);
validationService = new ValidationService(settings, dataSource, permissionsManager);
}
@Test