public SqlTemplatesBenchmark()
    {
        var mappers = new MapperCollection();
        var factory = new FluentPocoDataFactory((type, iPocoDataFactory) => new PocoDataBuilder(type, mappers).Init(), mappers);

        SqlContext   = new SqlContext(new SqlServerSyntaxProvider(Options.Create(new GlobalSettings())), DatabaseType.SQLCe, factory);
        SqlTemplates = new SqlTemplates(SqlContext);
    }
        public void FluentConfigShouldBePlacedOnDatabaseWhenInsertedIntoFactoryConfig()
        {
            var db = new Database(new SqlConnection());
            var mapperCollection = new MapperCollection();
            var pocoDataFactory  = new FluentPocoDataFactory((y, f) => new PocoDataBuilder(y, mapperCollection).Init(), mapperCollection);
            var fluentConfig     = new FluentConfig(x => pocoDataFactory);

            var factory = DatabaseFactory.Config(x =>
            {
                x.UsingDatabase(() => db);
                x.WithFluentConfig(fluentConfig);
            });

            var database = factory.GetDatabase();

            Assert.AreEqual(fluentConfig.Config(null), database.PocoDataFactory);
        }
Exemple #3
0
        private void MockForGetPagedUsers()
        {
            Mock.Get(Current.SqlContext)
            .Setup(x => x.Query <IUser>())
            .Returns(new Query <IUser>(Current.SqlContext));

            var syntax = new SqlCeSyntaxProvider();

            Mock.Get(Current.SqlContext)
            .Setup(x => x.SqlSyntax)
            .Returns(syntax);

            var mappers = new MapperCollection(new []
            {
                new UserMapper()
            });

            Mock.Get(Current.SqlContext)
            .Setup(x => x.Mappers)
            .Returns(mappers);
        }
Exemple #4
0
        private void MockForGetPagedUsers()
        {
            Mock.Get(Current.SqlContext)
            .Setup(x => x.Query <IUser>())
            .Returns(new Query <IUser>(Current.SqlContext));

            var syntax = new SqlCeSyntaxProvider();

            Mock.Get(Current.SqlContext)
            .Setup(x => x.SqlSyntax)
            .Returns(syntax);

            var mappers = new MapperCollection(new []
            {
                new UserMapper(new Lazy <ISqlContext>(() => Current.SqlContext), new ConcurrentDictionary <Type, ConcurrentDictionary <string, string> >())
            });

            Mock.Get(Current.SqlContext)
            .Setup(x => x.Mappers)
            .Returns(mappers);
        }
Exemple #5
0
 public PocoDataBuilder(Type type, MapperCollection mapper)
 {
     Type = type;
     Mapper = mapper;
 }
