コード例 #1
0
        public void ClearSecuritySettings()
        {
            AppSettings.LocalHost = string.Format("http://{0}:3142", Environment.MachineName.ToLowerInvariant());
            var environmentModel = EnvironmentRepository.Instance.Source;

            environmentModel.Connect();
            while (!environmentModel.IsConnected)
            {
                environmentModel.Connect();
                Thread.Sleep(100);
            }

            var currentSettings = environmentModel.ResourceRepository.ReadSettings(environmentModel);

            ScenarioContext.Current.Add("initialSettings", currentSettings);
            Data.Settings.Settings settings = new Data.Settings.Settings
            {
                Security = new SecuritySettingsTO(new List <WindowsGroupPermission>())
            };


            environmentModel.ResourceRepository.WriteSettings(environmentModel, settings);

            environmentModel.Disconnect();
        }
コード例 #2
0
        public void GivenItHasWith(string groupName, string groupRights)
        {
            var groupPermssions = new WindowsGroupPermission
            {
                WindowsGroup = groupName,
                ResourceID   = Guid.Empty,
                IsServer     = true
            };
            var permissionsStrings = groupRights.Split(new[] { ", " }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var permissionsString in permissionsStrings)
            {
                SecPermissions permission;
                if (Enum.TryParse(permissionsString.Replace(" ", ""), true, out permission))
                {
                    groupPermssions.Permissions |= permission;
                }
            }
            Data.Settings.Settings settings = new Data.Settings.Settings
            {
                Security = new SecuritySettingsTO(new List <WindowsGroupPermission> {
                    groupPermssions
                })
            };

            var environmentModel = ScenarioContext.Current.Get <IEnvironmentModel>("environment");

            EnsureEnvironmentConnected(environmentModel);
            environmentModel.ResourceRepository.WriteSettings(environmentModel, settings);
            environmentModel.Disconnect();
        }
コード例 #3
0
        static void SetupPermissions()
        {
            var groupRights     = "View, Execute, Contribute, Deploy To, Deploy From, Administrator";
            var groupPermssions = new WindowsGroupPermission
            {
                WindowsGroup = "Public",
                ResourceID   = Guid.Empty,
                IsServer     = true
            };
            var permissionsStrings = groupRights.Split(new[] { ", " }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var permissionsString in permissionsStrings)
            {
                Permissions permission;
                if (Enum.TryParse(permissionsString.Replace(" ", ""), true, out permission))
                {
                    groupPermssions.Permissions |= permission;
                }
            }
            var settings = new Data.Settings.Settings
            {
                Security = new SecuritySettingsTO(new List <WindowsGroupPermission> {
                    groupPermssions
                })
            };

            AppUsageStats.LocalHost = "http://localhost:3142";
            var environmentModel = ServerRepository.Instance.Source;

            environmentModel.Connect();
            environmentModel.ResourceRepository.WriteSettings(environmentModel, settings);
        }
コード例 #4
0
        public void SettingsWrite_Execute_SettingsWriteValuePassedValidJSON_ShouldDoSecurityWrite()
        {
            //------------Setup for test--------------------------
            var permission = new WindowsGroupPermission {
                Administrator = true, IsServer = true, WindowsGroup = Environment.UserName
            };
            var windowsGroupPermissions = new List <WindowsGroupPermission> {
                permission
            };
            var settings = new Data.Settings.Settings {
                Security = new SecuritySettingsTO(windowsGroupPermissions)
            };
            var serializeObject = JsonConvert.SerializeObject(settings);
            var settingsWrite   = new SettingsWrite();
            //------------Execute Test---------------------------
            var execute = settingsWrite.Execute(new Dictionary <string, StringBuilder> {
                { "Settings", new StringBuilder(serializeObject) }
            }, null);
            //------------Assert Results-------------------------
            var serverSecuritySettingsFile = EnvironmentVariables.ServerSecuritySettingsFile;

            Assert.IsTrue(File.Exists(serverSecuritySettingsFile));
            File.Delete(serverSecuritySettingsFile);

            var msg = ToMsg(execute);

            StringAssert.Contains(msg.Message.ToString(), "Success");
        }
