示例#1
0
            IEnumerable <Cci.IMethodDefinition> Cci.ITypeDefinition.GetMethods(EmitContext context)
            {
                if (_lazyMethods.IsDefault)
                {
                    Debug.Assert(TypeManager.IsFrozen);

                    var builder = ArrayBuilder <Cci.IMethodDefinition> .GetInstance();

                    int gapIndex = 1;
                    int gapSize  = 0;

                    foreach (var method in GetMethodsToEmit())
                    {
                        if ((object)method != null)
                        {
                            TEmbeddedMethod embedded;

                            if (TypeManager.EmbeddedMethodsMap.TryGetValue(method, out embedded))
                            {
                                if (gapSize > 0)
                                {
                                    builder.Add(
                                        new VtblGap(
                                            this,
                                            ModuleExtensions.GetVTableGapName(gapIndex, gapSize)
                                            )
                                        );
                                    gapIndex++;
                                    gapSize = 0;
                                }

                                builder.Add(embedded);
                            }
                            else
                            {
                                gapSize++;
                            }
                        }
                        else
                        {
                            gapSize++;
                        }
                    }

                    ImmutableInterlocked.InterlockedInitialize(
                        ref _lazyMethods,
                        builder.ToImmutableAndFree()
                        );
                }

                return(_lazyMethods);
            }
示例#2
0
        public void ItShouldFindTestModule()
        {
            ImmutableArray <OrderedModuleRegistration> registrations = ModuleExtensions.GetModules(
                new[] { GetType().Assembly },
                Array.Empty <Type>(),
                new NoConfiguration());

            Assert.NotEmpty(registrations);
            Assert.Contains(
                registrations,
                orderedModuleRegistration =>
                orderedModuleRegistration.ModuleRegistration.ModuleType == typeof(TestModule));
        }
示例#3
0
        public void ShouldRegisterInRootScopeFalse()
        {
            ImmutableArray <OrderedModuleRegistration> registrations = ModuleExtensions.GetModules(
                new[] { GetType().Assembly },
                Array.Empty <Type>(),
                new NoConfiguration());

            OrderedModuleRegistration orderedModuleRegistration =
                registrations.SingleOrDefault(moduleRegistration =>
                                              moduleRegistration.ModuleRegistration.ModuleType == typeof(SimpleNoOpTestModule));

            Assert.False(orderedModuleRegistration?.ModuleRegistration?.RegisterInRootScope);
        }
示例#4
0
        public void ShouldBeFound()
        {
            ImmutableArray <OrderedModuleRegistration> registrations = ModuleExtensions.GetModules(
                new[] { GetType().Assembly },
                Array.Empty <Type>(),
                new NoConfiguration());

            OrderedModuleRegistration orderedModuleRegistration =
                registrations.SingleOrDefault(moduleRegistration =>
                                              moduleRegistration.ModuleRegistration.ModuleType == typeof(SimpleNoOpTestModule));

            Assert.NotNull(orderedModuleRegistration);
        }
示例#5
0
        public void ShouldBeFound()
        {
            ImmutableArray <OrderedModuleRegistration> registrations = ModuleExtensions.GetModules(
                new[] { GetType().Assembly },
                Array.Empty <Type>(),
                new NoConfiguration());

            OrderedModuleRegistration orderedModuleRegistration =
                registrations.SingleOrDefault(moduleRegistration =>
                                              moduleRegistration.ModuleRegistration.ModuleType == typeof(NoOpTestModule));

            Assert.Equal(37, orderedModuleRegistration?.ModuleRegistration?.Order);
            Assert.Equal(Scope.AspNetCoreScope, orderedModuleRegistration?.ModuleRegistration?.Tag);
            Assert.True(orderedModuleRegistration?.ModuleRegistration?.RegisterInRootScope);
        }
