package org.apereo.cas.support.oauth.services;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.io.FileUtils;
import org.apereo.cas.services.AbstractRegisteredService;
import org.apereo.cas.services.JsonServiceRegistryDao;
import org.apereo.cas.services.RegisteredService;
import org.apereo.cas.services.ServiceRegistryDao;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.core.io.ClassPathResource;
import java.io.File;
import java.io.IOException;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
/**
* @author Misagh Moayyed
* @since 4.1
*/
public class OAuthRegisteredServiceTests {
private static final File JSON_FILE = new File(FileUtils.getTempDirectoryPath(), "oAuthRegisteredService.json");
private static final ObjectMapper MAPPER = new ObjectMapper();
private static final ClassPathResource RESOURCE = new ClassPathResource("services");
private final ServiceRegistryDao dao;
public OAuthRegisteredServiceTests() throws Exception {
this.dao = new JsonServiceRegistryDao(RESOURCE, false, mock(ApplicationEventPublisher.class));
}
@BeforeClass
public static void prepTests() throws Exception {
FileUtils.cleanDirectory(RESOURCE.getFile());
}
@Test
public void checkCloning() {
final AbstractRegisteredService r = new OAuthRegisteredService();
r.setName("checkCloning");
r.setServiceId("testId");
r.setTheme("theme");
r.setDescription("description");
final OAuthRegisteredService r2 = (OAuthRegisteredService) r.clone();
assertEquals(r, r2);
}
@Test
public void checkSaveMethod() {
final OAuthRegisteredService r = new OAuthRegisteredService();
r.setName("checkSaveMethod");
r.setServiceId("testId");
r.setTheme("theme");
r.setDescription("description");
r.setClientId("clientid");
r.setServiceId("secret");
r.setBypassApprovalPrompt(true);
final RegisteredService r2 = this.dao.save(r);
assertTrue(r2 instanceof OAuthRegisteredService);
this.dao.load();
final RegisteredService r3 = this.dao.findServiceById(r2.getId());
assertTrue(r3 instanceof OAuthRegisteredService);
assertEquals(r, r2);
assertEquals(r2, r3);
}
@Test
public void verifySerializeAOAuthRegisteredServiceToJson() throws IOException {
final OAuthRegisteredService serviceWritten = new OAuthRegisteredService();
serviceWritten.setName("checkSaveMethod");
serviceWritten.setServiceId("testId");
serviceWritten.setTheme("theme");
serviceWritten.setDescription("description");
serviceWritten.setClientId("clientid");
serviceWritten.setServiceId("secret");
serviceWritten.setBypassApprovalPrompt(true);
MAPPER.writeValue(JSON_FILE, serviceWritten);
final RegisteredService serviceRead = MAPPER.readValue(JSON_FILE, OAuthRegisteredService.class);
assertEquals(serviceWritten, serviceRead);
}
}