| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.web; |
| 2 | |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 4 | import static org.junit.jupiter.api.Assertions.assertTrue; |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 5 | |
| 6 | import java.io.File; |
| 7 | import java.io.IOException; |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 8 | |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 9 | import org.junit.jupiter.api.Test; |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 10 | import org.springframework.beans.factory.annotation.Autowired; |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 11 | import com.fasterxml.jackson.databind.JsonNode; |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 12 | |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 13 | import de.ids_mannheim.korap.config.FullConfiguration; |
| margaretha | c9d2941 | 2023-04-28 12:40:34 +0200 | [diff] [blame] | 14 | import de.ids_mannheim.korap.config.KustvaktConfiguration; |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 15 | import de.ids_mannheim.korap.exceptions.KustvaktException; |
| 16 | import de.ids_mannheim.korap.oauth2.dao.OAuth2ClientDao; |
| 17 | import de.ids_mannheim.korap.oauth2.entity.OAuth2Client; |
| 18 | import de.ids_mannheim.korap.oauth2.service.OAuth2InitClientService; |
| 19 | import de.ids_mannheim.korap.utils.JsonUtils; |
| 20 | import de.ids_mannheim.korap.web.controller.OAuth2TestBase; |
| margaretha | 96c309d | 2023-08-16 12:24:12 +0200 | [diff] [blame] | 21 | import jakarta.ws.rs.core.Response; |
| 22 | import jakarta.ws.rs.core.Response.Status; |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 23 | |
| 24 | public class InitialSuperClientTest extends OAuth2TestBase { |
| 25 | |
| 26 | @Autowired |
| 27 | private FullConfiguration config; |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 28 | |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 29 | @Autowired |
| 30 | private OAuth2ClientDao clientDao; |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 31 | |
| 32 | private String path = KustvaktConfiguration.DATA_FOLDER + "/" + OAuth2InitClientService.TEST_OUTPUT_FILENAME; |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 33 | |
| 34 | @Test |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 35 | public void testCreatingInitialSuperClient() throws IOException, KustvaktException { |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 36 | assertTrue(config.createInitialSuperClient()); |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 37 | File f = new File(path); |
| 38 | assertTrue(f.exists()); |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 39 | JsonNode node = JsonUtils.readFile(path, JsonNode.class); |
| 40 | String superClientId = node.at("/client_id").asText(); |
| 41 | String superClientSecret = node.at("/client_secret").asText(); |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 42 | OAuth2Client superClient = clientDao.retrieveClientById(superClientId); |
| 43 | assertTrue(superClient.isSuper()); |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 44 | testLogin(superClientId, superClientSecret); |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 45 | removeSuperClientFile(); |
| 46 | } |
| 47 | |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 48 | private void testLogin(String superClientId, String superClientSecret) throws KustvaktException { |
| 49 | Response response = requestTokenWithPassword(superClientId, superClientSecret, "username", "password"); |
| abcpro1 | 73fe8f2 | 2022-11-08 19:56:52 +0000 | [diff] [blame] | 50 | JsonNode node = JsonUtils.readTree(response.readEntity(String.class)); |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 51 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 52 | assertTrue(!node.at("/access_token").isMissingNode()); |
| 53 | assertTrue(!node.at("/refresh_token").isMissingNode()); |
| 54 | assertTrue(!node.at("/expires_in").isMissingNode()); |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 55 | assertEquals(node.at("/scope").asText(), "all"); |
| 56 | assertEquals(node.at("/token_type").asText(), "Bearer"); |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 57 | } |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 58 | |
| 59 | private void removeSuperClientFile() { |
| margaretha | 3181b8d | 2022-05-31 11:51:47 +0200 | [diff] [blame] | 60 | File f = new File(path); |
| 61 | if (f.exists()) { |
| 62 | f.delete(); |
| 63 | } |
| 64 | } |
| 65 | } |