Skip to content

Commit

Permalink
Add tests for PreferTag
Browse files Browse the repository at this point in the history
  • Loading branch information
cbeer committed Oct 17, 2014
1 parent 333a2f7 commit 65d325a
Show file tree
Hide file tree
Showing 6 changed files with 150 additions and 7 deletions.
Expand Up @@ -173,7 +173,7 @@ protected RdfStream getResourceTriples(final Prefer prefer) {
} else if (prefer != null && prefer.hasHandling()) {
returnPreference = prefer.getHandling();
} else {
returnPreference = new PreferTag("");
returnPreference = PreferTag.emptyTag();
}

final LdpPreferTag ldpPreferences = new LdpPreferTag(returnPreference);
Expand Down
Expand Up @@ -67,7 +67,7 @@ public PreferTag getReturn() {
if (aReturn.isPresent()) {
return aReturn.get();
}
return new PreferTag("");
return PreferTag.emptyTag();
}

/**
Expand All @@ -80,7 +80,7 @@ public PreferTag getHandling() {
if (handling.isPresent()) {
return handling.get();
}
return new PreferTag("");
return PreferTag.emptyTag();
}


Expand Down
Expand Up @@ -32,6 +32,20 @@ public class PreferTag {
private String value = "";
private Map<String, String> params = new HashMap<>();

public PreferTag(final PreferTag preferTag) {
tag = preferTag.getTag();
value = preferTag.getValue();
params = preferTag.getParams();
}

public static PreferTag emptyTag() {
try {
return new PreferTag("");
} catch (final ParseException e) {
throw new AssertionError(e);
}
}

/**
* Parse the prefer tag and parameters out of the header
* @param reader
Expand Down Expand Up @@ -59,8 +73,8 @@ public PreferTag(final HttpHeaderReader reader) throws ParseException {
* Create a blank prefer tag
* @param inputTag
*/
public PreferTag(final String inputTag) {
tag = inputTag;
public PreferTag(final String inputTag) throws ParseException {
this(HttpHeaderReader.newInstance(inputTag));
}

/**
Expand Down
Expand Up @@ -54,7 +54,7 @@ public class LdpPreferTag extends PreferTag {
* @param preferTag
*/
public LdpPreferTag(final PreferTag preferTag) {
super(preferTag.getTag());
super(preferTag);

final Optional<String> include = fromNullable(preferTag.getParams().get("include"));
final Optional<String> omit = fromNullable(preferTag.getParams().get("omit"));
Expand All @@ -65,7 +65,7 @@ public LdpPreferTag(final PreferTag preferTag) {

final boolean minimal = preferTag.getValue().equals("minimal") || received.or("").equals("minimal");

preferMinimalContainer = includes.contains(LDP_NAMESPACE + "PreferMinimalContainer");
preferMinimalContainer = includes.contains(LDP_NAMESPACE + "PreferMinimalContainer") || minimal;

membership = (!preferMinimalContainer && !omits.contains(LDP_NAMESPACE + "PreferMembership")) ||
includes.contains(LDP_NAMESPACE + "PreferMembership");
Expand Down
Expand Up @@ -52,4 +52,30 @@ public void testGetReturnParameters() throws ParseException {
final String returnParams = prefer.getReturn().getParams().get("include");
assertTrue(returnParams.contains("http://www.w3.org/ns/ldp#PreferMinimalContainer"));
}

@Test
public void testHasHandling() throws ParseException {
final Prefer prefer = new Prefer("handling=strict");

assertTrue(prefer.hasHandling());
}

@Test
public void testGetHandling() throws ParseException {
final Prefer prefer = new Prefer("handling=lenient");

assertEquals("lenient", prefer.getHandling().getValue());
}

@Test
public void testGetHandlingParameters() throws ParseException {
final Prefer prefer =
new Prefer("handling=lenient; some=\"parameter\"");

assertTrue(prefer.hasHandling());
assertEquals("lenient", prefer.getHandling().getValue());

final String returnParams = prefer.getReturn().getParams().get("some");
assertTrue(returnParams.contains("parameter"));
}
}
@@ -0,0 +1,103 @@
package org.fcrepo.http.commons.domain.ldp;

import org.fcrepo.http.commons.domain.PreferTag;
import org.junit.Test;

import java.text.ParseException;

import static org.fcrepo.kernel.RdfLexicon.EMBED_CONTAINS;
import static org.fcrepo.kernel.RdfLexicon.INBOUND_REFERENCES;
import static org.fcrepo.kernel.RdfLexicon.LDP_NAMESPACE;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

public class LdpPreferTagTest {

private LdpPreferTag testObj;


@Test
public void testMinimalHandling() throws ParseException {
testObj = new LdpPreferTag(new PreferTag("handling=lenient; received=\"minimal\""));

assertFalse(testObj.prefersServerManaged());
assertFalse(testObj.prefersContainment());
assertFalse(testObj.prefersMembership());
assertFalse(testObj.prefersEmbed());
assertFalse(testObj.prefersReferences());

}

@Test
public void testMinimalContainer() throws ParseException {
final PreferTag prefer
= new PreferTag("return=representation; include=\"" + LDP_NAMESPACE + "PreferMinimalContainer\"");
testObj = new LdpPreferTag(prefer);

assertTrue(testObj.prefersServerManaged());
assertTrue(testObj.prefersReferences());
assertFalse(testObj.prefersContainment());
assertFalse(testObj.prefersMembership());
assertFalse(testObj.prefersEmbed());
}

@Test
public void testPreferMembership() throws ParseException {
final PreferTag prefer
= new PreferTag("return=representation; include=\"" + LDP_NAMESPACE + "PreferMinimalContainer "
+ LDP_NAMESPACE + "PreferMembership\"");
testObj = new LdpPreferTag(prefer);

assertTrue(testObj.prefersMembership());
}

@Test
public void testPreferContainment() throws ParseException {
final PreferTag prefer
= new PreferTag("return=representation; include=\"" + LDP_NAMESPACE + "PreferMinimalContainer "
+ LDP_NAMESPACE + "PreferContainment\"");
testObj = new LdpPreferTag(prefer);

assertTrue(testObj.prefersContainment());
}

@Test
public void testPreferContainmentAndMembership() throws ParseException {
final PreferTag prefer
= new PreferTag("return=representation; include=\"" + LDP_NAMESPACE + "PreferMembership "
+ LDP_NAMESPACE + "PreferContainment\"");
testObj = new LdpPreferTag(prefer);

assertTrue(testObj.prefersMembership());
assertTrue(testObj.prefersContainment());
}

@Test
public void testPreferOmitContainmentAndMembership() throws ParseException {
final PreferTag prefer
= new PreferTag("return=representation; omit=\"" + LDP_NAMESPACE + "PreferMembership "
+ LDP_NAMESPACE + "PreferContainment\"");
testObj = new LdpPreferTag(prefer);

assertFalse(testObj.prefersMembership());
assertFalse(testObj.prefersContainment());
}

@Test
public void testPreferEmbed() throws ParseException {
final PreferTag prefer
= new PreferTag("return=representation; include=\"" + EMBED_CONTAINS + "\"");
testObj = new LdpPreferTag(prefer);

assertTrue(testObj.prefersEmbed());
}

@Test
public void testPreferOmitReference() throws ParseException {
final PreferTag prefer
= new PreferTag("return=representation; omit=\"" + INBOUND_REFERENCES + "\"");
testObj = new LdpPreferTag(prefer);

assertFalse(testObj.prefersReferences());
}
}

0 comments on commit 65d325a

Please sign in to comment.