public bool HostDomainIsAuthorized()
        {
            IRequest request = HttpContext?.Request;
            string   host    = request.Url?.Host;
            int      port    = (request?.Url?.Port).Value;

            Bam.Net.CoreServices.ApplicationRegistration.Data.Application app = GetServerApplicationOrDie();
            if (app.HostDomains.Count > 0)
            {
                HostDomain hd = app.HostDomains.Where(h => h.DomainName.Equals(host) && h.Port.Equals(port)).FirstOrDefault();
                return(hd == null ? false : hd.Authorized);
            }
            else
            {
                HostDomain hd = new HostDomain
                {
                    Authorized             = true,
                    DomainName             = host,
                    DefaultApplicationName = app.Name,
                    Port = port
                };
                app.HostDomains.Add(hd);
                Task.Run(() => ApplicationRegistrationRepository.Save(app));
                return(true);
            }
        }
예제 #2
0
        private CoreConfigurationService GetTestCoreConfigurationService(string testName)
        {
            string   appName           = $"{testName}_TestAppName";
            string   userDbPath        = $".\\{testName}_Test";
            string   configurationName = $"{testName}_TestConfigName";
            string   testUserName      = $"{testName}_TestUserName";
            Database userDb            = new SQLiteDatabase(testName);
            ApplicationRegistrationRepository coreRepo = new ApplicationRegistrationRepository();

            coreRepo.Database = new SQLiteDatabase($"{testName}_coredb");
            userDb.TryEnsureSchema <UserAccounts.Data.User>();
            Db.For <UserAccounts.Data.User>(userDb);

            CoreConfigurationService configSvc = new CoreConfigurationService(coreRepo, new Server.AppConf(), userDbPath);

            configSvc.DaoRepository = coreRepo;
            IApplicationNameProvider appNameProvider = Substitute.For <IApplicationNameProvider>();

            appNameProvider.GetApplicationName().Returns(appName);
            configSvc.ApplicationNameProvider = appNameProvider;

            IUserManager userMgr = Substitute.For <IUserManager>();

            UserAccounts.Data.User testUser = new UserAccounts.Data.User();
            testUser.UserName = testUserName;
            userMgr.GetUser(Arg.Any <IHttpContext>()).Returns(testUser);
            configSvc.UserManager = userMgr;
            return(configSvc);
        }
예제 #3
0
        public void SavingMachineSavesNicsAndHostAddresses()
        {
            Machine  machine = new Machine();
            Database db      = new SQLiteDatabase($".\\{nameof(SavingMachineSavesNicsAndHostAddresses)}", "CoreRegistryRepository");

            db.TryEnsureSchema <ApplicationRegistration.Dao.Nic>();
            ApplicationRegistrationRepository repo = new ApplicationRegistrationRepository()
            {
                Database = db
            };

            ApplicationRegistration.Dao.Nic.LoadAll(repo.Database).Delete(repo.Database);
            ApplicationRegistration.Dao.HostAddress.LoadAll(repo.Database).Delete(repo.Database);
            ApplicationRegistration.Dao.Machine.LoadAll(repo.Database).Delete(repo.Database);

            machine = machine.Save(repo) as Machine;
            machine.NetworkInterfaces.Each(n => OutLine(n.PropertiesToString(), ConsoleColor.Cyan));
            machine.HostAddresses.Each(h => OutLine(h.PropertiesToString(), ConsoleColor.Blue));

            ApplicationRegistration.Dao.NicCollection         nics  = ApplicationRegistration.Dao.Nic.LoadAll(repo.Database);
            ApplicationRegistration.Dao.HostAddressCollection hosts = ApplicationRegistration.Dao.HostAddress.LoadAll(repo.Database);

            Machine machineAgain = machine.Save(repo) as Machine;

            Expect.AreEqual(machine.Id, machineAgain.Id, "Id didn't match");
            Expect.AreEqual(machine.Uuid, machineAgain.Uuid, "Uuid didn't match");
            Expect.AreEqual(machine.Cuid, machineAgain.Cuid, "Cuid didn't match");

            ApplicationRegistration.Dao.NicCollection         nicsAgain  = ApplicationRegistration.Dao.Nic.LoadAll(repo.Database);
            ApplicationRegistration.Dao.HostAddressCollection hostsAgain = ApplicationRegistration.Dao.HostAddress.LoadAll(repo.Database);

            Expect.AreEqual(nics.Count, nicsAgain.Count, "Nic count didn't match");
            Expect.AreEqual(hosts.Count, hostsAgain.Count, "Host address count didn't match");
        }
