Exemplo n.º 1
0
        public void SecurityWrite_Execute_SecuritySettingsValuePassedValidJSON_ShouldWriteFile()
        {
            //------------Setup for test--------------------------
            var permission = new WindowsGroupPermission {
                Administrator = true, IsServer = true, WindowsGroup = Environment.UserName
            };
            var windowsGroupPermissions = new List <WindowsGroupPermission> {
                permission
            };
            var securitySettings = new SecuritySettingsTO(windowsGroupPermissions)
            {
                CacheTimeout = new TimeSpan(0, 2, 0)
            };
            var securitySettingsValue = JsonConvert.SerializeObject(securitySettings);
            var securityWrite         = new SecurityWrite();

            //------------Execute Test---------------------------
            securityWrite.Execute(new Dictionary <string, StringBuilder> {
                { "SecuritySettings", new StringBuilder(securitySettingsValue) }
            }, null);
            //------------Assert Results-------------------------
            var serverSecuritySettingsFile = EnvironmentVariables.ServerSecuritySettingsFile;

            Assert.IsTrue(File.Exists(serverSecuritySettingsFile), $"File \"{serverSecuritySettingsFile}\" does not exist after writing security settings to it.");
            var fileData = File.ReadAllText(serverSecuritySettingsFile);

            Assert.IsFalse(fileData.StartsWith("{"));
            Assert.IsFalse(fileData.EndsWith("}"));
            Assert.IsFalse(fileData.Contains("IsServer"));
            File.Delete(serverSecuritySettingsFile);
        }
Exemplo n.º 2
0
        public void SecurityWrite_HandlesType_ReturnsSecurityWriteService()
        {
            var esb    = new SecurityWrite();
            var result = esb.HandlesType();

            Assert.AreEqual("SecurityWriteService", result);
        }
Exemplo n.º 3
0
        public void SecurityWrite_Execute_NoValuesPassed_ExceptionThrown()
        {
            //------------Setup for test--------------------------
            var securityWrite = new SecurityWrite();

            //------------Execute Test---------------------------
            securityWrite.Execute(null, null);
            //------------Assert Results-------------------------
        }
Exemplo n.º 4
0
        public void SecurityWrite_Write_SecuritySettingsIsNull_ThrowsArgumentNullException()
        {
            //------------Setup for test--------------------------

            //------------Execute Test---------------------------
            SecurityWrite.Write(null);

            //------------Assert Results-------------------------
        }
Exemplo n.º 5
0
        public void SecurityWrite_Execute_SecuritySettingsValuePassedNotValidJSON_ExceptionThrown()
        {
            //------------Setup for test--------------------------
            var securityWrite = new SecurityWrite();

            //------------Execute Test---------------------------
            securityWrite.Execute(new Dictionary <string, StringBuilder> {
                { "SecuritySettings", new StringBuilder("Something") }
            }, null);
            //------------Assert Results-------------------------
        }
Exemplo n.º 6
0
        public void GetAuthorizationContextForService_ShouldReturnContext()
        {
            //------------Setup for test--------------------------
            var securityWrite = new SecurityWrite();

            //------------Execute Test---------------------------
            var resId = securityWrite.GetAuthorizationContextForService();

            //------------Assert Results-------------------------
            Assert.AreEqual(AuthorizationContext.Any, resId);
        }
Exemplo n.º 7
0
        public void GetResourceID_ShouldReturnEmptyGuid()
        {
            //------------Setup for test--------------------------
            var securityWrite = new SecurityWrite();

            //------------Execute Test---------------------------
            var resId = securityWrite.GetResourceID(new Dictionary <string, StringBuilder>());

            //------------Assert Results-------------------------
            Assert.AreEqual(Guid.Empty, resId);
        }
Exemplo n.º 8
0
        public void SecurityWrite_CreateServiceEntry_ReturnsDynamicService()
        {
            var esb    = new SecurityWrite();
            var result = esb.CreateServiceEntry();

            Assert.AreEqual(esb.HandlesType(), result.Name);
            Assert.AreEqual("<DataList><SecuritySettings ColumnIODirection=\"Input\"></SecuritySettings><Result/><Dev2System.ManagmentServicePayload ColumnIODirection=\"Both\"></Dev2System.ManagmentServicePayload></DataList>", result.DataListSpecification.ToString());
            Assert.AreEqual(1, result.Actions.Count);

            var serviceAction = result.Actions[0];

            Assert.AreEqual(esb.HandlesType(), serviceAction.Name);
            Assert.AreEqual(enActionType.InvokeManagementDynamicService, serviceAction.ActionType);
            Assert.AreEqual(esb.HandlesType(), serviceAction.SourceMethod);
        }