Exemple #6
0
        private IEnumerable<PocoMemberPlan> GetPocoMembers(MapperCollection mapper, ColumnInfo[] columnInfos, List<MemberInfo> memberInfos, string prefix = null)
        {
            var capturedMembers = memberInfos.ToArray();
            var capturedPrefix = prefix;
            foreach (var columnInfo in columnInfos)
            {
                if (columnInfo.IgnoreColumn)
                    continue;

                var memberInfoType = columnInfo.MemberInfo.GetMemberInfoType();
                if (columnInfo.ReferenceType == ReferenceType.Many)
                {
                    var genericArguments = memberInfoType.GetGenericArguments();
                    memberInfoType = genericArguments.Any()
                        ? genericArguments.First()
                        : memberInfoType.GetTypeWithGenericTypeDefinitionOf(typeof(IList<>)).GetGenericArguments().First();
                }

                var childrenPlans = new PocoMemberPlan[0];
                TableInfoPlan childTableInfoPlan = null;
                var members = new List<MemberInfo>(capturedMembers) { columnInfo.MemberInfo };

                if (columnInfo.ComplexMapping || columnInfo.ReferenceType != ReferenceType.None)
                {
                    if (capturedMembers.GroupBy(x => x.GetMemberInfoType()).Any(x => x.Count() >= 2))
                    {
                        continue;
                    }

                    var childColumnInfos = GetColumnInfos(memberInfoType);

                    if (columnInfo.ReferenceType != ReferenceType.None)
                    {
                        childTableInfoPlan = GetTableInfo(memberInfoType, childColumnInfos, members);
                    }

                    var newPrefix = JoinStrings(capturedPrefix, columnInfo.ReferenceType != ReferenceType.None ? "" : (columnInfo.ComplexPrefix ?? columnInfo.MemberInfo.Name));

                    childrenPlans = GetPocoMembers(mapper, childColumnInfos, members, newPrefix).ToArray();
                }

                MemberInfo capturedMemberInfo = columnInfo.MemberInfo;
                ColumnInfo capturedColumnInfo = columnInfo;

                var accessors = GetMemberAccessors(members);
                var memberType = capturedMemberInfo.GetMemberInfoType();
                var isList = IsList(capturedMemberInfo);
                var listType = GetListType(memberType, isList);
                var isDynamic = capturedMemberInfo.IsDynamic();
                var fastCreate = GetFastCreate(memberType, mapper, isList, isDynamic);
                var columnName = GetColumnName(capturedPrefix, capturedColumnInfo.ColumnName ?? capturedMemberInfo.Name);
                var memberInfoData = new MemberInfoData(capturedMemberInfo);

                yield return tableInfo =>
                {
                    var pc = new PocoColumn
                    {
                        ReferenceType = capturedColumnInfo.ReferenceType,
                        TableInfo = tableInfo,
                        MemberInfoData = memberInfoData,
                        MemberInfoChain = members,
                        ColumnName = columnName,
                        ResultColumn = capturedColumnInfo.ResultColumn,
                        ForceToUtc = capturedColumnInfo.ForceToUtc,
                        ComputedColumn = capturedColumnInfo.ComputedColumn,
                        ComputedColumnType = capturedColumnInfo.ComputedColumnType,
                        ColumnType = capturedColumnInfo.ColumnType,
                        ColumnAlias = capturedColumnInfo.ColumnAlias,
                        VersionColumn = capturedColumnInfo.VersionColumn,
                        VersionColumnType = capturedColumnInfo.VersionColumnType,
                        SerializedColumn = capturedColumnInfo.SerializedColumn
                    };

                    pc.SetMemberAccessors(accessors);

                    var childrenTableInfo = childTableInfoPlan == null ? tableInfo : childTableInfoPlan();
                    var children = childrenPlans.Select(plan => plan(childrenTableInfo)).ToList();

                    // Cascade ResultColumn down
                    foreach (var child in children.Where(child => child.PocoColumn != null && pc.ResultColumn))
                    {
                        child.PocoColumn.ResultColumn = true;
                    }

                    var pocoMember = new PocoMember()
                    {
                        MemberInfoData = memberInfoData,
                        MemberInfoChain = members,
                        IsList = isList,
                        IsDynamic = isDynamic,
                        PocoColumn = capturedColumnInfo.ComplexMapping ? null : pc,
                        ReferenceType = capturedColumnInfo.ReferenceType,
                        ReferenceMemberName = capturedColumnInfo.ReferenceMemberName,
                        PocoMemberChildren = children,
                    };

                    pocoMember.SetMemberAccessor(accessors[accessors.Count - 1], fastCreate, listType);

                    return pocoMember;
                };
            }
        }
Exemple #7
0
 private static FastCreate GetFastCreate(Type memberType, MapperCollection mapperCollection, bool isList, bool isDynamic)
 {
     return memberType.IsAClass() || isDynamic
                ? (new FastCreate(isList
                     ? (memberType.GetGenericArguments().Any() ? memberType.GetGenericArguments().First() : memberType.GetTypeWithGenericTypeDefinitionOf(typeof(IList<>)).GetGenericArguments().First())
                     : memberType, mapperCollection))
                : null;
 }
Exemple #8
0
 public DynamicPocoMember(MapperCollection mapperCollection)
 {
     _mapperCollection = mapperCollection;
 }
 public UmbracoPocoDataBuilder(Type type, MapperCollection mapper, bool upgrading)
     : base(type, mapper)
 {
     _upgrading = upgrading;
 }
 public FluentMappingsPocoDataBuilder(Type type, Mappings mappings, MapperCollection mapper) :
     base(type, mapper)
 {
     _mappings = mappings;
 }
Exemple #11
0
 private static FastCreate GetFastCreate(Type memberType, MapperCollection mapperCollection, bool isList, bool isDynamic)
 {
     return memberType.IsAClass() || isDynamic
                ? (new FastCreate(isList
                     ? memberType.GetGenericArguments().First()
                     : memberType, mapperCollection))
                : null;
 }
