View Javadoc
1   /*
2    * ====================================================================
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   * ====================================================================
20   *
21   * This software consists of voluntary contributions made by many
22   * individuals on behalf of the Apache Software Foundation.  For more
23   * information on the Apache Software Foundation, please see
24   * <http://www.apache.org/>.
25   *
26   */
27  package org.apache.http.auth;
28  
29  import org.apache.http.HttpHost;
30  import org.junit.Assert;
31  import org.junit.Test;
32  
33  /**
34   * Tests for {@link org.apache.http.auth.AuthScope}.
35   */
36  public class TestAuthScope {
37  
38      @Test
39      public void testBasics() {
40          final AuthScope authscope = new AuthScope("somehost", 80, "somerealm", "somescheme");
41          Assert.assertEquals("SOMESCHEME", authscope.getScheme());
42          Assert.assertEquals("somehost", authscope.getHost());
43          Assert.assertEquals(80, authscope.getPort());
44          Assert.assertEquals("somerealm", authscope.getRealm());
45          Assert.assertEquals("SOMESCHEME 'somerealm'@somehost:80", authscope.toString());
46      }
47  
48      @Test
49      public void testBasicsOptionalRealm() {
50          final AuthScope authscope = new AuthScope("somehost", 80, AuthScope.ANY_REALM, "somescheme");
51          Assert.assertEquals("SOMESCHEME", authscope.getScheme());
52          Assert.assertEquals("somehost", authscope.getHost());
53          Assert.assertEquals(80, authscope.getPort());
54          Assert.assertEquals(null, authscope.getRealm());
55          Assert.assertEquals("SOMESCHEME <any realm>@somehost:80", authscope.toString());
56      }
57  
58      @Test
59      public void testBasicsOptionalScheme() {
60          final AuthScope authscope = new AuthScope("somehost", 80, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME);
61          Assert.assertEquals(null, authscope.getScheme());
62          Assert.assertEquals("somehost", authscope.getHost());
63          Assert.assertEquals(80, authscope.getPort());
64          Assert.assertEquals(null, authscope.getRealm());
65          Assert.assertEquals("<any realm>@somehost:80", authscope.toString());
66      }
67  
68      @Test
69      public void testBasicsOptionalPort() {
70          final AuthScope authscope = new AuthScope("somehost", AuthScope.ANY_PORT, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME);
71          Assert.assertEquals(null, authscope.getScheme());
72          Assert.assertEquals("somehost", authscope.getHost());
73          Assert.assertEquals(-1, authscope.getPort());
74          Assert.assertEquals(null, authscope.getRealm());
75          Assert.assertEquals("<any realm>@somehost", authscope.toString());
76      }
77  
78      @Test
79      public void testByOrigin() {
80          final HttpHost host = new HttpHost("somehost", 8080, "http");
81          final AuthScope authscope = new AuthScope(host);
82          Assert.assertEquals(null, authscope.getScheme());
83          Assert.assertEquals("somehost", authscope.getHost());
84          Assert.assertEquals(8080, authscope.getPort());
85          Assert.assertEquals(null, authscope.getRealm());
86          Assert.assertEquals(host, authscope.getOrigin());
87          Assert.assertEquals("<any realm>@somehost:8080", authscope.toString());
88      }
89  
90      @Test
91      public void testMixedCaseHostname() {
92          final AuthScope authscope = new AuthScope("SomeHost", 80);
93          Assert.assertEquals(null, authscope.getScheme());
94          Assert.assertEquals("somehost", authscope.getHost());
95          Assert.assertEquals(80, authscope.getPort());
96          Assert.assertEquals(null, authscope.getRealm());
97          Assert.assertEquals("<any realm>@somehost:80", authscope.toString());
98      }
99  
100     public void testByOriginMixedCaseHostname() throws Exception {
101         final HttpHost host = new HttpHost("SomeHost", 8080, "http");
102         final AuthScope authscope = new AuthScope(host);
103         Assert.assertEquals("somehost", authscope.getHost());
104         Assert.assertEquals(host, authscope.getOrigin());
105     }
106 
107     @Test
108     public void testBasicsOptionalHost() {
109         final AuthScope authscope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME);
110         Assert.assertEquals(null, authscope.getScheme());
111         Assert.assertEquals(null, authscope.getHost());
112         Assert.assertEquals(-1, authscope.getPort());
113         Assert.assertEquals(null, authscope.getRealm());
114         Assert.assertEquals("<any realm>", authscope.toString());
115     }
116 
117     @Test
118     public void testScopeMatching() {
119         final AuthScope authscope1 = new AuthScope("somehost", 80, "somerealm", "somescheme");
120         final AuthScope authscope2 = new AuthScope("someotherhost", 80, "somerealm", "somescheme");
121         Assert.assertTrue(authscope1.match(authscope2) < 0);
122 
123         int m1 = authscope1.match(
124                 new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, "somescheme"));
125         int m2 = authscope1.match(
126                 new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "somerealm", AuthScope.ANY_SCHEME));
127         Assert.assertTrue(m2 > m1);
128 
129         m1 = authscope1.match(
130                 new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, "somescheme"));
131         m2 = authscope1.match(
132                 new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "somerealm", AuthScope.ANY_SCHEME));
133         Assert.assertTrue(m2 > m1);
134 
135         m1 = authscope1.match(
136                 new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "somerealm", "somescheme"));
137         m2 = authscope1.match(
138                 new AuthScope(AuthScope.ANY_HOST, 80, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME));
139         Assert.assertTrue(m2 > m1);
140 
141         m1 = authscope1.match(
142                 new AuthScope(AuthScope.ANY_HOST, 80, "somerealm", "somescheme"));
143         m2 = authscope1.match(
144                 new AuthScope("somehost", AuthScope.ANY_PORT, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME));
145         Assert.assertTrue(m2 > m1);
146 
147         m1 = authscope1.match(AuthScope.ANY);
148         m2 = authscope1.match(
149                 new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, "somescheme"));
150         Assert.assertTrue(m2 > m1);
151     }
152 
153     @Test
154     public void testEquals() {
155         final AuthScope authscope1 = new AuthScope("somehost", 80, "somerealm", "somescheme");
156         final AuthScope authscope2 = new AuthScope("someotherhost", 80, "somerealm", "somescheme");
157         final AuthScope authscope3 = new AuthScope("somehost", 80, "somerealm", "somescheme");
158         final AuthScope authscope4 = new AuthScope("somehost", 8080, "somerealm", "somescheme");
159         final AuthScope authscope5 = new AuthScope("somehost", 80, "someotherrealm", "somescheme");
160         final AuthScope authscope6 = new AuthScope("somehost", 80, "somerealm", "someotherscheme");
161         Assert.assertTrue(authscope1.equals(authscope1));
162         Assert.assertFalse(authscope1.equals(authscope2));
163         Assert.assertTrue(authscope1.equals(authscope3));
164         Assert.assertFalse(authscope1.equals(authscope4));
165         Assert.assertFalse(authscope1.equals(authscope5));
166         Assert.assertFalse(authscope1.equals(authscope6));
167     }
168 
169     @Test
170     public void testHash() {
171         final AuthScope authscope1 = new AuthScope("somehost", 80, "somerealm", "somescheme");
172         final AuthScope authscope2 = new AuthScope("someotherhost", 80, "somerealm", "somescheme");
173         final AuthScope authscope3 = new AuthScope("somehost", 80, "somerealm", "somescheme");
174         final AuthScope authscope4 = new AuthScope("somehost", 8080, "somerealm", "somescheme");
175         final AuthScope authscope5 = new AuthScope("somehost", 80, "someotherrealm", "somescheme");
176         final AuthScope authscope6 = new AuthScope("somehost", 80, "somerealm", "someotherscheme");
177         Assert.assertTrue(authscope1.hashCode() == authscope1.hashCode());
178         Assert.assertFalse(authscope1.hashCode() == authscope2.hashCode());
179         Assert.assertTrue(authscope1.hashCode() == authscope3.hashCode());
180         Assert.assertFalse(authscope1.hashCode() == authscope4.hashCode());
181         Assert.assertFalse(authscope1.hashCode() == authscope5.hashCode());
182         Assert.assertFalse(authscope1.hashCode() == authscope6.hashCode());
183     }
184 
185 }