| /* |
| * 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 tests.api.javax.security.auth; |
| |
| import java.security.Permission; |
| |
| import dalvik.annotation.TestLevel; |
| import dalvik.annotation.TestTargetClass; |
| import dalvik.annotation.TestTargetNew; |
| |
| import junit.framework.TestCase; |
| |
| import javax.security.auth.PrivateCredentialPermission; |
| |
| |
| /** |
| * Tests for <code>PrivateCredentialPermission</code> class constructors and methods. |
| * |
| */ |
| @TestTargetClass(PrivateCredentialPermission.class) |
| public class PrivateCredentialPermissionTest extends TestCase { |
| |
| private final static String cred_class1 = "a.b.Credential"; |
| private final static String cred_class2 = "a.b.Credential1"; |
| private final static String name1 = cred_class1 + " a.b.Principal \"*\""; |
| private final static String name2 = cred_class1 + " a.c.Principal \"*\""; |
| private final static String name4 = cred_class2 + " a.c.Principal \"*\""; |
| private final static String pc1 = "a.b.Principal"; |
| private final static String pn1 = "*"; |
| private final static String pc2 = "a.c.Principal"; |
| private final static String pn2 = "abc"; |
| |
| private final static String name3 = cred_class1 + " " + pc1 + " \"" + pn1 + "\" " + pc2 + " \"" + pn2 + "\""; |
| |
| /** |
| * @tests javax.security.auth.PrivateCredentialPermission#PrivateCredentialPermission(String name, String actions) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "PrivateCredentialPermission", |
| args = {String.class, String.class} |
| ) |
| public void test_Constructor_01() { |
| PrivateCredentialPermission ap = new PrivateCredentialPermission(name1, "read"); |
| |
| String actions[] = { "write", "", null }; |
| |
| for(int i = 0; i < actions.length; i++) { |
| try { |
| ap = new PrivateCredentialPermission(name1, "write"); |
| fail("expected IllegalArgumentException if action is not \"read\""); |
| } catch (IllegalArgumentException e) { |
| // expected |
| } |
| } |
| |
| String names[] = { null, |
| "", |
| "a.b.Credential a.c.Principal *\"", |
| "a.b.Credential_a.c.Principal_\"*\"", |
| "a.b.Credential a.c.Principal_\"*\"", |
| "a.b.Credential * \"a\"" |
| }; |
| |
| for(int i = 0; i < names.length; i++) { |
| try { |
| ap = new PrivateCredentialPermission(names[i], "read"); |
| fail("expected IllegalArgumentException for malformed \"name\" argument (" + names[i] +")"); |
| } catch (IllegalArgumentException e) { |
| // expected |
| } catch (NullPointerException npe) { |
| if (names[i] != null) |
| throw npe; |
| else |
| ; // expected if name is null |
| } |
| } |
| } |
| |
| /** |
| * @tests javax.security.auth.PrivateCredentialPermission#getActions() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "getActions", |
| args = {} |
| ) |
| public void test_getActions() { |
| PrivateCredentialPermission ap = new PrivateCredentialPermission(name1, "read"); |
| assertEquals("getActions() must alway return \"read\"", "read", ap.getActions()); |
| } |
| |
| /** |
| * @tests javax.security.auth.PrivateCredentialPermission#implies() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "implies", |
| args = { Permission.class } |
| ) |
| public void test_implies() { |
| PrivateCredentialPermission p1 = new PrivateCredentialPermission("* P1 \"abc\"", "read"); |
| PrivateCredentialPermission p2 = new PrivateCredentialPermission("a.b.Credential P1 \"abc\"", "read"); |
| PrivateCredentialPermission p3 = new PrivateCredentialPermission("C1 P1 \"abc\"", "read"); |
| PrivateCredentialPermission p4 = new PrivateCredentialPermission("C1 P1 \"abc\" P2 \"abcd\"", "read"); |
| PrivateCredentialPermission p5 = new PrivateCredentialPermission("C1 P1 \"*\"", "read"); |
| PrivateCredentialPermission p6 = new PrivateCredentialPermission("a.b.Credential * \"*\"", "read"); |
| PrivateCredentialPermission p7 = new PrivateCredentialPermission("a.b.Credential P2 \"abc\"", "read"); |
| PrivateCredentialPermission p8 = new PrivateCredentialPermission("a.b.Credential1 P2 \"abc\"", "read"); |
| PrivateCredentialPermission p9 = new PrivateCredentialPermission("a.b.Credential1 P2 \"*\"", "read"); |
| |
| PrivateCredentialPermission[][] arr = { { p1, p2 }, |
| { p2, p1 }, |
| { p3, p4 }, |
| { p5, p3 }, |
| { p6, p2 }, |
| { p2, p7 }, |
| { p7, p8 }, |
| { p8, p9 }}; |
| |
| boolean[] r = { true, false, true, true, true, false, false, false }; |
| for(int i = 0; i < arr.length; i++) |
| assertEquals("implies() returned wrong result (" + i + ")", r[i], arr[i][0].implies(arr[i][1])); |
| } |
| |
| /** |
| * @tests javax.security.auth.PrivateCredentialPermission#getCredentialClass() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "getCredentialClass", |
| args = {} |
| ) |
| public void test_getCredentialClass() { |
| PrivateCredentialPermission ap = new PrivateCredentialPermission(name1, "read"); |
| assertEquals("getCredentialClass() returned wrong name", cred_class1, ap.getCredentialClass()); |
| } |
| |
| /** |
| * @tests javax.security.auth.PrivateCredentialPermission#getPrincipals() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "getPrincipals", |
| args = {} |
| ) |
| public void test_getPrincipals() { |
| |
| PrivateCredentialPermission ap = new PrivateCredentialPermission(name3, "read"); |
| String[][] p = ap.getPrincipals(); |
| |
| assertEquals("wrong number of principals", 2, p.length); |
| |
| assertEquals("wrong principal class 0", pc1, p[0][0]); |
| assertEquals("wrong principal name 0", pn1, p[0][1]); |
| |
| assertEquals("wrong principal class 1", pc2, p[1][0]); |
| assertEquals("wrong principal name 1", pn2, p[1][1]); |
| } |
| |
| /** |
| * @tests javax.security.auth.PrivateCredentialPermission#equals() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "equals", |
| args = { Object.class } |
| ) |
| public void test_equals() { |
| PrivateCredentialPermission p1 = new PrivateCredentialPermission(name3, "read"); |
| PrivateCredentialPermission p2 = new PrivateCredentialPermission(name3, "read"); |
| PrivateCredentialPermission p3 = new PrivateCredentialPermission(name1, "read"); |
| PrivateCredentialPermission p4 = new PrivateCredentialPermission(name1, "read"); |
| PrivateCredentialPermission p5 = new PrivateCredentialPermission(name2, "read"); |
| PrivateCredentialPermission p6 = new PrivateCredentialPermission(name4, "read"); |
| |
| PrivateCredentialPermission arr[][] = { { p1, p2 }, |
| { p3, p4 }, |
| { p4, p5 }, |
| { p1, p3 }, |
| { p4, p6 } }; |
| boolean r[] = { true, true, false, false, false }; |
| |
| for(int i = 0; i < arr.length; i++) { |
| assertEquals("equals() returned wrong result", r[i], arr[i][0].equals(arr[i][1])); |
| } |
| |
| try { |
| assertFalse(p1.equals(null)); |
| } catch(NullPointerException npe) { |
| |
| } |
| } |
| |
| /** |
| * @tests javax.security.auth.PrivateCredentialPermission#hashCode() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "hashCode", |
| args = {} |
| ) |
| public void test_hashCode() { |
| PrivateCredentialPermission p1 = new PrivateCredentialPermission(name1, "read"); |
| PrivateCredentialPermission p2 = new PrivateCredentialPermission(name1, "read"); |
| int arr[][] = new int[10][]; |
| for(int i = 0; i < 10; i++) { |
| int h1 = p1.hashCode(); |
| |
| System.gc(); |
| |
| // force some memory allocations |
| arr[i] = new int[50000]; |
| |
| assertEquals("hashCode() must consistently return the same integer", h1, p1.hashCode()); |
| assertEquals("hashCode() must be the same for equal PrivateCredentialPermission objects", p1.hashCode(), p2.hashCode()); |
| } |
| |
| |
| PrivateCredentialPermission p3 = new PrivateCredentialPermission(name4, "read"); |
| assertFalse("hashCode() must not be the same for non-equal PrivateCredentialPermission objects", p1.hashCode() == p3.hashCode()); |
| } |
| |
| /** |
| * @tests javax.security.auth.PrivateCredentialPermission#newPermissionCollection() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "newPermissionCollection", |
| args = {} |
| ) |
| public void test_newPermissionCollection() { |
| PrivateCredentialPermission ap = new PrivateCredentialPermission(name1, "read"); |
| assertNull("newPermissionCollection must always return null", ap.newPermissionCollection()); |
| } |
| |
| } |
| |