blob: a936e6b17eea4eaea84f5ae04f25ac49e9f282ef [file] [log] [blame]
margaretha3181b8d2022-05-31 11:51:47 +02001package de.ids_mannheim.korap.web;
2
Marc Kupietzd43a98d2023-09-22 17:11:46 +02003import static org.junit.jupiter.api.Assertions.assertEquals;
4import static org.junit.jupiter.api.Assertions.assertTrue;
margaretha3181b8d2022-05-31 11:51:47 +02005
6import java.io.File;
7import java.io.IOException;
margaretha3181b8d2022-05-31 11:51:47 +02008
Marc Kupietzd43a98d2023-09-22 17:11:46 +02009import org.junit.jupiter.api.Test;
margaretha3181b8d2022-05-31 11:51:47 +020010import org.springframework.beans.factory.annotation.Autowired;
margaretha3181b8d2022-05-31 11:51:47 +020011import com.fasterxml.jackson.databind.JsonNode;
Marc Kupietzd43a98d2023-09-22 17:11:46 +020012
margaretha3181b8d2022-05-31 11:51:47 +020013import de.ids_mannheim.korap.config.FullConfiguration;
margarethac9d29412023-04-28 12:40:34 +020014import de.ids_mannheim.korap.config.KustvaktConfiguration;
margaretha3181b8d2022-05-31 11:51:47 +020015import de.ids_mannheim.korap.exceptions.KustvaktException;
16import de.ids_mannheim.korap.oauth2.dao.OAuth2ClientDao;
17import de.ids_mannheim.korap.oauth2.entity.OAuth2Client;
18import de.ids_mannheim.korap.oauth2.service.OAuth2InitClientService;
19import de.ids_mannheim.korap.utils.JsonUtils;
20import de.ids_mannheim.korap.web.controller.OAuth2TestBase;
margaretha96c309d2023-08-16 12:24:12 +020021import jakarta.ws.rs.core.Response;
22import jakarta.ws.rs.core.Response.Status;
margaretha3181b8d2022-05-31 11:51:47 +020023
24public class InitialSuperClientTest extends OAuth2TestBase {
25
26 @Autowired
27 private FullConfiguration config;
Marc Kupietzd43a98d2023-09-22 17:11:46 +020028
margaretha3181b8d2022-05-31 11:51:47 +020029 @Autowired
30 private OAuth2ClientDao clientDao;
Marc Kupietzd43a98d2023-09-22 17:11:46 +020031
32 private String path = KustvaktConfiguration.DATA_FOLDER + "/" + OAuth2InitClientService.TEST_OUTPUT_FILENAME;
margaretha3181b8d2022-05-31 11:51:47 +020033
34 @Test
Marc Kupietzd43a98d2023-09-22 17:11:46 +020035 public void testCreatingInitialSuperClient() throws IOException, KustvaktException {
margaretha3181b8d2022-05-31 11:51:47 +020036 assertTrue(config.createInitialSuperClient());
margaretha3181b8d2022-05-31 11:51:47 +020037 File f = new File(path);
38 assertTrue(f.exists());
margaretha3181b8d2022-05-31 11:51:47 +020039 JsonNode node = JsonUtils.readFile(path, JsonNode.class);
40 String superClientId = node.at("/client_id").asText();
41 String superClientSecret = node.at("/client_secret").asText();
margaretha3181b8d2022-05-31 11:51:47 +020042 OAuth2Client superClient = clientDao.retrieveClientById(superClientId);
43 assertTrue(superClient.isSuper());
margaretha3181b8d2022-05-31 11:51:47 +020044 testLogin(superClientId, superClientSecret);
margaretha3181b8d2022-05-31 11:51:47 +020045 removeSuperClientFile();
46 }
47
Marc Kupietzd43a98d2023-09-22 17:11:46 +020048 private void testLogin(String superClientId, String superClientSecret) throws KustvaktException {
49 Response response = requestTokenWithPassword(superClientId, superClientSecret, "username", "password");
abcpro173fe8f22022-11-08 19:56:52 +000050 JsonNode node = JsonUtils.readTree(response.readEntity(String.class));
margaretha3181b8d2022-05-31 11:51:47 +020051 assertEquals(Status.OK.getStatusCode(), response.getStatus());
margaretha3181b8d2022-05-31 11:51:47 +020052 assertTrue(!node.at("/access_token").isMissingNode());
53 assertTrue(!node.at("/refresh_token").isMissingNode());
54 assertTrue(!node.at("/expires_in").isMissingNode());
Marc Kupietzd43a98d2023-09-22 17:11:46 +020055 assertEquals(node.at("/scope").asText(), "all");
56 assertEquals(node.at("/token_type").asText(), "Bearer");
margaretha3181b8d2022-05-31 11:51:47 +020057 }
Marc Kupietzd43a98d2023-09-22 17:11:46 +020058
59 private void removeSuperClientFile() {
margaretha3181b8d2022-05-31 11:51:47 +020060 File f = new File(path);
61 if (f.exists()) {
62 f.delete();
63 }
64 }
65}