예제 #1
0
        public UsuariosTest()
        {
            //Crear un nuevo contexto de trabajo con la BD
            this.myContext = new DataContext();

            //Generar el manejador de usuarios
            var store   = new UserStore <Usuario, Rol, string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>(this.myContext);
            var manager = new UserManager <Usuario, string>(store);

            //Generar nueva instancia del mapper
            var config = new AutoMapperBase().Mapper;

            //Lista de usuarios con los cuales trabajar para las pruebas
            users = new List <Usuario>
            {
                new Usuario
                {
                    Id                 = Guid.NewGuid().ToString(),
                    UserName           = "******",
                    Email              = "*****@*****.**",
                    TipoIdentificacion = new Parametro {
                        Categoria = "TIPO_ID", Codigo = "TI_CEDULA", ValorPrincipal = "CC"
                    },
                    NumeroIdentificacion = "123000",
                    Nombres   = "Andres",
                    Apellidos = "Cuellar",
                    Estado    = new Parametro {
                        Categoria = "ESTADO_USUARIO", Codigo = "EU_ACTIVO", ValorPrincipal = "A"
                    },
                    TipoUsuario = new Parametro {
                        Categoria = "TIPO_USUARIO", Codigo = "TU_NA", ValorPrincipal = "NA"
                    }
                }
            };

            //Configuración Moq
            this.myRepository = new Mock <IIdentityRepository>();

            this.myRepository.Setup(x => x.GetAll())
            .Returns(users.AsQueryable());

            this.myRepository.Setup(x => x.GetByEmail(It.IsAny <string>()))
            .Returns((string email) => users.Find(s => s.Email == email));

            this.myRepository.Setup(x => x.Create(It.IsAny <Usuario>(), It.IsAny <string>()))
            .Callback((Usuario user, string password) => users.Add(user));

            this.myRepository.Setup(x => x.Update(It.IsAny <Usuario>()))
            .Callback((Usuario user) => users[users.FindIndex(x => x.Id == user.Id)] = user);

            this.myRepository.Setup(x => x.Delete(It.IsAny <Usuario>()))
            .Callback((Usuario user) => users.RemoveAt(users.FindIndex(x => x.Id == user.Id)));

            //Generar repositorio de acceso para base de datos
            this.myService = new UsuariosService(this.myRepository.Object, config, new UserValidator <Usuario>(myManager), new PasswordHasher());
        }
예제 #2
0
        public static void Register(HttpConfiguration config)
        {
            //Unity DI
            var container = new UnityContainer();

            //Custom instances
            var mapper             = new AutoMapperBase().Mapper;
            var userManager        = new UserManager <Usuario>(new UserStore <Usuario>(new DataContext()));
            var userValidator      = new UserValidator <Usuario>(userManager);
            var identityRepository = new IdentityRepository(userManager);
            var hasher             = new PasswordHasher();

            //Register types
            container.RegisterType <IErrorHandler, ErrorHandler>(new HierarchicalLifetimeManager());
            container.RegisterType(typeof(IBaseRepository <>), typeof(BaseRepository <>));
            container.RegisterType(typeof(IBaseService <>), typeof(BaseService <>));
            container.RegisterType(typeof(IIdentityValidator <>), typeof(UserValidator <>));
            container.RegisterType(typeof(IUserStore <>), typeof(UserStore <>));
            container.RegisterType <IIdentityRepository, IdentityRepository>(new HierarchicalLifetimeManager());
            container.RegisterType <IPasswordHasher, PasswordHasher>(new HierarchicalLifetimeManager());
            container.RegisterType <IUsuariosService, UsuariosService>(new HierarchicalLifetimeManager());
            container.RegisterType <IUbicacionService, UbicacionService>(new HierarchicalLifetimeManager());
            container.RegisterType <IParametroService, ParametroService>(new HierarchicalLifetimeManager());
            container.RegisterType <ICitaService, CitaService>(new HierarchicalLifetimeManager());

            //Register instances
            container.RegisterInstance <IMapper>(mapper);
            container.RegisterInstance <IdentityRepository>(identityRepository);
            container.RegisterInstance <UserValidator <Usuario> >(new UserValidator <Usuario>(userManager));
            container.RegisterInstance <UsuariosService>(new UsuariosService(identityRepository, mapper, userValidator, hasher));

            config.DependencyResolver = new UnityResolver(container);

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );
        }