private void assertSendContents(String contents, ResourceType type, String name) throws Exception { String path = getNamePath(type, name); HttpResponse response = doPostExternalAPI(path, contents, ADMIN_HEADERS); assertResponseStatus(response, HttpResponseStatus.OK); Reader reader = new InputStreamReader(response.getEntity().getContent()); ResourceMeta responseMeta = gson.fromJson(reader, ResourceMeta.class); Assert.assertEquals(name, responseMeta.getName()); Assert.assertEquals(ResourceStatus.INACTIVE, responseMeta.getStatus()); }
@Test public void testStageRecallOnNonexistentReturns404() throws Exception { ResourceType cookbooks = new ResourceType(PluginType.AUTOMATOR, "chef-solo", "cookbooks"); ResourceType keys = new ResourceType(PluginType.PROVIDER, "joyent", "keys"); assertSendContents("hadoop contents 1", cookbooks, "hadoop"); assertSendContents("dev keys 1", keys, "dev"); List<String> paths = ImmutableList.of( getVersionedPath(cookbooks, "hadoop", 2) + "/stage", getVersionedPath(cookbooks, "hadoop", 2) + "/recall", getVersionedPath(keys, "dev", 2) + "/stage", getVersionedPath(keys, "dev", 2) + "/recall" ); for (String path : paths) { assertResponseStatus(doPostExternalAPI(path, "", ADMIN_HEADERS), HttpResponseStatus.NOT_FOUND); } }
assertResponseStatus(doPostExternalAPI(getVersionedPath(cookbooks, "hadoop", 2) + "/stage", "", ADMIN_HEADERS), HttpResponseStatus.OK); assertResponseStatus(doPostExternalAPI(getVersionedPath(cookbooks, "mysql", 1) + "/stage", "", ADMIN_HEADERS), HttpResponseStatus.OK); assertResponseStatus(doPostExternalAPI(getVersionedPath(keys, "dev", 2) + "/stage", "", ADMIN_HEADERS), HttpResponseStatus.OK); assertResponseStatus(doPostExternalAPI("/plugins/sync", "", ADMIN_HEADERS), HttpResponseStatus.OK); assertResponseStatus(doPostExternalAPI(getVersionedPath(cookbooks, "hadoop", 3) + "/stage", "", ADMIN_HEADERS), HttpResponseStatus.OK); assertResponseStatus(doPostExternalAPI(getVersionedPath(cookbooks, "mysql", 1) + "/recall", "", ADMIN_HEADERS), HttpResponseStatus.OK); response = doGetExternalAPI(getTypePath(cookbooks), ADMIN_HEADERS); assertResponseStatus(doPostExternalAPI("/plugins/sync", "", ADMIN_HEADERS), HttpResponseStatus.OK);
@Test public void testNonAdminGetsForbidden() throws Exception { ResourceType type1 = new ResourceType(PluginType.PROVIDER, "joyent", "keys"); ResourceType type2 = new ResourceType(PluginType.AUTOMATOR, "shell", "script"); ResourceMeta meta = new ResourceMeta("name", 1); assertResponseStatus(doPostExternalAPI(getNamePath(type1, "name"), "contents", USER1_HEADERS), HttpResponseStatus.FORBIDDEN); assertResponseStatus(doPostExternalAPI(getNamePath(type2, "name"), "contents", USER1_HEADERS), HttpResponseStatus.FORBIDDEN); assertResponseStatus(doDeleteExternalAPI(getVersionedPath(type1, meta), USER1_HEADERS), HttpResponseStatus.FORBIDDEN); assertResponseStatus(doDeleteExternalAPI(getVersionedPath(type2, meta), USER1_HEADERS), HttpResponseStatus.FORBIDDEN); assertResponseStatus(doGetExternalAPI(getNamePath(type1, "name"), USER1_HEADERS), HttpResponseStatus.FORBIDDEN); assertResponseStatus(doGetExternalAPI(getNamePath(type2, "name"), USER1_HEADERS), HttpResponseStatus.FORBIDDEN); assertResponseStatus(doGetExternalAPI(getTypePath(type1), USER1_HEADERS), HttpResponseStatus.FORBIDDEN); assertResponseStatus(doGetExternalAPI(getTypePath(type2), USER1_HEADERS), HttpResponseStatus.FORBIDDEN); }
assertResponseStatus(doPostExternalAPI(getVersionedPath(pluginResourceType, meta2) + "/stage", "", ADMIN_HEADERS), HttpResponseStatus.OK); assertResponseStatus(doPostExternalAPI(getVersionedPath(pluginResourceType, meta1) + "/stage", "", ADMIN_HEADERS), HttpResponseStatus.OK); assertResponseStatus(doPostExternalAPI(getVersionedPath(pluginResourceType, meta1) + "/recall", "", ADMIN_HEADERS), HttpResponseStatus.OK);