You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/03/18 09:55:26 UTC

svn commit: r755512 - in /jackrabbit/trunk/jackrabbit-jcr-server/src: main/java/org/apache/jackrabbit/server/ test/java/org/apache/jackrabbit/server/

Author: angela
Date: Wed Mar 18 08:55:25 2009
New Revision: 755512

URL: http://svn.apache.org/viewvc?rev=755512&view=rev
Log:
JCR-2032 : BasicCredentialsProviderTest throws NPE if defaultAuthHeader init param misses the password

Added:
    jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/BasicCredentialsProviderTest.java   (with props)
    jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/TestAll.java   (with props)
Modified:
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/BasicCredentialsProvider.java

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/BasicCredentialsProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/BasicCredentialsProvider.java?rev=755512&r1=755511&r2=755512&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/BasicCredentialsProvider.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/BasicCredentialsProvider.java Wed Mar 18 08:55:25 2009
@@ -94,8 +94,8 @@
                     return null;
                 } else {
                     int pos = defaultHeaderValue.indexOf(':');
-                    if (pos<0) {
-                        return new SimpleCredentials(defaultHeaderValue, null);
+                    if (pos < 0) {
+                        return new SimpleCredentials(defaultHeaderValue, new char[0]);
                     } else {
                         return new SimpleCredentials(
                                 defaultHeaderValue.substring(0, pos),

Added: jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/BasicCredentialsProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/BasicCredentialsProviderTest.java?rev=755512&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/BasicCredentialsProviderTest.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/BasicCredentialsProviderTest.java Wed Mar 18 08:55:25 2009
@@ -0,0 +1,287 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.server;
+
+import junit.framework.TestCase;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpSession;
+import javax.servlet.ServletInputStream;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.jcr.LoginException;
+import javax.jcr.Credentials;
+import javax.jcr.SimpleCredentials;
+import java.util.Enumeration;
+import java.util.Map;
+import java.util.Locale;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.security.Principal;
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.io.BufferedReader;
+
+/**
+ * <code>BasicCredentialsProviderTest</code>...
+ */
+public class BasicCredentialsProviderTest extends TestCase {
+
+    public void testMissingDefaultHeader() throws ServletException {
+        CredentialsProvider cb = new BasicCredentialsProvider(null);
+        try {
+            Credentials creds = cb.getCredentials(new RequestImpl(null));
+            fail("LoginException expected");
+        } catch (LoginException e) {
+            // ok
+        }
+    }
+
+    public void testDefaultPassword() throws ServletException, LoginException {
+        Map m = new HashMap();
+        m.put("userId", new char[0]);
+        m.put("userId:", new char[0]);
+        m.put("userId:pw", "pw".toCharArray());
+
+        for (Iterator it = m.keySet().iterator(); it.hasNext();) {
+            String defaultHeaderValue = it.next().toString();
+            char[] pw = (char[]) m.get(defaultHeaderValue);
+
+            CredentialsProvider cb = new BasicCredentialsProvider(defaultHeaderValue);
+            Credentials creds = cb.getCredentials(new RequestImpl(null));
+
+            assertNotNull(creds);
+            assertTrue(creds instanceof SimpleCredentials);
+            assertEquals("userId",((SimpleCredentials) creds).getUserID());
+            if (pw.length == 0) {
+                assertEquals(0, ((SimpleCredentials) creds).getPassword().length);
+            } else {
+                assertEquals(new String(pw), new String(((SimpleCredentials) creds).getPassword()));
+            }
+        }
+    }
+
+
+
+
+    private class RequestImpl implements HttpServletRequest {
+
+        private final String authHeader;
+
+        private RequestImpl(String authHeader) {
+            this.authHeader = authHeader;
+        }
+
+        public String getAuthType() {
+            return null;
+        }
+
+        public Cookie[] getCookies() {
+            return new Cookie[0];
+        }
+
+        public long getDateHeader(String name) {
+            return 0;
+        }
+
+        public String getHeader(String name) {
+            return authHeader;
+        }
+
+        public Enumeration getHeaders(String name) {
+            return null;
+        }
+
+        public Enumeration getHeaderNames() {
+            return null;
+        }
+
+        public int getIntHeader(String name) {
+            return 0;
+        }
+
+        public String getMethod() {
+            return null;
+        }
+
+        public String getPathInfo() {
+            return null;
+        }
+
+        public String getPathTranslated() {
+            return null;
+        }
+
+        public String getContextPath() {
+            return null;
+        }
+
+        public String getQueryString() {
+            return null;
+        }
+
+        public String getRemoteUser() {
+            return null;
+        }
+
+        public boolean isUserInRole(String role) {
+            return false;
+        }
+
+        public Principal getUserPrincipal() {
+            return null;
+        }
+
+        public String getRequestedSessionId() {
+            return null;
+        }
+
+        public String getRequestURI() {
+            return null;
+        }
+
+        public StringBuffer getRequestURL() {
+            return null;
+        }
+
+        public String getServletPath() {
+            return null;
+        }
+
+        public HttpSession getSession(boolean create) {
+            return null;
+        }
+
+        public HttpSession getSession() {
+            return null;
+        }
+
+        public boolean isRequestedSessionIdValid() {
+            return false;
+        }
+
+        public boolean isRequestedSessionIdFromCookie() {
+            return false;
+        }
+
+        public boolean isRequestedSessionIdFromURL() {
+            return false;
+        }
+
+        public boolean isRequestedSessionIdFromUrl() {
+            return false;
+        }
+
+        public Object getAttribute(String name) {
+            return null;
+        }
+
+        public Enumeration getAttributeNames() {
+            return null;
+        }
+
+        public String getCharacterEncoding() {
+            return null;
+        }
+
+        public void setCharacterEncoding(String s) throws UnsupportedEncodingException {
+        }
+
+        public int getContentLength() {
+            return 0;
+        }
+
+        public String getContentType() {
+            return null;
+        }
+
+        public ServletInputStream getInputStream() throws IOException {
+            return null;
+        }
+
+        public String getParameter(String name) {
+            return null;
+        }
+
+        public Enumeration getParameterNames() {
+            return null;
+        }
+
+        public String[] getParameterValues(String name) {
+            return new String[0];
+        }
+
+        public Map getParameterMap() {
+            return null;
+        }
+
+        public String getProtocol() {
+            return null;
+        }
+
+        public String getScheme() {
+            return null;
+        }
+
+        public String getServerName() {
+            return null;
+        }
+
+        public int getServerPort() {
+            return 0;
+        }
+
+        public BufferedReader getReader() throws IOException {
+            return null;
+        }
+
+        public String getRemoteAddr() {
+            return null;
+        }
+
+        public String getRemoteHost() {
+            return null;
+        }
+
+        public void setAttribute(String name, Object o) {
+        }
+
+        public void removeAttribute(String name) {
+        }
+
+        public Locale getLocale() {
+            return null;
+        }
+
+        public Enumeration getLocales() {
+            return null;
+        }
+
+        public boolean isSecure() {
+            return false;
+        }
+
+        public RequestDispatcher getRequestDispatcher(String path) {
+            return null;
+        }
+
+        public String getRealPath(String path) {
+            return null;
+        }
+    }
+}
\ No newline at end of file

Propchange: jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/BasicCredentialsProviderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/BasicCredentialsProviderTest.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision url

Added: jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/TestAll.java?rev=755512&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/TestAll.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/TestAll.java Wed Mar 18 08:55:25 2009
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.server;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Test suite that includes all testcases for package org.apache.jackrabbit.server.
+ */
+public class TestAll extends TestCase {
+
+    /**
+     * Returns a <code>Test</code> suite that executes all tests inside this
+     * package.
+     */
+    public static Test suite() {
+        TestSuite suite = new TestSuite("org.apache.jackrabbit.server tests");
+
+        suite.addTestSuite(BasicCredentialsProviderTest.class);
+
+        return suite;
+    }
+}

Propchange: jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/TestAll.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/TestAll.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision url