package org.openstack.atlas.api.helpers; import org.openstack.atlas.api.exceptions.MalformedUrlException; import org.junit.Assert; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import java.util.regex.Matcher; import java.util.regex.Pattern; @RunWith(Enclosed.class) public class UrlAccountIdExtractorTest { public static class WhenInterrogatingUrlsForExtractingAccountIds { @Test public void Should_successfully_grab_accountid_from_a_good_url() { String url = "http://docs.rackspace.api.com/something/7645/loadbalancers/54"; Assert.assertEquals(new Integer(7645), new UrlAccountIdExtractor().getAccountId(url)); url = "http://glassfish-test.sitesv2.org:8080/lb-rest/77777/loadbalancers"; Assert.assertEquals(new Integer(77777), new UrlAccountIdExtractor().getAccountId(url)); url = "http://glassfish-test.sitesv2.org:8080/lb-rest/76344/loadbalancers/"; Assert.assertEquals(new Integer(76344), new UrlAccountIdExtractor().getAccountId(url)); url = "http://glassfish-test.sitesv2.org:8080/lb-rest/76344/loadbalancers.json"; Assert.assertEquals(new Integer(76344), new UrlAccountIdExtractor().getAccountId(url)); url = "http://glassfish-test.sitesv2.org:8080/lb-rest/76344/loadbalancers/9999/accesslist.json"; Assert.assertEquals(new Integer(76344), new UrlAccountIdExtractor().getAccountId(url)); url = "http://glassfish-test.sitesv2.org:8080/lb-rest/77777/management/clusters"; Assert.assertEquals(new Integer(77777), new UrlAccountIdExtractor().getAccountId(url)); url = "http://glassfish-test.sitesv2.org:8080/lb-rest/77777/"; Assert.assertEquals(new Integer(77777), new UrlAccountIdExtractor().getAccountId(url)); url = "http://glassfish-test.sitesv2.org:8080/lb-rest/77777"; Assert.assertEquals(new Integer(77777), new UrlAccountIdExtractor().getAccountId(url)); url = "http://glassfish-test.sitesv2.org:8080/lb-rest/77777/43123123"; Assert.assertEquals(new Integer(77777), new UrlAccountIdExtractor().getAccountId(url)); } @Test(expected = MalformedUrlException.class) public void should_throw_malformed_url_exception_when_accountid_not_found() { String url = "http://docs.rackspace.api.com/something/loadbalancers/7676"; new UrlAccountIdExtractor().getAccountId(url); } @Test(expected = MalformedUrlException.class) public void should_throw_malformed_url_exception_when_url_is_null() { String url = null; new UrlAccountIdExtractor().getAccountId(url); } } public static class WhenInterrogatingUrlsForExtractingContentType { @Test public void Should_successfully_grab_content_type_from_a_good_url() { String url = "http://docs.rackspace.api.com/something/7645/loadbalancers/54.xml"; Assert.assertEquals("xml", new UrlAccountIdExtractor().getContentType(url)); url = "http://glassfish-test.sitesv2.org:8080/lb-rest/77777/loadbalancers.json"; Assert.assertEquals("json", new UrlAccountIdExtractor().getContentType(url)); url = "http://glassfish-test.sitesv2.org:8080/lb-rest/77777/loadbalancers"; Assert.assertEquals("", new UrlAccountIdExtractor().getContentType(url)); url = "http://omg.xml.json.org:8080/lb-rest/77777/loadbalancers.xml"; Assert.assertEquals("xml", new UrlAccountIdExtractor().getContentType(url)); url = "http://omg.xml.json.org:8080/lb-rest/77777/loadbalancers"; Assert.assertEquals("", new UrlAccountIdExtractor().getContentType(url)); } } public static class WhenTestingRateLimitCaptureGroups { @Test public void should_successfully_grab_account_id_as_group_one() { String url = "http://localhost:9090/lb-rest-service/528830/loadbalancers/196"; Matcher matcher = Pattern.compile(".*/([0-9]+)/loadbalancers/.*").matcher(url); if (matcher.find()) { Assert.assertEquals("528830", matcher.group(1)); } } } }