/* * Copyright (C) 2014 Civilian Framework. * * Licensed under the Civilian License (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.civilian-framework.org/license.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.civilian.controller; import java.sql.SQLException; import org.civilian.CivTest; import org.civilian.Controller; import org.civilian.annotation.Get; import org.civilian.context.test.TestApp; import org.junit.BeforeClass; import org.junit.Test; public class ControllerTest extends CivTest { public static class TestController extends Controller { @Get public void testAccessors() throws Exception { assertSame(app_, getApplication()); assertSame(app_, getApplication(TestApp.class)); assertSame(app_.getContext(), getContext()); assertSame(getClass(), getControllerType().getControllerClass()); assertTrue(isProcessing()); assertNull(getException()); assertEquals("?msg", msg("msg")); // can't invoke myself try { process(getRequest()); } catch(IllegalStateException e) { assertEquals("already processing", e.getMessage()); } } @Get public void testException() throws Exception { throw new SQLException("little bobby tables"); } } @BeforeClass public static void beforeClass() { app_ = new TestApp(); app_.init(); } @Test public void testNonRequestAccess() { Controller controller = new TestController(); try { assertEquals(app_.develop(), controller.develop()); } catch (IllegalStateException e) { assertEquals("may not be called outside of process(Request)", e.getMessage()); } } private static TestApp app_; }