예제 #4
0
        public void EnsureSingleDoesntDuplicate()
        {
            ServiceRegistry glooRegistry           = CoreServiceRegistryContainer.GetServiceRegistry();
            ApplicationRegistrationRepository repo = glooRegistry.Get <ApplicationRegistrationRepository>();
            CompositeRepository compositeRepo      = glooRegistry.Get <CompositeRepository>();

            compositeRepo.UnwireBackup();
            Machine machine = Machine.Current;

            repo.Delete(machine);
            Machine retrieved = repo.Query <Machine>(Filter.Where("Name") == machine.Name && Filter.Where("Cuid") == machine.Cuid).FirstOrDefault();

            Expect.IsNull(retrieved);
            Machine ensured = machine.EnsureSingle <Machine>(repo, "Name", "Cuid");

            Expect.IsNotNull(ensured, "Ensured was null");
            Machine ensuredAgain = ensured.EnsureSingle <Machine>(repo, "Name", "Cuid");

            Expect.AreEqual(ensured.Id, ensuredAgain.Id);
            Expect.AreEqual(ensured.Uuid, ensuredAgain.Uuid);
            Expect.AreEqual(ensured.Cuid, ensuredAgain.Cuid);

            Expect.AreEqual(1, repo.Query <Machine>(new { Name = machine.Name, Cuid = machine.Cuid }).Count());
            repo.Delete(machine);
        }
예제 #5
0
        public static Client Of(ApplicationRegistrationRepository repo, string applicationName, string serverHost, int serverPort)
        {
            Machine persistedCurrent = repo.OneMachineWhere(m => m.Name == Machine.Current.Name);

            if (persistedCurrent == null)
            {
                persistedCurrent = repo.Save(Machine.Current);
            }
            Application app    = repo.GetOneApplicationWhere(a => a.Name == applicationName);
            Client      result = repo.OneClientWhere(c =>
                                                     c.MachineId == persistedCurrent.Id &&
                                                     c.MachineName == persistedCurrent.Name &&
                                                     c.ApplicationId == app.Id &&
                                                     c.ApplicationName == app.Name &&
                                                     c.ServerHost == serverHost &&
                                                     c.Port == serverPort);

            if (result == null)
            {
                result = new Client
                {
                    MachineId       = persistedCurrent.Id,
                    MachineName     = persistedCurrent.Name,
                    ApplicationId   = app.Id,
                    ApplicationName = app.Name,
                    ServerHost      = serverHost,
                    Port            = serverPort
                };
                result = repo.Save(result);
            }

            return(result);
        }
예제 #6
0
        public CoreServiceResponse <CoreServices.ApplicationRegistration.Data.Application> CreateApplication(string applicationName)
        {
            Organization org = User.Organizations.Where(o => o.Name.Equals(OrganizationName)).FirstOrDefault();

            CoreServices.ApplicationRegistration.Data.Application app = ApplicationRegistrationRepository.OneApplicationWhere(c => c.Name == applicationName && c.OrganizationId == org.Id);
            if (app == null)
            {
                app = new CoreServices.ApplicationRegistration.Data.Application {
                    Name = applicationName, OrganizationId = org.Id
                };
                app = ApplicationRegistrationRepository.Save(app);
                ProcessDescriptor instance = new ProcessDescriptor {
                    InstanceIdentifier = $"{ClientIpAddress}-{app.Name}-{app.Cuid}"
                };
                app.Instances.Add(instance);
                app.Machines.Add(new Machine {
                    Name = HostName
                });
                app = CoreApplicationRegistryService.AddApiKey(ApplicationRegistrationRepository, app);
                return(new CoreServiceResponse <ApplicationRegistration.Data.Application>(app)
                {
                    Success = true, Message = $"Application {applicationName} created"
                });
            }
            else
            {
                return(new CoreServiceResponse <ApplicationRegistration.Data.Application>(app)
                {
                    Success = true, Message = $"Application {applicationName} already registered for the organization {OrganizationName}"
                });
            }
        }
