From 616179c00a4a5bae2afa1683184aa3dc86db43af Mon Sep 17 00:00:00 2001 From: LamGC Date: Fri, 20 Aug 2021 02:30:56 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E6=B7=BB=E5=8A=A0=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=E7=9A=84=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 本次提交添加(补充) GroovyTriggerProvider 和 SshAuthInfoSerializer 的完整单元测试类. --- .../sentry/oci/compute/ssh/BadPublicKey.java | 20 ++ .../ssh/SshAuthInfoSerializerTest.java | 211 ++++++++++++++++-- .../compute/ssh/UnsupportedSshAuthInfo.java | 15 ++ .../groovy/GroovyTriggerProviderTest.java | 77 +++++++ .../groovy/trigger/BadAnnotationTrigger.java | 9 + .../groovy/trigger/BaseTestTrigger.java | 8 + .../groovy/trigger/DuplicateTriggerA.java | 5 + .../groovy/trigger/DuplicateTriggerB.java | 5 + .../groovy/trigger/NoAnnotationTrigger.java | 5 + ...sentry.script.groovy.trigger.GroovyTrigger | 4 + .../ssh-auth/BadServerKey-decode.json | 6 + .../resources/ssh-auth/BadServerKeyField.json | 9 + src/test/resources/ssh-auth/NoExistType.json | 5 + .../resources/ssh-auth/ServerKeyNoExist.json | 5 + .../resources/ssh-auth/StandardPassword.json | 6 + .../resources/ssh-auth/StandardPublicKey.json | 7 + .../ssh-auth/UnsupportedAuthType.json | 4 + .../ssh-auth/UnsupportedJsonType.json | 3 + 18 files changed, 383 insertions(+), 21 deletions(-) create mode 100644 src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/BadPublicKey.java create mode 100644 src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/UnsupportedSshAuthInfo.java create mode 100644 src/test/java/net/lamgc/oracle/sentry/script/groovy/GroovyTriggerProviderTest.java create mode 100644 src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/BadAnnotationTrigger.java create mode 100644 src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/BaseTestTrigger.java create mode 100644 src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/DuplicateTriggerA.java create mode 100644 src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/DuplicateTriggerB.java create mode 100644 src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/NoAnnotationTrigger.java create mode 100644 src/test/resources/META-INF/services/net.lamgc.oracle.sentry.script.groovy.trigger.GroovyTrigger create mode 100644 src/test/resources/ssh-auth/BadServerKey-decode.json create mode 100644 src/test/resources/ssh-auth/BadServerKeyField.json create mode 100644 src/test/resources/ssh-auth/NoExistType.json create mode 100644 src/test/resources/ssh-auth/ServerKeyNoExist.json create mode 100644 src/test/resources/ssh-auth/StandardPassword.json create mode 100644 src/test/resources/ssh-auth/StandardPublicKey.json create mode 100644 src/test/resources/ssh-auth/UnsupportedAuthType.json create mode 100644 src/test/resources/ssh-auth/UnsupportedJsonType.json diff --git a/src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/BadPublicKey.java b/src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/BadPublicKey.java new file mode 100644 index 0000000..762b6c3 --- /dev/null +++ b/src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/BadPublicKey.java @@ -0,0 +1,20 @@ +package net.lamgc.oracle.sentry.oci.compute.ssh; + +import java.security.PublicKey; + +public class BadPublicKey implements PublicKey { + @Override + public String getAlgorithm() { + return null; + } + + @Override + public String getFormat() { + return null; + } + + @Override + public byte[] getEncoded() { + return new byte[0]; + } +} diff --git a/src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/SshAuthInfoSerializerTest.java b/src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/SshAuthInfoSerializerTest.java index 099a5e7..062b182 100644 --- a/src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/SshAuthInfoSerializerTest.java +++ b/src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/SshAuthInfoSerializerTest.java @@ -3,43 +3,54 @@ package net.lamgc.oracle.sentry.oci.compute.ssh; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; import org.apache.sshd.common.config.keys.KeyUtils; +import org.apache.sshd.common.config.keys.PublicKeyEntryDecoder; import org.junit.jupiter.api.Test; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.security.GeneralSecurityException; +import java.security.KeyPair; +import java.security.PublicKey; +import java.util.Base64; +import java.util.Collections; +import java.util.NoSuchElementException; +import java.util.Random; + import static org.junit.jupiter.api.Assertions.*; +/** + * @see SshAuthInfoSerializer + */ class SshAuthInfoSerializerTest { private final static Gson gson = new GsonBuilder() .registerTypeAdapter(SshAuthInfo.class, SshAuthInfoSerializer.INSTANCE) + .registerTypeAdapter(PasswordAuthInfo.class, SshAuthInfoSerializer.INSTANCE) + .registerTypeAdapter(PublicKeyAuthInfo.class, SshAuthInfoSerializer.INSTANCE) + .registerTypeAdapter(UnsupportedSshAuthInfo.class, SshAuthInfoSerializer.INSTANCE) + .serializeNulls() .create(); - private JsonObject getPasswordAuthObject() { - return gson.fromJson(""" - { - "username": "opc", - "authType": "password", - "serverKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/NGFFKkchNdE8HDE9WHGIcw97ZVOP5edY7drtRQn0xSSG6uLu08T36B8IWT+XJdg45/YMmcuVSzsG1QZs/R3s0URVUhsWjwdezWDeWeBHt8/6TGl2AsgA0iXSAOeRNldhZlITFvWoBEv2wElNjCTsEGo5bBp3rVPqqZNJFUs+FR9s/uVgmFqe7HGhuKhhk7BrRThJ/NcgDRicMQ4yXU3Hl++pG54TVLH+0HmgWg312XNAWtzw2iRmKBAuu2I4pP1TRp93K/lbD7QU8k8W7QcyGSAc73nZrhyzYVMko5wQGt4/vGpchOw7ehkotSejTB1GSyhzBTZobA23For76YLzuVFOjF3lEvSh1QV30ysu0PREKLtY83ad0WHVFqVgJrFHkkXQrglN335BhGwhFzwyMpRxbD8HCDtz6VjpqwoKtd/ExQkcfaj/g10o28vRzHGyzUbCTe433V61fjSsC4Bikw15vTnQ3ZuyOzfyoCYUNpFcf1Wv+mkoWqn9xU8lGvk= Test-Server", - "password": "123456" - } - """, JsonObject.class); + private JsonObject getTestsInfo(String name) { + InputStream resource = this.getClass().getResourceAsStream("/ssh-auth/" + name + ".json"); + if (resource == null) { + throw new NoSuchElementException("Required resource not found: " + name); + } + return gson.fromJson(new InputStreamReader(resource, StandardCharsets.UTF_8), JsonObject.class); } - private JsonObject getPublicKeyAuthObject() { - return gson.fromJson(""" - { - "username": "opc", - "authType": "Public_Key", - "serverKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/NGFFKkchNdE8HDE9WHGIcw97ZVOP5edY7drtRQn0xSSG6uLu08T36B8IWT+XJdg45/YMmcuVSzsG1QZs/R3s0URVUhsWjwdezWDeWeBHt8/6TGl2AsgA0iXSAOeRNldhZlITFvWoBEv2wElNjCTsEGo5bBp3rVPqqZNJFUs+FR9s/uVgmFqe7HGhuKhhk7BrRThJ/NcgDRicMQ4yXU3Hl++pG54TVLH+0HmgWg312XNAWtzw2iRmKBAuu2I4pP1TRp93K/lbD7QU8k8W7QcyGSAc73nZrhyzYVMko5wQGt4/vGpchOw7ehkotSejTB1GSyhzBTZobA23For76YLzuVFOjF3lEvSh1QV30ysu0PREKLtY83ad0WHVFqVgJrFHkkXQrglN335BhGwhFzwyMpRxbD8HCDtz6VjpqwoKtd/ExQkcfaj/g10o28vRzHGyzUbCTe433V61fjSsC4Bikw15vTnQ3ZuyOzfyoCYUNpFcf1Wv+mkoWqn9xU8lGvk= Test-Server", - "privateKeyPath": "", - "keyPassword": "" - } - """, JsonObject.class); + private boolean matchTestsInfo(String name, JsonObject object) { + return getTestsInfo(name).equals(object); } @Test - public void deserializeTest() { - SshAuthInfo info = gson.fromJson(getPasswordAuthObject(), SshAuthInfo.class); + public void deserializePasswordTest() { + SshAuthInfo info = gson.fromJson(getTestsInfo("StandardPassword"), SshAuthInfo.class); assertTrue(info instanceof PasswordAuthInfo); assertEquals("opc", info.getUsername()); @@ -47,4 +58,162 @@ class SshAuthInfoSerializerTest { assertEquals("SHA256:qBu2jRXM6Wog/jWUJJ0WLTMb3UdDGAmYEVZQNZdFZNM", KeyUtils.getFingerPrint(info.getServerKey())); } + @Test + public void deserializePublicKeyTest() { + SshAuthInfo info = gson.fromJson(getTestsInfo("StandardPublicKey"), SshAuthInfo.class); + assertEquals("SHA256:qBu2jRXM6Wog/jWUJJ0WLTMb3UdDGAmYEVZQNZdFZNM", KeyUtils.getFingerPrint(info.getServerKey())); + assertEquals("opc", info.getUsername()); + if (info instanceof PublicKeyAuthInfo pkInfo) { + assertEquals(new File("~/.ssh/id_rsa"), pkInfo.getPrivateKeyPath()); + assertEquals("123456", pkInfo.getKeyPassword()); + } else { + fail("The type of the parsing result does not match: " + info.getClass()); + } + } + + @Test + public void deserializeUnsupportedTest() { + assertThrows(JsonParseException.class, () -> + gson.fromJson(getTestsInfo("UnsupportedAuthType"), SshAuthInfo.class)); + } + + @Test + public void deserializeNoExistTypeTest() { + assertThrows(JsonParseException.class, () -> + gson.fromJson(getTestsInfo("NoExistType"), SshAuthInfo.class)); + } + + @Test + public void deserializeBadServerKeyFieldTest() { + SshAuthInfo info = gson.fromJson(getTestsInfo("BadServerKeyField"), SshAuthInfo.class); + assertNull(info.getServerKey()); + } + + @Test + public void deserializeBadServerKeyDecodeTest() { + SshAuthInfo info = gson.fromJson(getTestsInfo("BadServerKey-decode"), SshAuthInfo.class); + assertNull(info.getServerKey()); + } + + @Test + public void deserializeNoExistServerKeyTest() { + SshAuthInfo info = gson.fromJson(getTestsInfo("ServerKeyNoExist"), SshAuthInfo.class); + assertNull(info.getServerKey()); + } + + @Test + public void deserializeUnsupportedJsonTypeTest() { + assertThrows(JsonParseException.class, () -> + gson.fromJson(getTestsInfo("UnsupportedJsonType"), SshAuthInfo.class)); + } + + private void initialSshAuthInfo(SshAuthInfo info) { + try { + KeyPair pair = KeyUtils.generateKeyPair("ssh-rsa", 3072); + info.setServerKey(pair.getPublic()); + info.setUsername("linux"); + if (info instanceof PasswordAuthInfo psw) { + psw.setPassword(String.valueOf(new Random().nextLong())); + } else if (info instanceof PublicKeyAuthInfo pk) { + pk.setKeyPassword(String.valueOf(new Random().nextLong())); + pk.setPrivateKeyPath(new File("./" + new Random().nextLong() + "/key")); + } + } catch (GeneralSecurityException e) { + throw new RuntimeException(e); + } + } + + private String getOrFailField(JsonObject json, String field) { + if (json.has(field) && json.get(field).isJsonPrimitive()) { + return json.get(field).getAsString(); + } else { + fail("The JSON field '" + field + "' does not exist or is not a primitive."); + throw new RuntimeException(); + } + } + + private PublicKey decodeSshPublicKey(String publicKeyString) throws GeneralSecurityException, IOException { + String[] strings = publicKeyString.split(" ", 3); + + @SuppressWarnings("unchecked") PublicKeyEntryDecoder decoder = + (PublicKeyEntryDecoder) KeyUtils.getPublicKeyEntryDecoder(strings[0]); + return decoder.decodePublicKey(null, strings[0], Base64.getDecoder().decode(strings[1]), Collections.emptyMap()); + } + + @Test + public void serializePasswordTest() throws GeneralSecurityException, IOException { + PasswordAuthInfo info = new PasswordAuthInfo(); + initialSshAuthInfo(info); + + JsonObject json = gson.fromJson(gson.toJson(info), JsonObject.class); + assertEquals(SshAuthInfo.AuthType.PASSWORD.name(), getOrFailField(json, "authType")); + assertEquals(KeyUtils.getFingerPrint(info.getServerKey()), + KeyUtils.getFingerPrint(decodeSshPublicKey(getOrFailField(json, "serverKey")))); + assertEquals(info.getUsername(), getOrFailField(json, "username")); + + assertEquals(info.getPassword(), getOrFailField(json, "password")); + } + + @Test + public void serializePublicKeyTest() throws GeneralSecurityException, IOException { + PublicKeyAuthInfo info = new PublicKeyAuthInfo(); + initialSshAuthInfo(info); + + JsonObject json = gson.fromJson(gson.toJson(info), JsonObject.class); + assertEquals(SshAuthInfo.AuthType.PUBLIC_KEY.name(), getOrFailField(json, "authType")); + assertEquals(KeyUtils.getFingerPrint(info.getServerKey()), + KeyUtils.getFingerPrint(decodeSshPublicKey(getOrFailField(json, "serverKey")))); + assertEquals(info.getUsername(), getOrFailField(json, "username")); + + assertEquals(info.getPrivateKeyPath().getCanonicalFile(), new File(getOrFailField(json, "privateKeyPath"))); + assertEquals(info.getKeyPassword(), getOrFailField(json, "keyPassword")); + } + + @Test + public void serializeNoExistServerKeyTest() { + PasswordAuthInfo info = new PasswordAuthInfo(); + initialSshAuthInfo(info); + + info.setServerKey(null); + + JsonObject json = gson.fromJson(gson.toJson(info), JsonObject.class); + assertEquals(SshAuthInfo.AuthType.PASSWORD.name(), getOrFailField(json, "authType")); + assertTrue(json.get("serverKey").isJsonNull()); + assertEquals(info.getUsername(), getOrFailField(json, "username")); + + assertEquals(info.getPassword(), getOrFailField(json, "password")); + } + + @Test + public void serializeUnsupportedTest() { + assertThrows(JsonParseException.class, () -> + gson.toJson(new UnsupportedSshAuthInfo(false))); + } + + @Test + public void serializeBadPrivateKeyPathTest() { + PublicKeyAuthInfo info = new PublicKeyAuthInfo(); + initialSshAuthInfo(info); + + info.setPrivateKeyPath(new File("@#$*%&&96137:()*/key")); + + assertThrows(JsonParseException.class, () -> + gson.toJson(info)); + } + + @Test + public void serializeBadServerKeyTest() { + PasswordAuthInfo info = new PasswordAuthInfo(); + initialSshAuthInfo(info); + + info.setServerKey(new BadPublicKey()); + + JsonObject json = gson.fromJson(gson.toJson(info), JsonObject.class); + assertEquals(SshAuthInfo.AuthType.PASSWORD.name(), getOrFailField(json, "authType")); + assertTrue(json.get("serverKey").isJsonNull()); + assertEquals(info.getUsername(), getOrFailField(json, "username")); + + assertEquals(info.getPassword(), getOrFailField(json, "password")); + } + } \ No newline at end of file diff --git a/src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/UnsupportedSshAuthInfo.java b/src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/UnsupportedSshAuthInfo.java new file mode 100644 index 0000000..582fc6a --- /dev/null +++ b/src/test/java/net/lamgc/oracle/sentry/oci/compute/ssh/UnsupportedSshAuthInfo.java @@ -0,0 +1,15 @@ +package net.lamgc.oracle.sentry.oci.compute.ssh; + +public class UnsupportedSshAuthInfo extends SshAuthInfo { + + private final boolean returnType; + + public UnsupportedSshAuthInfo(boolean returnType) { + this.returnType = returnType; + } + + @Override + public AuthType getType() { + return returnType ? AuthType.PASSWORD : null; + } +} diff --git a/src/test/java/net/lamgc/oracle/sentry/script/groovy/GroovyTriggerProviderTest.java b/src/test/java/net/lamgc/oracle/sentry/script/groovy/GroovyTriggerProviderTest.java new file mode 100644 index 0000000..f66716e --- /dev/null +++ b/src/test/java/net/lamgc/oracle/sentry/script/groovy/GroovyTriggerProviderTest.java @@ -0,0 +1,77 @@ +package net.lamgc.oracle.sentry.script.groovy; + +import net.lamgc.oracle.sentry.script.groovy.trigger.*; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Field; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.ServiceLoader; + +/** + * @see GroovyTriggerProvider + */ +class GroovyTriggerProviderTest { + + @Test + public void standardRunTest() { + GroovyTrigger trigger = GroovyTriggerProvider.INSTANCE.getTriggerByName("once"); + Assertions.assertNotNull(trigger); + Assertions.assertEquals(OnceTrigger.class, trigger.getClass()); + } + + @Test + public void noAnnotationTriggerTest() throws NoSuchFieldException, IllegalAccessException { + failIfHasTrigger(NoAnnotationTrigger.class); + } + + @Test + public void badTriggerNameLoadTest() throws NoSuchFieldException, IllegalAccessException { + failIfHasTrigger(BadAnnotationTrigger.class); + } + + @Test + public void duplicateTriggerLoadTest() throws NoSuchFieldException, IllegalAccessException { + Assertions.assertFalse(hasTrigger(DuplicateTriggerA.class) && hasTrigger(DuplicateTriggerB.class)); + } + + @Test + public void tryToGetNoExistTriggerTest() { + Assertions.assertThrows(NoSuchElementException.class, () -> + GroovyTriggerProvider.INSTANCE.getTriggerByName("NoExistTrigger")); + } + + @Test + public void nullTest() { + Assertions.assertThrows(NullPointerException.class, () -> + GroovyTriggerProvider.INSTANCE.getTriggerByName(null)); + } + + private void failIfHasTrigger(Class triggerClass) + throws NoSuchFieldException, IllegalAccessException { + if (hasTrigger(triggerClass)) { + Assertions.fail("Trigger did not appear as expected."); + } + } + + @SuppressWarnings("unchecked") + private boolean hasTrigger(Class triggerClass) + throws NoSuchFieldException, IllegalAccessException { + Field providerMapField = + GroovyTriggerProvider.class.getDeclaredField("triggerProviderMap"); + providerMapField.setAccessible(true); + Map> map = + (Map>) providerMapField.get( + GroovyTriggerProvider.INSTANCE + ); + providerMapField.setAccessible(false); + for (ServiceLoader.Provider value : map.values()) { + if (triggerClass.equals(value.type())) { + return true; + } + } + return false; + } + +} \ No newline at end of file diff --git a/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/BadAnnotationTrigger.java b/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/BadAnnotationTrigger.java new file mode 100644 index 0000000..1d22388 --- /dev/null +++ b/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/BadAnnotationTrigger.java @@ -0,0 +1,9 @@ +package net.lamgc.oracle.sentry.script.groovy.trigger; + +@TriggerName("") +public class BadAnnotationTrigger extends BaseTestTrigger { + @Override + public void run(Runnable task) { + throw new UnsupportedOperationException("Unavailable trigger."); + } +} diff --git a/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/BaseTestTrigger.java b/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/BaseTestTrigger.java new file mode 100644 index 0000000..1c6dd57 --- /dev/null +++ b/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/BaseTestTrigger.java @@ -0,0 +1,8 @@ +package net.lamgc.oracle.sentry.script.groovy.trigger; + +public abstract class BaseTestTrigger implements GroovyTrigger { + @Override + public void run(Runnable task) { + throw new UnsupportedOperationException("Unavailable trigger."); + } +} diff --git a/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/DuplicateTriggerA.java b/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/DuplicateTriggerA.java new file mode 100644 index 0000000..51df776 --- /dev/null +++ b/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/DuplicateTriggerA.java @@ -0,0 +1,5 @@ +package net.lamgc.oracle.sentry.script.groovy.trigger; + +@TriggerName("Duplicate") +public class DuplicateTriggerA extends BaseTestTrigger { +} diff --git a/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/DuplicateTriggerB.java b/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/DuplicateTriggerB.java new file mode 100644 index 0000000..cad7055 --- /dev/null +++ b/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/DuplicateTriggerB.java @@ -0,0 +1,5 @@ +package net.lamgc.oracle.sentry.script.groovy.trigger; + +@TriggerName("Duplicate") +public class DuplicateTriggerB extends BaseTestTrigger { +} diff --git a/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/NoAnnotationTrigger.java b/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/NoAnnotationTrigger.java new file mode 100644 index 0000000..f965f15 --- /dev/null +++ b/src/test/java/net/lamgc/oracle/sentry/script/groovy/trigger/NoAnnotationTrigger.java @@ -0,0 +1,5 @@ +package net.lamgc.oracle.sentry.script.groovy.trigger; + +public class NoAnnotationTrigger extends BaseTestTrigger { + +} diff --git a/src/test/resources/META-INF/services/net.lamgc.oracle.sentry.script.groovy.trigger.GroovyTrigger b/src/test/resources/META-INF/services/net.lamgc.oracle.sentry.script.groovy.trigger.GroovyTrigger new file mode 100644 index 0000000..990d7ed --- /dev/null +++ b/src/test/resources/META-INF/services/net.lamgc.oracle.sentry.script.groovy.trigger.GroovyTrigger @@ -0,0 +1,4 @@ +net.lamgc.oracle.sentry.script.groovy.trigger.NoAnnotationTrigger +net.lamgc.oracle.sentry.script.groovy.trigger.BadAnnotationTrigger +net.lamgc.oracle.sentry.script.groovy.trigger.DuplicateTriggerA +net.lamgc.oracle.sentry.script.groovy.trigger.DuplicateTriggerB diff --git a/src/test/resources/ssh-auth/BadServerKey-decode.json b/src/test/resources/ssh-auth/BadServerKey-decode.json new file mode 100644 index 0000000..a8abfb3 --- /dev/null +++ b/src/test/resources/ssh-auth/BadServerKey-decode.json @@ -0,0 +1,6 @@ +{ + "username": "opc", + "authType": "password", + "serverKey": "ssh-rsa AAAAaCADAQABAAABgQC/NGFFKkchNdE8HDE9WHGIcw97ZVOP5edY7drtRQn0xSSG6uLu08T36B8IWT+XJdg45/YMmcuVSzsG1QZs/R3s0URVUhsWjwdezWDeWeBHt8/6TGl2AsgA0iXSAOeRNldhZlITFvWoBEv2wElNjCTsEGo5bBp3rVPqqZNJFUs+FR9s/uVgmFqe7HGhuKhhk7BrRThJ/NcgDRicMQ4yXU3Hl++pG54TVLH+0HmgWg312XNAWtzw2iRmKBAuu2I4pP1TRp93K/lbD7QU8k8W7QcyGSAc73nZrhyzYVMko5wQGt4/vGpchOw7ehkotSejTB1GSyhzBTZobA23For76YLzuVFOjF3lEvSh1QV30ysu0PREKLtY83ad0WHVFqVgJrFHkkXQrglN335BhGwhFzwyMpRxbD8HCDtz6VjpqwoKtd/ExQkcfaj/g10o28vRzHGyzUbCTe433V61fjSsC4Bikw15vTnQ3ZuyOzfyoCYUNpFcf1Wv+mkoWqn9xU8lGvk= Test-Server", + "password": "123456" +} \ No newline at end of file diff --git a/src/test/resources/ssh-auth/BadServerKeyField.json b/src/test/resources/ssh-auth/BadServerKeyField.json new file mode 100644 index 0000000..aa8c408 --- /dev/null +++ b/src/test/resources/ssh-auth/BadServerKeyField.json @@ -0,0 +1,9 @@ +{ + "username": "opc", + "authType": "Public_Key", + "serverKey": { + "msg": "badServerKeyField" + }, + "privateKeyPath": "~/.ssh/id_rsa", + "keyPassword": "123456" +} \ No newline at end of file diff --git a/src/test/resources/ssh-auth/NoExistType.json b/src/test/resources/ssh-auth/NoExistType.json new file mode 100644 index 0000000..7f4c355 --- /dev/null +++ b/src/test/resources/ssh-auth/NoExistType.json @@ -0,0 +1,5 @@ +{ + "username": "opc", + "serverKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/NGFFKkchNdE8HDE9WHGIcw97ZVOP5edY7drtRQn0xSSG6uLu08T36B8IWT+XJdg45/YMmcuVSzsG1QZs/R3s0URVUhsWjwdezWDeWeBHt8/6TGl2AsgA0iXSAOeRNldhZlITFvWoBEv2wElNjCTsEGo5bBp3rVPqqZNJFUs+FR9s/uVgmFqe7HGhuKhhk7BrRThJ/NcgDRicMQ4yXU3Hl++pG54TVLH+0HmgWg312XNAWtzw2iRmKBAuu2I4pP1TRp93K/lbD7QU8k8W7QcyGSAc73nZrhyzYVMko5wQGt4/vGpchOw7ehkotSejTB1GSyhzBTZobA23For76YLzuVFOjF3lEvSh1QV30ysu0PREKLtY83ad0WHVFqVgJrFHkkXQrglN335BhGwhFzwyMpRxbD8HCDtz6VjpqwoKtd/ExQkcfaj/g10o28vRzHGyzUbCTe433V61fjSsC4Bikw15vTnQ3ZuyOzfyoCYUNpFcf1Wv+mkoWqn9xU8lGvk= Test-Server", + "password": "123456" +} \ No newline at end of file diff --git a/src/test/resources/ssh-auth/ServerKeyNoExist.json b/src/test/resources/ssh-auth/ServerKeyNoExist.json new file mode 100644 index 0000000..4bfd668 --- /dev/null +++ b/src/test/resources/ssh-auth/ServerKeyNoExist.json @@ -0,0 +1,5 @@ +{ + "username": "opc", + "authType": "password", + "password": "123456" +} \ No newline at end of file diff --git a/src/test/resources/ssh-auth/StandardPassword.json b/src/test/resources/ssh-auth/StandardPassword.json new file mode 100644 index 0000000..cf79842 --- /dev/null +++ b/src/test/resources/ssh-auth/StandardPassword.json @@ -0,0 +1,6 @@ +{ + "username": "opc", + "authType": "password", + "serverKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/NGFFKkchNdE8HDE9WHGIcw97ZVOP5edY7drtRQn0xSSG6uLu08T36B8IWT+XJdg45/YMmcuVSzsG1QZs/R3s0URVUhsWjwdezWDeWeBHt8/6TGl2AsgA0iXSAOeRNldhZlITFvWoBEv2wElNjCTsEGo5bBp3rVPqqZNJFUs+FR9s/uVgmFqe7HGhuKhhk7BrRThJ/NcgDRicMQ4yXU3Hl++pG54TVLH+0HmgWg312XNAWtzw2iRmKBAuu2I4pP1TRp93K/lbD7QU8k8W7QcyGSAc73nZrhyzYVMko5wQGt4/vGpchOw7ehkotSejTB1GSyhzBTZobA23For76YLzuVFOjF3lEvSh1QV30ysu0PREKLtY83ad0WHVFqVgJrFHkkXQrglN335BhGwhFzwyMpRxbD8HCDtz6VjpqwoKtd/ExQkcfaj/g10o28vRzHGyzUbCTe433V61fjSsC4Bikw15vTnQ3ZuyOzfyoCYUNpFcf1Wv+mkoWqn9xU8lGvk= Test-Server", + "password": "123456" +} \ No newline at end of file diff --git a/src/test/resources/ssh-auth/StandardPublicKey.json b/src/test/resources/ssh-auth/StandardPublicKey.json new file mode 100644 index 0000000..df3b82e --- /dev/null +++ b/src/test/resources/ssh-auth/StandardPublicKey.json @@ -0,0 +1,7 @@ +{ + "username": "opc", + "authType": "Public_Key", + "serverKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/NGFFKkchNdE8HDE9WHGIcw97ZVOP5edY7drtRQn0xSSG6uLu08T36B8IWT+XJdg45/YMmcuVSzsG1QZs/R3s0URVUhsWjwdezWDeWeBHt8/6TGl2AsgA0iXSAOeRNldhZlITFvWoBEv2wElNjCTsEGo5bBp3rVPqqZNJFUs+FR9s/uVgmFqe7HGhuKhhk7BrRThJ/NcgDRicMQ4yXU3Hl++pG54TVLH+0HmgWg312XNAWtzw2iRmKBAuu2I4pP1TRp93K/lbD7QU8k8W7QcyGSAc73nZrhyzYVMko5wQGt4/vGpchOw7ehkotSejTB1GSyhzBTZobA23For76YLzuVFOjF3lEvSh1QV30ysu0PREKLtY83ad0WHVFqVgJrFHkkXQrglN335BhGwhFzwyMpRxbD8HCDtz6VjpqwoKtd/ExQkcfaj/g10o28vRzHGyzUbCTe433V61fjSsC4Bikw15vTnQ3ZuyOzfyoCYUNpFcf1Wv+mkoWqn9xU8lGvk= Test-Server", + "privateKeyPath": "~/.ssh/id_rsa", + "keyPassword": "123456" +} \ No newline at end of file diff --git a/src/test/resources/ssh-auth/UnsupportedAuthType.json b/src/test/resources/ssh-auth/UnsupportedAuthType.json new file mode 100644 index 0000000..a6771db --- /dev/null +++ b/src/test/resources/ssh-auth/UnsupportedAuthType.json @@ -0,0 +1,4 @@ +{ + "username": "linux", + "authType": "Unsupported" +} \ No newline at end of file diff --git a/src/test/resources/ssh-auth/UnsupportedJsonType.json b/src/test/resources/ssh-auth/UnsupportedJsonType.json new file mode 100644 index 0000000..1bf4d37 --- /dev/null +++ b/src/test/resources/ssh-auth/UnsupportedJsonType.json @@ -0,0 +1,3 @@ +[ + "?" +] \ No newline at end of file