@Test public void typeJsAltParams() throws Exception { checkAltParams(ConcatUriManager.Type.JS); }
@Test public void typeCssBasicParams() throws Exception { checkBasicParams(ConcatUriManager.Type.CSS); }
@Test public void typeJsBatchAdjacent() throws Exception { checkBatchAdjacent(ConcatUriManager.Type.JS); }
private void checkBatchInsufficientVersions(ConcatUriManager.Type type) throws Exception { Gadget gadget = mockGadget(true, true); String host = "bar.com"; String path = "/other/path"; String[] versions = new String[] { "v1" }; // Only one for three resources. ConcatUriManager.Versioner versioner = makeVersioner(null, versions); DefaultConcatUriManager manager = makeManager(host, path, "token", versioner); List<List<Uri>> resourceUris = ImmutableList.<List<Uri>>of(RESOURCES_ONE, RESOURCES_ONE); manager.make(fromList(gadget, resourceUris, type), true); }
private void checkMissingHostConfig(ConcatUriManager.Type type) throws Exception { Gadget gadget = mockGadget(false, false); DefaultConcatUriManager manager = makeManager(null, "/foo", "token", null); List<List<Uri>> resourceUris = ImmutableList.of(RESOURCES_ONE); manager.make(fromList(gadget, resourceUris, type), true); }
@Test public void dontConcatMultipleResourceBeyoundUrlLimitAdjacentBatched() throws Exception { Gadget gadget = mockGadget(true, true); String host = "bar.com"; String path = "/other/path"; ConcatUriManager.Type type = ConcatUriManager.Type.JS; String[] versions = new String[] { "v1" }; ConcatUriManager.Versioner versioner = makeVersioner(null, versions); DefaultConcatUriManager manager = makeManager(host, path, null, versioner); Uri urlA = Uri.parse(generateUrl(manager.getUrlMaxLength() / 4)); Uri urlB = Uri.parse(generateUrl(manager.getUrlMaxLength() / 4)); Uri urlC = Uri.parse(generateUrl(manager.getUrlMaxLength() / 2)); List<Uri> urlList = ImmutableList.of(urlA, urlB, urlC); List<List<Uri>> resourceUris = ImmutableList.of(urlList); List<ConcatData> concatUris = manager.make(fromList(gadget, resourceUris, type), true); assertEquals(2, concatUris.get(0).getUris().size()); checkBasicUriParameters(concatUris.get(0).getUris().get(0), host, path, 8, type, "1", "1", versions[0]); assertEquals(urlA.toString(), concatUris.get(0).getUris().get(0).getQueryParameter("1")); assertNull(concatUris.get(0).getSnippet(urlA)); assertEquals(urlB.toString(), concatUris.get(0).getUris().get(0).getQueryParameter("2")); assertNull(concatUris.get(0).getSnippet(urlB)); assertNull(concatUris.get(0).getUris().get(0).getQueryParameter("3")); checkBasicUriParameters(concatUris.get(0).getUris().get(1), host, path, 7, type, "1", "1", versions[0]); assertEquals(urlC.toString(), concatUris.get(0).getUris().get(1).getQueryParameter("1")); assertNull(concatUris.get(0).getSnippet(urlC)); assertNull(concatUris.get(0).getUris().get(1).getQueryParameter("2")); }
private void checkUnversionedUri(ConcatUriManager.Type type, boolean hasSplit) { // Returns VALID_VERSIONED, but no version is present. ConcatUriManager.Versioner versioner = makeVersioner(UriStatus.VALID_VERSIONED); DefaultConcatUriManager manager = makeManager("host.com", "/path", null, versioner); ConcatUriManager.ConcatUri validated = manager.process( Uri.parse("http://host.com/path?" + Param.CONTAINER.getKey() + '=' + CONTAINER + "&1=http://legit.com/1.dat&2=http://another.com/2.dat&" + Param.TYPE.getKey() + '=' + type.getType() + '&' + Param.JSON.getKey() + "=split&" + Param.GADGET.getKey() + "=http://www.gadget.com/g.xml&" + Param.REFRESH.getKey() + "=123")); assertEquals(UriStatus.VALID_UNVERSIONED, validated.getStatus()); assertEquals(type, validated.getType()); assertEquals(CONTAINER, validated.getContainer()); assertEquals("http://www.gadget.com/g.xml", validated.getGadget()); assertEquals(2, validated.getBatch().size()); assertEquals("http://legit.com/1.dat", validated.getBatch().get(0).toString()); assertEquals("http://another.com/2.dat", validated.getBatch().get(1).toString()); assertEquals(123, validated.getRefresh().intValue()); assertEquals(hasSplit ? "split" : null, validated.getSplitParam()); }
@Test public void validateNoContainer() { DefaultConcatUriManager manager = makeManager("host.com", "/path", null, null); ConcatUriManager.ConcatUri validated = manager.process(Uri.parse("http://host.com/path?q=f")); assertEquals(UriStatus.BAD_URI, validated.getStatus()); }
@Test public void validateJsUriBadVersion() { checkValidateUri(UriStatus.INVALID_VERSION, ConcatUriManager.Type.JS, true); }
@Test public void typeCssValidatedGeneratedBatch() throws Exception { checkValidatedBatchAdjacent(ConcatUriManager.Type.CSS); }
@Test public void validateCssUriUnversioned() { checkUnversionedUri(ConcatUriManager.Type.CSS, false); }
@Test(expected = RuntimeException.class) public void typeCssMissingHostConfig() throws Exception { checkMissingHostConfig(ConcatUriManager.Type.CSS); }
@Test(expected = RuntimeException.class) public void typeCssMissingPathConfig() throws Exception { checkMissingPathConfig(ConcatUriManager.Type.CSS); }
@Test public void dontConcatMultipleResourceBeyoundUrlLimitAdjacentBatched() throws Exception { Gadget gadget = mockGadget(true, true); String host = "bar.com"; String path = "/other/path"; ConcatUriManager.Type type = ConcatUriManager.Type.JS; String[] versions = new String[] { "v1" }; ConcatUriManager.Versioner versioner = makeVersioner(null, versions); DefaultConcatUriManager manager = makeManager(host, path, null, versioner); Uri urlA = Uri.parse(generateUrl(manager.getUrlMaxLength() / 4)); Uri urlB = Uri.parse(generateUrl(manager.getUrlMaxLength() / 4)); Uri urlC = Uri.parse(generateUrl(manager.getUrlMaxLength() / 2)); List<Uri> urlList = ImmutableList.of(urlA, urlB, urlC); List<List<Uri>> resourceUris = ImmutableList.of(urlList); List<ConcatData> concatUris = manager.make(fromList(gadget, resourceUris, type), true); assertEquals(2, concatUris.get(0).getUris().size()); checkBasicUriParameters(concatUris.get(0).getUris().get(0), host, path, 8, type, "1", "1", versions[0]); assertEquals(urlA.toString(), concatUris.get(0).getUris().get(0).getQueryParameter("1")); assertNull(concatUris.get(0).getSnippet(urlA)); assertEquals(urlB.toString(), concatUris.get(0).getUris().get(0).getQueryParameter("2")); assertNull(concatUris.get(0).getSnippet(urlB)); assertNull(concatUris.get(0).getUris().get(0).getQueryParameter("3")); checkBasicUriParameters(concatUris.get(0).getUris().get(1), host, path, 7, type, "1", "1", versions[0]); assertEquals(urlC.toString(), concatUris.get(0).getUris().get(1).getQueryParameter("1")); assertNull(concatUris.get(0).getSnippet(urlC)); assertNull(concatUris.get(0).getUris().get(1).getQueryParameter("2")); }
@Test(expected=NoSuchElementException.class) public void typeJsBatchInsufficientVersions() throws Exception { Gadget gadget = mockGadget(true, true); String host = "bar.com"; String path = "/other/path"; String[] versions = new String[] { "v1" }; // Only one for three resources. ConcatUriManager.Versioner versioner = makeVersioner(null, versions); DefaultConcatUriManager manager = makeManager(host, path, "token", versioner); List<List<Uri>> resourceUris = ImmutableList.<List<Uri>>of(RESOURCES_ONE, RESOURCES_ONE); manager.make(fromList(gadget, resourceUris, ConcatUriManager.Type.JS), true); }
private void checkMissingPathConfig(ConcatUriManager.Type type) throws Exception { Gadget gadget = mockGadget(false, false); DefaultConcatUriManager manager = makeManager("host.com", null, "token", null); List<List<Uri>> resourceUris = ImmutableList.of(RESOURCES_ONE); manager.make(fromList(gadget, resourceUris, type), false); }
private void checkValidateUri(UriStatus status, ConcatUriManager.Type type, boolean hasSplit) { ConcatUriManager.Versioner versioner = makeVersioner(status); DefaultConcatUriManager manager = makeManager("host.com", "/path", null, versioner); ConcatUriManager.ConcatUri validated = manager.process( Uri.parse("http://host.com/path?" + Param.CONTAINER.getKey() + '=' + CONTAINER + "&1=http://legit.com/1.dat&2=http://another.com/2.dat&" + Param.TYPE.getKey() + '=' + type.getType() + '&' + Param.VERSION.getKey() + "=something&" + Param.JSON.getKey() + "=split&" + Param.GADGET.getKey() + "=http://www.gadget.com/g.xml&" + Param.REFRESH.getKey() + "=123")); assertEquals(status, validated.getStatus()); assertEquals(type, validated.getType()); assertEquals(CONTAINER, validated.getContainer()); assertEquals("http://www.gadget.com/g.xml", validated.getGadget()); assertEquals(2, validated.getBatch().size()); assertEquals("http://legit.com/1.dat", validated.getBatch().get(0).toString()); assertEquals("http://another.com/2.dat", validated.getBatch().get(1).toString()); assertEquals(123, validated.getRefresh().intValue()); assertEquals(hasSplit ? "split" : null, validated.getSplitParam()); }
@Test public void validateNoContainer() { DefaultConcatUriManager manager = makeManager("host.com", "/path", null, null); ConcatUriManager.ConcatUri validated = manager.process(Uri.parse("http://host.com/path?q=f")); assertEquals(UriStatus.BAD_URI, validated.getStatus()); }
@Test public void validateCssUriVersioned() { checkValidateUri(UriStatus.VALID_VERSIONED, ConcatUriManager.Type.CSS, false); }
@Test public void typeJsValidatedGeneratedBatch() throws Exception { checkValidatedBatchAdjacent(ConcatUriManager.Type.JS); }