1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.hc.client5.http.impl.auth;
28
29 import org.apache.hc.client5.http.auth.AuthChallenge;
30 import org.apache.hc.client5.http.auth.AuthScheme;
31 import org.apache.hc.client5.http.auth.AuthScope;
32 import org.apache.hc.client5.http.auth.BearerToken;
33 import org.apache.hc.client5.http.auth.ChallengeType;
34 import org.apache.hc.client5.http.auth.CredentialsProvider;
35 import org.apache.hc.core5.http.HttpHost;
36 import org.apache.hc.core5.http.HttpRequest;
37 import org.apache.hc.core5.http.message.BasicHttpRequest;
38 import org.apache.hc.core5.http.message.BasicNameValuePair;
39 import org.junit.jupiter.api.Assertions;
40 import org.junit.jupiter.api.Test;
41
42
43
44
45 class TestBearerScheme {
46
47 @Test
48 void testBearerAuthenticationEmptyChallenge() throws Exception {
49 final AuthChallenge authChallenge = new AuthChallenge(ChallengeType.TARGET, "BEARER");
50 final AuthScheme authscheme = new BearerScheme();
51 authscheme.processChallenge(authChallenge, null);
52 Assertions.assertNull(authscheme.getRealm());
53 }
54
55 @Test
56 void testBearerAuthentication() throws Exception {
57 final AuthChallenge authChallenge = new AuthChallenge(ChallengeType.TARGET, "Bearer",
58 new BasicNameValuePair("realm", "test"));
59
60 final AuthScheme authscheme = new BearerScheme();
61 authscheme.processChallenge(authChallenge, null);
62
63 final HttpHost host = new HttpHost("somehost", 80);
64 final CredentialsProvider credentialsProvider = CredentialsProviderBuilder.create()
65 .add(new AuthScope(host, "test", null), new BearerToken("some token"))
66 .build();
67
68 final HttpRequest request = new BasicHttpRequest("GET", "/");
69 Assertions.assertTrue(authscheme.isResponseReady(host, credentialsProvider, null));
70 authscheme.generateAuthResponse(host, request, null);
71
72 Assertions.assertEquals("test", authscheme.getRealm());
73 Assertions.assertTrue(authscheme.isChallengeComplete());
74 Assertions.assertFalse(authscheme.isConnectionBased());
75 }
76
77 @Test
78 void testStateStorage() throws Exception {
79 final AuthChallenge authChallenge = new AuthChallenge(ChallengeType.TARGET, "Bearer",
80 new BasicNameValuePair("realm", "test"),
81 new BasicNameValuePair("code", "read"));
82
83 final BearerScheme authscheme = new BearerScheme();
84 authscheme.processChallenge(authChallenge, null);
85
86 final BearerScheme.State state = authscheme.store();
87 final BearerScheme cached = new BearerScheme();
88 cached.restore(state);
89
90 Assertions.assertEquals(cached.getName(), cached.getName());
91 Assertions.assertEquals(cached.getRealm(), cached.getRealm());
92 Assertions.assertEquals(cached.isChallengeComplete(), cached.isChallengeComplete());
93 }
94
95 }