/**
* Copyright (c) Istituto Nazionale di Fisica Nucleare, 2006-2014.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.italiangrid.voms.test;
import java.io.File;
import java.io.StringReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
import org.italiangrid.voms.VOMSError;
import org.italiangrid.voms.request.VOMSESParser;
import org.italiangrid.voms.request.VOMSESParserFactory;
import org.italiangrid.voms.request.VOMSServerInfo;
import org.junit.Assert;
import org.junit.Test;
public class TestVOMSESParser {
@Test
public void testNonExistingFileParser() {
String nonExistentFile = "/this/file/doesnt/exist";
VOMSESParser parser = VOMSESParserFactory.newVOMSESParser();
try {
@SuppressWarnings("unused")
List<VOMSServerInfo> info = parser.parse(new File(nonExistentFile));
} catch (VOMSError e) {
Assert.assertEquals("VOMSES file does not exist: " + nonExistentFile,
e.getMessage());
return;
}
Assert.fail("Parsing of non existent VOMSES file succeeded.");
}
@Test
public void testValidStringParsing() throws URISyntaxException {
String validVomsesString = "\"alice\" \"lcg-voms.cern.ch\" \"15000\" \"/DC=ch/DC=cern/OU=computers/CN=lcg-voms.cern.ch\" \"alice\" \"24\"";
VOMSESParser parser = VOMSESParserFactory.newVOMSESParser();
List<VOMSServerInfo> info = parser
.parse(new StringReader(validVomsesString));
Assert.assertEquals(1, info.size());
VOMSServerInfo aliceInfo = info.get(0);
Assert.assertEquals("alice", aliceInfo.getAlias());
Assert.assertEquals("alice", aliceInfo.getVoName());
Assert.assertEquals(new URI("voms://lcg-voms.cern.ch:15000"),
aliceInfo.getURL());
Assert.assertEquals("/DC=ch/DC=cern/OU=computers/CN=lcg-voms.cern.ch",
aliceInfo.getVOMSServerDN());
}
@Test
public void testValidFileParsing() throws URISyntaxException {
String vomsesFile = "src/test/resources/vomses/eumed";
VOMSESParser parser = VOMSESParserFactory.newVOMSESParser();
List<VOMSServerInfo> info = parser.parse(new File(vomsesFile));
Assert.assertEquals(2, info.size());
VOMSServerInfo pdVoms = info.get(0);
Assert.assertEquals("eumed", pdVoms.getAlias());
Assert.assertEquals("eumed", pdVoms.getVoName());
Assert.assertEquals(new URI("voms://voms-02.pd.infn.it:15016"),
pdVoms.getURL());
Assert.assertEquals("/C=IT/O=INFN/OU=Host/L=Padova/CN=voms-02.pd.infn.it",
pdVoms.getVOMSServerDN());
VOMSServerInfo cnafVoms = info.get(1);
Assert.assertEquals("eumed", cnafVoms.getAlias());
Assert.assertEquals("eumed", cnafVoms.getVoName());
Assert.assertEquals(new URI("voms://voms2.cnaf.infn.it:15016"),
cnafVoms.getURL());
Assert.assertEquals("/C=IT/O=INFN/OU=Host/L=CNAF/CN=voms2.cnaf.infn.it",
cnafVoms.getVOMSServerDN());
}
@Test
public void testValidDirectoryParsing() throws URISyntaxException {
String vomsesDir = "src/test/resources/vomses";
VOMSESParser parser = VOMSESParserFactory.newVOMSESParser();
List<VOMSServerInfo> info = parser.parse(new File(vomsesDir));
Assert.assertEquals(5, info.size());
}
@Test
public void testSingleCharAliasParsing() throws URISyntaxException {
String validVomsesString = "\"a\" \"lcg-voms.cern.ch\" \"15000\" \"/DC=ch/DC=cern/OU=computers/CN=lcg-voms.cern.ch\" \"alice\" \"24\"";
VOMSESParser parser = VOMSESParserFactory.newVOMSESParser();
List<VOMSServerInfo> info = parser
.parse(new StringReader(validVomsesString));
Assert.assertEquals(1, info.size());
VOMSServerInfo aliceInfo = info.get(0);
Assert.assertEquals("a", aliceInfo.getAlias());
Assert.assertEquals("alice", aliceInfo.getVoName());
Assert.assertEquals(new URI("voms://lcg-voms.cern.ch:15000"),
aliceInfo.getURL());
Assert.assertEquals("/DC=ch/DC=cern/OU=computers/CN=lcg-voms.cern.ch",
aliceInfo.getVOMSServerDN());
}
}