/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License * at: * * http://opensource.org/licenses/ecl2.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * */ package org.opencastproject.external.endpoint; import static com.jayway.restassured.RestAssured.given; import static javax.servlet.http.HttpServletResponse.SC_OK; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.opencastproject.rest.RestServiceTestEnv.localhostRandomPort; import static org.opencastproject.rest.RestServiceTestEnv.testEnvForClasses; import org.opencastproject.rest.RestServiceTestEnv; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** Unit tests for {@link BaseEndpoint} */ public class BaseEndpointTest { /** The REST test environment */ private static final RestServiceTestEnv env = testEnvForClasses(localhostRandomPort(), TestBaseEndpoint.class); private static final JSONParser parser = new JSONParser(); @BeforeClass public static void oneTimeSetUp() { env.setUpServer(); } @AfterClass public static void oneTimeTearDown() { env.tearDownServer(); } /** Test case for {@link BaseEndpoint#getEndpointInfo()} */ @Test public void testGetApiInfo() throws Exception { final String response = given().log().all().expect().statusCode(SC_OK).when().get(env.host("/")).asString(); JSONObject json = (JSONObject) parser.parse(response); assertEquals("https://api.opencast.org", json.get("url")); assertEquals("v1.0.0", json.get("version")); } /** Test case for {@link BaseEndpoint#getUserInfo()} */ @Test public void testGetUserInfo() throws Exception { final String response = given().log().all().expect().statusCode(SC_OK).when().get(env.host("/info/me")).asString(); JSONObject json = (JSONObject) parser.parse(response); assertEquals("nowhere@opencast.org", json.get("email")); assertEquals("Opencast Student", json.get("name")); assertEquals("opencast", json.get("provider")); assertEquals("ROLE_USER_92623987_OPENCAST_ORG", json.get("userrole")); assertEquals("92623987@opencast.org", json.get("username")); } /** Test case for {@link BaseEndpoint#getUserRoles()} */ @Test public void testGetUserRoles() throws Exception { final String response = given().log().all().expect().statusCode(SC_OK).when().get(env.host("/info/me/roles")) .asString(); JSONArray json = (JSONArray) parser.parse(response); assertTrue("User does not have role 'ROLE_USER_92623987_OPENCAST_ORG'", json.contains("ROLE_USER_92623987_OPENCAST_ORG")); assertTrue("User does not have role 'ROLE_STUDENT'", json.contains("ROLE_STUDENT")); assertEquals(2, json.size()); } /** Test case for {@link BaseEndpoint#getOrganizationInfo()} */ @Test public void testGetOrganizationInfo() throws Exception { final String response = given().log().all().expect().statusCode(SC_OK).when().get(env.host("/info/organization")) .asString(); JSONObject json = (JSONObject) parser.parse(response); assertEquals("ROLE_ADMIN", json.get("adminRole")); assertEquals("ROLE_ANONYMOUS", json.get("anonymousRole")); assertEquals("opencast", json.get("id")); assertEquals("Opencast", json.get("name")); } /** Test case for {@link BaseEndpoint#getOrganizationProperties()} */ @Test public void testGetOrganizationProperties() throws Exception { final String response = given().log().all().expect().statusCode(SC_OK).when() .get(env.host("/info/organization/properties")).asString(); JSONObject json = (JSONObject) parser.parse(response); assertEquals("https://feeds.opencast.org", json.get("org.opencastproject.feed.url")); assertEquals("https://documentation.opencast.org", json.get("org.opencastproject.admin.documentation.url")); assertEquals("https://api.opencast.org", json.get("org.opencastproject.external.api.url")); } /** Test case for {@link BaseEndpoint#getVersion()} */ @Test public void testGetVersion() throws Exception { final String response = given().log().all().expect().statusCode(SC_OK).when().get(env.host("/version")).asString(); JSONObject json = (JSONObject) parser.parse(response); JSONArray version = (JSONArray) json.get("versions"); assertEquals("v1.0.0", json.get("default")); assertTrue(version.contains("v1.0.0")); assertEquals(1, version.size()); } /** Test case for {@link BaseEndpoint#getVersionDefault()} */ @Test public void testGetVersionDefault() throws Exception { final String response = given().log().all().expect().statusCode(SC_OK).when().get(env.host("/version/default")) .asString(); JSONObject json = (JSONObject) parser.parse(response); assertEquals("v1.0.0", json.get("default")); } /** Test case for {@link BaseEndpoint#recreateIndex()} */ @Test public void testRecreateIndex() throws Exception { given().log().all().expect().statusCode(SC_OK).when().post(env.host("/recreateIndex")); } }