예제 #7
0
 private void SetLocalProperties(string organizationName, string applicationName, string hostName, int port)
 {
     LocalCoreRegistryRepository          = new ApplicationRegistrationRepository();
     LocalCoreRegistryRepository.Database = new SQLiteDatabase(WorkspaceDirectory, nameof(CoreClient));
     CoreServiceRegistryContainer.GetServiceRegistry().Get <IStorableTypesProvider>().AddTypes(LocalCoreRegistryRepository);
     ProcessDescriptor = ProcessDescriptor.ForApplicationRegistration(LocalCoreRegistryRepository, hostName, port, applicationName, organizationName);
 }
예제 #8
0
 public virtual string GetApplicationApiKey(string applicationClientId, int index)
 {
     CoreServices.ApplicationRegistration.Data.Application app = ApplicationRegistrationRepository.OneApplicationWhere(c => c.Cuid == applicationClientId);
     if (app != null)
     {
         return(app.ApiKeys[index]?.SharedSecret);
     }
     return(string.Empty);
 }
예제 #9
0
 public void CanSaveMachineInCoreRegistryRepo()
 {
     ApplicationRegistrationRepository repo = CoreServiceRegistryContainer.GetServiceRegistry().Get<ApplicationRegistrationRepository>();
     Client test = Client.Of(repo, "test", "test", 80);//Machine.ClientOf(repo, "test", 80);
     test = repo.Save(test);
     Expect.IsTrue(test.Id > 0);
     Client test2 = Client.Of(repo, "test", "test", 80);//Machine.ClientOf(repo, "test", 90);
     test2 = repo.Save(test2);
     Expect.IsTrue(test2.Id > 0);
 }
        protected internal Bam.Net.CoreServices.ApplicationRegistration.Data.Application GetServerApplicationOrDie()
        {
            Bam.Net.CoreServices.ApplicationRegistration.Data.Application app = ApplicationRegistrationRepository.GetOneApplicationWhere(c => c.Name == ServerApplicationName);
            if (app.Equals(ApplicationRegistration.Data.Application.Unknown))
            {
                throw new InvalidOperationException("Application is Uknown");
            }

            return(app);
        }
예제 #11
0
 public virtual void SetCommonConfiguration(Dictionary <string, string> settings)
 {
     lock (_commonLock)
     {
         ApplicationRegistration.Data.Configuration config = ApplicationRegistrationRepository.GetOneConfigurationWhere(c => c.Name == CommonConfigName && c.ApplicationId == Application.Unknown.Id);
         config.Settings.Each(s => ApplicationRegistrationRepository.Delete(s));
         config.Settings = DictionaryToSettings(settings, config).ToList();
         ApplicationRegistrationRepository.Save(config);
     }
 }
예제 #12
0
        protected internal ApplicationRegistration.Application AddApiKey(ApplicationRegistrationRepository repo, ApplicationRegistration.Application app, out ApplicationRegistration.ApiKey key)
        {
            ApiKeyInfo keyInfo = GenerateApiKeyInfo(app);

            key           = ApplicationRegistration.ApiKey.FromKeyInfo(keyInfo);
            key.Created   = DateTime.UtcNow;
            key.CreatedBy = CurrentUser.UserName;
            app.ApiKeys.Add(key);
            app = repo.Save(app);
            return(app);
        }
