internal static T ODataGET <T>(string resource, string queryString) where T : IODataResult { using (var output = new System.IO.StringWriter()) { var pc = CreatePortalContext(resource, queryString, output); var handler = new ODataHandler(); handler.ProcessRequest(pc.OwnerHttpContext); output.Flush(); return((T)GetResult <T>(output)); } }
public override object Execute(Content content, params object[] parameters) { var postData = parameters.FirstOrDefault() as string; if (string.IsNullOrEmpty(postData)) { return(null); } var contentList = content.ContentHandler as ContentList; if (contentList == null) { throw new InvalidOperationException("You cannot edit fields of any other content but a content list."); } var model = ODataHandler.Read(postData); if (model == null) { throw new InvalidOperationException("Invalid post data"); } var fieldName = model.Value <string>("Name"); if (string.IsNullOrEmpty(fieldName)) { throw new InvalidOperationException("Field Name is missing from post data."); } if (!fieldName.StartsWith("#")) { fieldName = "#" + fieldName; } var fieldSetting = contentList.FieldSettingContents.FirstOrDefault(fs => string.CompareOrdinal(fs.Name, fieldName) == 0); if (fieldSetting == null) { throw new InvalidOperationException("Unknown field: " + fieldName); } var fsContent = Content.Create(fieldSetting); ODataHandler.UpdateFields(fsContent, model); fsContent.Save(); return(fsContent); }
public void GenericAction_NotAnnotated() { ODataTests.CreateTestSite(); try { ODataTests.Error error; using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext("/OData.svc/Root('IMS')/TestAction0", "", output); var handler = new ODataHandler(); handler.ProcessRequest(pc.OwnerHttpContext, "POST", null); error = ODataTests.GetError(output); } Assert.IsTrue(error.Message.ToLower().Contains("access denied")); } finally { ODataTests.CleanupTestSite(); } }
public void OData_Getting_Entity_Projection() { Test(() => { CreateTestSite(); ODataEntity entity; using (var output = new System.IO.StringWriter()) { var pc = CreatePortalContext("/OData.svc/Root('IMS')", "$select=Id,Name", output); var handler = new ODataHandler(); handler.ProcessRequest(pc.OwnerHttpContext); entity = GetEntity(output); } var props = entity.AllProperties.ToArray(); Assert.IsTrue(props.Length == 3, string.Format("AllProperties.Count id ({0}), expected: 3", props.Length)); Assert.IsTrue(props[0].Key == "__metadata", string.Format("AllProperties[0] is ({0}), expected: '__metadata'", props[0].Key)); Assert.IsTrue(props[1].Key == "Id", string.Format("AllProperties[1] is ({0}), expected: 'Id'", props[1].Key)); Assert.IsTrue(props[2].Key == "Name", string.Format("AllProperties[2] is ({0}), expected: 'Name'", props[2].Key)); }); }
public void GenericAction_SingleContent() { ODataTests.CreateTestSite(); try { ODataTests.Entity entity; using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext("/OData.svc/Root('IMS')/TestAction3", "", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream(String.Concat("{ path: '", User.Administrator.Path, "' }")); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); entity = ODataTests.GetEntity(output); } Assert.AreEqual(1, entity.Id); } finally { ODataTests.CleanupTestSite(); } }
public void GenericAction_RightOverload() { ODataTests.CreateTestSite(); try { string result; using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext("/OData.svc/Root('IMS')/TestAction2", "", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream("{iii: 42, sss: 'asdf' }"); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); result = ODataTests.GetStringResult(output); } Assert.AreEqual("asdf: 42", result); } finally { ODataTests.CleanupTestSite(); } }
public void GenericAction_MultipleContents() { ODataTests.CreateTestSite(); try { ODataTests.Entities entities; using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext("/OData.svc/Root('IMS')/TestAction4", "$orderby=Name&$filter=Id lt 11", output); var handler = new ODataHandler(); var stream = ODataTests.CreateRequestStream("{ path: '/Root/IMS/BuiltIn/Portal' }"); handler.ProcessRequest(pc.OwnerHttpContext, "POST", stream); entities = ODataTests.GetEntities(output); } var actual = String.Join(", ", entities.Select(e => e.Name)); Assert.AreEqual("Admin, Administrators, Creators, Everyone, LastModifiers, Visitor", actual); } finally { ODataTests.CleanupTestSite(); } }
public void Aspect_OData_LongTextDoesNotContainCdata() { var fieldValue = "<p>Field value</p>"; var aspect = EnsureAspect("LongTextTest"); aspect.AddFields(new FieldInfo { Name = "Field1", Type = "LongText" }); var content = Content.CreateNew("Car", TestRoot, Guid.NewGuid().ToString()); content.AddAspects(aspect); content["LongTextTest.Field1"] = fieldValue; content.Save(); var uri = ODataTools.GetODataUrl(content); ODataTests.CreateTestSite(); ODataTests.Entity entity; try { using (var output = new System.IO.StringWriter()) { var pc = ODataTests.CreatePortalContext(uri, "", output); var handler = new ODataHandler(); handler.ProcessRequest(pc.OwnerHttpContext, "GET", null); entity = ODataTests.GetEntity(output); } var value = entity.AllProperties["LongTextTest.Field1"]; var jvalue = value as JValue; var stringValue = (string)jvalue.Value; Assert.AreEqual(fieldValue, stringValue); } finally { ODataTests.CleanupTestSite(); } }
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(); } }
public string Metadata() { return(ODataHandler.GetMetadataXmlV4(this.GetTableSpec, this.ModelNamespace)); }
public string Root() { return(ODataHandler.GetRootMetadataJsonV4(this.MetadataUrl, this.GetTableSpec)); }
public string Metadata() { return(ODataHandler.GetMetadataXmlV4(new TableSpec[] { tableSpec }, "Demo.Models")); }
public string Get() { return(ODataHandler.GetRootMetadataJsonV4(ODataMetadataUrl, new TableSpec[] { tableSpec })); }