Skip to content
Snippets Groups Projects
Commit fd0ed36e authored by Joscha Schmiedt's avatar Joscha Schmiedt
Browse files

Remove attempts for integration tests for SSS in gRPC

parent 1978c38c
No related branches found
No related tags found
1 merge request!121Draft: Add server side scripting to gRPC API
...@@ -22,180 +22,14 @@ package org.caosdb.server.grpc; ...@@ -22,180 +22,14 @@ package org.caosdb.server.grpc;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.caosdb.api.scripting.v1alpha1.ExecuteServerSideScriptRequest; import org.caosdb.api.scripting.v1alpha1.ExecuteServerSideScriptRequest;
import org.caosdb.api.scripting.v1alpha1.ExecuteServerSideScriptResponse;
import org.caosdb.api.scripting.v1alpha1.NamedArgument; import org.caosdb.api.scripting.v1alpha1.NamedArgument;
import org.caosdb.api.scripting.v1alpha1.ServerSideScriptExecutionResult;
import org.caosdb.server.CaosDBServer;
import org.caosdb.server.ServerProperties;
import org.caosdb.server.accessControl.AnonymousAuthenticationToken;
import org.caosdb.server.accessControl.CredentialsValidator;
import org.caosdb.server.accessControl.Principal;
import org.caosdb.server.accessControl.Role;
import org.caosdb.server.accessControl.UserSources;
import org.caosdb.server.database.BackendTransaction;
import org.caosdb.server.database.access.Access;
import org.caosdb.server.database.backend.interfaces.RetrievePasswordValidatorImpl;
import org.caosdb.server.database.backend.interfaces.RetrievePermissionRulesImpl;
import org.caosdb.server.database.backend.interfaces.RetrieveRoleImpl;
import org.caosdb.server.database.backend.interfaces.RetrieveUserImpl;
import org.caosdb.server.database.exceptions.TransactionException;
import org.caosdb.server.database.misc.TransactionBenchmark;
import org.caosdb.server.database.proto.ProtoUser;
import org.caosdb.server.entity.Message; import org.caosdb.server.entity.Message;
import org.caosdb.server.permissions.PermissionRule;
import org.caosdb.server.scripting.ScriptingPermissions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
public class ServerSideScriptingGrpcTest { public class ServerSideScriptingGrpcTest {
public static class RetrieveRoleMockup implements RetrieveRoleImpl {
public RetrieveRoleMockup(Access a) {}
@Override
public Role retrieve(String role) throws TransactionException {
Role ret = new Role();
ret.name = "anonymous";
ret.description = "bla";
return ret;
}
@Override
public TransactionBenchmark getBenchmark() {
return null;
}
@Override
public void setTransactionBenchmark(TransactionBenchmark b) {}
}
public static class RetrievePermissionRules implements RetrievePermissionRulesImpl {
public RetrievePermissionRules(Access a) {}
@Override
public HashSet<PermissionRule> retrievePermissionRule(String role) throws TransactionException {
HashSet<PermissionRule> result = new HashSet<>();
result.add(
new PermissionRule(
true, false, ScriptingPermissions.PERMISSION_EXECUTION("anonymous_ok")));
return result;
}
@Override
public TransactionBenchmark getBenchmark() {
return null;
}
@Override
public void setTransactionBenchmark(TransactionBenchmark b) {}
}
public static class RetrieveUserMockUp implements RetrieveUserImpl {
public RetrieveUserMockUp(Access a) {}
@Override
public ProtoUser execute(Principal principal) throws TransactionException {
return new ProtoUser();
}
@Override
public TransactionBenchmark getBenchmark() {
return null;
}
@Override
public void setTransactionBenchmark(TransactionBenchmark b) {}
}
public static class RetrievePasswordValidator implements RetrievePasswordValidatorImpl {
public RetrievePasswordValidator(Access a) {}
@Override
public CredentialsValidator<String> execute(String name) throws TransactionException {
return new CredentialsValidator<String>() {
@Override
public boolean isValid(String credential) {
return true;
}
};
}
@Override
public void setTransactionBenchmark(TransactionBenchmark b) {}
@Override
public TransactionBenchmark getBenchmark() {
return null;
}
}
@BeforeAll
public static void setupShiro() throws IOException {
CaosDBServer.initServerProperties();
CaosDBServer.initShiro();
BackendTransaction.setImpl(RetrieveRoleImpl.class, RetrieveRoleMockup.class);
BackendTransaction.setImpl(RetrievePermissionRulesImpl.class, RetrievePermissionRules.class);
BackendTransaction.setImpl(RetrieveUserImpl.class, RetrieveUserMockUp.class);
BackendTransaction.setImpl(
RetrievePasswordValidatorImpl.class, RetrievePasswordValidator.class);
UserSources.getDefaultRealm();
}
@Test
public void testAnonymousWithOutPermission() {
Subject user = SecurityUtils.getSubject();
CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
user.login(AnonymousAuthenticationToken.getInstance());
// TODO: implement this test
// Form form = new Form("call=anonymous_no_permission");
// Representation entity = form.getWebRepresentation();
// Request request = new Request(Method.POST, "../test", entity);
// request.setRootRef(new Reference("bla"));
// request.getAttributes().put("SRID", "asdf1234");
// request.setDate(new Date());
// request.setHostRef("bla");
// resource.init(null, request, new Response(null));
// resource.handle();
// assertEquals(Status.CLIENT_ERROR_FORBIDDEN,
// resource.getResponse().getStatus());
}
@Test
public void testAnonymousWithPermission() {
Subject user = SecurityUtils.getSubject();
CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
user.login(AnonymousAuthenticationToken.getInstance());
// TODO: implement this test
// Form form = new Form("call=anonymous_ok");
// Representation entity = form.getWebRepresentation();
// Request request = new Request(Method.POST, "../test", entity);
// request.setRootRef(new Reference("bla"));
// request.getAttributes().put("SRID", "asdf1234");
// request.setDate(new Date());
// request.setHostRef("bla");
// resource.init(null, request, new Response(null));
// resource.handle();
// assertEquals(Status.SUCCESS_OK, resource.getResponse().getStatus());
}
@Test @Test
public void testExecuteServerSideScriptRequestToCommandline() throws Message { public void testExecuteServerSideScriptRequestToCommandline() throws Message {
ExecuteServerSideScriptRequest request = ExecuteServerSideScriptRequest request =
...@@ -218,34 +52,4 @@ public class ServerSideScriptingGrpcTest { ...@@ -218,34 +52,4 @@ public class ServerSideScriptingGrpcTest {
assertEquals(commandline.get(3), "pos0"); assertEquals(commandline.get(3), "pos0");
assertEquals(commandline.get(4), "pos1"); assertEquals(commandline.get(4), "pos1");
} }
@Test
public void testCallScript() throws Message {
// TODO: Implement this test
// ServerSideScriptingServiceImpl service = new ServerSideScriptingServiceImpl();
// ExecuteServerSideScriptRequest request =
// ExecuteServerSideScriptRequest.newBuilder()
// .setScriptFilename("my_script.py")
// .addPositionalArguments("pos0")
// .addPositionalArguments("pos1")
// .addNamedArguments(
// NamedArgument.newBuilder().setName("option1").setValue("val1").build())
// .addNamedArguments(
// NamedArgument.newBuilder().setName("option2").setValue("val2").build())
// .setTimeoutMs(1000)
// .build();
// ExecuteServerSideScriptResponse response = service.callScript(request);
// assertEquals(response.getCall(), "my_script.py");
// assertEquals(
// response.getResult(),
// ServerSideScriptExecutionResult.SERVER_SIDE_SCRIPT_EXECUTION_RESULT_SUCCESS);
// assertEquals(response.getStdout(), ""); // Assuming the script does not produce any output
// assertEquals(response.getStderr(), ""); // Assuming the script does not produce any error output
// assertEquals(response.getReturnCode(), 0); // Assuming the script returns 0
// assertEquals(response.getDurationMs() > 0, true); // Check if duration is greater than 0
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment