Example #1
0
        public void UserRoleStoreInterface_AddToRoleAsync_AddsInstancesToCollectionProperties_ForBothSidesOfEntityRelationship()
        {
            var          entities = new Mock <IWriteEntities>(MockBehavior.Strict);
            var          instance = new SecurityStore(entities.Object) as IUserRoleStore <User, int>;
            const string roleName = "test";
            var          user     = new User();
            var          data     = new[]
            {
                new Permission {
                    Name = Guid.NewGuid().ToString()
                },
                new Permission {
                    Name = roleName
                },
                new Permission {
                    Name = Guid.NewGuid().ToString()
                },
            }.AsQueryable();
            var dbSet = new Mock <DbSet <Permission> >(MockBehavior.Strict).SetupDataAsync(data);

            entities.Setup(x => x.Get <Permission>()).Returns(dbSet.Object);

            instance.AddToRoleAsync(user, roleName).Wait();

            user.Permissions.ShouldContain(data.ElementAt(1));
            data.ElementAt(1).Users.ShouldContain(user);
        }
Example #2
0
        public void UserRoleStoreInterface_AddToRoleAsync_ThrowsInvalidOperation_WhenRoleNameDoesNotExist()
        {
            var          entities = new Mock <IWriteEntities>(MockBehavior.Strict);
            var          instance = new SecurityStore(entities.Object) as IUserRoleStore <User, int>;
            const string roleName = "test";
            var          data     = new[]
            {
                new Permission {
                    Name = Guid.NewGuid().ToString()
                },
                new Permission {
                    Name = Guid.NewGuid().ToString()
                },
                new Permission {
                    Name = Guid.NewGuid().ToString()
                },
            }.AsQueryable();
            var dbSet = new Mock <DbSet <Permission> >(MockBehavior.Strict).SetupDataAsync(data);

            entities.Setup(x => x.Get <Permission>()).Returns(dbSet.Object);
            var exception = Assert.Throws <InvalidOperationException>(() =>
                                                                      instance.AddToRoleAsync(new User(), roleName).GetAwaiter().GetResult());

            exception.ShouldNotBeNull();
            exception.Message.ShouldEqual(string.Format(Resources.Exception_InvalidOperation_DoesNotExist,
                                                        Permission.Constraints.Label, roleName));
        }
Example #3
0
        public void UserRoleStoreInterface_AddToRoleAsync_GivesUserPermission()
        {
            using (var dbContext = new EntityDbContext())
            {
                var user = new User {
                    Name = Guid.NewGuid().ToString()
                };
                var permission1 = new Permission {
                    Name = Guid.NewGuid().ToString()
                };
                var permission2 = new Permission {
                    Name = Guid.NewGuid().ToString()
                };
                var permission3 = new Permission {
                    Name = Guid.NewGuid().ToString()
                };
                dbContext.Create(user);
                dbContext.Create(permission1);
                dbContext.Create(permission2);
                dbContext.Create(permission3);
                dbContext.SaveChangesAsync().GetAwaiter().GetResult();

                var securityStore = new SecurityStore(dbContext);
                securityStore.AddToRoleAsync(user, permission2.Name).Wait();
                dbContext.SaveChangesAsync().Wait();

                user.Permissions.ShouldContain(permission2);
                permission2.Users.ShouldContain(user);
            }
        }
Example #4
0
        public void UserRoleStoreInterface_AddToRoleAsync_ThrowsArgumentNullException_WhenUserIsNull()
        {
            var instance  = new SecurityStore(null) as IUserRoleStore <User, int>;
            var exception = Assert.Throws <ArgumentNullException>(() =>
                                                                  instance.AddToRoleAsync(null, null).GetAwaiter().GetResult());

            exception.ShouldNotBeNull();
            exception.ParamName.ShouldEqual("user");
        }
Example #5
0
        public void UserRoleStoreInterface_AddToRoleAsync_ThrowsArgumentException_WhenRoleIsNullOrWhiteSpace(string roleName)
        {
            var instance  = new SecurityStore(null) as IUserRoleStore <User, int>;
            var exception = Assert.Throws <ArgumentException>(() =>
                                                              instance.AddToRoleAsync(new User(), roleName).GetAwaiter().GetResult());

            exception.ShouldNotBeNull();
            exception.ParamName.ShouldEqual("roleName");
            exception.Message.ShouldStartWith(Resources.Exception_Argument_CannotBeNullOrEmpty);
        }
Example #6
0
        public void UserRoleStoreInterface_AddToRoleAsync_ThrowsWhenDisposed()
        {
            var instance = new SecurityStore(null) as IUserRoleStore <User, int>;

            instance.Dispose();
            var exception = Assert.Throws <ObjectDisposedException>(() =>
                                                                    instance.AddToRoleAsync(null, null).GetAwaiter().GetResult());

            exception.ShouldNotBeNull();
            exception.ObjectName.ShouldEqual(instance.GetType().Name);
        }