Exemplo n.º 9
0
        public void SecurityWrite_Write_SecuritySettingsIsNotNull_PersistsSecuritySettings()
        {
            //------------Setup for test--------------------------
            if (File.Exists(EnvironmentVariables.ServerSecuritySettingsFile))
            {
                File.Delete(EnvironmentVariables.ServerSecuritySettingsFile);
            }

            var securitySettings = new SecuritySettingsTO();

            //------------Execute Test---------------------------
            SecurityWrite.Write(securitySettings);

            //------------Assert Results-------------------------
            Assert.IsTrue(File.Exists(EnvironmentVariables.ServerSecuritySettingsFile));
            File.Delete(EnvironmentVariables.ServerSecuritySettingsFile);
        }
 protected override void WritePermissions(List <WindowsGroupPermission> permissions)
 {
     SecurityWrite.Write(new SecuritySettingsTO(permissions));
 }
Exemplo n.º 11
0
        public void SecurityRead_Execute_WhenSecureConfigDoesExistWithGuestPermission_ShouldHaveExistingPermissions()
        {
            //------------Setup for test--------------------------
            var serverSecuritySettingsFile = EnvironmentVariables.ServerSecuritySettingsFile;

            File.Delete(serverSecuritySettingsFile);
            var permission = new WindowsGroupPermission {
                Administrator = true, IsServer = true, WindowsGroup = Environment.UserName
            };
            var permission2 = new WindowsGroupPermission {
                Administrator = false, DeployFrom = false, IsServer = true, WindowsGroup = "NETWORK SERVICE"
            };
            var guests = WindowsGroupPermission.CreateGuests();

            guests.View = true;
            var permission3             = guests;
            var windowsGroupPermissions = new List <WindowsGroupPermission> {
                permission, permission2, permission3
            };
            var securitySettings = new SecuritySettingsTO(windowsGroupPermissions)
            {
                CacheTimeout = new TimeSpan(0, 10, 0)
            };
            var serializeObject = JsonConvert.SerializeObject(securitySettings);
            var securityWrite   = new SecurityWrite();
            var securityRead    = new SecurityRead();

            securityWrite.Execute(new Dictionary <string, StringBuilder> {
                { "SecuritySettings", new StringBuilder(serializeObject) }
            }, null);
            //------------Assert Preconditions-------------------------
            Assert.IsTrue(File.Exists(serverSecuritySettingsFile));
            //------------Execute Test---------------------------
            var jsonPermissions = securityRead.Execute(null, null);

            File.Delete("secure.config");
            var readSecuritySettings = JsonConvert.DeserializeObject <SecuritySettingsTO>(jsonPermissions.ToString());

            //------------Assert Results-------------------------
            Assert.AreEqual(4, readSecuritySettings.WindowsGroupPermissions.Count);

            var adminPermission = readSecuritySettings.WindowsGroupPermissions.FirstOrDefault(p => p.IsBuiltInAdministrators);

            Assert.IsNotNull(adminPermission);
            Assert.AreEqual(true, adminPermission.IsServer);
            Assert.AreEqual(true, adminPermission.View);
            Assert.AreEqual(true, adminPermission.Execute);
            Assert.AreEqual(true, adminPermission.Contribute);
            Assert.AreEqual(true, adminPermission.DeployTo);
            Assert.AreEqual(true, adminPermission.DeployFrom);
            Assert.AreEqual(true, adminPermission.Administrator);

            var userPermission = readSecuritySettings.WindowsGroupPermissions.FirstOrDefault(p => p.WindowsGroup == Environment.UserName);

            Assert.IsNotNull(userPermission);
            Assert.AreEqual(true, userPermission.IsServer);
            Assert.AreEqual(false, userPermission.View);
            Assert.AreEqual(false, userPermission.Execute);
            Assert.AreEqual(false, userPermission.Contribute);
            Assert.AreEqual(false, userPermission.DeployTo);
            Assert.AreEqual(false, userPermission.DeployFrom);
            Assert.AreEqual(true, userPermission.Administrator);

            var networkServicePermission = readSecuritySettings.WindowsGroupPermissions.FirstOrDefault(p => p.WindowsGroup == "NETWORK SERVICE");

            Assert.IsNotNull(networkServicePermission);
            Assert.AreEqual(true, networkServicePermission.IsServer);
            Assert.AreEqual(false, networkServicePermission.View);
            Assert.AreEqual(false, networkServicePermission.Execute);
            Assert.AreEqual(false, networkServicePermission.Contribute);
            Assert.AreEqual(false, networkServicePermission.DeployTo);
            Assert.AreEqual(false, networkServicePermission.DeployFrom);
            Assert.AreEqual(false, networkServicePermission.Administrator);

            var guestPermission = readSecuritySettings.WindowsGroupPermissions.FirstOrDefault(p => p.WindowsGroup == WindowsGroupPermission.BuiltInGuestsText);

            Assert.IsNotNull(guestPermission);
            Assert.AreEqual(true, guestPermission.IsServer);
            Assert.AreEqual(true, guestPermission.View);
            Assert.AreEqual(false, guestPermission.Execute);
            Assert.AreEqual(false, guestPermission.Contribute);
            Assert.AreEqual(false, guestPermission.DeployTo);
            Assert.AreEqual(false, guestPermission.DeployFrom);
            Assert.AreEqual(false, guestPermission.Administrator);
            Assert.AreEqual(new TimeSpan(0, 10, 0), readSecuritySettings.CacheTimeout);
        }
