public void Delete(CswNbtResource Return, CswNbtAPIGenericRequest GenericRequest) { if (hasPermission(GenericRequest, Return)) { try { CswNbtNode DoomedNode = _CswNbtResources.Nodes.GetNode(GenericRequest.NodeId); if (null != DoomedNode && GenericRequest.MetaDataName == DoomedNode.getNodeType().NodeTypeName) { DoomedNode.delete(); Return.Status = HttpStatusCode.OK; } else { Return.Status = HttpStatusCode.NotFound; } } catch (Exception) { Return.Status = HttpStatusCode.InternalServerError; } } else { Return.Status = HttpStatusCode.Forbidden; } }
public CswNbtResource GetResource(string metadataname, string id) { CswNbtAPIGenericRequest Req = new CswNbtAPIGenericRequest(metadataname, id); CswNbtResource Ret = new CswNbtResource(); var SvcDriver = new CswWebSvcDriver <CswNbtResource, CswNbtAPIGenericRequest>( CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null), ReturnObj: Ret, WebSvcMethodPtr: CswNbtWebServiceREAD.GetResource, ParamObj: Req ); SvcDriver.run(); WebOperationContext ctx = WebOperationContext.Current; ctx.OutgoingResponse.StatusCode = Ret.Status; if (ctx.OutgoingResponse.StatusCode != HttpStatusCode.OK) { Ret = null; } return(Ret); }
public void TestResourceGET() { const string TestUsername = "******"; const string RoleName = "CISPro_Admin"; const int TestPageSize = 15; const string TestLanguage = "da"; CswNbtObjClassUser testUser = _createTestUser(TestUsername, RoleName, TestPageSize, TestLanguage); CswNbtResource Resource = new CswNbtResource(); CswNbtAPIGenericRequest Request = new CswNbtAPIGenericRequest("User", testUser.NodeId.PrimaryKey.ToString()); string error = string.Empty; try { CswNbtWebServiceREAD.GetResource(TestData.CswNbtResources, Resource, Request); } catch (Exception ex) { error = ex.Message; } Assert.IsEmpty(error, "GETing a resource failed with exception: " + error); //When CIS-53085 is finished, we may want to consider verifying the prop values at the top of this method is equal to the resource fetched }
public CswNbtResourceCollection GetCollection(string metadataname) { CswNbtAPIGenericRequest Req = new CswNbtAPIGenericRequest(metadataname, string.Empty); CswNbtResourceCollection Ret = new CswNbtResourceCollection(); Req.PropertyFilters = _Context.Request.QueryString; var SvcDriver = new CswWebSvcDriver <CswNbtResourceCollection, CswNbtAPIGenericRequest>( CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null), ReturnObj: Ret, WebSvcMethodPtr: CswNbtWebServiceREAD.GetCollection, ParamObj: Req ); SvcDriver.run(); WebOperationContext ctx = WebOperationContext.Current; ctx.OutgoingResponse.StatusCode = Ret.Status; if (ctx.OutgoingResponse.StatusCode != HttpStatusCode.OK) { Ret = null; } return(Ret); }
public void Create(CswNbtResource Return, CswNbtAPIGenericRequest GenericRequest) { if (hasPermission(GenericRequest, Return)) { try { CswNbtMetaDataNodeType NodeType = _CswNbtResources.MetaData.getNodeType(GenericRequest.MetaDataName); CswNbtNode NewNode = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(NodeType.NodeTypeId, IsTemp : GenericRequest.Properties.Count > 0, OnAfterMakeNode : delegate(CswNbtNode node) { foreach (CswNbtWcfProperty WcfProp in GenericRequest.Properties) { ReadPropertyData(node, WcfProp); } }); Return.NodeId = NewNode.NodeId; Return.NodeName = NewNode.NodeName; Return.NodeType = NewNode.getNodeType().NodeTypeName; Return.ObjectClass = NewNode.ObjClass.ObjectClass.ObjectClassName; Return.URI = BuildURI(NodeType.NodeTypeName, NewNode.NodeId.PrimaryKey); Return.PropertyData = GetPropertyData(NewNode); Return.Status = HttpStatusCode.Created; } catch (Exception) { Return.Status = HttpStatusCode.InternalServerError; } } else { Return.Status = HttpStatusCode.Forbidden; } }
public CswNbtResource Create(Collection <CswNbtWcfProperty> Properties, string metadataname) { CswNbtAPIGenericRequest Req = new CswNbtAPIGenericRequest(metadataname, string.Empty); CswNbtResource Ret = new CswNbtResource(); if (null != Properties) { Req.Properties = Properties; } var SvcDriver = new CswWebSvcDriver <CswNbtResource, CswNbtAPIGenericRequest>( CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null), ReturnObj: Ret, WebSvcMethodPtr: CswNbtWebServiceCREATE.Create, ParamObj: Req ); SvcDriver.run(); WebOperationContext ctx = WebOperationContext.Current; ctx.OutgoingResponse.StatusCode = Ret.Status; if (ctx.OutgoingResponse.StatusCode != HttpStatusCode.Created) { Ret = null; } return(Ret); }
public void TestCollectionGET() { const string RoleName = "CISPro_Admin"; const string TestUsername1 = "MyRestUser1"; const int TestPageSize1 = 15; const string TestLanguage1 = "da"; CswNbtObjClassUser testUser1 = _createTestUser(TestUsername1, RoleName, TestPageSize1, TestLanguage1); const string TestUsername2 = "MyRestUser2"; const int TestPageSize2 = 25; const string TestLanguage2 = "es"; CswNbtObjClassUser testUser2 = _createTestUser(TestUsername2, RoleName, TestPageSize2, TestLanguage2); CswNbtResourceCollection resourceCollection = new CswNbtResourceCollection(); CswNbtAPIGenericRequest request = new CswNbtAPIGenericRequest("User", string.Empty); string error = string.Empty; try { CswNbtWebServiceREAD.GetCollection(TestData.CswNbtResources, resourceCollection, request); } catch (Exception ex) { error = ex.Message; } Assert.IsEmpty(error, "GETing a collection failed with exception: " + error); bool Found1 = false; bool Found2 = false; foreach (CswNbtResource resource in resourceCollection.getEntities()) { if (resource.NodeId == testUser1.NodeId) { Found1 = true; } else if (resource.NodeId == testUser2.NodeId) { Found2 = true; } } Assert.IsTrue(Found1, "GETing Resource did not contain the first test user when it should have."); Assert.IsTrue(Found2, "GETing Resource did not contain the second test user when it should have."); }
public void Edit(CswNbtAPIReturn Return, CswNbtAPIGenericRequest GenericRequest) { if (hasPermission(GenericRequest, Return)) { try { CswNbtNode Node = _CswNbtResources.Nodes.GetNode(GenericRequest.NodeId); if (null != Node && GenericRequest.MetaDataName == Node.getNodeType().NodeTypeName) { if (null != GenericRequest.ResourceToUpdate) { foreach (string propKey in GenericRequest.ResourceToUpdate.PropertyData.properties.Keys) { CswNbtWcfProperty wcfProp = GenericRequest.ResourceToUpdate.PropertyData.properties[propKey]; ReadPropertyData(Node, wcfProp); } } if (Node.IsTemp) { Node.PromoteTempToReal(); } else { Node.postChanges(false); } } else { Return.Status = HttpStatusCode.NotFound; } } catch (Exception) { Return.Status = HttpStatusCode.InternalServerError; } } else { Return.Status = HttpStatusCode.Forbidden; } }
public void TestCreate() { CswNbtMetaDataNodeType UserNT = TestData.CswNbtResources.MetaData.getNodeType("User"); if (null == UserNT) { throw new CswDniException(CswEnumErrorType.Error, "Unable to create a test User for REST API unit tests - no User NT was found", "Could not find a user NT by name 'User'"); } CswNbtAPIGenericRequest Request = new CswNbtAPIGenericRequest("User", string.Empty); CswNbtResource CreatedResource = new CswNbtResource(); CswNbtWebServiceCREATE.Create(TestData.CswNbtResources, CreatedResource, Request); CswNbtObjClassUser createdUser = TestData.CswNbtResources.Nodes.GetNode(CreatedResource.NodeId); Assert.IsNotNull(createdUser, "Created User was null when fetching from CswNbtResources"); //When CIS-53088 is finished we should consider extending this to also add POST data to test creating the user with some property values }
public void GetCollection(CswNbtResourceCollection Return, CswNbtAPIGenericRequest GenericRequest) { if (hasPermission(GenericRequest, Return)) { try { CswNbtMetaDataNodeType NodeType = _CswNbtResources.MetaData.getNodeType(GenericRequest.MetaDataName); if (null != NodeType) { CswNbtView GetNodeTypeView = new CswNbtView(_CswNbtResources); GetNodeTypeView.AddViewRelationship(NodeType, false); ICswNbtTree tree = _CswNbtResources.Trees.getTreeFromView(GetNodeTypeView, true, false, false); for (int i = 0; i < tree.getChildNodeCount(); i++) { tree.goToNthChild(i); CswNbtNodeKey nodeKey = tree.getNodeKeyForCurrentPosition(); CswPrimaryKey nodeId = tree.getNodeIdForCurrentPosition(); CswNbtMetaDataObjectClass objectClass = _CswNbtResources.MetaData.getObjectClass(nodeKey.ObjectClassId); CswNbtMetaDataPropertySet propSet = objectClass.getPropertySet(); string propSetStr = string.Empty; if (null != propSet) { propSetStr = propSet.Name; } string nodeName = tree.getNodeNameForCurrentPosition(); Return.Add(nodeName, nodeId, NodeType.NodeTypeName, objectClass.ObjectClassName, propSetStr, BuildURI(NodeType.NodeTypeName, nodeKey.NodeId.PrimaryKey)); tree.goToParentNode(); } } else { Return.Status = HttpStatusCode.NotFound; } } catch (Exception) { Return.Status = HttpStatusCode.InternalServerError; } } }
public void TestDelete() { CswNbtObjClassUser TestUser = _createTestUser("TestDeleteUser1", "CISPro_Admin", 15, "en"); CswNbtAPIGenericRequest Request = new CswNbtAPIGenericRequest("User", TestUser.NodeId.PrimaryKey.ToString()); CswNbtResource EditedResource = new CswNbtResource(); string error = string.Empty; try { CswNbtWebServiceDELETE.Delete(TestData.CswNbtResources, EditedResource, Request); } catch (Exception ex) { error = ex.Message; } Assert.IsEmpty(error, "Delete failed with exception: " + error); CswNbtObjClassUser User = TestData.CswNbtResources.Nodes.GetNode(TestUser.NodeId); Assert.IsNull(User, "User was not null when it should have been"); }
public void Update(CswNbtResource ResourceToUpdate, string metadataname, string id) { WebOperationContext ctx = WebOperationContext.Current; CswNbtAPIReturn Ret = new CswNbtAPIReturn(); CswNbtAPIGenericRequest Req = new CswNbtAPIGenericRequest(metadataname, id); bool idsMatch = true; if (null != ResourceToUpdate) { Req.ResourceToUpdate = ResourceToUpdate; if (ResourceToUpdate.NodeId.PrimaryKey != Req.NodeId.PrimaryKey) { //if someone posts a different node with a different ID in the URI template that's a problem. ctx.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError; idsMatch = false; } } if (idsMatch) { var SvcDriver = new CswWebSvcDriver <CswNbtAPIReturn, CswNbtAPIGenericRequest>( CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null), ReturnObj: Ret, WebSvcMethodPtr: CswNbtWebServiceUPDATE.Edit, ParamObj: Req ); SvcDriver.run(); ctx.OutgoingResponse.StatusCode = Ret.Status; } if (ctx.OutgoingResponse.StatusCode != HttpStatusCode.OK) { Ret = null; } }
public void TestUpdate() { CswNbtObjClassUser TestUser = _createTestUser("Username1", "CISPro_Admin", 15, "en"); CswNbtAPIGenericRequest Request = new CswNbtAPIGenericRequest("User", TestUser.NodeId.PrimaryKey.ToString()); CswNbtResource FetchedResource = new CswNbtResource(); CswNbtWebServiceREAD.GetResource(TestData.CswNbtResources, FetchedResource, Request); CswNbtMetaDataNodeType UserNT = TestData.CswNbtResources.MetaData.getNodeType("User"); CswNbtMetaDataNodeTypeProp UserNameProp = UserNT.getNodeTypeProp("Username"); const string NewFirstName = "EditedFirstName"; FetchedResource.PropertyData.properties["First Name"].values["text"] = NewFirstName; CswNbtAPIGenericRequest EditRequest = new CswNbtAPIGenericRequest("User", TestUser.NodeId.PrimaryKey.ToString()) { ResourceToUpdate = FetchedResource }; CswNbtResource EditedResource = new CswNbtResource(); string error = string.Empty; try { CswNbtWebServiceUPDATE.Edit(TestData.CswNbtResources, EditedResource, EditRequest); } catch (Exception ex) { error = ex.Message; } Assert.IsEmpty(error, "Edit failed with the following exception: " + error); CswNbtObjClassUser EditedUser = TestData.CswNbtResources.Nodes.GetNode(TestUser.NodeId); Assert.AreEqual(EditedUser.FirstNameProperty.Text, NewFirstName, "Test first name did not have the same first name as the one supplied for the API EDIT request"); }
public void GetResource(CswNbtResource Return, CswNbtAPIGenericRequest GenericRequest) { if (hasPermission(GenericRequest, Return)) { try { CswNbtNode Node = _CswNbtResources.Nodes.GetNode(GenericRequest.NodeId); if (null != Node && GenericRequest.MetaDataName.ToLower() == Node.getNodeType().NodeTypeName.ToLower()) { Return.NodeId = GenericRequest.NodeId; Return.NodeName = Node.NodeName; Return.NodeType = Node.getNodeType().NodeTypeName; Return.ObjectClass = Node.ObjClass.ObjectClass.ObjectClassName; CswNbtMetaDataPropertySet propSet = Node.getObjectClass().getPropertySet(); if (null != propSet) { Return.PropertySet = propSet.Name; } Return.URI = BuildURI(Return.NodeType, Node.NodeId.PrimaryKey); Return.PropertyData = GetPropertyData(Node); } else { Return.Status = HttpStatusCode.NotFound; } } catch (Exception) { Return.Status = HttpStatusCode.InternalServerError; } } else { Return.Status = HttpStatusCode.Forbidden; } }
public static void Create(ICswResources CswResources, CswNbtResource Return, CswNbtAPIGenericRequest GenericRequest) { CswNbtWebServiceCREATE POST = new CswNbtWebServiceCREATE((CswNbtResources)CswResources); POST.Create(Return, GenericRequest); }
public static void Edit(ICswResources CswResources, CswNbtAPIReturn Return, CswNbtAPIGenericRequest GenericRequest) { CswNbtWebServiceUPDATE PUT = new CswNbtWebServiceUPDATE((CswNbtResources)CswResources); PUT.Edit(Return, GenericRequest); }
public static void Delete(ICswResources CswResources, CswNbtResource Return, CswNbtAPIGenericRequest GenericRequest) { CswNbtWebServiceDELETE POST = new CswNbtWebServiceDELETE((CswNbtResources)CswResources); POST.Delete(Return, GenericRequest); }
protected abstract bool hasPermission(CswNbtAPIGenericRequest GenericRequest, CswNbtAPIReturn Return);
public static void GetCollection(ICswResources CswResources, CswNbtResourceCollection Return, CswNbtAPIGenericRequest GenericRequest) { CswNbtWebServiceREAD GET = new CswNbtWebServiceREAD((CswNbtResources)CswResources); GET.GetCollection(Return, GenericRequest); }
/// <summary> /// Based on the input, verifies if the user has permission to continue /// </summary> public bool hasPermission(CswNbtResources NbtResources, CswEnumNbtNodeTypePermission Permission, CswNbtAPIGenericRequest GenericRequest, CswNbtAPIReturn Return) { bool ret = false; CswNbtMetaDataNodeType NodeType = NbtResources.MetaData.getNodeType(GenericRequest.MetaDataName); if (null != NodeType) { if (NbtResources.Permit.canAnyTab(Permission, NodeType, User: NbtResources.CurrentNbtUser)) { ret = true; } else { Return.Status = Return.Status = HttpStatusCode.Forbidden; //Permission denied } } else { Return.Status = Return.Status = HttpStatusCode.NotFound; } return(ret); }
protected override bool hasPermission(CswNbtAPIGenericRequest GenericRequest, CswNbtAPIReturn Return) { return(base.hasPermission(_CswNbtResources, CswEnumNbtNodeTypePermission.Delete, GenericRequest, Return)); }
protected override bool hasPermission(CswNbtAPIGenericRequest GenericRequest, CswNbtAPIReturn Return) { return(true); //TODO: search permissions? }