diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/AddWebArtifactOperationTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/AddWebArtifactOperationTest.java
index 34e03b6..43a9c88 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/AddWebArtifactOperationTest.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/AddWebArtifactOperationTest.java
@@ -37,6 +37,7 @@
 import org.eclipse.jst.j2ee.internal.web.operations.NewServletClassDataModelProvider;
 import org.eclipse.jst.j2ee.model.IModelProvider;
 import org.eclipse.jst.j2ee.model.ModelProviderManager;
+import org.eclipse.jst.j2ee.project.WebUtilities;
 import org.eclipse.jst.j2ee.web.componentcore.util.WebArtifactEdit;
 import org.eclipse.jst.j2ee.webapplication.Filter;
 import org.eclipse.jst.j2ee.webapplication.FilterMapping;
@@ -55,6 +56,9 @@
 		INewJavaClassDataModelProperties {
 	
     public static final String WEB_PROJECT_NAME = "WebProject"; //$NON-NLS-1$
+    public static final String EAR_PROJECT_NAME = "EarProject"; //$NON-NLS-1$
+    
+    public static final String WEB_CONTEXT_ROOT = "WebRoot"; //$NON-NLS-1$
     
     public static final String PACKAGE = "test"; //$NON-NLS-1$
     
@@ -413,5 +417,26 @@
 		assertNotNull("Source file for Java type " + fullyQualifiedName + " not found", file);
 		assertTrue(file.exists());
     }
+
+	public void testDefaultWebUtilityContextRoot() throws Exception {
+		IDataModel dm = WebProjectCreationOperationTest.getWebDataModel(
+				WEB_PROJECT_NAME, EAR_PROJECT_NAME, null, null, null, JavaEEFacetConstants.WEB_25, true);
+    	runAndVerify(dm);
+		
+		IProject proj = ProjectUtilities.getProject(WEB_PROJECT_NAME);
+		IProject earproj = ProjectUtilities.getProject(EAR_PROJECT_NAME);
+	
+		assertEquals(WebUtilities.getServerContextRoot(proj, earproj),WEB_PROJECT_NAME);
+	}
+	public void testWebUtilityContextRoot() throws Exception {
+		IDataModel dm = WebProjectCreationOperationTest.getWebDataModel(
+				WEB_PROJECT_NAME, EAR_PROJECT_NAME, WEB_CONTEXT_ROOT, null, null, JavaEEFacetConstants.WEB_25, true);
+    	runAndVerify(dm);
+		
+		IProject proj = ProjectUtilities.getProject(WEB_PROJECT_NAME);
+		IProject earproj = ProjectUtilities.getProject(EAR_PROJECT_NAME);
+	
+		assertEquals(WebUtilities.getServerContextRoot(proj, earproj),WEB_CONTEXT_ROOT);
+	}
 	
 }
