1 package org.arvados.sdk.java;
4 import java.util.ArrayList;
10 import static org.junit.Assert.*;
12 import com.google.api.services.discovery.model.RestDescription;
13 import com.google.api.services.discovery.model.RestResource;
15 import org.json.simple.JSONObject;
16 import org.json.simple.parser.JSONParser;
19 * Unit test for Arvados.
21 public class ArvadosTest {
23 @Test(expected=Exception.class)
24 public void testMainWithNoParams() throws Exception {
25 String[] args = new String[0];
29 @Test(expected=Exception.class)
30 public void testHelp() throws Exception {
31 String[] args = new String[1];
34 Arvados.help(args); // expect this to succeed with no problems
40 Arvados.main(args); // call via main
44 Arvados.help(args); // call help directly
48 Arvados.help(args); // expect exception
52 * test discover method
56 public void testDiscover() throws Exception {
57 Arvados arv = new Arvados("arvados");
59 List<String> params = new ArrayList<String>();
60 params.add("discover");
61 params.add("arvados");
64 RestDescription restDescription = arv.discover(params);
66 // The discover method returns the supported methods
67 Map<String, RestResource> resources = restDescription.getResources();
68 assertNotNull("Expected resources", resources);
70 Object users = resources.get("users");
71 assertNotNull ("Expected users.list method", users);
72 assertEquals("Exepcted users.list to be a RestResource type", RestResource.class, users.getClass());
74 assertTrue("Root URL expected to match ARVADOS_API_HOST env paramdeter",
75 restDescription.getRootUrl().contains(System.getenv().get("ARVADOS_API_HOST")));
83 public void testCallUsersList() throws Exception {
84 Arvados arv = new Arvados("arvados");
86 List<String> params = new ArrayList<String>();
88 params.add("arvados");
90 params.add("users.list");
92 String response = arv.call(params);
93 assertTrue("Expected users.list in response", response.contains("arvados#userList"));
94 assertTrue("Expected users.list in response", response.contains("uuid"));
96 JSONParser parser = new JSONParser();
97 Object obj = parser.parse(response);
98 JSONObject jsonObject = (JSONObject) obj;
100 assertEquals("Expected kind to be users.list", "arvados#userList", jsonObject.get("kind"));
102 List items = (List)jsonObject.get("items");
103 assertNotNull("expected users list items", items);
104 assertTrue("expected at least one item in users list", items.size()>0);
106 JSONObject firstUser = (JSONObject)items.get(0);
107 assertNotNull ("Expcted at least one user", firstUser);
109 assertEquals("Expected kind to be user", "arvados#user", firstUser.get("kind"));
110 assertNotNull("Expected uuid for first user", firstUser.get("uuid"));
114 * Test users.get <uuid> api
118 public void testCallUsersGet() throws Exception {
119 Arvados arv = new Arvados("arvados");
121 // call user.system and get uuid of this user
122 List<String> params = new ArrayList<String>();
124 params.add("arvados");
126 params.add("users.list");
128 String response = arv.call(params);
129 JSONParser parser = new JSONParser();
130 Object obj = parser.parse(response);
131 JSONObject jsonObject = (JSONObject) obj;
132 assertNotNull("expected users list", jsonObject);
133 List items = (List)jsonObject.get("items");
134 assertNotNull("expected users list items", items);
136 JSONObject firstUser = (JSONObject)items.get(0);
137 String userUuid = (String)firstUser.get("uuid");
139 // invoke users.get with the system user uuid
140 params = new ArrayList<String>();
142 params.add("arvados");
144 params.add("users.get");
145 params.add(userUuid);
147 response = arv.call(params);
149 //JSONParser parser = new JSONParser();
150 jsonObject = (JSONObject) parser.parse(response);;
151 assertNotNull("Expected uuid for first user", jsonObject.get("uuid"));
152 assertEquals("Expected system user uuid", userUuid, jsonObject.get("uuid"));
156 * Test users.create api
160 public void testCreateUser() throws Exception {
161 Arvados arv = new Arvados("arvados");
163 File file = new File(getClass().getResource( "/create_user.json" ).toURI());
164 String filePath = file.getPath();
166 List<String> params = new ArrayList<String>();
168 params.add("arvados");
170 params.add("users.create");
171 params.add(filePath);
172 String response = arv.call(params);
174 JSONParser parser = new JSONParser();
175 JSONObject jsonObject = (JSONObject) parser.parse(response);
176 assertEquals("Expected kind to be user", "arvados#user", jsonObject.get("kind"));
177 assertNotNull("Expected uuid for first user", jsonObject.get("uuid"));
181 * Test unsupported api version api
185 public void testUnsupportedApiName() throws Exception {
186 Arvados arv = new Arvados("not_arvados");
188 List<String> params = new ArrayList<String>();
190 params.add("not_arvados");
192 params.add("users.list");
194 Exception caught = null;
197 } catch (Exception e) {
201 assertNotNull ("expected exception", caught);
202 assertTrue ("Expected 404 when unsupported api is used", caught.getMessage().contains("404 Not Found"));
206 * Test unsupported api version api
210 public void testUnsupportedVersion() throws Exception {
211 Arvados arv = new Arvados("arvados");
213 List<String> params = new ArrayList<String>();
215 params.add("arvados");
216 params.add("v2"); // no such version
217 params.add("users.list");
219 Exception caught = null;
222 } catch (Exception e) {
226 assertNotNull ("expected exception", caught);
227 assertTrue ("Expected 404 when unsupported version is used", caught.getMessage().contains("404 Not Found"));
231 * Test unsupported api version api
235 public void testCallWithTooFewParams() throws Exception {
236 Arvados arv = new Arvados("arvados");
238 List<String> params = new ArrayList<String>();
240 params.add("arvados");
243 Exception caught = null;
246 } catch (Exception e) {
250 assertNotNull ("expected exception", caught);
251 assertTrue ("Expected ERROR: missing method name", caught.getMessage().contains("ERROR: missing method name"));
255 * Test pipeline_tempates.create api
259 public void testCreateAndGetPipelineTemplate() throws Exception {
260 Arvados arv = new Arvados("arvados");
262 File file = new File(getClass().getResource( "/first_pipeline.json" ).toURI());
263 String filePath = file.getPath();
265 List<String> params = new ArrayList<String>();
267 params.add("arvados");
269 params.add("pipeline_templates.create");
270 params.add(filePath);
271 String response = arv.call(params);
273 JSONParser parser = new JSONParser();
274 JSONObject jsonObject = (JSONObject) parser.parse(response);
275 assertEquals("Expected kind to be user", "arvados#pipelineTemplate", jsonObject.get("kind"));
276 String uuid = (String)jsonObject.get("uuid");
277 assertNotNull("Expected uuid for pipeline template", uuid);
280 params = new ArrayList<String>();
282 params.add("arvados");
284 params.add("pipeline_templates.get");
286 response = arv.call(params);
288 parser = new JSONParser();
289 jsonObject = (JSONObject) parser.parse(response);
290 assertEquals("Expected kind to be user", "arvados#pipelineTemplate", jsonObject.get("kind"));
291 assertEquals("Expected uuid for pipeline template", uuid, jsonObject.get("uuid"));