Exemplo n.º 12
0
        public void JwtManager_GenerateToken_ValidateToken()
        {
            //------------Setup for test-------------------------
            if (File.Exists(EnvironmentVariables.ServerSecuritySettingsFile))
            {
                File.Delete(EnvironmentVariables.ServerSecuritySettingsFile);
            }
            var resourceId   = Guid.NewGuid();
            var resourceName = @"Hello World";

            var overrideResource = new NamedGuid
            {
                Name  = "appAuth",
                Value = Guid.NewGuid()
            };
            var permissions = new[]
            {
                new WindowsGroupPermission
                {
                    IsServer = true, WindowsGroup = "Deploy Admins",
                    View     = false, Execute = false, Contribute = false, DeployTo = true, DeployFrom = true, Administrator = false
                },

                new WindowsGroupPermission
                {
                    ResourceID   = resourceId,
                    ResourceName = "Category1\\Workflow1",
                    WindowsGroup = "Public",
                    View         = true,
                    Execute      = true,
                    Contribute   = false
                }
            };
            var hmac               = new HMACSHA256();
            var secretKey          = Convert.ToBase64String(hmac.Key);
            var securitySettingsTO = new SecuritySettingsTO(permissions, overrideResource, secretKey);

            SecurityWrite.Write(securitySettingsTO);
            var payload = "<DataList><UserGroups Description='' IsEditable='True' ColumnIODirection='Output'><Name Description='' IsEditable='True' ColumnIODirection='Output'>public</Name></UserGroups></DataList>";

            var res = new Mock <IResource>();

            res.Setup(a => a.ResourceName).Returns(resourceName);
            res.Setup(resource => resource.ResourceID).Returns(resourceId);
            var mockCatalog = new Mock <IResourceCatalog>();

            mockCatalog.Setup(a => a.GetResource(It.IsAny <Guid>(), resourceId)).Returns(res.Object);
            mockCatalog.Setup(a => a.GetResourcePath(It.IsAny <Guid>(), It.IsAny <Guid>())).Returns("bob\\dave");
            CustomContainer.Register(mockCatalog.Object);

            var mockResourceNameProvider = new Mock <IResourceNameProvider>();

            mockResourceNameProvider.Setup(a => a.GetResourceNameById(It.IsAny <Guid>())).Returns(resourceName);
            CustomContainer.Register(mockResourceNameProvider.Object);

            //------------Execute Test---------------------------
            var securitySettings = new SecuritySettings();
            var jwtManager       = new JwtManager(securitySettings);
            var encryptedPayload = jwtManager.GenerateToken(payload);
            var response         = jwtManager.ValidateToken(encryptedPayload);

            //------------Assert Results-------------------------
            Assert.IsNotNull(encryptedPayload);
            Assert.AreEqual(payload, response);
        }
Exemplo n.º 13
0
 protected override void WritePermissions(List <WindowsGroupPermission> permissions, INamedGuid overrideResource, string secretKey)
 {
     SecurityWrite.Write(new SecuritySettingsTO(permissions, overrideResource, secretKey));
 }