Commit ad150afc authored by Noel Alonso's avatar Noel Alonso
Browse files

Crea excepciones propias + tests

parent 842d3ce0
Loading
Loading
Loading
Loading
+45 −0
Original line number Diff line number Diff line
package es.redmic.ais.exceptions;

import es.redmic.exception.common.ExceptionTypeItfc;

public enum ExceptionType implements ExceptionTypeItfc {

	// @formatter:off
	
	// EventSource
	INVALID_USERNAME_OR_PASSWORD(Constants.INVALID_USERNAME_OR_PASSWORD),
	TOO_FREQUENT_REQUESTS(Constants.TOO_FREQUENT_REQUESTS);
	
	// @formatter:on

	final String type;

	ExceptionType(String type) {
		this.type = type;
	}

	public static ExceptionType fromString(String text) {
		if (text != null) {
			for (ExceptionType b : ExceptionType.values()) {
				if (text.equalsIgnoreCase(b.type)) {
					return b;
				}
			}
		}
		throw new IllegalArgumentException(text + " has no corresponding value");
	}

	@Override
	public String toString() {
		return type;
	}

	private static class Constants {

		// @formatter:off
		public static final String INVALID_USERNAME_OR_PASSWORD = "InvalidUsernameException",
				TOO_FREQUENT_REQUESTS = "TooFrequentRequestsException";
		// @formatter:on
	}

}
+12 −0
Original line number Diff line number Diff line
package es.redmic.ais.exceptions;

import es.redmic.exception.common.BadRequestException;

public class InvalidUsernameException extends BadRequestException {

	private static final long serialVersionUID = 1L;

	public InvalidUsernameException() {
		super(ExceptionType.INVALID_USERNAME_OR_PASSWORD);
	}
}
+13 −0
Original line number Diff line number Diff line
package es.redmic.ais.exceptions;

import es.redmic.exception.common.BadRequestException;

public class TooFrequentRequestsException extends BadRequestException {

	private static final long serialVersionUID = 1L;

	public TooFrequentRequestsException() {
		super(ExceptionType.TOO_FREQUENT_REQUESTS);
	}

}
+3 −0
Original line number Diff line number Diff line
#Ais exceptions
InvalidUsernameException=Error obteniendo datos. Usuario o contraseña no válido
TooFrequentRequestsException=Error obteniendo datos. Peticiones demasiado frecuentes
 No newline at end of file
+46 −0
Original line number Diff line number Diff line
package es.redmic.test.ais.unit.exceptions;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.text.MessageFormat;
import java.util.List;

import es.redmic.exception.common.BaseException;
import es.redmic.exception.common.PatternUtils;

public abstract class BaseExceptionTest {

	private final String resourcePath = "classpath*:i18n/messages_es_ES.properties";

	protected void checkMessage(BaseException ex, String i18nKey, List<String> fields) {

		// @formatter:off
		String message = ex.getMessage(),
			pattern = PatternUtils.getPattern(i18nKey, resourcePath),
			expectedMessage = replaceFields(pattern, fields);
			
		// @formatter:on
		assertNotNull(message);
		assertNotEquals("", message);
		assertEquals(expectedMessage, message);

		if (fields != null && fields.size() > 0) {
			for (String field : fields) {
				assertTrue(message.contains(field));
			}
		}
	}

	private String replaceFields(String pattern, List<String> fields) {

		if (fields == null || fields.size() == 0)
			return pattern;

		Object[] fieldsArray = fields.toArray();
		MessageFormat format = new MessageFormat(pattern);
		return format.format(fieldsArray);
	}
}
Loading