/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 *******************************************************************************/ package org.ebayopensource.turmeric.runtime.tests.common.sif.tester; import org.ebayopensource.turmeric.runtime.sif.service.Service; import org.ebayopensource.turmeric.common.v1.types.CommonErrorData; /** * A common implementation of ExceptionAssert for validating the service exception for various values. */ public class AssertErrorData implements ExceptionAssert { private Class<? extends Exception> expectedCause; private boolean mustHaveErrorData = true; private Long expectedErrorDataId; private Class<?> expectedErrorDataSource; private String expectedExceptionText; public void needsCause(Class<? extends Exception> exceptionClass) { this.expectedCause = exceptionClass; } public void needsErrorDataId(CommonErrorData errorData) { needsErrorDataId(errorData.getErrorId()); } public void optionalErrorDataId(CommonErrorData errorData) { optionalErrorDataId(errorData.getErrorId()); } public void optionalErrorDataId(long id) { this.mustHaveErrorData = false; this.expectedErrorDataId = id; } public void needsErrorDataId(long id) { this.mustHaveErrorData = true; this.expectedErrorDataId = id; } public void needsErrorDataSource(Class<?> errorDataSource) { this.expectedErrorDataSource = errorDataSource; } public void needsExceptionText(String subtext) { this.expectedExceptionText = subtext; } @Override public void assertException(ExecutionScope scope, Service svc, Exception exception) throws AssertionError, Exception { AssertableServiceError error = new AssertableServiceError(exception); if (expectedCause != null) { error.assertCause(expectedCause); } if (expectedExceptionText != null) { error.assertExceptionMessageContains(expectedExceptionText); } if (mustHaveErrorData) { error.assertHasErrorData(); } if (expectedErrorDataId != null) { error.assertErrorDataId(expectedErrorDataId); } if (expectedErrorDataSource != null) { error.assertErrorDataSource(expectedErrorDataSource); } } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("AssertErrorData [expectedCause="); builder.append(expectedCause); builder.append(", mustHaveErrorData="); builder.append(mustHaveErrorData); builder.append(", expectedErrorDataId="); builder.append(expectedErrorDataId); builder.append(", expectedErrorDataSource="); builder.append(expectedErrorDataSource); builder.append(", expectedExceptionText="); builder.append(expectedExceptionText); builder.append("]"); return builder.toString(); } }