Port to java 17
[ccsdk/apps.git] / cadi / core / src / test / java / org / onap / ccsdk / apps / cadi / taf / basic / test / JU_BasicHttpTaf.java
1 /**
2  * ============LICENSE_START====================================================
3  * org.onap.ccsdk
4  * ===========================================================================
5  * Copyright (c) 2023 AT&T Intellectual Property. All rights reserved.
6  * ===========================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * 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, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END====================================================
19  *
20  */
21
22 package org.onap.ccsdk.apps.cadi.taf.basic.test;
23
24 import static org.hamcrest.CoreMatchers.is;
25 import static org.hamcrest.CoreMatchers.not;
26 import static org.hamcrest.CoreMatchers.nullValue;
27 import static org.junit.Assert.assertThat;
28 import static org.mockito.Mockito.when;
29
30 import java.io.BufferedReader;
31 import java.io.ByteArrayOutputStream;
32 import java.io.IOException;
33 import java.io.PrintStream;
34 import java.io.UnsupportedEncodingException;
35 import java.security.Principal;
36 import java.util.Collection;
37 import java.util.Enumeration;
38 import java.util.Locale;
39 import java.util.Map;
40
41 import jakarta.servlet.AsyncContext;
42 import jakarta.servlet.DispatcherType;
43 import jakarta.servlet.RequestDispatcher;
44 import jakarta.servlet.ServletConnection;
45 import jakarta.servlet.ServletContext;
46 import jakarta.servlet.ServletException;
47 import jakarta.servlet.ServletInputStream;
48 import jakarta.servlet.ServletRequest;
49 import jakarta.servlet.ServletResponse;
50 import jakarta.servlet.http.Cookie;
51 import jakarta.servlet.http.HttpServletRequest;
52 import jakarta.servlet.http.HttpServletResponse;
53 import jakarta.servlet.http.HttpSession;
54 import jakarta.servlet.http.HttpUpgradeHandler;
55 import jakarta.servlet.http.Part;
56
57 import org.junit.Before;
58 import org.junit.Test;
59 import org.mockito.Mock;
60 import org.mockito.MockitoAnnotations;
61 import org.onap.ccsdk.apps.cadi.BasicCred;
62 import org.onap.ccsdk.apps.cadi.CachedPrincipal;
63 import org.onap.ccsdk.apps.cadi.CachedPrincipal.Resp;
64 import org.onap.ccsdk.apps.cadi.CredVal;
65 import org.onap.ccsdk.apps.cadi.PropAccess;
66 import org.onap.ccsdk.apps.cadi.Symm;
67 import org.onap.ccsdk.apps.cadi.Taf.LifeForm;
68 import org.onap.ccsdk.apps.cadi.taf.basic.BasicHttpTaf;
69
70 public class JU_BasicHttpTaf {
71
72     private final static String realm = "realm";
73     private final static String id = "id";
74     private final static String addr = "addr";
75
76     private final static String name = "User";
77     private final static String password = "password";
78     private final static String content = name + ":" + password;
79     private static String encrypted;
80
81     private final static long timeToLive = 10000L;
82
83     private PropAccess access;
84
85     @Mock private HttpServletResponse respMock;
86     @Mock private HttpServletRequest reqMock;
87     @Mock private CredVal rbacMock;
88     @Mock private CachedPrincipal princMock;
89
90     @Before
91     public void setup() throws IOException {
92         MockitoAnnotations.initMocks(this);
93         access = new PropAccess(new PrintStream(new ByteArrayOutputStream()), new String[0]);
94         encrypted = new String(Symm.base64.encode(content.getBytes()));
95     }
96
97     @Test
98     public void test() {
99         BasicHttpTaf taf = new BasicHttpTaf(access, rbacMock, realm, timeToLive, true);
100         BasicCredStub bcstub = new BasicCredStub();
101         assertThat(taf.validate(LifeForm.SBLF, bcstub, respMock), is(not(nullValue())));
102
103         assertThat(taf.validate(LifeForm.SBLF, reqMock, respMock), is(not(nullValue())));
104
105         when(reqMock.getHeader("Authorization")).thenReturn("test");
106         assertThat(taf.validate(LifeForm.SBLF, reqMock, respMock), is(not(nullValue())));
107
108         when(reqMock.getHeader("Authorization")).thenReturn("Basic " + encrypted);
109         assertThat(taf.validate(LifeForm.SBLF, reqMock, respMock), is(not(nullValue())));
110
111         assertThat(taf.revalidate(princMock, "state"), is(Resp.NOT_MINE));
112
113         assertThat(taf.toString(), is("Basic Auth enabled on realm: " + realm));
114     }
115
116     private class BasicCredStub implements HttpServletRequest, BasicCred {
117         @Override public String getUser() { return id; }
118         @Override public String getRemoteAddr() { return addr; }
119
120         @Override public AsyncContext getAsyncContext() { return null; }
121         @Override public Object getAttribute(String arg0) { return null; }
122         @Override public Enumeration<String> getAttributeNames() { return null; }
123         @Override public String getCharacterEncoding() { return null; }
124         @Override public int getContentLength() { return 0; }
125         @Override public String getContentType() { return null; }
126         @Override public DispatcherType getDispatcherType() { return null; }
127         @Override public ServletInputStream getInputStream() throws IOException { return null; }
128         @Override public String getLocalAddr() { return null; }
129         @Override public String getLocalName() { return null; }
130         @Override public int getLocalPort() { return 0; }
131         @Override public Locale getLocale() { return null; }
132         @Override public Enumeration<Locale> getLocales() { return null; }
133         @Override public String getParameter(String arg0) { return null; }
134         @Override public Map<String, String[]> getParameterMap() { return null; }
135         @Override public Enumeration<String> getParameterNames() { return null; }
136         @Override public String[] getParameterValues(String arg0) { return null; }
137         @Override public String getProtocol() { return null; }
138         @Override public BufferedReader getReader() throws IOException { return null; }
139
140         @Override public String getRemoteHost() { return null; }
141         @Override public int getRemotePort() { return 0; }
142         @Override public RequestDispatcher getRequestDispatcher(String arg0) { return null; }
143         @Override public String getScheme() { return null; }
144         @Override public String getServerName() { return null; }
145         @Override public int getServerPort() { return 0; }
146         @Override public ServletContext getServletContext() { return null; }
147         @Override public boolean isAsyncStarted() { return false; }
148         @Override public boolean isAsyncSupported() { return false; }
149         @Override public boolean isSecure() { return false; }
150         @Override public void removeAttribute(String arg0) { }
151         @Override public void setAttribute(String arg0, Object arg1) { }
152         @Override public void setCharacterEncoding(String arg0) throws UnsupportedEncodingException { }
153         @Override public AsyncContext startAsync() throws IllegalStateException { return null; }
154         @Override public AsyncContext startAsync(ServletRequest arg0, ServletResponse arg1) throws IllegalStateException { return null; }
155         @Override public byte[] getCred() { return null; }
156         @Override public void setUser(String user) { }
157         @Override public void setCred(byte[] passwd) { }
158         @Override public boolean authenticate(HttpServletResponse arg0) throws IOException, ServletException { return false; }
159         @Override public String getAuthType() { return null; }
160         @Override public String getContextPath() { return null; }
161         @Override public Cookie[] getCookies() { return null; }
162         @Override public long getDateHeader(String arg0) { return 0; }
163         @Override public String getHeader(String arg0) { return null; }
164         @Override public Enumeration<String> getHeaderNames() { return null; }
165         @Override public Enumeration<String> getHeaders(String arg0) { return null; }
166         @Override public int getIntHeader(String arg0) { return 0; }
167         @Override public String getMethod() { return null; }
168         @Override public Part getPart(String arg0) throws IOException, ServletException { return null; }
169         @Override public Collection<Part> getParts() throws IOException, ServletException { return null; }
170         @Override public String getPathInfo() { return null; }
171         @Override public String getPathTranslated() { return null; }
172         @Override public String getQueryString() { return null; }
173         @Override public String getRemoteUser() { return null; }
174         @Override public String getRequestURI() { return null; }
175         @Override public StringBuffer getRequestURL() { return null; }
176         @Override public String getRequestedSessionId() { return null; }
177         @Override public String getServletPath() { return null; }
178         @Override public HttpSession getSession() { return null; }
179         @Override public HttpSession getSession(boolean arg0) { return null; }
180         @Override public Principal getUserPrincipal() { return null; }
181         @Override public boolean isRequestedSessionIdFromCookie() { return false; }
182         @Override public boolean isRequestedSessionIdFromURL() { return false; }
183         @Override public boolean isRequestedSessionIdValid() { return false; }
184         @Override public boolean isUserInRole(String arg0) { return false; }
185         @Override public void login(String arg0, String arg1) throws ServletException { }
186         @Override public void logout() throws ServletException { }
187         @Override
188         public long getContentLengthLong() {
189           return 0L;
190         }
191         @Override
192         public String getRequestId() {
193             return null;
194         }
195         @Override
196         public String getProtocolRequestId() {
197             return null;
198         }
199         @Override
200         public ServletConnection getServletConnection() {
201             return null;
202         }
203         @Override
204         public String changeSessionId() {
205             return null;
206         }
207         @Override
208         public <T extends HttpUpgradeHandler> T upgrade(Class<T> handlerClass) throws IOException, ServletException {
209
210             throw new UnsupportedOperationException("Unimplemented method 'upgrade'");
211         }
212     }
213 }