コード例 #5
0
        public ExecuteMessage WriteSettings(IServer currentEnv, Data.Settings.Settings settings)
        {
            var comController = new CommunicationController {
                ServiceName = "SettingsWriteService"
            };

            comController.AddPayloadArgument("Settings", settings.ToString());

            return(comController.ExecuteCommand <ExecuteMessage>(currentEnv.Connection, GlobalConstants.ServerWorkspaceID));
        }
コード例 #6
0
        Data.Settings.Settings ReadSettings()
        {
            var payload = CurrentEnvironment.ResourceRepository.ReadSettings(CurrentEnvironment);

            if (payload == null)
            {
                ShowError("Network Error", string.Format(GlobalConstants.NetworkCommunicationErrorTextFormat, "ReadSettings"));
            }
            var serializer = new Dev2JsonSerializer();

            _backedUpSettings = serializer.Deserialize <Data.Settings.Settings>(payload?.ToString());
            return(payload);
        }
コード例 #7
0
        public SettingsViewModel(IEventAggregator eventPublisher, IPopupController popupController, IAsyncWorker asyncWorker, IWin32Window parentWindow, IConnectControlViewModel connectControlViewModel)
            : base(eventPublisher)
        {
            Settings = new Data.Settings.Settings();
            VerifyArgument.IsNotNull("popupController", popupController);
            _popupController = popupController;
            VerifyArgument.IsNotNull("asyncWorker", asyncWorker);
            _asyncWorker = asyncWorker;
            VerifyArgument.IsNotNull("parentWindow", parentWindow);
            _parentWindow = parentWindow;

            SaveCommand          = new RelayCommand(o => SaveSettings(), o => IsDirty);
            ServerChangedCommand = new DelegateCommand(OnServerChanged);

            ConnectControlViewModel = connectControlViewModel ?? new ConnectControlViewModel(OnServerChanged, "Server:", false);
        }
コード例 #8
0
ファイル: SettingsViewModel.cs プロジェクト: Robin--/Warewolf
        public SettingsViewModel(IEventAggregator eventPublisher, IPopupController popupController, IAsyncWorker asyncWorker, IWin32Window parentWindow, IConnectControlViewModel connectControlViewModel)
            : base(eventPublisher)
        {
            Settings = new Data.Settings.Settings();
            VerifyArgument.IsNotNull("popupController", popupController);
            _popupController = popupController;
            VerifyArgument.IsNotNull("asyncWorker", asyncWorker);
            _asyncWorker = asyncWorker;
            VerifyArgument.IsNotNull("parentWindow", parentWindow);
            _parentWindow = parentWindow;

            SaveCommand = new RelayCommand(o => SaveSettings(), o => IsDirty);
            ServerChangedCommand = new DelegateCommand(OnServerChanged);

            ConnectControlViewModel = connectControlViewModel ?? new ConnectControlViewModel(OnServerChanged, "Server:", false);
        }
コード例 #9
0
        public static void InitializeFeature(FeatureContext featureContext)
        {
            _featureContext = featureContext;
            SetupUser();
            var securitySpecsUser     = GetSecuritySpecsUser();
            var securitySpecsPassword = GetSecuritySpecsPassword();
            var userGroup             = GetUserGroup();

            AppUsageStats.LocalHost = $"http://{Environment.MachineName.ToLowerInvariant()}:3142";
            var environmentModel = ServerRepository.Instance.Source;

            environmentModel.Connect();
            while (!environmentModel.IsConnected)
            {
                environmentModel.Connect();
            }

            var currentSettings = environmentModel.ResourceRepository.ReadSettings(environmentModel);

            _featureContext.Add("initialSettings", currentSettings);
            var settings = new Data.Settings.Settings
            {
                Security = new SecuritySettingsTO(new List <WindowsGroupPermission>())
            };

            environmentModel.ResourceRepository.WriteSettings(environmentModel, settings);
            environmentModel.Disconnect();
            _featureContext.Add("environment", environmentModel);

            var reconnectModel = new Server(Guid.NewGuid(), new ServerProxy(AppUsageStats.LocalHost, securitySpecsUser, securitySpecsPassword))
            {
                Name = "Other Connection"
            };

            try
            {
                reconnectModel.Connect();
            }
            catch (UnauthorizedAccessException)
            {
                Assert.Fail("Connection unauthorized when connecting to local Warewolf server as user who is part of '" + userGroup + "' user group.");
            }
            _featureContext.Add("currentEnvironment", reconnectModel);
        }
