public void WarewolfSecurityOperations_AddDomainUserToWarewolfGroup_WhenUserNotPresent_ExpectUserAdded() { //------------Setup for test-------------------------- var inDomain = true; try { Domain.GetComputerDomain(); } catch (ActiveDirectoryObjectNotFoundException) { inDomain = false; } var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); var myPc = Environment.MachineName; var user = (inDomain?"Dev2\\":string.Empty) + "IntegrationTester"; var userStr = warewolfGroupOps.FormatUserForInsert(user, myPc); //------------Execute Test--------------------------- warewolfGroupOps.AddUserToWarewolf(userStr); var result = warewolfGroupOps.IsUserInGroup(user); //------------Assert Results------------------------- Assert.IsTrue(result); }
public void WarewolfSecurityOperations_AddWarewolfGroupToAdministrators_WhenNotAlreadyMember_ExpectAdministratorsMemberOfWarewolf() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); // Delete warewolf if already a member... warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); //------------Execute Test--------------------------- try { warewolfGroupOps.AddAdministratorsGroupToWarewolf(); } catch (COMException e) { //'The Server service is not started.' error is expected in containers. See: https://github.com/moby/moby/issues/26409#issuecomment-304978309 if (e.Message != "The Server service is not started.\r\n") { throw e; } } var result = warewolfGroupOps.IsAdminMemberOfWarewolf(); //------------Assert Results------------------------- Assert.IsTrue(result); }
public void InstallerActionsForDevelopment_ExecuteInstallerActions_WhenGroupExist_ExpectUserNotAdded() { var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); var currentUser = WindowsIdentity.GetCurrent(false); var installerActionsForDevelopment = new InstallerActionsForDevelopment(); //------------Execute Test---------------------------\ try { installerActionsForDevelopment.ExecuteMoqInstallerActions(); } catch (COMException e) { //'The Server service is not started.' error is expected in containers. See: https://github.com/moby/moby/issues/26409#issuecomment-304978309 if (e.Message != "The Server service is not started.\r\n") { throw e; } } //------------Assert Results------------------------- var isGroupCreated = warewolfGroupOps.DoesWarewolfGroupExist(); Assert.IsTrue(isGroupCreated); var isAdminAMember = warewolfGroupOps.IsAdminMemberOfWarewolf(); Assert.IsTrue(isAdminAMember); }
public void WarewolfSecurityOperations_FormatUserForInsert_WhenNullMachineName_ExpectException() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); //------------Execute Test--------------------------- warewolfGroupOps.FormatUserForInsert("testUser", null); }
public void MoqInstallerActionFactory_CreateSecurityOperationsObject_WhenCreatingNew_ExpectNewObject() { //------------Execute Test--------------------------- var result = MoqInstallerActionFactory.CreateSecurityOperationsObject(); //------------Assert Results------------------------- Assert.IsNotNull(result); }
public void WarewolfSecurityOperations_IsUserInGroup_WhenUserNotPresent_ExpectException() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); //------------Execute Test--------------------------- warewolfGroupOps.IsUserInGroup(null); }
public void WarewolfSecurityOperations_AddUserToWarewolfGroup_WhenUserNull_ExpectException() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); //------------Execute Test--------------------------- warewolfGroupOps.AddUserToWarewolf(null); }
public void WarewolfSecurityOperations_AddWarewolfGroup_ExpectGroupAdded() { var grpOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); grpOps.DeleteWarewolfGroup(); grpOps.AddWarewolfGroup(); var result = grpOps.DoesWarewolfGroupExist(); Assert.IsTrue(result); }
public void ExecuteMoqInstallerActions() { var wso = MoqInstallerActionFactory.CreateSecurityOperationsObject(); if (!wso.DoesWarewolfGroupExist()) { wso.AddWarewolfGroup(); } AddAdministratorsToWarewolfGroup(); }
public void AuthorizationServiceBase_IsAuthorizedToConnect_ToLocalServer_AdministratorsMembersOfWarewolfGroup_WhenAdministratorsMembersOfTheGroup_ExpectTrue() { //------------Setup for test-------------------------- // permissions setup var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); // Delete warewolf if already a member... warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); Console.WriteLine("BEFOREEntering AddAdministratorsGroupToWarewolf"); try { warewolfGroupOps.AddAdministratorsGroupToWarewolf(); } catch (COMException e) { //'The Server service is not started.' error is expected in containers. See: https://github.com/moby/moby/issues/26409#issuecomment-304978309 if (e.Message != "The Server service is not started.\r\n") { throw e; } } var result = warewolfGroupOps.IsAdminMemberOfWarewolf(); Assert.IsTrue(result); // Setup rest of test ;) var resource = Guid.NewGuid(); var securityPermission = new WindowsGroupPermission { IsServer = false, ResourceID = resource, Permissions = Permissions.View, WindowsGroup = GlobalConstants.WarewolfGroup }; var securityService = new Mock <ISecurityService>(); securityService.SetupGet(p => p.Permissions).Returns(new List <WindowsGroupPermission> { securityPermission }); var user = new Mock <IPrincipal>(); user.Setup(u => u.Identity.Name).Returns("TestUser"); var authorizationService = new TestAuthorizationServiceBase(securityService.Object) { User = user.Object }; //------------Execute Test--------------------------- var isMember = authorizationService.AreAdministratorsMembersOfWarewolfAdministrators(); //------------Assert Results------------------------- Assert.IsTrue(isMember); }
public void WarewolfSecurityOperations_IsUserInGroup_WhenUserNotPresent_ExpectFalse() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); //------------Execute Test--------------------------- var result = warewolfGroupOps.IsUserInGroup("Dev2\\MyNewUser"); //------------Assert Results------------------------- Assert.IsFalse(result); }
public void WarewolfSecurityOperations_FormatUserForInsert_WhenLocalUser_ExpectUserFormated() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); //------------Execute Test--------------------------- var result = warewolfGroupOps.FormatUserForInsert("Guest", "MyPC"); //------------Assert Results------------------------- StringAssert.Contains(result, "WinNT://MyPC/Guest"); }
public void WarewolfSecurityOperations_FormatUserForInsert_WhenDomainUser_ExpectUserFormated() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); // Environment.MachineName //------------Execute Test--------------------------- var result = warewolfGroupOps.FormatUserForInsert("Dev2\\DummyUser", "MyPC"); //------------Assert Results------------------------- StringAssert.Contains(result, "WinNT://Dev2/DummyUser"); }
public void WarewolfSecurityOperations_AddWarewolfGroupToAdministrators_WhenAlreadyMember_ExpectException() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); // Delete warewolf if already a member... warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); warewolfGroupOps.AddAdministratorsGroupToWarewolf(); //------------Execute Test--------------------------- warewolfGroupOps.AddAdministratorsGroupToWarewolf(); }
public void WarewolfSecurityOperationsDoesWarewolfGroupExistWhenGroupDoesNotExistExpectFalse() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); warewolfGroupOps.DeleteWarewolfGroup(); //------------Execute Test--------------------------- var result = warewolfGroupOps.DoesWarewolfGroupExist(); //------------Assert Results------------------------- Assert.IsFalse(result); }
public void WarewolfSecurityOperations_AddWarewolfGroupToAdministrators_WhenNotAMember_ExpectNotAdded() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); // Delete warewolf if already a member... warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); //------------Execute Test--------------------------- var result = warewolfGroupOps.IsAdminMemberOfWarewolf(); //------------Assert Results------------------------- Assert.IsFalse(result); }
public void WarewolfSecurityOperations_DeleteGroupWorks_WhenGroupExist_ExpectGroupDeleted() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); //------------Execute Test--------------------------- warewolfGroupOps.DeleteWarewolfGroup(); //------------Assert Results------------------------- // Will throw exception on failure ;) }
void Run(bool interactiveMode) { Tracker.StartServer(); // ** Perform Moq Installer Actions For Development ( DEBUG config ) ** #if DEBUG try { var miq = MoqInstallerActionFactory.CreateInstallerActions(); miq.ExecuteMoqInstallerActions(); } catch (Exception e) { Dev2Logger.Warn("Mocking installer actions for DEBUG config failed to create Warewolf Administrators group and/or to add current user to it [ " + e.Message + " ]", GlobalConstants.WarewolfWarn); } #endif try { SetWorkingDirectory(); LoadHostSecurityProvider(); MigrateOldTests(); InitializeServer(); LoadSettingsProvider(); ConfigureLoggging(); OpenCOMStream(); var catalog = LoadResourceCatalog(); _timer = new Timer(PerformTimerActions, null, 1000, GlobalConstants.NetworkComputerNameQueryFreq); StartPulseLogger(); LoadPerformanceCounters(); LoadServerWorkspace(); LoadActivityCache(catalog); StartWebServer(); LoadTestCatalog(); ServerLoop(interactiveMode); } catch (Exception e) { #pragma warning disable S2228 // Console logging should not be used #pragma warning disable S2228 // Console logging should not be used Console.WriteLine(e); #pragma warning restore S2228 // Console logging should not be used #pragma warning restore S2228 // Console logging should not be used Dev2Logger.Error("Error Starting Server", e, GlobalConstants.WarewolfError); Stop(true, 0); } }
public void WarewolfSecurityOperations_AddLocalUserToWarewolfGroup_WhenUserNotPresent_ExpectUserAdded() { //------------Setup for test-------------------------- var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); var myPc = Environment.MachineName; var userStr = warewolfGroupOps.FormatUserForInsert("Guest", myPc); //------------Execute Test--------------------------- warewolfGroupOps.AddUserToWarewolf(userStr); var result = warewolfGroupOps.IsUserInGroup("Guest"); //------------Assert Results------------------------- Assert.IsTrue(result); }
public void AuthorizationServiceBase_IsAuthorizedToConnect_ToLocalServer_AdministratorsMembersOfWarewolfGroup_WhenAdministratorsAreNotMembersOfTheGroup_ExpectFalse() { //------------Setup for test-------------------------- // permissions setup var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); // Delete warewolf if already a member... warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); var result = warewolfGroupOps.IsAdminMemberOfWarewolf(); Assert.IsFalse(result); // Setup rest of test ;) var resource = Guid.NewGuid(); var securityPermission = new WindowsGroupPermission { IsServer = false, ResourceID = resource, Permissions = Permissions.View, WindowsGroup = GlobalConstants.WarewolfGroup }; var securityService = new Mock <ISecurityService>(); securityService.SetupGet(p => p.Permissions).Returns(new List <WindowsGroupPermission> { securityPermission }); var user = new Mock <IPrincipal>(); user.Setup(u => u.Identity.Name).Returns("TestUser"); var authorizationService = new TestAuthorizationServiceBase(securityService.Object, true, false, true) { User = user.Object }; authorizationService.MemberOfAdminOverride = true; //------------Execute Test--------------------------- var isMember = authorizationService.AreAdministratorsMembersOfWarewolfAdministrators(); //------------Assert Results------------------------- Assert.IsFalse(isMember); }
void Run(bool interactiveMode) { Tracker.StartServer(); // ** Perform Moq Installer Actions For Development ( DEBUG config ) ** #if DEBUG try { var miq = MoqInstallerActionFactory.CreateInstallerActions(); miq.ExecuteMoqInstallerActions(); } catch (Exception e) { throw new Exception("Ensure you are running as an Administrator. Mocking installer actions for DEBUG config failed to create Warewolf Administrators group and/or to add current user to it [ " + e.Message + " ]", e); } #endif try { SetWorkingDirectory(); LoadHostSecurityProvider(); MigrateOldTests(); InitializeServer(); LoadSettingsProvider(); ConfigureLoggging(); _ipcIpcClient = IpcClient.GetIPCExecutor(); var catalog = LoadResourceCatalog(); StartWebServer(); _timer = new Timer(PerformTimerActions, null, 1000, GlobalConstants.NetworkComputerNameQueryFreq); StartPulseLogger(); LoadPerformanceCounters(); LoadServerWorkspace(); LoadActivityCache(catalog); LoadTestCatalog(); ServerLoop(interactiveMode); } catch (Exception e) { Console.WriteLine(e); Dev2Logger.Error("Error Starting Server", e); Stop(true, 0); } }
public void InstallerActionsForDevelopment_ExecuteInstallerActions_WhenNormalOperation_ExpectGroupCreatedAndUserAdded() { var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); warewolfGroupOps.DeleteWarewolfGroup(); var currentUser = WindowsIdentity.GetCurrent(false); var installerActionsForDevelopment = new InstallerActionsForDevelopment(); //------------Execute Test--------------------------- installerActionsForDevelopment.ExecuteMoqInstallerActions(); //------------Assert Results------------------------- var isGroupCreated = warewolfGroupOps.DoesWarewolfGroupExist(); Assert.IsTrue(isGroupCreated); var isAdminAMember = warewolfGroupOps.IsAdminMemberOfWarewolf(); Assert.IsTrue(isAdminAMember); }
// ReSharper disable InconsistentNaming public void InstallerActionsForDevelopment_ExecuteInstallerActions_WhenGroupExist_ExpectUserNotAdded() { var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); var currentUser = System.Security.Principal.WindowsIdentity.GetCurrent(false); var installerActionsForDevelopment = new InstallerActionsForDevelopment(); //------------Execute Test--------------------------- installerActionsForDevelopment.ExecuteMoqInstallerActions(); //------------Assert Results------------------------- var isGroupCreated = warewolfGroupOps.DoesWarewolfGroupExist(); Assert.IsTrue(isGroupCreated); var result = warewolfGroupOps.IsUserInGroup(currentUser.Name); Assert.IsTrue(result); var isAdminAMember = warewolfGroupOps.IsAdminMemberOfWarewolf(); Assert.IsTrue(isAdminAMember); }
public void AuthorizationServiceBase_IsAuthorizedToConnect_ToLocalServer_AdministratorsMembersOfWarewolfGroup_WhenMemberOfAdministrator_ExpectTrue() { //------------Setup for test-------------------------- var getPassword = TestEnvironmentVariables.GetVar("dev2\\IntegrationTester"); // permissions setup var warewolfGroupOps = MoqInstallerActionFactory.CreateSecurityOperationsObject(); //Delete warewolf if already a member... warewolfGroupOps.DeleteWarewolfGroup(); warewolfGroupOps.AddWarewolfGroup(); var result = warewolfGroupOps.IsAdminMemberOfWarewolf(); Assert.IsFalse(result); // Setup rest of test var resource = Guid.NewGuid(); var securityPermission = new WindowsGroupPermission { IsServer = false, ResourceID = resource, Permissions = Permissions.View, WindowsGroup = GlobalConstants.WarewolfGroup }; var securityService = new Mock <ISecurityService>(); var user = new Mock <IPrincipal>(); var actualGChildren = new List <Mock <IDirectoryEntry> > { new Mock <IDirectoryEntry>() }; var gChildren = new Mock <IDirectoryEntries>(); var actualChildren = new List <Mock <IDirectoryEntry> > { new Mock <IDirectoryEntry>() }; var children = new Mock <IDirectoryEntries>(); var dir = new Mock <IDirectoryEntryFactory>(); securityService.SetupGet(p => p.Permissions).Returns(new List <WindowsGroupPermission> { securityPermission }); user.Setup(u => u.Identity.Name).Returns("TestUser"); actualGChildren.ForEach(b => b.Setup(a => a.Name).Returns("Warewolf Administrators")); actualGChildren.ForEach(b => b.Setup(a => a.SchemaClassName).Returns("Computer")); gChildren.Setup(a => a.GetEnumerator()).Returns(actualGChildren.Select(a => a.Object).GetEnumerator()); actualChildren.First().Setup(a => a.Children).Returns(gChildren.Object); children.Setup(a => a.GetEnumerator()).Returns(actualChildren.Select(a => a.Object).GetEnumerator()); SchemaNameCollection filterList = new DirectoryEntry("LDAP://dev2.local", "IntegrationTester", getPassword).Children.SchemaFilter; children.Setup(a => a.SchemaFilter).Returns(filterList); var ss = "WinNT://" + Environment.MachineName + ",computer"; dir.Setup(a => a.Create(ss)).Returns(new TestDirectoryEntry(ss)); var authorizationService = new TestAuthorizationServiceBase(dir.Object, securityService.Object, true, true, false) { User = user.Object }; authorizationService.MemberOfAdminOverride = true; //------------Execute Test--------------------------- var isMember = authorizationService.AreAdministratorsMembersOfWarewolfAdministrators(); //------------Assert Results------------------------- Assert.IsTrue(isMember); }
/// <summary> /// Starts up the server with relevant workers. /// NOTE: This must return a task as in Windows Server 2008 and Windows Server 2012 there is an issue /// with the WMI Performance Adapter that causes it to prevent the Warewolf Server Service to need a double restart. /// </summary> /// <param name="initWorkers">Initilization Workers</param> /// <returns>A Task that starts up the Warewolf Server.</returns> public Task Run(IEnumerable <IServerLifecycleWorker> initWorkers) { void OpenCOMStream(INamedPipeClientStreamWrapper clientStreamWrapper) { _writer.Write("Opening named pipe client stream for COM IPC... "); _ipcClient = _ipcClient.GetIpcExecutor(clientStreamWrapper); _writer.WriteLine("done."); } return(Task.Run(LoadPerformanceCounters) .ContinueWith((t) => { // ** Perform Moq Installer Actions For Development ( DEBUG config ) ** #if DEBUG try { var miq = MoqInstallerActionFactory.CreateInstallerActions(); miq.ExecuteMoqInstallerActions(); } catch (Exception e) { Dev2Logger.Warn("Mocking installer actions for DEBUG config failed to create Warewolf Administrators group and/or to add current user to it [ " + e.Message + " ]", GlobalConstants.WarewolfWarn); } #endif try { foreach (var worker in initWorkers) { worker.Execute(); } _loggingProcessMonitor.Start(); var loggingServerCheckDelay = Task.Delay(TimeSpan.FromSeconds(300)); _loadResources = new LoadResources("Resources", _writer, _startUpDirectory, _startupResourceCatalogFactory); LoadHostSecurityProvider(); _loadResources.CheckExampleResources(); _loadResources.MigrateOldTests(); var webServerConfig = _webServerConfiguration; webServerConfig.Execute(); new LoadRuntimeConfigurations(_writer).Execute(); OpenCOMStream(null); _loadResources.LoadResourceCatalog(); _timer = new Timer((state) => GetComputerNames.GetComputerNamesList(), null, 1000, GlobalConstants.NetworkComputerNameQueryFreq); _loadResources.LoadServerWorkspace(); _loadResources.LoadActivityCache(_assemblyLoader); LoadTestCatalog(); LoadTriggersCatalog(); _startWebServer.Execute(webServerConfig, _pauseHelper); _queueProcessMonitor.Start(); _hangfireServerMonitor.Start(); var checkLogServerConnectionTask = CheckLogServerConnection(); var result = Task.WaitAny(new [] { checkLogServerConnectionTask, loggingServerCheckDelay }); var isConnectedOkay = !checkLogServerConnectionTask.IsCanceled && !checkLogServerConnectionTask.IsFaulted && checkLogServerConnectionTask.Result == true; var logServerConnectedOkayNoTimeout = result == 0 && isConnectedOkay; if (!logServerConnectedOkayNoTimeout) { _writer.WriteLine("unable to connect to logging server"); if (checkLogServerConnectionTask.IsFaulted) { _writer.WriteLine("error: " + checkLogServerConnectionTask.Exception?.Message); } Stop(false, 0, true); } LogWarewolfVersion(); if (EnvironmentVariables.IsServerOnline) { SetAsStarted(); } } catch (Exception e) { #pragma warning disable S2228 // Console logging should not be used Console.WriteLine(e); #pragma warning restore S2228 // Console logging should not be used Dev2Logger.Error("Error Starting Server", e, GlobalConstants.WarewolfError); Stop(true, 0, false); } })); }
void AddAdministratorsToWarewolfGroup() { var wso = MoqInstallerActionFactory.CreateSecurityOperationsObject(); wso.AddAdministratorsGroupToWarewolf(); }