public void PostJobForUserWithCreatePermissionCreatesJobAndReturnsCreated() { Job createdJob = null; Mock.Arrange(() => ODataControllerHelper.ResponseCreated( Arg.IsAny <ODataController>(), Arg.IsAny <Job>(), Arg.IsAny <String>())).Returns(new HttpResponseMessage(HttpStatusCode.Created)); Mock.Arrange(() => CurrentUserDataProvider.GetIdentity(TENANT_ID)) .Returns(new Identity { Permissions = new List <String> { JOB_CREATE_PERMISSION }, Username = CURRENT_USER_ID, Tid = TENANT_ID }) .MustBeCalled(); Mock.Arrange(() => _lifeCycleContext.Jobs.Add(Arg.IsAny <Job>())) .IgnoreInstance() .DoInstead((Job j) => createdJob = j) .Returns((Job j) => j) .MustBeCalled(); Mock.Arrange(() => _lifeCycleContext.SaveChanges()) .IgnoreInstance() .MustBeCalled(); var actionResult = _jobsController.Post( new Job { Id = 1, CreatedBy = ANOTHER_USER_ID, Modified = DateTimeOffset.Now, ModifiedBy = CURRENT_USER_ID, Tid = TENANT_ID, Type = "Test", State = JobStateEnum.Running.ToString(), Parameters = SAMPLE_PARAMETERS, Token = SAMPLE_TOKEN, TenantId = ANOTHER_TENANT_ID }).Result; Assert.AreEqual(CURRENT_USER_ID, createdJob.CreatedBy); Assert.AreEqual(DateTimeOffset.Now.Date, createdJob.Created.Date); Assert.IsNull(createdJob.ModifiedBy); Assert.AreEqual(TENANT_ID, createdJob.Tid); Assert.AreEqual(JobStateEnum.Running.ToString(), createdJob.State); Assert.AreEqual("Test", createdJob.Type); Assert.AreEqual(SAMPLE_PARAMETERS, createdJob.Parameters); Assert.AreEqual(ANOTHER_TENANT_ID, createdJob.TenantId); Assert.IsTrue(actionResult.GetType() == typeof(ResponseMessageResult)); var response = actionResult as ResponseMessageResult; Assert.AreEqual(HttpStatusCode.Created, response.Response.StatusCode); Mock.Assert(() => CurrentUserDataProvider.GetIdentity(TENANT_ID)); Mock.Assert(_lifeCycleContext); }
public void PostCalloutDefinitionForUserWithCreatePermissionCreatesCalloutDefinitionAndReturnsCreated() { CalloutDefinition createdCalloutDefinition = null; Mock.Arrange(() => ODataControllerHelper.ResponseCreated( Arg.IsAny <ODataController>(), Arg.IsAny <CalloutDefinition>(), Arg.IsAny <String>())).Returns(new HttpResponseMessage(HttpStatusCode.Created)); Mock.Arrange(() => CurrentUserDataProvider.GetIdentity(TENANT_ID)) .Returns(new Identity { Permissions = new List <String> { CALLOUT_DEFINITION_CREATE_PERMISSION }, Username = CURRENT_USER_ID, Tid = TENANT_ID }) .MustBeCalled(); Mock.Arrange(() => _lifeCycleContext.CalloutDefinitions.Add(Arg.IsAny <CalloutDefinition>())) .IgnoreInstance() .DoInstead((CalloutDefinition j) => createdCalloutDefinition = j) .Returns((CalloutDefinition j) => j) .MustBeCalled(); Mock.Arrange(() => _lifeCycleContext.SaveChanges()) .IgnoreInstance() .MustBeCalled(); var actionResult = _calloutDefinitionsController.Post( new CalloutDefinition { Id = 1, CreatedBy = ANOTHER_USER_ID, Modified = DateTimeOffset.Now, Tid = ANOTHER_TENANT_ID, ModifiedBy = CURRENT_USER_ID, EntityType = SAMPLE_ENTITY_TYPE, EntityId = ENTITY_ID_1, TenantId = TENANT_ID, Parameters = "testparameters" }).Result; Assert.AreEqual(CURRENT_USER_ID, createdCalloutDefinition.CreatedBy); Assert.AreEqual(DateTimeOffset.Now.Date, createdCalloutDefinition.Created.Date); Assert.IsNull(createdCalloutDefinition.ModifiedBy); Assert.AreEqual(TENANT_ID, createdCalloutDefinition.Tid); Assert.AreEqual(SAMPLE_ENTITY_TYPE, createdCalloutDefinition.EntityType); Assert.AreEqual(ENTITY_ID_1, createdCalloutDefinition.EntityId); Assert.AreEqual(TENANT_ID, createdCalloutDefinition.TenantId); Assert.AreEqual("testparameters", createdCalloutDefinition.Parameters); Assert.IsTrue(actionResult.GetType() == typeof(ResponseMessageResult)); var response = actionResult as ResponseMessageResult; Assert.AreEqual(HttpStatusCode.Created, response.Response.StatusCode); Mock.Assert(() => CurrentUserDataProvider.GetIdentity(TENANT_ID)); Mock.Assert(_lifeCycleContext); }
// POST: api/Core.svc/Jobs public async Task <IHttpActionResult> Post(Job job) { var declaringType = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType; var fn = String.Format("{0}:{1}", declaringType.Namespace, declaringType.Name); if (!ModelState.IsValid) { Debug.WriteLine("Job to be created has invalid ModelState."); return(BadRequest(ModelState)); } try { Debug.WriteLine(fn); var identity = CurrentUserDataProvider.GetIdentity(TenantId); var permissionId = CreatePermissionId("CanCreate"); if (!identity.Permissions.Contains(permissionId)) { return(StatusCode(HttpStatusCode.Forbidden)); } if (null == job) { var errorMsg = "Job to be created contains invalid data."; Debug.WriteLine(errorMsg); return(BadRequest(errorMsg)); } Debug.WriteLine("Saving new job..."); var jobEntity = new Job() { Created = DateTimeOffset.Now, CreatedBy = identity.Username, Tid = identity.Tid, Type = null == job.Type ? "Default" : job.Type, State = job.State, Parameters = job.Parameters, ReferencedItemId = job.ReferencedItemId, Token = job.Token, TenantId = job.TenantId }; jobEntity = db.Jobs.Add(jobEntity); db.SaveChanges(); Debug.WriteLine("Saved job with id '{0}'", jobEntity.Id); return(ResponseMessage(ODataControllerHelper.ResponseCreated(this, jobEntity))); } catch (Exception e) { Debug.WriteLine(String.Format("{0}: {1}\r\n{2}", e.Source, e.Message, e.StackTrace)); throw; } }
public void DoResponseAcceptedForControllerNotContainingControllerValueInRouteDataThrowsODataErrorException() { controller = Mock.Create <ODataController>(); Mock.Arrange(() => controller.ControllerContext.RouteData.Values.ContainsKey("controller")) .Returns(false) .MustBeCalled(); Mock.Assert(controller); ODataControllerHelper.ResponseAccepted(controller, new BaseEntity(1)); }
// POST: api/Core.svc/CalloutDefinitions public async Task <IHttpActionResult> Post(CalloutDefinition calloutDefinition) { var declaringType = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType; var fn = String.Format("{0}:{1}", declaringType.Namespace, declaringType.Name); if (!ModelState.IsValid) { Debug.WriteLine("CalloutDefinition to be created has invalid ModelState."); return(BadRequest(ModelState)); } try { Debug.WriteLine(fn); var identity = CurrentUserDataProvider.GetIdentity(TenantId); var permissionId = CreatePermissionId("CanCreate"); if (!identity.Permissions.Contains(permissionId)) { return(StatusCode(HttpStatusCode.Forbidden)); } if (null == calloutDefinition) { var errorMsg = "CalloutDefinition to be created contains invalid data."; Debug.WriteLine(errorMsg); return(BadRequest(errorMsg)); } Debug.WriteLine("Saving new CalloutDefinition..."); var calloutDefinitionEntity = new CalloutDefinition() { Created = DateTimeOffset.Now, CreatedBy = identity.Username, CalloutType = calloutDefinition.CalloutType, Tid = identity.Tid, TenantId = calloutDefinition.TenantId, EntityType = calloutDefinition.EntityType, EntityId = calloutDefinition.EntityId, Condition = calloutDefinition.Condition, Parameters = calloutDefinition.Parameters }; calloutDefinitionEntity = db.CalloutDefinitions.Add(calloutDefinitionEntity); db.SaveChanges(); Debug.WriteLine("Saved CalloutDefinition with id '{0}'", calloutDefinitionEntity.Id); return(ResponseMessage(ODataControllerHelper.ResponseCreated(this, calloutDefinitionEntity))); } catch (Exception e) { Debug.WriteLine(String.Format("{0}: {1}\r\n{2}", e.Source, e.Message, e.StackTrace)); throw; } }
public void PostStateChangeLockForUserWithCreatePermissionCreatesEntityAndReturnsCreated() { StateChangeLock createdEntity = null; Mock.Arrange(() => ODataControllerHelper.ResponseCreated( Arg.IsAny <ODataController>(), Arg.IsAny <StateChangeLock>(), Arg.IsAny <String>())).Returns(new HttpResponseMessage(HttpStatusCode.Created)); Mock.Arrange(() => CurrentUserDataProvider.GetIdentity(TENANT_ID)) .Returns(new Identity { Permissions = new List <String> { STATE_CHANGE_LOCK_CREATE_PERMISSION }, Username = CURRENT_USER_ID, Tid = TENANT_ID }) .MustBeCalled(); Mock.Arrange(() => _lifeCycleContext.StateChangeLocks.Add(Arg.IsAny <StateChangeLock>())) .IgnoreInstance() .DoInstead((StateChangeLock j) => createdEntity = j) .Returns((j) => j) .MustBeCalled(); Mock.Arrange(() => _lifeCycleContext.SaveChanges()) .IgnoreInstance() .MustBeCalled(); var actionResult = _stateChangeLocksController.Post( new StateChangeLock { Id = 1, CreatedBy = ANOTHER_USER_ID, Modified = DateTimeOffset.Now, ModifiedBy = CURRENT_USER_ID, Tid = ANOTHER_TENANT_ID, EntityId = ENTITY_ID }).Result; Assert.AreEqual(CURRENT_USER_ID, createdEntity.CreatedBy); Assert.AreEqual(DateTimeOffset.Now.Date, createdEntity.Created.Date); Assert.IsNull(createdEntity.ModifiedBy); Assert.AreEqual(TENANT_ID, createdEntity.Tid); Assert.AreEqual(ENTITY_ID, createdEntity.EntityId); Assert.AreNotEqual(1, createdEntity.Id); Assert.IsTrue(actionResult.GetType() == typeof(ResponseMessageResult)); var response = actionResult as ResponseMessageResult; Assert.AreEqual(HttpStatusCode.Created, response.Response.StatusCode); Mock.Assert(() => CurrentUserDataProvider.GetIdentity(TENANT_ID)); Mock.Assert(_lifeCycleContext); }
public void DoResponseCreatedReturnsHttpResponseMessageWithStatusCreated() { controller = Mock.Create <ODataController>(); Mock.Arrange(() => controller.Request).Returns(httpRequestMessage).MustBeCalled(); Mock.Arrange(() => controller.ControllerContext.RouteData.Values.ContainsKey("controller")) .Returns(true) .MustBeCalled(); Mock.Arrange(() => controller.ControllerContext.RouteData.Values["controller"]) .Returns("test") .MustBeCalled(); Mock.Arrange(() => controller.Url.CreateODataLink(Arg.IsAny <string>(), Arg.IsAny <IODataPathHandler>(), Arg.IsAny <IList <ODataPathSegment> >())) .Returns(ODATA_LINK).MustBeCalled(); var response = ODataControllerHelper.ResponseCreated(controller, new BaseEntity(1)); Assert.AreEqual(HttpStatusCode.Created, response.StatusCode); Mock.Assert(controller); }
public void DoResponseAcceptedReturnsHttpResponseMessageWithLocationSetInHeaders() { controller = Mock.Create <ODataController>(); Mock.Arrange(() => controller.Request) .Returns(httpRequestMessage) .MustBeCalled(); Mock.Arrange(() => controller.ControllerContext.RouteData.Values.ContainsKey("controller")) .Returns(true) .MustBeCalled(); Mock.Arrange(() => controller.ControllerContext.RouteData.Values["controller"]) .Returns("test") .MustBeCalled(); Mock.Arrange(() => controller.Url.CreateODataLink(Arg.IsAny <string>(), Arg.IsAny <IODataPathHandler>(), Arg.IsAny <IList <ODataPathSegment> >())) .Returns(ODATA_LINK) .MustBeCalled(); var response = ODataControllerHelper.ResponseAccepted(controller, new BaseEntity(1)); Assert.IsNotNull(response.Headers.Location); Assert.AreEqual(ODATA_LINK, response.Headers.Location.ToString()); Mock.Assert(controller); }