Exemple #12
0
 public PocoDataFactory(MapperCollection mapper)
 {
     _mapper = mapper;
 }
Exemple #13
0
 public PocoData(Type type, MapperCollection mapper)
     : this()
 {
     Type = type;
     Mapper = mapper;
 }
        public async System.Threading.Tasks.Task GetCurrentUser_Fips()
        {
            ApiController CtrlFactory(HttpRequestMessage message, IUmbracoContextAccessor umbracoContextAccessor, UmbracoHelper helper)
            {
                //setup some mocks
                var userServiceMock = Mock.Get(Current.Services.UserService);

                userServiceMock.Setup(service => service.GetUserById(It.IsAny <int>()))
                .Returns(() => null);

                if (Thread.GetDomain().GetData(".appPath") != null)
                {
                    HttpContext.Current = new HttpContext(new SimpleWorkerRequest("", "", new StringWriter()));
                }
                else
                {
                    var baseDir = Current.IOHelper.MapPath("", false).TrimEnd(Current.IOHelper.DirSepChar);
                    HttpContext.Current = new HttpContext(new SimpleWorkerRequest("/", baseDir, "", "", new StringWriter()));
                }
                Current.IOHelper.ForceNotHosted = true;
                var usersController = new AuthenticationController(
                    Factory.GetInstance <IGlobalSettings>(),
                    umbracoContextAccessor,
                    Factory.GetInstance <ISqlContext>(),
                    Factory.GetInstance <ServiceContext>(),
                    Factory.GetInstance <AppCaches>(),
                    Factory.GetInstance <IProfilingLogger>(),
                    Factory.GetInstance <IRuntimeState>(),
                    helper);

                return(usersController);
            }

            Mock.Get(Current.SqlContext)
            .Setup(x => x.Query <IUser>())
            .Returns(new Query <IUser>(Current.SqlContext));

            var syntax = new SqlCeSyntaxProvider();

            Mock.Get(Current.SqlContext)
            .Setup(x => x.SqlSyntax)
            .Returns(syntax);

            var mappers = new MapperCollection(new[]
            {
                new UserMapper(new Lazy <ISqlContext>(() => Current.SqlContext), new ConcurrentDictionary <Type, ConcurrentDictionary <string, string> >())
            });

            Mock.Get(Current.SqlContext)
            .Setup(x => x.Mappers)
            .Returns(mappers);

            // Testing what happens if the system were configured to only use FIPS-compliant algorithms
            var typ               = typeof(CryptoConfig);
            var flds              = typ.GetFields(BindingFlags.Static | BindingFlags.NonPublic);
            var haveFld           = flds.FirstOrDefault(f => f.Name == "s_haveFipsAlgorithmPolicy");
            var isFld             = flds.FirstOrDefault(f => f.Name == "s_fipsAlgorithmPolicy");
            var originalFipsValue = CryptoConfig.AllowOnlyFipsAlgorithms;

            try
            {
                if (!originalFipsValue)
                {
                    haveFld.SetValue(null, true);
                    isFld.SetValue(null, true);
                }

                var runner   = new TestRunner(CtrlFactory);
                var response = await runner.Execute("Authentication", "GetCurrentUser", HttpMethod.Get);

                var obj = JsonConvert.DeserializeObject <UserDetail>(response.Item2);
                Assert.AreEqual(-1, obj.UserId);
            }
            finally
            {
                if (!originalFipsValue)
                {
                    haveFld.SetValue(null, false);
                    isFld.SetValue(null, false);
                }
            }
        }
Exemple #15
0
 /// <summary>
 ///     初始化一个<see cref="AppBootProgram" />实例
 /// </summary>
 public AppBootProgram()
 {
     _assemblyFinder   = new AssemblyFinder();
     ServiceCollection = new ServiceCollection();
     MapperCollection  = new MapperCollection();
 }
 public DynamicPocoMember(MapperCollection mapperCollection)
 {
     this._mapperCollection = mapperCollection;
 }
Exemple #17
0
 public FastCreate(Type type, MapperCollection mapperCollection)
 {
     _type = type;
     _mapperCollection = mapperCollection;
     CreateDelegate = GetCreateDelegate();
 }