コード例 #10
0
ファイル: SettingsViewModel.cs プロジェクト: pyrodc/Warewolf
        public SettingsViewModel(IEventAggregator eventPublisher, IPopupController popupController, IAsyncWorker asyncWorker, IWin32Window parentWindow, IServer server, Func <IServer, IServer> toEnvironmentModel)
            : base(eventPublisher)
        {
            Server = server;
            Server.NetworkStateChanged += ServerNetworkStateChanged;
            Settings = new Data.Settings.Settings();
            VerifyArgument.IsNotNull("popupController", popupController);
            _popupController = popupController;
            VerifyArgument.IsNotNull("asyncWorker", asyncWorker);
            _asyncWorker = asyncWorker;
            VerifyArgument.IsNotNull("parentWindow", parentWindow);
            _parentWindow = parentWindow;

            SaveCommand = new RelayCommand(o => SaveSettings(), o => IsDirty);

            ToEnvironmentModel = toEnvironmentModel ?? (a => a.ToEnvironmentModel());
            CurrentEnvironment = ToEnvironmentModel?.Invoke(server);
            LoadSettings();
            // ReSharper disable once VirtualMemberCallInContructor
            DisplayName = StringResources.SettingsTitle + " - " + Server.DisplayName;
        }
コード例 #11
0
        public void ClearSecuritySettings()
        {
            AppSettings.LocalHost = string.Format("http://{0}:3142", Environment.MachineName.ToLowerInvariant());
            var environmentModel = EnvironmentRepository.Instance.Source;
            environmentModel.Connect();
            while(!environmentModel.IsConnected)
            {
                environmentModel.Connect();
                Thread.Sleep(100);
            }

            var currentSettings = environmentModel.ResourceRepository.ReadSettings(environmentModel);
            ScenarioContext.Current.Add("initialSettings",currentSettings);
            Data.Settings.Settings settings = new Data.Settings.Settings
            {
                Security = new SecuritySettingsTO(new List<WindowsGroupPermission>())
            };


            environmentModel.ResourceRepository.WriteSettings(environmentModel, settings);
            
            environmentModel.Disconnect();
        }
コード例 #12
0
        public SettingsViewModel(IEventAggregator eventPublisher, IPopupController popupController, IAsyncWorker asyncWorker, IWin32Window parentWindow, IServer server, Func <IServer, IServer> toEnvironmentModel)
            : base(eventPublisher)
        {
            Server = server;
            Server.NetworkStateChanged += ServerNetworkStateChanged;
            Settings = new Data.Settings.Settings();
            VerifyArgument.IsNotNull("popupController", popupController);
            _popupController = popupController;
            VerifyArgument.IsNotNull("asyncWorker", asyncWorker);
            _asyncWorker = asyncWorker;
            VerifyArgument.IsNotNull("parentWindow", parentWindow);
            _parentWindow = parentWindow;

            SaveCommand = new RelayCommand(o => SaveSettings(), o => IsDirty);

            IShellViewModel vm = CustomContainer.Get <IShellViewModel>();

            CreateEnvironmentFromServer(vm.LocalhostServer);

            ToEnvironmentModel = toEnvironmentModel ?? (a => a.ToEnvironmentModel());
            CurrentEnvironment = ToEnvironmentModel(server);
            LoadSettings();
            DisplayName = "Settings - " + Server.DisplayName;
        }
