/*
* oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text.
*
* Copyright (c) 2014, Gluu
*/
package org.xdi.oxauth.comp;
import java.io.IOException;
import java.io.InputStream;
import javax.inject.Inject;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.gluu.site.ldap.persistence.LdapEntryManager;
import org.testng.Assert;
import org.testng.annotations.Test;
import org.xdi.model.ProgrammingLanguage;
import org.xdi.model.custom.script.CustomScriptType;
import org.xdi.model.custom.script.model.CustomScript;
import org.xdi.oxauth.BaseComponentTest;
import org.xdi.oxauth.idgen.ws.rs.IdGenService;
import org.xdi.oxauth.model.config.ConfigurationFactory;
import org.xdi.oxauth.service.custom.CustomScriptService;
import org.xdi.util.INumGenerator;
/**
* @author Yuriy Zabrovarnyy
* @version 0.9, 27/06/2013
*/
public class IdGenServiceTest extends BaseComponentTest {
@Inject
private ConfigurationFactory configurationFactory;
@Inject
private CustomScriptService customScriptService;
@Inject
private IdGenService idGenService;
@Inject
private LdapEntryManager ldapEntryManager;
private static String idCustomScriptDn;
private CustomScript buildIdCustomScriptEntry(String idScript) {
String basedInum = configurationFactory.getAppConfiguration().getOrganizationInum();
String customScriptId = basedInum + "!" + INumGenerator.generate(2);
String dn = customScriptService.buildDn(customScriptId);
CustomScript customScript = new CustomScript();
customScript.setDn(dn);
customScript.setInum(customScriptId);
customScript.setProgrammingLanguage(ProgrammingLanguage.PYTHON);
customScript.setScriptType(CustomScriptType.ID_GENERATOR);
customScript.setScript(idScript);
customScript.setName("test_id");
customScript.setLevel(0);
customScript.setEnabled(true);
customScript.setRevision(1);
return customScript;
}
@Test
public void loadCustomScript() {
final InputStream inputStream = IdGenServiceTest.class.getResourceAsStream("/id/gen/SampleIdGenerator.py");
try {
final String idScript = IOUtils.toString(inputStream);
CustomScript idCustomScript = buildIdCustomScriptEntry(idScript);
this.idCustomScriptDn = idCustomScript.getDn();
ldapEntryManager.persist(idCustomScript);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
IOUtils.closeQuietly(inputStream);
}
}
@Test(dependsOnMethods = "loadCustomScript")
public void testCustomIdGenerationByPythonScript() {
final String uuid = idGenService.generateId("test", "");
System.out.println("Generated Id: " + uuid);
Assert.assertFalse(StringUtils.isNotBlank(uuid));
final String invalidUuid = idGenService.generateId("", "");
System.out.println("Generated invalid Id: " + invalidUuid);
Assert.assertFalse(StringUtils.equalsIgnoreCase(invalidUuid, "invalid"));
}
@Test(dependsOnMethods = "testCustomIdGenerationByPythonScript")
public void removeCustomScript() {
CustomScript customScript = new CustomScript();
customScript.setDn(this.idCustomScriptDn);
ldapEntryManager.remove(customScript);
}
}