예제 #13
0
        public virtual int GetActiveApiKeyIndex(IApplicationNameProvider nameProvider)
        {
            string            clientId    = GetApplicationClientId(nameProvider);
            ActiveApiKeyIndex apiKeyIndex = ApplicationRegistrationRepository.OneActiveApiKeyIndexWhere(c => c.ApplicationCuid == clientId);

            if (apiKeyIndex != null)
            {
                return(apiKeyIndex.Value);
            }
            return(0);
        }
예제 #14
0
        public virtual Dictionary <string, string> GetMachineConfiguration(string machineName, string configurationName = null)
        {
            configurationName = configurationName ?? CommonConfigName;
            Machine machine = ApplicationRegistrationRepository.GetOneMachineWhere(c => c.Name == machineName);

            ApplicationRegistration.Data.Configuration config = machine.Configurations.FirstOrDefault(c => c.Name.Equals(configurationName));
            if (config != null)
            {
                return(SettingsToDictionary(config.Settings));
            }
            return(new Dictionary <string, string>());
        }
예제 #15
0
 public CoreApplicationRegistrationService(CoreApplicationRegistryServiceConfig config, AppConf conf, ApplicationRegistrationRepository coreRepo, ILogger logger)
 {
     CoreRegistryRepository = coreRepo;
     CoreRegistryRepository.WarningsAsErrors = false;
     config.DatabaseProvider.SetDatabases(this);
     CompositeRepository = new CompositeRepository(CoreRegistryRepository, config.WorkspacePath);
     _cacheManager       = new CacheManager(100000000);
     _apiKeyResolver     = new ApiKeyResolver(this, this);
     AppConf             = conf;
     Config        = config;
     Logger        = logger;
     HashAlgorithm = HashAlgorithms.SHA256;
 }
예제 #16
0
 public ApplicationRegistrationService(DataSettings dataSettings, AppConf conf, ApplicationRegistrationRepository coreRepo, ILogger logger)
 {
     ApplicationRegistrationRepository = coreRepo;
     ApplicationRegistrationRepository.WarningsAsErrors = false;
     dataSettings.SetDatabases(this);
     CompositeRepository = new CompositeRepository(ApplicationRegistrationRepository, dataSettings);
     _cacheManager       = new CacheManager(100000000);
     _apiKeyResolver     = new ApiKeyResolver(this, this);
     AppConf             = conf;
     DataSettings        = dataSettings;
     Logger        = logger;
     HashAlgorithm = HashAlgorithms.SHA256;
 }
예제 #17
0
 public void CoreClientCanRegisterAndConnectClient()
 {
     Message.PrintLine("This test requires a gloo server to be running on port 9100 of the localhost", ConsoleColor.Yellow);
     ApplicationRegistrationRepository repo = CoreServiceRegistryContainer.GetServiceRegistry().Get<ApplicationRegistrationRepository>();
     ConsoleLogger logger = new ConsoleLogger() { AddDetails = false };
     logger.StartLoggingThread();
     CoreClient client = new CoreClient("Bam.Net", "CoreServicesTestApp", "localhost", 9100, logger);
     client.LocalCoreRegistryRepository = repo;
     CoreServiceResponse registrationResponse = client.RegisterClient();
     Expect.IsTrue(registrationResponse.Success, registrationResponse.Message);
     CoreServiceResponse response = client.Connect();
     List<CoreServiceResponse> responses = response.Data.FromJObject<List<CoreServiceResponse>>();
     Expect.IsTrue(response.Success, string.Join("\r\n", responses.Select(r => r.Message).ToArray()));
 }
예제 #18
0
        public virtual Dictionary <string, string> GetApplicationConfiguration(string applicationName = null, string configurationName = null)
        {
            applicationName = applicationName ?? ApplicationName;
            ValidAppOrDie(applicationName);
            configurationName = configurationName ?? CommonConfigName;
            Application application = ApplicationRegistrationRepository.GetOneApplicationWhere(c => c.Name == applicationName);

            ApplicationRegistration.Data.Configuration config = application.Configurations.FirstOrDefault(c => c.Name.Equals(configurationName));
            if (config != null)
            {
                return(SettingsToDictionary(config.Settings));
            }
            return(new Dictionary <string, string>());
        }
        public bool UserIsInOrganization(string organizationName)
        {
            if (organizationName.Equals(Organization.Public.Name))
            {
                return(true);
            }
            User         user = GetApplicationUserOrDie();
            Organization org  = ApplicationRegistrationRepository.OneOrganizationWhere(c => c.Name == organizationName);

            if (org != null)
            {
                return(org.Users.Contains(user));
            }
            return(false);
        }
