Example #1
0
 public void CanAuthorizeAgainstAType()
 {
     UserPermission user = new UserPermission();
     Create createAction = new Create();
     createAction.AddSubject(typeof(AddressModel));
     user.AddAuthorization(createAction);
     Assert.IsTrue(createAction.AppliesTo(typeof(AddressModel)));
     bool? canCreate = user.Can(Actions.Create, typeof(AddressModel));
     Assert.IsTrue(canCreate == true);
 }
Example #2
0
        public void AuthorizingAgainstTheTypeGivesAuthorityForAllInstances()
        {
            UserPermission user = new UserPermission();
            Update updateAction = new Update();
            AddressModel address = new AddressModel();

            updateAction.AddSubject(typeof(AddressModel));
            user.AddAuthorization(updateAction);
            Assert.IsTrue(updateAction.AppliesTo(address));
            bool? canUpdate = user.Can(Actions.Update, address);
            Assert.IsTrue(canUpdate == true);
        }
Example #3
0
        public void CanAuthorizedAgainstAnInstance()
        {
            UserPermission user = new UserPermission();
            AddressModel address = new AddressModel();
            Update updateAction = new Update(address);
            user.AddAuthorization(updateAction);

            bool? canUpdate = user.Can(Actions.Update, address);
            Assert.IsTrue(canUpdate == true);

            AddressModel differentAddress = new AddressModel();
            canUpdate = user.Can(Actions.Update, differentAddress);
            Assert.IsTrue(canUpdate == false);
            canUpdate = user.Can(Actions.Update, typeof(AddressModel));
            Assert.IsTrue(canUpdate == false);
        }
Example #4
0
        public void CanAuthorizedAgainstAnInstanceButNotAgainstAnotherInstance()
        {
            UserPermission user = new UserPermission();
            AddressModel address = new AddressModel();
            Create createAction = new Create();
            createAction.AddSubject(address);

            user.AddAuthorization(createAction);

            bool? canUpdate = user.Can(Actions.Create, address);
            Assert.IsTrue(canUpdate == true);

            AddressModel secondAddress = new AddressModel();
            canUpdate = user.Can(Actions.Create, secondAddress);
            Assert.IsTrue(canUpdate == false);
        }
Example #5
0
 public void UncertainWithoutAnyIndication()
 {
     UserPermission user = new UserPermission();
     bool? canCreate = user.Can(Actions.Create, typeof(AddressModel));
     Assert.IsNull(canCreate);
 }
Example #6
0
        public void UnauthorizedAgainstTheTypePreventsAuthorizationForAllInstances()
        {
            // If we are unauthorized against a type,
            // then even if we authorize against an instance
            // we are not authorized
            UserPermission user = new UserPermission();
            Update updateAction = new Update(typeof(AddressModel));
            AddressModel address = new AddressModel();

            user.AddUnauthorization(updateAction);
            Assert.IsTrue(updateAction.AppliesTo(address));
            bool? canUpdate = user.Can(Actions.Update, address);
            Assert.IsTrue(canUpdate == false);

            // now authorize against an instance

            Update authorizeInstanceUpdateAction = new Update();

            authorizeInstanceUpdateAction.AddSubject(address);
            user.AddAuthorization(authorizeInstanceUpdateAction);
            canUpdate = user.Can(Actions.Update, address);
            Assert.IsTrue(canUpdate == false);
        }
Example #7
0
 public void UnauthorizedDominatesOverAuthorized()
 {
     UserPermission user = new UserPermission();
     user.AddUnauthorization(Actions.Create);
     user.AddAuthorization(Actions.Create);
     bool? canCreate = user.Can(Actions.Create, typeof(AddressModel));
     Assert.IsTrue(canCreate == false);
 }
Example #8
0
 public void TestUserCanDoAnything()
 {
     UserPermission user = new UserPermission();
     user.AddAuthorization(Actions.Manage);
     bool? canCreate = user.Can(Actions.Create, typeof(AddressModel));
     Assert.IsTrue(canCreate == true);
     canCreate = user.Can(Actions.Delete, typeof(AddressModel));
     Assert.IsTrue(canCreate == true);
 }
Example #9
0
 public void TestNotCertainIfCanCreate()
 {
     UserPermission user = new UserPermission();
     bool? canCreate = user.Can(Actions.Create, typeof(AddressModel));
     Assert.IsTrue(canCreate == null);
 }
Example #10
0
 public void TestCannotCreateAnything()
 {
     UserPermission user = new UserPermission();
     user.AddUnauthorization(Actions.Create);
     bool? canCreate = user.Can(Actions.Create, typeof(AddressModel));
     Assert.IsTrue(canCreate == false);
 }
Example #11
0
        public void ManagingActionIsUnionOfAllActions()
        {
            // When we have a Manage Action,
            // we can do all actions
            UserPermission user = new UserPermission();
            Manage manageAction = new Manage();
            AddressModel address = new AddressModel();

            user.AddAuthorization(manageAction);
            Assert.IsTrue(manageAction.AppliesTo(address));

            bool? canUpdate = user.Can(Actions.Update, address);
            Assert.IsTrue(canUpdate == true);
        }
Example #12
0
        public void GetAuthorizationsForPersistance()
        {
            UserPermission user = new UserPermission();
            Create createAction = new Create(typeof(AddressModel));
            user.AddAuthorization(createAction);

            JsonSerializerSettings settings = new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.All,
                Formatting = Formatting.Indented
            };
            string serialized = JsonConvert.SerializeObject(user, settings);
            UserPermission deserializedUser = JsonConvert.DeserializeObject<UserPermission>(serialized, settings);

            // Now make sure deserialized object has same behaviour
            Assert.IsTrue(user.Can(Actions.Create, typeof(AddressModel)) == true);
            Assert.IsTrue(deserializedUser.Can(Actions.Create, typeof(AddressModel)) == true);
        }