package org.eclipse.orion.server.tests.servlets.site;
import static org.junit.Assert.assertEquals;
import java.net.URI;
import java.util.List;
import org.eclipse.orion.internal.server.hosting.IHostedSite;
import org.eclipse.orion.internal.server.hosting.SiteHostingConfig;
import org.eclipse.orion.internal.server.hosting.SiteHostingService;
import org.eclipse.orion.internal.server.hosting.SiteInfo;
import org.eclipse.orion.server.core.OrionConfiguration;
import org.eclipse.orion.server.core.metastore.IMetaStore;
import org.eclipse.orion.server.core.metastore.UserInfo;
import org.junit.Test;
/**
* Unit tests dealing with Site Hosting internals
*/
public class SiteHostingServiceTest {
protected IMetaStore getMetaStore() {
return OrionConfiguration.getMetaStore();
}
@Test
public void testSiteHostingConfigParsing() throws Exception {
SiteHostingConfig config = SiteHostingConfig.getSiteHostingConfig("*.example.org, 127.0.0.3");
List<String> hosts = config.getHosts();
assertEquals(hosts.size(), 2);
assertEquals(hosts.get(0), "*.example.org"); //$NON-NLS-1$
assertEquals(hosts.get(1), "127.0.0.3"); //$NON-NLS-1$
}
@Test
public void testSiteHostingServiceStart() throws Exception {
IMetaStore metaStore = getMetaStore();
SiteHostingService hostingService = new SiteHostingService(SiteHostingConfig.getSiteHostingConfig("https://*.sites.example.org:1234"));
UserInfo user = new UserInfo();
user.setUniqueId("A");
user.setUserName("carlos");
metaStore.createUser(user);
SiteInfo site = SiteInfo.newSiteConfiguration(user, "mysite", "myworkspace");
site.setId("s1");
site.setName("Some site");
site.setHostHint("foo");
site.save(user);
hostingService.start(site, user, "http://whatever/dontcare", new URI("http", null, "test", 80, null, null, null));
IHostedSite vhost = hostingService.get(site, user);
assertEquals("https://foo.sites.example.org:1234", vhost.getUrl());
}
@Test
public void testSiteHostingServiceStartHostnameTaken() throws Exception {
IMetaStore metaStore = getMetaStore();
SiteHostingService hostingService = new SiteHostingService(SiteHostingConfig.getSiteHostingConfig("https://*.sites.example.org"));
UserInfo user = new UserInfo();
user.setUniqueId("A");
user.setUserName("carlos");
metaStore.createUser(user);
SiteInfo site1 = SiteInfo.newSiteConfiguration(user, "site1", "myworkspace");
site1.setId("s1");
site1.setName("Site 1");
site1.setHostHint("foo");
site1.save(user);
SiteInfo site2 = SiteInfo.newSiteConfiguration(user, "site2", "myworkspace");
site1.setId("s2");
site2.setName("Site 2");
site2.setHostHint("foo");
site2.save(user);
hostingService.start(site1, user, "http://whatever/dontcare", new URI("http", null, "test", 80, null, null, null));
hostingService.start(site2, user, "http://whatever/dontcare", new URI("http", null, "test", 80, null, null, null));
// Expect: site1 acquires the "foo" URL, and site2 has to settle for foo + {suffix "0"}
assertEquals("https://foo.sites.example.org", hostingService.get(site1, user).getUrl());
assertEquals("https://foo0.sites.example.org", hostingService.get(site2, user).getUrl());
}
@Test
public void testSiteHostingServiceMatchesVirtualHost() throws Exception {
IMetaStore metaStore = getMetaStore();
SiteHostingService hostingService = new SiteHostingService(SiteHostingConfig.getSiteHostingConfig("https://*.sites.example.org:1234"));
UserInfo user = new UserInfo();
user.setUniqueId("A");
user.setUserName("carlos");
metaStore.createUser(user);
SiteInfo site = SiteInfo.newSiteConfiguration(user, "mysite", "myworkspace");
site.setId("s1");
site.setName("Some site");
site.setHostHint("foo");
site.save(user);
// Should be recognized as matching a virtual host
assertEquals(true, hostingService.matchesVirtualHost("fizzbuzz.sites.example.org"));
}
}