/** * Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT * All rights reserved. Use is subject to license terms. See LICENSE.TXT */ package org.diirt.service.exec; import java.io.File; import java.net.URISyntaxException; import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.diirt.service.Service; import org.diirt.vtype.VNumber; import org.diirt.vtype.VString; import org.diirt.vtype.VType; import org.diirt.vtype.ValueFactory; import org.junit.Test; import static org.junit.Assert.*; import static org.hamcrest.Matchers.*; /** * * @author carcassi */ public class ExecServiceProviderTest { @Test public void new1() throws Exception { File file = new File(getClass().getResource(".").toURI()); ExecServiceProvider factory = new ExecServiceProvider(file, false); Collection<Service> services = factory.createServices(); assertThat(services.size(), equalTo(1)); Service service = services.iterator().next(); assertThat(service.getName(), equalTo("execSample")); assertThat(service.getDescription(), equalTo("A test service")); assertThat(service.getServiceMethods().size(), equalTo(2)); assertThat(service.getServiceMethods().get("echo").getName(), equalTo("echo")); assertThat(service.getServiceMethods().get("echo").getDescription(), equalTo("A test script")); assertThat(service.getServiceMethods().get("echo").getArguments().size(), equalTo(1)); assertThat(service.getServiceMethods().get("echo").getArgumentMap().get("string").getDescription(), equalTo("The string")); assertThat(service.getServiceMethods().get("echo").getArgumentMap().get("string").getType(), equalTo((Class) VString.class)); assertThat(service.getServiceMethods().get("echo").getResults().size(), equalTo(1)); assertThat(service.getServiceMethods().get("echo").getResultMap().get("result").getType(), equalTo((Class) VType.class)); assertThat(service.getServiceMethods().get("echo").getResultMap().get("result").getDescription(), equalTo("The result")); assertThat(service.getServiceMethods().get("script").getName(), equalTo("script")); assertThat(service.getServiceMethods().get("script").getDescription(), equalTo("My script")); assertThat(service.getServiceMethods().get("script").getArguments().size(), equalTo(1)); assertThat(service.getServiceMethods().get("script").getArgumentMap().get("value").getDescription(), equalTo("The value")); assertThat(service.getServiceMethods().get("script").getArgumentMap().get("value").getType(), equalTo((Class) VNumber.class)); assertThat(service.getServiceMethods().get("script").getResults().size(), equalTo(1)); assertThat(service.getServiceMethods().get("script").getResultMap().get("result").getType(), equalTo((Class) VType.class)); assertThat(service.getServiceMethods().get("script").getResultMap().get("result").getDescription(), equalTo("The script result")); } @Test public void new2() throws Exception { File file = new File("DOES_NOT_EXISTS"); if (file.exists()) { file.delete(); } ExecServiceProvider factory = new ExecServiceProvider(file, false); Collection<Service> services = factory.createServices(); assertThat(services.size(), equalTo(0)); assertThat(file.exists(), equalTo(true)); file.delete(); } @Test public void runCommand1() throws URISyntaxException, Exception { File file = new File(getClass().getResource(".").toURI()); ExecServiceProvider factory = new ExecServiceProvider(file, false); Collection<Service> services = factory.createServices(); assertThat(services.size(), equalTo(1)); Service service = services.iterator().next(); Map<String, Object> params = new HashMap<>(); params.put("string", ValueFactory.newVString("FOO!", ValueFactory.alarmNone(), ValueFactory.timeNow())); Map<String, Object> result = service.getServiceMethods().get("echo").executeSync(params); VString output = (VString) result.get("output"); assertThat(output.getValue(), equalTo("You selected FOO!\n")); } }