1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.shiro.test;
20  
21  import org.apache.shiro.subject.Subject;
22  import org.junit.After;
23  import org.junit.Test;
24  
25  import static org.easymock.EasyMock.createNiceMock;
26  import static org.easymock.EasyMock.expect;
27  
28  /**
29   * Simple example test class showing how one may perform unit tests for code that requires Shiro APIs.
30   *
31   * @since 1.2
32   */
33  public class ExampleShiroUnitTest extends AbstractShiroTest {
34  
35      @Test
36      public void testSimple() {
37          //1.  Create a mock Subject instance for the test to run
38          //    (for example, as an authenticated Subject):
39          Subject subjectUnderTest = createNiceMock(Subject.class);
40  
41          expect(subjectUnderTest.isAuthenticated()).andReturn(true);
42  
43          //2. Bind the subject to the current thread:
44          setSubject(subjectUnderTest);
45  
46          //perform test logic here.  Any call to
47          //SecurityUtils.getSubject() directly (or nested in the
48          //call stack) will work properly.
49      }
50  
51      @After
52      public void tearDownSubject() {
53          //3. Unbind the subject from the current thread:
54          clearSubject();
55      }
56  
57  }