test/jdk/java/net/SocketPermission/Ctor.java
changeset 58653 71fef5fae9cc
parent 47216 71c04702a3d5
--- a/test/jdk/java/net/SocketPermission/Ctor.java	Mon Oct 14 18:48:10 2019 -0700
+++ b/test/jdk/java/net/SocketPermission/Ctor.java	Wed Oct 16 14:32:17 2019 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,19 +23,64 @@
 
 /*
  * @test
- * @bug 4391898
+ * @bug 4391898 8230407
  * @summary SocketPermission(":",...) throws ArrayIndexOutOfBoundsException
+ *          SocketPermission constructor argument checks
+ * @run testng Ctor
  */
 
-import java.net.*;
+import java.net.SocketPermission;
+import org.testng.annotations.Test;
+import static java.lang.System.out;
+import static org.testng.Assert.*;
 
 public class Ctor {
-    public static void main(String[] args) {
-        try {
-            SocketPermission sp = new java.net.SocketPermission(":", "connect");
-        } catch (java.lang.ArrayIndexOutOfBoundsException e) {
-            throw new RuntimeException(e);
-        }
-        System.out.println("Test passed!!!");
+
+    static final Class<NullPointerException> NPE = NullPointerException.class;
+    static final Class<IllegalArgumentException> IAE = IllegalArgumentException.class;
+
+    @Test
+    public void positive() {
+        // ArrayIndexOutOfBoundsException is the bug, 4391898, exists
+        SocketPermission sp1 =  new SocketPermission(":", "connect");
+    }
+
+    @Test
+    public void npe() {
+        NullPointerException e;
+        e = expectThrows(NPE, () -> new SocketPermission(null, null));
+        out.println("caught expected NPE: " + e);
+        e = expectThrows(NPE, () -> new SocketPermission("foo", null));
+        out.println("caught expected NPE: " + e);
+        e = expectThrows(NPE, () -> new SocketPermission(null, "connect"));
+        out.println("caught expected NPE: " + e);
+    }
+
+    @Test
+    public void iae() {
+        IllegalArgumentException e;
+        // host
+        e = expectThrows(IAE, () -> new SocketPermission("1:2:3:4", "connect"));
+        out.println("caught expected IAE: " + e);
+        e = expectThrows(IAE, () -> new SocketPermission("foo:5-4", "connect"));
+        out.println("caught expected IAE: " + e);
+
+        // actions
+        e = expectThrows(IAE, () -> new SocketPermission("foo", ""));
+        out.println("caught expected IAE: " + e);
+        e = expectThrows(IAE, () -> new SocketPermission("foo", "badAction"));
+        out.println("caught expected IAE: " + e);
+        e = expectThrows(IAE, () -> new SocketPermission("foo", "badAction,connect"));
+        out.println("caught expected IAE: " + e);
+        e = expectThrows(IAE, () -> new SocketPermission("foo", "badAction,,connect"));
+        out.println("caught expected IAE: " + e);
+        e = expectThrows(IAE, () -> new SocketPermission("foo", ",connect"));
+        out.println("caught expected IAE: " + e);
+        e = expectThrows(IAE, () -> new SocketPermission("foo", ",,connect"));
+        out.println("caught expected IAE: " + e);
+        e = expectThrows(IAE, () -> new SocketPermission("foo", "connect,"));
+        out.println("caught expected IAE: " + e);
+        e = expectThrows(IAE, () -> new SocketPermission("foo", "connect,,"));
+        out.println("caught expected IAE: " + e);
     }
 }