package de.groothues.mysaml.assertion.impl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import de.groothues.mysaml.assertion.AudienceRestrictionBuilder;
import de.groothues.mysaml.assertion.AudienceRestrictionType;
import de.groothues.mysaml.assertion.PropertyKeys;
import de.groothues.mysaml.assertion.impl.AudienceRestrictionBuilderImpl;
import de.groothues.mysaml.impl.SamlContextImpl;
public class AudienceRestrictionBuilderImplTest {
private static final String TEST_AUDIENCE = "http://audience.test";
private AudienceRestrictionBuilder audienceRestrictionBuilder;
@Before
public void setUp() {
audienceRestrictionBuilder = new AudienceRestrictionBuilderImpl(new SamlContextImpl());
}
@Test
public void testBuildWithoutRuntimeProperties() {
List<AudienceRestrictionType> audienceRestrictions = audienceRestrictionBuilder.build(null);
assertNotNull(audienceRestrictions);
assertEquals(1, audienceRestrictions.size());
AudienceRestrictionType audienceRestriction = audienceRestrictions.iterator().next();
assertNotNull(audienceRestriction.getAudience());
assertEquals(1, audienceRestriction.getAudience().size());
assertNotNull(audienceRestriction.getAudience().iterator().next());
}
@Test
public void testBuild() {
final int index = 1;
Map<String, String> runtimeProperties = new HashMap<String, String>();
runtimeProperties.put(createIndexedProperty(PropertyKeys.CONDITIONS_AUDIENCERESTRICTION_AUDIENCE_KEY,
index), TEST_AUDIENCE);
List<AudienceRestrictionType> audienceRestrictions =
audienceRestrictionBuilder.build(runtimeProperties);
assertNotNull(audienceRestrictions);
assertEquals(1, audienceRestrictions.size());
AudienceRestrictionType audienceRestriction = audienceRestrictions.iterator().next();
List<String> audiences = audienceRestriction.getAudience();
assertEquals(1, audiences.size());
assertEquals(TEST_AUDIENCE, audienceRestriction.getAudience().iterator().next());
}
private String createIndexedProperty(String key, final int index) {
return key + "." + index;
}
}