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);
        }
Ejemplo n.º 3
0
        // 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));
        }
Ejemplo n.º 5
0
        // 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;
            }
        }
Ejemplo n.º 6
0
        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);
        }