示例#6
0
        public void ItShouldInstantiateModule()
        {
            var nameValueCollection = new NameValueCollection
            {
                { nameof(NoOpTestModule.MeaningOfLife), "42" }
            };

            ImmutableArray <OrderedModuleRegistration> registrations = ModuleExtensions.GetModules(
                new[] { GetType().Assembly },
                Array.Empty <Type>(),
                new InMemoryKeyValueConfiguration(nameValueCollection));

            OrderedModuleRegistration orderedModuleRegistration =
                registrations.SingleOrDefault(moduleRegistration =>
                                              moduleRegistration.ModuleRegistration.ModuleType == typeof(NoOpTestModule));

            Assert.NotNull(orderedModuleRegistration);

            var module = orderedModuleRegistration.Module as NoOpTestModule;

            Assert.NotNull(module);

            Assert.Equal("42", module.MeaningOfLife);
        }
 public static TModel Bind <TModel>(this NancyModule module, BindingConfig configuration, params Expression <Func <TModel, object> >[] blacklistedProperties)
 {
     if (module == null)
     {
         throw new ArgumentNullException(nameof(module));
     }
     try {
         if ((configuration == null) && (blacklistedProperties == null))
         {
             return(ModuleExtensions.Bind <TModel>(module));
         }
         if ((configuration != null) && (blacklistedProperties == null))
         {
             return(ModuleExtensions.Bind <TModel>(module, configuration));
         }
         return(configuration == null
   ? ModuleExtensions.Bind(module, blacklistedProperties)
   : ModuleExtensions.Bind(module, configuration, blacklistedProperties));
     } catch (ModelBindingException) {
         throw;
     } catch (Exception ex) {
         throw new ModelBindingException(typeof(TModel), null, ex);
     }
 }
示例#8
0
 public void ShouldThrow_WhenDependsModuleNotImplementModule()
 {
     Assert.Throws <ModuleInitializeException>(() => ModuleExtensions.GetModulesRecursively(typeof(FailModule)));
 }
示例#9
0
        public void ShouldAddUniqueModules_WhenModulesReferenceDuplicate()
        {
            var modulesList = ModuleExtensions.GetModulesRecursively(typeof(ModuleWithDupes));

            Assert.Equal(3, modulesList.Length);
        }
示例#10
0
        public LoginModule(IUserRepository userRepository)
        {
            _user  = userRepository;
            Apikey = ConfigurationManager.AppSettings["JanrainKey"];

            Post["/login/token"] = x =>
            {
                if (string.IsNullOrWhiteSpace(Request.Form.token))
                {
                    return
                        (View["Login/Error",
                              new
                              {
                                  Title = Strings.LoginModule_LoginError,
                                  Message = Strings.LoginModule_BadResponse_NoToken
                              }]);
                }

                var response = new WebClient().DownloadString(string.Format("https://rpxnow.com/api/v2/auth_info?apiKey={0}&token={1}", Apikey, Request.Form.token));

                if (string.IsNullOrWhiteSpace(response))
                {
                    return
                        (View["Login/Error",
                              new
                              {
                                  Title = Strings.LoginModule_LoginError,
                                  Message = Strings.LoginModule_BadResponse_NoUser
                              }]);
                }

                var j = JsonConvert.DeserializeObject <dynamic>(response);

                if (j.stat.ToString() != "ok")
                {
                    return
                        (View["Login/Error",
                              new
                              {
                                  Title = Strings.LoginModule_LoginError,
                                  Message = Strings.LoginModule_BadResponse
                              }]);
                }

                var    userIdentity = j.profile.identifier.ToString();
                var    username     = j.profile.preferredUsername.ToString();
                string email        = string.Empty;
                if (j.profile.email != null)
                {
                    email = j.profile.email.ToString();
                }
                var user = _user.GetUserFromUserIdentity(userIdentity);

                if (user == null)
                {
                    var u = new User
                    {
                        Id       = Guid.NewGuid(),
                        Identity = userIdentity,
                        UserName = (!string.IsNullOrEmpty(username)) ? username : "******" + _user.GetAll().Count(),
                        Email    = (!string.IsNullOrEmpty(email)) ? email : "*****@*****.**",
                        Github   = (!string.IsNullOrEmpty(username)) ? username : "",
                        IsActive = true,
                    };

                    if (!_user.GetAll().Any())
                    {
                        _user.AddRole(u, "Admin");
                    }

                    if (j.profile.photo != null)
                    {
                        u.AvatarUrl = j.profile.photo.ToString();
                    }

                    _user.Add(u);
                    return(this.LoginAndRedirect(u.Id, DateTime.Now.AddDays(1), "/profile/edit"));
                }

                return(ModuleExtensions.Login(this, user.Id, DateTime.Now.AddDays(1), "/"));
            };

            Get["/logout/"] = parameters => this.LogoutAndRedirect("/");
        }