Implemented initial super client registration for user authentication.
Change-Id: I60a7396bef8c2f9b2c2e8bf1cb6e0d5018c79408
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/InitialSuperClientTest.java b/full/src/test/java/de/ids_mannheim/korap/web/InitialSuperClientTest.java
new file mode 100644
index 0000000..46e2526
--- /dev/null
+++ b/full/src/test/java/de/ids_mannheim/korap/web/InitialSuperClientTest.java
@@ -0,0 +1,76 @@
+package de.ids_mannheim.korap.web;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.ws.rs.core.Response.Status;
+
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.sun.jersey.api.client.ClientResponse;
+
+import de.ids_mannheim.korap.config.FullConfiguration;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.oauth2.dao.OAuth2ClientDao;
+import de.ids_mannheim.korap.oauth2.entity.OAuth2Client;
+import de.ids_mannheim.korap.oauth2.service.OAuth2InitClientService;
+import de.ids_mannheim.korap.utils.JsonUtils;
+import de.ids_mannheim.korap.web.controller.OAuth2TestBase;
+
+public class InitialSuperClientTest extends OAuth2TestBase {
+
+ @Autowired
+ private FullConfiguration config;
+ @Autowired
+ private OAuth2ClientDao clientDao;
+
+ private String path = OAuth2InitClientService.OUTPUT_FOLDER + "/"
+ + OAuth2InitClientService.TEST_OUTPUT_FILENAME;
+
+ @Test
+ public void testCreatingInitialSuperClient ()
+ throws IOException, KustvaktException {
+ assertTrue(config.createInitialSuperClient());
+
+ File f = new File(path);
+ assertTrue(f.exists());
+
+ JsonNode node = JsonUtils.readFile(path, JsonNode.class);
+ String superClientId = node.at("/client_id").asText();
+ String superClientSecret = node.at("/client_secret").asText();
+
+ OAuth2Client superClient = clientDao.retrieveClientById(superClientId);
+ assertTrue(superClient.isSuper());
+
+ testLogin(superClientId, superClientSecret);
+
+ removeSuperClientFile();
+ }
+
+ private void testLogin (String superClientId, String superClientSecret)
+ throws KustvaktException {
+ ClientResponse response = requestTokenWithPassword(superClientId,
+ superClientSecret, "username", "password");
+
+ JsonNode node = JsonUtils.readTree(response.getEntity(String.class));
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+
+ assertTrue(!node.at("/access_token").isMissingNode());
+ assertTrue(!node.at("/refresh_token").isMissingNode());
+ assertTrue(!node.at("/expires_in").isMissingNode());
+ assertEquals("all", node.at("/scope").asText());
+ assertEquals("Bearer", node.at("/token_type").asText());
+ }
+
+ private void removeSuperClientFile () {
+ File f = new File(path);
+ if (f.exists()) {
+ f.delete();
+ }
+ }
+}
diff --git a/full/src/test/resources/kustvakt-test.conf b/full/src/test/resources/kustvakt-test.conf
index fb17890..e72b1fd 100644
--- a/full/src/test/resources/kustvakt-test.conf
+++ b/full/src/test/resources/kustvakt-test.conf
@@ -66,6 +66,8 @@
oauth2.default.scopes = search match_info
oauth2.client.credentials.scopes = client_info
+oauth2.initial.super.client=true
+
## OpenId
### multiple values are separated by space
openid.grant.types = authorization_code