package org.apereo.cas.support.x509.rest;
import static org.junit.Assert.*;
import org.apereo.cas.adaptors.x509.authentication.principal.X509CertificateCredential;
import org.apereo.cas.authentication.Credential;
import org.apereo.cas.authentication.UsernamePasswordCredential;
import org.apereo.cas.support.rest.BadRequestException;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.io.IOException;
import java.util.Scanner;
/**
* Unit tests for {@link X509CredentialFactory}.
*
* @author Dmytro Fedonin
* @since 5.1.0
*/
@RunWith(MockitoJUnitRunner.Silent.class)
public class X509CredentialFactoryTests {
@Rule
public ExpectedException thrown = ExpectedException.none();
@InjectMocks
private X509CredentialFactory factory;
@Test
public void createX509Credential() throws IOException {
final MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
final Scanner scan = new Scanner(new ClassPathResource("ldap-crl.crt").getFile());
final String certStr = scan.useDelimiter("\\Z").next();
scan.close();
requestBody.add("cert", certStr);
final Credential cred = factory.fromRequestBody(requestBody);
assertTrue(cred instanceof X509CertificateCredential);
}
@Test
public void createDefaultCredential() {
final MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
requestBody.add("username", "name");
requestBody.add("password", "passwd");
final Credential cred = factory.fromRequestBody(requestBody);
assertTrue(cred instanceof UsernamePasswordCredential);
}
@Test
public void createInvalidCredential() {
final MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
requestBody.add("username", "name");
thrown.expect(BadRequestException.class);
factory.fromRequestBody(requestBody);
fail();
}
}