コード例 #13
0
        static Data.Settings.Settings CreateSettings()
        {
            var settings = new Data.Settings.Settings
            {
                Logging = new LoggingSettingsTo
                {
                  LogLevel  = "DEBUG",
                  LogSize = 20
                },
                Security = new SecuritySettingsTO(new[]
                {
                    new WindowsGroupPermission
                    {
                        IsServer = true, WindowsGroup = GlobalConstants.WarewolfGroup,
                        View = false, Execute = false, Contribute = true, DeployTo = true, DeployFrom = true, Administrator = true
                    },
                    new WindowsGroupPermission 
                    { 
                        IsServer = true, WindowsGroup = "Deploy Admins", 
                        View = false, Execute = false, Contribute = false, DeployTo = true, DeployFrom = true, Administrator = false 
                    },

                    new WindowsGroupPermission
                    {
                        ResourceID = Guid.NewGuid(), ResourceName = "Category1\\Workflow1",
                        WindowsGroup = "Windows Group 1", View = false, Execute = true, Contribute = false
                    },
                    new WindowsGroupPermission
                    {
                        ResourceID = Guid.NewGuid(), ResourceName = "Category1\\Workflow1",
                        WindowsGroup = "Windows Group 2", View = false, Execute = false, Contribute = true
                    },

                    new WindowsGroupPermission
                    {
                        ResourceID = Guid.NewGuid(), ResourceName = "Category1\\Workflow2",
                        WindowsGroup = "Windows Group 1", View = true, Execute = true, Contribute = false
                    },

                    new WindowsGroupPermission
                    {
                        ResourceID = Guid.NewGuid(), ResourceName = "Category2\\Workflow3",
                        WindowsGroup = "Windows Group 3", View = true, Execute = false, Contribute = false
                    },
                    new WindowsGroupPermission
                    {
                        ResourceID = Guid.NewGuid(), ResourceName = "Category2\\Workflow3",
                        WindowsGroup = "Windows Group 4", View = false, Execute = true, Contribute = false
                    },


                    new WindowsGroupPermission
                    {
                        ResourceID = Guid.NewGuid(), ResourceName = "Category2\\Workflow4",
                        WindowsGroup = "Windows Group 3", View = false, Execute = false, Contribute = true
                    },
                    new WindowsGroupPermission
                    {
                        ResourceID = Guid.NewGuid(), ResourceName = "Category1\\Workflow1",
                        WindowsGroup = "Windows Group 4", View = false, Execute = false, Contribute = true
                    }
                })
                {
                    CacheTimeout = GlobalConstants.DefaultTimeoutValue
                }                
            };
            return settings;
        }
コード例 #14
0
        public void SettingsViewModel_ServerChangedCommand_ServerEnvironmentIsConnectedAndSettingsHasErrors_ShowsLoadError()
        {
            //------------Setup for test--------------------------
            var popupController = new Mock<IPopupController>();
            popupController.Setup(p => p.Show()).Verifiable();
            popupController.SetupAllProperties();

            var settings = new Data.Settings.Settings
            {
                HasError = true,
                Error = "Error occurred loading",
                Security = new SecuritySettingsTO()
            };

            //------------Execute Test---------------------------
            var viewModel = CreateSettingsViewModel(popupController.Object, settings.ToString());

            //------------Assert Results-------------------------
            Assert.AreEqual(1, viewModel.ShowErrorHitCount);
            Assert.IsNotNull(viewModel.CurrentEnvironment);
            Assert.IsNotNull(viewModel.SecurityViewModel);
            Assert.IsFalse(viewModel.IsLoading);
            Assert.IsFalse(viewModel.IsDirty);
            Assert.IsTrue(viewModel.HasErrors);
            Assert.AreEqual(settings.Error, viewModel.Errors);
        }
コード例 #15
0
        public void GivenItHasWith(string groupName, string groupRights)
        {
            var groupPermssions = new WindowsGroupPermission
            {
                WindowsGroup = groupName,
                ResourceID = Guid.Empty,
                IsServer = true
            };
            var permissionsStrings = groupRights.Split(new[] { ", " }, StringSplitOptions.RemoveEmptyEntries);
            foreach(var permissionsString in permissionsStrings)
            {
                SecPermissions permission;
                if(Enum.TryParse(permissionsString.Replace(" ", ""), true, out permission))
                {
                    groupPermssions.Permissions |= permission;
                }
            }
            Data.Settings.Settings settings = new Data.Settings.Settings
            {
                Security = new SecuritySettingsTO(new List<WindowsGroupPermission> { groupPermssions })
            };

            var environmentModel = ScenarioContext.Current.Get<IEnvironmentModel>("environment");
            EnsureEnvironmentConnected(environmentModel);
            environmentModel.ResourceRepository.WriteSettings(environmentModel, settings);
            environmentModel.Disconnect();
        }