예제 #20
0
        private User GetApplicationRegistrationRepositoryUser()
        {
            User user = ApplicationRegistrationRepository.OneUserWhere(c => c.UserName == CurrentUser.UserName);

            if (user == null)
            {
                user = new User()
                {
                    UserName = CurrentUser.UserName,
                    Email    = CurrentUser.Email
                };
                user = ApplicationRegistrationRepository.Save(user);
            }

            return(user);
        }
예제 #21
0
        public static ProcessDescriptor ForApplicationRegistration(ApplicationRegistrationRepository repo, string serverHost, int port, string applicationName, string organizationName = null)
        {
            Args.ThrowIfNull(repo, nameof(repo));
            Args.ThrowIfNullOrEmpty(serverHost, nameof(serverHost));
            Args.ThrowIfNullOrEmpty(applicationName, nameof(applicationName));

            ProcessDescriptor result = new ProcessDescriptor();

            result.CopyProperties(Current);
            result.LocalClient = repo.GetOneClientWhere(m => m.MachineName == Machine.Current.Name && m.ApplicationName == Machine.Current.DnsName && m.ServerHost == serverHost && m.Port == port);
            result.Application = new Application {
                Name = applicationName, Organization = new Organization {
                    Name = organizationName.Or(Organization.Public.Name)
                }
            };
            return(result);
        }
예제 #22
0
        public void RegisterCreatesMachineEntry()
        {
            OutLineFormat("This test requires a gloo server to be running on port 9100 of the localhost", ConsoleColor.Yellow);
            ConsoleLogger logger = new ConsoleLogger();

            logger.AddDetails = false;
            logger.StartLoggingThread();
            ApplicationRegistrationRepository repo = CoreServiceRegistryContainer.GetServiceRegistry().Get <ApplicationRegistrationRepository>();
            CoreClient client = new CoreClient("TestOrg", "TestApp", $".\\{nameof(RegisterCreatesMachineEntry)}", logger);

            client.LocalCoreRegistryRepository = repo;
            CoreServiceResponse registrationResponse = client.RegisterClient();
            Machine             machine = repo.OneMachineWhere(m => m.Name == Machine.Current.Name);

            Expect.IsNotNull(machine);
            Pass(nameof(RegisterCreatesMachineEntry));
        }
예제 #23
0
        public string ResolveApplicationName(IHttpContext context)
        {
            string fromHeader = context?.Request?.Headers[CustomHeaders.ApplicationName];

            if (string.IsNullOrEmpty(fromHeader))
            {
                string domainName = context?.Request?.Url?.Host;
                if (!string.IsNullOrEmpty(domainName))
                {
                    HostDomain hostDomain = ApplicationRegistrationRepository.OneHostDomainWhere(d => d.DomainName == domainName);
                    if (hostDomain != null)
                    {
                        return(hostDomain.DefaultApplicationName);
                    }
                }
            }
            return(fromHeader.Or(Bam.Net.CoreServices.ApplicationRegistration.Data.Application.Unknown.Name));
        }
예제 #24
0
        public void ApplicationRegistryRepositoryGetOneUserShouldHaveNoOrganization()
        {
            TimeSpan elapsed = Timed.Execution(() =>
            {
                ApplicationRegistrationRepository repo = new ApplicationRegistrationRepository();
                repo.Database = new SQLiteDatabase($"{nameof(ApplicationRegistryRepositoryGetOneUserShouldHaveNoOrganization)}", nameof(ApplicationRegistryRepositoryGetOneUserShouldHaveNoOrganization));
                var user      = repo.GetOneUserWhere(c => c.UserName == "bryan");
                Expect.IsNotNull(user);
                Expect.AreEqual(0, user.Organizations.Count);
                Expect.IsGreaterThan(user.Id, 0);
                OutLine(user.PropertiesToString(), ConsoleColor.Cyan);
                repo.Delete(user);
                user = repo.Retrieve <ApplicationRegistration.User>(user.Id);
                Expect.IsNull(user);
            });

            OutLine(elapsed.ToString(), ConsoleColor.Cyan);
        }
