Search in sources :

Example 1 with JarBuilder

use of org.neo4j.test.jar.JarBuilder in project neo4j by neo4j.

the class ProcedureJarLoaderTest method shouldWorkOnPathsWithSpaces.

@Test
void shouldWorkOnPathsWithSpaces() throws Exception {
    // given
    Path fileWithSpacesInName = testDirectory.createFile(new Random().nextInt() + "  some spaces in the filename" + ".jar");
    URL theJar = new JarBuilder().createJarFor(fileWithSpacesInName, ClassWithOneProcedure.class);
    corruptJar(theJar);
    AssertableLogProvider logProvider = new AssertableLogProvider(true);
    ProcedureJarLoader jarloader = new ProcedureJarLoader(procedureCompiler(), logProvider.getLog(ProcedureJarLoader.class));
    // when
    assertThrows(ZipException.class, () -> jarloader.loadProceduresFromDir(parentDir(theJar)));
    assertThat(logProvider).containsMessages(format("Plugin jar file: %s corrupted.", fileWithSpacesInName));
}
Also used : Path(java.nio.file.Path) Random(java.util.Random) JarBuilder(org.neo4j.test.jar.JarBuilder) URL(java.net.URL) AssertableLogProvider(org.neo4j.logging.AssertableLogProvider) Test(org.junit.jupiter.api.Test)

Example 2 with JarBuilder

use of org.neo4j.test.jar.JarBuilder in project neo4j by neo4j.

the class ProcedureJarLoaderTest method shouldLoadProcedureFromJarWithSpacesInFilename.

@Test
void shouldLoadProcedureFromJarWithSpacesInFilename() throws Throwable {
    // Given
    URL jar = new JarBuilder().createJarFor(testDirectory.createFile(new Random().nextInt() + " some spaces in filename.jar"), ClassWithOneProcedure.class);
    // When
    List<CallableProcedure> procedures = jarloader.loadProceduresFromDir(parentDir(jar)).procedures();
    // Then
    List<ProcedureSignature> signatures = procedures.stream().map(CallableProcedure::signature).collect(toList());
    assertThat(signatures).containsExactly(procedureSignature("org", "neo4j", "procedure", "impl", "myProcedure").out("someNumber", NTInteger).build());
    assertThat(asList(procedures.get(0).apply(prepareContext(), new AnyValue[0], EMPTY_RESOURCE_TRACKER))).containsExactly(new AnyValue[] { Values.longValue(1337L) });
}
Also used : ProcedureSignature(org.neo4j.internal.kernel.api.procs.ProcedureSignature) Random(java.util.Random) AnyValue(org.neo4j.values.AnyValue) CallableProcedure(org.neo4j.kernel.api.procedure.CallableProcedure) JarBuilder(org.neo4j.test.jar.JarBuilder) URL(java.net.URL) Test(org.junit.jupiter.api.Test)

Aggregations

URL (java.net.URL)2 Random (java.util.Random)2 Test (org.junit.jupiter.api.Test)2 JarBuilder (org.neo4j.test.jar.JarBuilder)2 Path (java.nio.file.Path)1 ProcedureSignature (org.neo4j.internal.kernel.api.procs.ProcedureSignature)1 CallableProcedure (org.neo4j.kernel.api.procedure.CallableProcedure)1 AssertableLogProvider (org.neo4j.logging.AssertableLogProvider)1 AnyValue (org.neo4j.values.AnyValue)1