<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>PathMatchingFilterTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> *     <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> */</em>
<a name="19" href="#19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.shiro.web.filter;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.junit.Before;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> javax.servlet.ServletRequest;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> javax.servlet.ServletResponse;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> javax.servlet.http.HttpServletRequest;
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.easymock.EasyMock.*;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertFalse;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertTrue;
<a name="31" href="#31">31</a>  
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment">/**</em>
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * Unit tests for the {@link PathMatchingFilter} implementation.</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> */</em>
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/shiro/web/filter/PathMatchingFilterTest.html">PathMatchingFilterTest</a> {
<a name="36" href="#36">36</a>  
<a name="37" href="#37">37</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CONTEXT_PATH = <span class="jxr_string">"/"</span>;
<a name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String ENABLED_PATH = CONTEXT_PATH + <span class="jxr_string">"enabled"</span>;
<a name="39" href="#39">39</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DISABLED_PATH = CONTEXT_PATH + <span class="jxr_string">"disabled"</span>;
<a name="40" href="#40">40</a>  
<a name="41" href="#41">41</a>      HttpServletRequest request;
<a name="42" href="#42">42</a>      ServletResponse response;
<a name="43" href="#43">43</a>      PathMatchingFilter filter;
<a name="44" href="#44">44</a>  
<a name="45" href="#45">45</a>      @Before
<a name="46" href="#46">46</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() {
<a name="47" href="#47">47</a>          request = createNiceMock(HttpServletRequest.<strong class="jxr_keyword">class</strong>);
<a name="48" href="#48">48</a>          response = createNiceMock(ServletResponse.<strong class="jxr_keyword">class</strong>);
<a name="49" href="#49">49</a>          filter = createTestInstance();
<a name="50" href="#50">50</a>      }
<a name="51" href="#51">51</a>  
<a name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> PathMatchingFilter createTestInstance() {
<a name="53" href="#53">53</a>          <strong class="jxr_keyword">final</strong> String NAME = <span class="jxr_string">"pathMatchingFilter"</span>;
<a name="54" href="#54">54</a>  
<a name="55" href="#55">55</a>          PathMatchingFilter filter = <strong class="jxr_keyword">new</strong> PathMatchingFilter() {
<a name="56" href="#56">56</a>              @Override
<a name="57" href="#57">57</a>              <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isEnabled(ServletRequest request, ServletResponse response, String path, Object mappedValue) <strong class="jxr_keyword">throws</strong> Exception {
<a name="58" href="#58">58</a>                  <strong class="jxr_keyword">return</strong> !path.equals(DISABLED_PATH);
<a name="59" href="#59">59</a>              }
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>              @Override
<a name="62" href="#62">62</a>              <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> onPreHandle(ServletRequest request, ServletResponse response, Object mappedValue) <strong class="jxr_keyword">throws</strong> Exception {
<a name="63" href="#63">63</a>                  <em class="jxr_comment">//simulate a subclass that handles the response itself (A 'false' return value indicates that the</em>
<a name="64" href="#64">64</a>                  <em class="jxr_comment">//FilterChain should not continue to be executed)</em>
<a name="65" href="#65">65</a>                  <em class="jxr_comment">//</em>
<a name="66" href="#66">66</a>                  <em class="jxr_comment">//This method should only be called if the filter is enabled, so we know if the return value is</em>
<a name="67" href="#67">67</a>                  <em class="jxr_comment">//false, then the filter was enabled.  A true return value from 'onPreHandle' indicates this test</em>
<a name="68" href="#68">68</a>                  <em class="jxr_comment">//filter was disabled or a path wasn't matched.</em>
<a name="69" href="#69">69</a>                  <strong class="jxr_keyword">return</strong> false;
<a name="70" href="#70">70</a>              }
<a name="71" href="#71">71</a>          };
<a name="72" href="#72">72</a>          filter.setName(NAME);
<a name="73" href="#73">73</a>  
<a name="74" href="#74">74</a>          <strong class="jxr_keyword">return</strong> filter;
<a name="75" href="#75">75</a>      }
<a name="76" href="#76">76</a>  
<a name="77" href="#77">77</a>      <em class="jxr_javadoccomment">/**</em>
<a name="78" href="#78">78</a>  <em class="jxr_javadoccomment">     * Test asserting &lt;a href="https://issues.apache.org/jira/browse/SHIRO-221"&gt;SHIRO-221&lt;a/&gt;.</em>
<a name="79" href="#79">79</a>  <em class="jxr_javadoccomment">     */</em>
<a name="80" href="#80">80</a>      @SuppressWarnings({<span class="jxr_string">"JavaDoc"</span>})
<a name="81" href="#81">81</a>      @Test
<a name="82" href="#82">82</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDisabledBasedOnPath() <strong class="jxr_keyword">throws</strong> Exception {
<a name="83" href="#83">83</a>          filter.processPathConfig(DISABLED_PATH, <strong class="jxr_keyword">null</strong>);
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>          HttpServletRequest request = createNiceMock(HttpServletRequest.<strong class="jxr_keyword">class</strong>);
<a name="86" href="#86">86</a>          ServletResponse response = createNiceMock(ServletResponse.<strong class="jxr_keyword">class</strong>);
<a name="87" href="#87">87</a>  
<a name="88" href="#88">88</a>          expect(request.getContextPath()).andReturn(CONTEXT_PATH).anyTimes();
<a name="89" href="#89">89</a>          expect(request.getRequestURI()).andReturn(DISABLED_PATH).anyTimes();
<a name="90" href="#90">90</a>          replay(request);
<a name="91" href="#91">91</a>  
<a name="92" href="#92">92</a>          <strong class="jxr_keyword">boolean</strong> continueFilterChain = filter.preHandle(request, response);
<a name="93" href="#93">93</a>  
<a name="94" href="#94">94</a>          assertTrue(<span class="jxr_string">"FilterChain should continue."</span>, continueFilterChain);
<a name="95" href="#95">95</a>  
<a name="96" href="#96">96</a>          verify(request);
<a name="97" href="#97">97</a>      }
<a name="98" href="#98">98</a>  
<a name="99" href="#99">99</a>      <em class="jxr_javadoccomment">/**</em>
<a name="100" href="#100">100</a> <em class="jxr_javadoccomment">     * Test asserting &lt;a href="https://issues.apache.org/jira/browse/SHIRO-221"&gt;SHIRO-221&lt;a/&gt;.</em>
<a name="101" href="#101">101</a> <em class="jxr_javadoccomment">     */</em>
<a name="102" href="#102">102</a>     @SuppressWarnings({<span class="jxr_string">"JavaDoc"</span>})
<a name="103" href="#103">103</a>     @Test
<a name="104" href="#104">104</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testEnabled() <strong class="jxr_keyword">throws</strong> Exception {
<a name="105" href="#105">105</a>         <em class="jxr_comment">//Configure the filter to reflect 2 configured paths.  This test will simulate a request to the</em>
<a name="106" href="#106">106</a>         <em class="jxr_comment">//enabled path</em>
<a name="107" href="#107">107</a>         filter.processPathConfig(DISABLED_PATH, <strong class="jxr_keyword">null</strong>);
<a name="108" href="#108">108</a>         filter.processPathConfig(ENABLED_PATH, <strong class="jxr_keyword">null</strong>);
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a>         HttpServletRequest request = createNiceMock(HttpServletRequest.<strong class="jxr_keyword">class</strong>);
<a name="111" href="#111">111</a>         ServletResponse response = createNiceMock(ServletResponse.<strong class="jxr_keyword">class</strong>);
<a name="112" href="#112">112</a> 
<a name="113" href="#113">113</a>         expect(request.getContextPath()).andReturn(CONTEXT_PATH).anyTimes();
<a name="114" href="#114">114</a>         expect(request.getRequestURI()).andReturn(ENABLED_PATH).anyTimes();
<a name="115" href="#115">115</a>         replay(request);
<a name="116" href="#116">116</a> 
<a name="117" href="#117">117</a>         <strong class="jxr_keyword">boolean</strong> continueFilterChain = filter.preHandle(request, response);
<a name="118" href="#118">118</a> 
<a name="119" href="#119">119</a>         assertFalse(<span class="jxr_string">"FilterChain should NOT continue."</span>, continueFilterChain);
<a name="120" href="#120">120</a> 
<a name="121" href="#121">121</a>         verify(request);
<a name="122" href="#122">122</a>     }
<a name="123" href="#123">123</a> 
<a name="124" href="#124">124</a> 
<a name="125" href="#125">125</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>