예제 #25
0
        private ConfigurationService GetTestCoreConfigurationService(string testName)
        {
            string   appName           = $"{testName}_TestAppName";
            string   userDbPath        = $".\\{testName}_Test";
            string   configurationName = $"{testName}_TestConfigName";
            string   testUserName      = $"{testName}_TestUserName";
            Database userDb            = new SQLiteDatabase(testName);
            ApplicationRegistrationRepository coreRepo = new ApplicationRegistrationRepository();

            coreRepo.Database = new SQLiteDatabase($"{testName}_coredb");
            userDb.TryEnsureSchema <UserAccounts.Data.User>();
            Db.For <UserAccounts.Data.User>(userDb);

            ConfigurationService configSvc = new ConfigurationService(coreRepo, new Server.AppConf(), userDbPath);

            configSvc.DaoRepository = coreRepo;
            IApplicationNameProvider appNameProvider = Substitute.For <IApplicationNameProvider>();

            appNameProvider.GetApplicationName().Returns(appName);
            configSvc.ApplicationNameProvider = appNameProvider;

            IUserManager userMgr = Substitute.For <IUserManager>();

            UserAccounts.Data.User testUser = new UserAccounts.Data.User()
            {
                UserName = testUserName
            };
            userMgr.GetUser(Arg.Any <IHttpContext>()).Returns(testUser);
            configSvc.UserManager = userMgr;
            IHttpContext ctx = Substitute.For <IHttpContext>();

            ctx.Request = Substitute.For <IRequest>();
            NameValueCollection headers = new NameValueCollection
            {
                [CustomHeaders.ApplicationName] = testName
            };

            ctx.Request.Headers.Returns(headers);
            ctx.Request.Cookies.Returns(new System.Net.CookieCollection());
            ctx.Response = Substitute.For <IResponse>();
            ctx.Response.Cookies.Returns(new System.Net.CookieCollection());
            configSvc.HttpContext = ctx;
            return(configSvc);
        }
예제 #26
0
        public void WhoAmITest()
        {
            //OutLineFormat("This test requires a gloo server to be running on port 9100 of the localhost", ConsoleColor.Yellow);
            ConsoleLogger logger = new ConsoleLogger()
            {
                AddDetails = false
            };
            const string server = "localhost";// "int-heart.bamapps.net";
            const int    port   = 80;

            logger.StartLoggingThread();
            ApplicationRegistrationRepository repo = ApplicationServiceRegistryContainer.GetServiceRegistry().Get <ApplicationRegistrationRepository>();
            CoreClient client = new CoreClient("TestOrg", "TestApp", server, port, logger)
            {
                UseServiceSubdomains        = false,
                LocalCoreRegistryRepository = repo
            };

            client.InvocationException += (o, args) => logger.AddEntry("Invocation Exception: {0}", ((ServiceProxyInvokeEventArgs)args).Exception, args.PropertiesToString());
            client.MethodInvoked       += (o, args) => logger.AddEntry("ProxyClient Method Invoked: {0}", args.PropertiesToString());

            CoreServiceResponse registrationResponse = client.RegisterClient();
            Client current = Client.Of(client.LocalCoreRegistryRepository, client.ApplicationName, server, port);

            CoreServiceResponse response = client.Connect();

            string whoAmI = client.UserRegistryService.WhoAmI();

            Expect.AreEqual(current.ToString(), whoAmI);

            whoAmI = client.ApplicationRegistryService.WhoAmI();
            Expect.AreEqual(current.ToString(), whoAmI);

            whoAmI = client.ConfigurationService.WhoAmI();
            Expect.AreEqual(current.ToString(), whoAmI);

            whoAmI = client.LoggerService.WhoAmI();
            Expect.AreEqual(current.ToString(), whoAmI);

            whoAmI = client.DiagnosticService.WhoAmI();
            Expect.AreEqual(current.ToString(), whoAmI);

            Pass($"You are {whoAmI}");
        }
