package org.jboss.resteasy.test.util; import org.jboss.resteasy.core.ExtendedCacheControl; import org.jboss.resteasy.plugins.delegates.CacheControlDelegate; import org.jboss.resteasy.spi.ResteasyProviderFactory; import org.junit.Assert; import org.junit.Test; import javax.ws.rs.core.CacheControl; import javax.ws.rs.ext.RuntimeDelegate; import static org.junit.Assert.assertTrue; /** * @tpSubChapter Util tests * @tpChapter Unit tests * @tpTestCaseDetails Test for javax.ws.rs.core.CacheControl; class. * @tpSince RESTEasy 3.0.16 */ public class CacheControlTest { /** * @tpTestDetails Check serialization * @tpSince RESTEasy 3.0.16 */ @Test public void cacheControlSerialization() { RuntimeDelegate.HeaderDelegate<CacheControl> hdcc = ResteasyProviderFactory.getInstance() .createHeaderDelegate(CacheControl.class); CacheControl control = new CacheControl(); control.setMaxAge(1000); control.setSMaxAge(500); control.setNoTransform(false); control.setPrivate(true); String toString = hdcc.toString(control); CacheControl serialized = hdcc.fromString(toString); String errMsg = "Wrong serialization"; Assert.assertTrue(errMsg, serialized.getMaxAge() == 1000); Assert.assertTrue(errMsg, serialized.getSMaxAge() == 500); Assert.assertFalse(errMsg, serialized.isNoTransform()); Assert.assertTrue(errMsg, serialized.isPrivate()); } void assertEqual(String errorMsg, CacheControl first, CacheControl second) { Assert.assertEquals(errorMsg, first.isMustRevalidate(), second.isMustRevalidate()); Assert.assertEquals(errorMsg, first.isNoCache(), second.isNoCache()); Assert.assertEquals(errorMsg, first.isNoStore(), second.isNoStore()); Assert.assertEquals(errorMsg, first.isNoTransform(), second.isNoTransform()); Assert.assertEquals(errorMsg, first.isPrivate(), second.isPrivate()); Assert.assertEquals(errorMsg, first.isProxyRevalidate(), second.isProxyRevalidate()); Assert.assertEquals(errorMsg, first.isPrivate(), second.isPrivate()); Assert.assertEquals(errorMsg, first.getMaxAge(), second.getMaxAge()); Assert.assertEquals(errorMsg, first.getSMaxAge(), second.getSMaxAge()); Assert.assertEquals(errorMsg, first.getNoCacheFields().size(), second.getNoCacheFields().size()); Assert.assertEquals(errorMsg, first.getPrivateFields().size(), second.getPrivateFields().size()); for (int i = 0; i < first.getNoCacheFields().size(); i++) { Assert.assertEquals(errorMsg, first.getNoCacheFields().get(i), second.getNoCacheFields().get(i)); } for (int i = 0; i < first.getPrivateFields().size(); i++) { Assert.assertEquals(errorMsg, first.getPrivateFields().get(i), second.getPrivateFields().get(i)); } Assert.assertEquals(errorMsg, first.getCacheExtension().size(), second.getCacheExtension().size()); for (String key : first.getCacheExtension().keySet()) { Assert.assertEquals(errorMsg, first.getCacheExtension().get(key), second.getCacheExtension().get(key)); } } /** * @tpTestDetails Conversion from and to String * @tpSince RESTEasy 3.0.16 */ @Test public void testCacheControl() { CacheControlDelegate delegate = new CacheControlDelegate(); { CacheControl cc = new CacheControl(); cc.setNoCache(false); cc.setNoTransform(true); cc.setPrivate(true); cc.setMustRevalidate(true); cc.setProxyRevalidate(true); CacheControl cc2 = delegate.fromString(delegate.toString(cc)); assertEqual("Incorrect conversion from CacheControl to String", cc, cc2); } { CacheControl cc = new CacheControl(); cc.setNoCache(true); cc.getNoCacheFields().add("bill"); cc.getNoCacheFields().add("marc"); cc.setPrivate(true); cc.getPrivateFields().add("yo"); cc.getCacheExtension().put("foo", "bar"); cc.setMaxAge(25); cc.setSMaxAge(25); CacheControl cc2 = delegate.fromString(delegate.toString(cc)); assertEqual("Incorrect conversion from CacheControl to String", cc, cc2); } } /** * @tpTestDetails Check properties are correct in converted String * @tpSince RESTEasy 3.0.16 */ @Test public void testEveryDirectiveAppearsInStringifiedVersion() { // TCK requires this CacheControl cc = new CacheControl(); cc.setNoCache(true); cc.setPrivate(true); cc.setNoStore(true); String value = cc.toString(); assertTrue("Missing no-cache property in String representation of CacheControl", value.contains("no-cache")); assertTrue("Missing no-store property in String representation of CacheControl", value.contains("no-store")); assertTrue("Missing private property in String representation of CacheControl", value.contains("private")); } /** * @tpTestDetails Check properties are correct in converted String for ExtendedCacheControl class * @tpSince RESTEasy 3.0.16 */ @Test public void testExtendedCacheControl() { ExtendedCacheControl cc = new ExtendedCacheControl(); cc.setNoCache(true); cc.setPublic(true); cc.setNoStore(true); String value = cc.toString(); assertTrue("Missing no-cache property in String representation of ExtendedCacheControl", value.contains("no-cache")); assertTrue("Missing no-store property in String representation of ExtendedCacheControl", value.contains("no-store")); assertTrue("Missing private property in String representation of ExtendedCacheControl", value.contains("public")); } }