public void Aspect_OData_AddRemoveFields() { var aspect = Content.CreateNew("Aspect", Repository.AspectsFolder, Guid.NewGuid().ToString()); aspect.Save(); //var aspectPath = aspect.Path; var resourcePath = ODataHandler.GetEntityUrl(aspect.Path); var content = Content.CreateNew("Car", TestRoot, Guid.NewGuid().ToString()); content.AddAspects(aspect.Path); content.Save(); var odataHandlerAcc = new PrivateType(typeof(ODataHandler)); var originalActionResolver = odataHandlerAcc.GetStaticProperty("ActionResolver"); odataHandlerAcc.SetStaticProperty("ActionResolver", new ODataTests.TestActionResolver()); var fieldInfosJson = GetJson(new[] { new FieldInfo { Name = "Field1", Type = "ShortText" }, new FieldInfo { Name = "Field2", Type = "ShortText" }, new FieldInfo { Name = "Field3", Type = "ShortText" }, }); ODataTests.CreateTestSite(); try { string result; Field field; using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(string.Concat("/OData.svc", resourcePath, "/AddFields"), "", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream(String.Concat("{fields:", fieldInfosJson, "}")); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); result = output.GetStringBuilder().ToString(); } content = Content.Load(content.Path); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field1", out field)); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field2", out field)); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field3", out field)); Assert.IsFalse(content.Fields.TryGetValue(aspect.Name + ".Field4", out field)); fieldInfosJson = GetJson(new[] { new FieldInfo { Name = "Field4", Type = "ShortText" }, }); using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(string.Concat("/OData.svc", resourcePath, "/AddFields"), "", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream(String.Concat("{fields:", fieldInfosJson, "}")); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); result = output.GetStringBuilder().ToString(); } content = Content.Load(content.Path); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field1", out field)); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field2", out field)); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field3", out field)); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field4", out field)); using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(string.Concat("/OData.svc", resourcePath, "/RemoveFields"), "", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream(String.Concat("{fields:[\"Field1\"]}")); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); result = output.GetStringBuilder().ToString(); } content = Content.Load(content.Path); Assert.IsFalse(content.Fields.TryGetValue(aspect.Name + ".Field1", out field)); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field2", out field)); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field3", out field)); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field4", out field)); using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(string.Concat("/OData.svc", resourcePath, "/RemoveFields"), "", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream(String.Concat("{fields:[\"Field4\",\"Field2\"]}")); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); result = output.GetStringBuilder().ToString(); } content = Content.Load(content.Path); Assert.IsFalse(content.Fields.TryGetValue(aspect.Name + ".Field1", out field)); Assert.IsFalse(content.Fields.TryGetValue(aspect.Name + ".Field2", out field)); Assert.IsTrue(content.Fields.TryGetValue(aspect.Name + ".Field3", out field)); Assert.IsFalse(content.Fields.TryGetValue(aspect.Name + ".Field4", out field)); using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(string.Concat("/OData.svc", resourcePath, "/RemoveAllFields"), "", output); var handler = new ODataHandler(); handler.ProcessRequest(pc.OwnerHttpContext, "POST", null); result = output.GetStringBuilder().ToString(); } content = Content.Load(content.Path); Assert.IsFalse(content.Fields.TryGetValue(aspect.Name + ".Field1", out field)); Assert.IsFalse(content.Fields.TryGetValue(aspect.Name + ".Field2", out field)); Assert.IsFalse(content.Fields.TryGetValue(aspect.Name + ".Field3", out field)); Assert.IsFalse(content.Fields.TryGetValue(aspect.Name + ".Field4", out field)); } finally { odataHandlerAcc.SetStaticProperty("ActionResolver", originalActionResolver); content.DeletePhysical(); ODataTests.CleanupTestSite(); } }
public void Aspect_OData_AddRemoveAspect() { var content = Content.CreateNew("Car", TestRoot, Guid.NewGuid().ToString()); content.Save(); var resourcePath = ODataHandler.GetEntityUrl(content.Path); var aspect1 = Content.CreateNew("Aspect", Repository.AspectsFolder, Guid.NewGuid().ToString()); aspect1.Save(); var aspect1Path = aspect1.Path; var aspect2 = Content.CreateNew("Aspect", Repository.AspectsFolder, Guid.NewGuid().ToString()); aspect2.Save(); var aspect2Path = aspect2.Path; var aspect3 = Content.CreateNew("Aspect", Repository.AspectsFolder, Guid.NewGuid().ToString()); aspect3.Save(); var aspect3Path = aspect3.Path; var odataHandlerAcc = new PrivateType(typeof(ODataHandler)); var originalActionResolver = odataHandlerAcc.GetStaticProperty("ActionResolver"); odataHandlerAcc.SetStaticProperty("ActionResolver", new ODataTests.TestActionResolver()); ODataTests.CreateTestSite(); try { string result; using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(string.Concat("/OData.svc", resourcePath, "/AddAspects"), "", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream(String.Concat("{aspects:[\"", aspect1Path, "\"]}")); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); result = output.GetStringBuilder().ToString(); } content = Content.Load(content.Path); Assert.IsTrue(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect1.ContentHandler)); Assert.IsFalse(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect2.ContentHandler)); Assert.IsFalse(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect3.ContentHandler)); using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(string.Concat("/OData.svc", resourcePath, "/AddAspects"), "", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream(String.Concat("{aspects:[\"", aspect2Path, "\", \"", aspect3Path, "\"]}")); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); result = output.GetStringBuilder().ToString(); } content = Content.Load(content.Path); Assert.IsTrue(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect1.ContentHandler)); Assert.IsTrue(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect2.ContentHandler)); Assert.IsTrue(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect3.ContentHandler)); using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(string.Concat("/OData.svc", resourcePath, "/RemoveAspects"), "", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream(String.Concat("{aspects:[\"", aspect1Path, "\", \"", aspect3Path, "\"]}")); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); result = output.GetStringBuilder().ToString(); } content = Content.Load(content.Path); Assert.IsFalse(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect1.ContentHandler)); Assert.IsTrue(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect2.ContentHandler)); Assert.IsFalse(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect3.ContentHandler)); using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(string.Concat("/OData.svc", resourcePath, "/RemoveAspects"), "", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream(String.Concat("{aspects:[\"", aspect2Path, "\"]}")); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); result = output.GetStringBuilder().ToString(); } content = Content.Load(content.Path); Assert.IsFalse(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect1.ContentHandler)); Assert.IsFalse(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect2.ContentHandler)); Assert.IsFalse(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect3.ContentHandler)); content.AddAspects((Aspect)aspect1.ContentHandler, (Aspect)aspect2.ContentHandler, (Aspect)aspect3.ContentHandler); content.Save(); Assert.IsTrue(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect1.ContentHandler)); Assert.IsTrue(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect2.ContentHandler)); Assert.IsTrue(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect3.ContentHandler)); using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(string.Concat("/OData.svc", resourcePath, "/RemoveAllAspects"), "", output); var handler = new ODataHandler(); //var stream = ODataTests.CreateRequestStream(String.Concat("{aspects:[\"", aspect2Path, "\"]}")); handler.ProcessRequest(pc.OwnerHttpContext, "POST", null); result = output.GetStringBuilder().ToString(); } content = Content.Load(content.Path); Assert.IsFalse(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect1.ContentHandler)); Assert.IsFalse(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect2.ContentHandler)); Assert.IsFalse(((GenericContent)content.ContentHandler).HasReference("Aspects", aspect3.ContentHandler)); } finally { odataHandlerAcc.SetStaticProperty("ActionResolver", originalActionResolver); content.DeletePhysical(); ODataTests.CleanupTestSite(); } }