예제 #27
0
        public virtual void SetMachineConfiguration(string machineName, Dictionary <string, string> settings, string configurationName = null)
        {
            configurationName = configurationName ?? CommonConfigName;
            Machine machine = ApplicationRegistrationRepository.GetOneMachineWhere(c => c.Name == machineName);

            lock (Machine.ConfigurationLock)
            {
                ApplicationRegistration.Data.Configuration config = machine.Configurations.FirstOrDefault(c => c.Name.Equals(configurationName));
                if (config == null)
                {
                    config = new ApplicationRegistration.Data.Configuration {
                        Name = configurationName
                    };
                    config.MachineId = machine.Id;
                    config           = ApplicationRegistrationRepository.Save(config);
                }
                config.Settings = DictionaryToSettings(settings, config).ToList();
                ApplicationRegistrationRepository.Save(config);
            }
        }
예제 #28
0
        private CatalogService GetTestCatalogService(string databaseName, out DaoRepository daoRepository)
        {
            Database testDatabase = DataProvider.Current.GetAppDatabase(databaseName);

            Log.Default   = new ConsoleLogger();
            daoRepository = new DaoRepository(testDatabase, Log.Default);
            IRepository catalogRepo = daoRepository;
            ApplicationRegistrationRepository applicationRegistrationRepository = new ApplicationRegistrationRepository();
            AsyncCallbackService asyncCallbackService = Substitute.For <AsyncCallbackService>();
            CatalogService       svc = new CatalogService(catalogRepo, asyncCallbackService, daoRepository, new AppConf())
            {
                ApplicationRegistrationRepository = applicationRegistrationRepository
            };

            daoRepository.DeleteAll <CatalogDefinition>();
            daoRepository.DeleteAll <CatalogItem>();
            daoRepository.DeleteAll <ItemDefinition>();
            daoRepository.DeleteAll <ItemOption>();
            daoRepository.DeleteAll <ItemProperty>();
            return(svc);
        }
예제 #29
0
 public CoreServiceResponse GetClientSettings()
 {
     try
     {
         ApplicationRegistration.Data.Application app = ApplicationRegistrationRepository.GetOneApplicationWhere(c => c.Name == base.ApplicationName);
         return(new CoreServiceResponse
                (
                    OAuthSettingsRepository
                    .OAuthSettingsDatasWhere(c => c.ApplicationIdentifier == app.Cuid && c.ApplicationName == app.Name)
                    .Select(sd => OAuthSettings.FromData(sd))
                    .Select(os => os.CopyAs <OAuthClientSettings>())
                    .ToArray()
                ));
     }
     catch (Exception ex)
     {
         return(new CoreServiceResponse {
             Success = false, Message = ex.Message
         });
     }
 }
예제 #30
0
        public virtual void SetApplicationConfiguration(Dictionary <string, string> settings, string applicationName = null, string configurationName = null)
        {
            applicationName = applicationName ?? ApplicationName;
            ValidAppOrDie(applicationName);
            configurationName = configurationName ?? CommonConfigName;
            Application application = ApplicationRegistrationRepository.GetOneApplicationWhere(c => c.Name == applicationName);

            lock (Application.ConfigurationLock)
            {
                ApplicationRegistration.Data.Configuration config = application.Configurations.FirstOrDefault(c => c.Name.Equals(configurationName));
                if (config == null)
                {
                    config = new ApplicationRegistration.Data.Configuration {
                        Name = configurationName
                    };
                    config.ApplicationId = application.Id;
                    config = ApplicationRegistrationRepository.Save(config);
                }
                config.Settings = DictionaryToSettings(settings, config).ToList();
                ApplicationRegistrationRepository.Save(config);
            }
        }