Esempio n. 1
0
        protected BaseConfigTest()
        {
            this.ConfigCommandFactory =
                new ConfigCommandFactory(
                    new ApiUriFactory(
                        Connection.Host),
                    new ConfigPostKeyValuePairFactory(
                        Connection.AccessToken,
                        Connection.Vsys));

            this.ConfigMembershipCommandFactory =
                new ConfigMembershipCommandFactory(
                    new ApiUriFactory(
                        Connection.Host),
                    new ConfigMembershipPostKeyValuePairFactory(
                        Connection.AccessToken,
                        Connection.Vsys));

            CommitCommandFactory = new CommitApiCommandFactory(
                new ApiUriFactory(Connection.Host),
                new CommitApiPostKeyValuePairFactory(Connection.AccessToken));


            AddableRepository   = new AddableRepository(ConfigCommandFactory);
            DeletableRepository = new DeletableRepository(ConfigCommandFactory);

            RandomObjectFactory = new RandomObjectFactory(new AddableRepository(ConfigCommandFactory));
        }
Esempio n. 2
0
        public void CommitTest()
        {
            // Setup
            var newObj = RandomObjectFactory.GenerateRandomObject <AddressObject>();

            AddableRepository.Add(newObj);
            var makeChangeScript =
                $"$obj = {newObj.ToPsScript()};Add-PANOSObject -ConnectionProperties $ConnectionProperties -FirewallObject $obj";

            PsRunner.ExecutePanosPowerShellScript(makeChangeScript);

            // Test
            const string CommitScript = "Save-PANOSChanges -ConnectionProperties $ConnectionProperties";
            var          results      = PsRunner.ExecutePanosPowerShellScript(CommitScript);

            // Validate
            Assert.IsNotNull(results[0]);
            var apiEnqueuedResponse = results[0].BaseObject as ApiEnqueuedResponse;

            Assert.IsNotNull(apiEnqueuedResponse);
            var job = apiEnqueuedResponse.Job;

            Assert.IsNotNull(job);
            Assert.IsTrue(job.Id > 0);

            // Cleanup
            this.DeletableRepository.Delete(newObj.SchemaName, newObj.Name);
        }
        public void ShouldAddSingleMemberPassedAsParameter()
        {
            // Setup
            var sut = RandomObjectFactory.GenerateRandomObject <TGroup>();

            AddableRepository.Add(sut);
            var newMember = RandomObjectFactory.GenerateRandomObject <TMember>();

            AddableRepository.Add(newMember);

            // Test
            var script = $"Add-{noun} -GroupName {sut.Name} -MemberName {newMember.Name};";

            psTestRunner.ExecuteCommand(script);

            // Validate
            var updatedGroup = searchableRepository.GetSingle <TGroupDeserializer>(sut.Name, ConfigTypes.Candidate).Single();

            Assert.IsTrue(updatedGroup.Members.Contains(newMember.Name));
            Assert.AreNotEqual(sut.Members.Count, updatedGroup.Members.Count);
            Assert.IsTrue((updatedGroup.Members.Count - sut.Members.Count) == 1);

            // Cleanup
            DeletableRepository.Delete(sut.SchemaName, sut.Name);
            foreach (var member in updatedGroup.Members)
            {
                DeletableRepository.Delete(newMember.SchemaName, member);
            }
        }
        // "is not a valid reference"
        public void ShouldThrowExceptionWhenAddingNonExistingMember()
        {
            // Setup
            var sut = RandomObjectFactory.GenerateRandomObject <TGroup>();

            AddableRepository.Add(sut);
            var newMember = RandomObjectFactory.GenerateRandomName();

            // Test
            var script = $"Add-{noun} -GroupName {sut.Name} -MemberName {newMember};";

            Assert.That(() => psTestRunner.ExecuteCommand(script), Throws.Exception);
        }
Esempio n. 5
0
        public void ShouldDeleteObject()
        {
            // Precondition
            var sut = RandomObjectFactory.GenerateRandomObject <T>();

            AddableRepository.Add(sut);
            Assert.IsTrue(searchableRepository.GetSingle <TDeserializer>(sut.Name, ConfigTypes.Candidate).Any());

            // Test
            DeletableRepository.Delete(sut.SchemaName, sut.Name);

            // Postcondition
            Assert.IsFalse(searchableRepository.GetSingle <TDeserializer>(sut.Name, ConfigTypes.Candidate).Any());
        }
Esempio n. 6
0
        public void ShouldDeleteSingleByNamePassedAsParameter()
        {
            // Setup
            var sut = RandomObjectFactory.GenerateRandomObject <T>();

            AddableRepository.Add(sut);
            Assert.IsTrue(searchableRepository.GetSingle <TDeserializer>(sut.Name, ConfigTypes.Candidate).Any());

            // Test
            var script = $"$name = '{sut.Name}';Remove-{this.noun} -Name $name;";

            psTestRunner.ExecuteCommand(script);

            // Validate
            Assert.IsFalse(searchableRepository.GetSingle <TDeserializer>(sut.Name, ConfigTypes.Candidate).Any());
        }
Esempio n. 7
0
        public void ShouldDeleteAndPassThruObjectTest()
        {
            // Setup
            var sut = RandomObjectFactory.GenerateRandomObject <T>();

            AddableRepository.Add(sut);
            Assert.IsTrue(searchableRepository.GetSingle <TDeserializer>(sut.Name, ConfigTypes.Candidate).Any());

            // Test
            var script         = $"$obj = {sut.ToPsScript()};Remove-{noun} -{noun} $obj -PassThru;";
            var passThruObject = psTestRunner.ExecuteCommandWithPasThru(script);

            // Validate
            Assert.IsFalse(searchableRepository.GetSingle <TDeserializer>(sut.Name, ConfigTypes.Candidate).Any());
            Assert.IsNotNull(passThruObject);
            Assert.AreEqual(passThruObject, sut);
        }
Esempio n. 8
0
        public void CommitWhileAnotherCommitIsInProgressTest()
        {
            // Setup
            var newObj = RandomObjectFactory.GenerateRandomObject <AddressObject>();

            AddableRepository.Add(newObj);
            var makeChangeScript =
                $"$obj = {newObj.ToPsScript()};Add-PANOSObject -ConnectionProperties $ConnectionProperties -FirewallObject $obj";

            PsRunner.ExecutePanosPowerShellScript(makeChangeScript);

            // Test
            const string CommitScript = "Save-PANOSChanges -ConnectionProperties $ConnectionProperties";

            PsRunner.ExecutePanosPowerShellScript(CommitScript);
            Assert.That(() => PsRunner.ExecutePanosPowerShellScript(CommitScript), Throws.TypeOf <CmdletInvocationException>());
        }
Esempio n. 9
0
        public void Setup()
        {
            this.sut = new List <T>
            {
                RandomObjectFactory.GenerateRandomObject <T>(),
                RandomObjectFactory.GenerateRandomObject <T>()
            };

            foreach (var objectUnderTest in this.sut)
            {
                AddableRepository.Add(objectUnderTest);
            }

            if (configType == ConfigTypes.Running)
            {
                CommitCandidateConfig();
            }
        }
Esempio n. 10
0
        public void ShouldRenameObject()
        {
            // Setup
            var sut = RandomObjectFactory.GenerateRandomObject <T>();

            AddableRepository.Add(sut);

            // Test
            var newName = RandomObjectFactory.GenerateRandomName();

            renamableRepository.Rename(sut.SchemaName, sut.Name, newName);

            // Postcondition
            Assert.IsTrue(searchableRepository.GetSingle <TDeserializer>(newName, ConfigTypes.Candidate).Any());
            Assert.IsFalse(searchableRepository.GetSingle <TDeserializer>(sut.Name, ConfigTypes.Candidate).Any());

            // Clean-up
            DeletableRepository.Delete(sut.SchemaName, newName);
        }
Esempio n. 11
0
        public void ShouldDeleteMultipleByNamePassedAsParameter()
        {
            // Setup
            var sut = RandomObjectFactory.GenerateRandomObjects <T>();

            foreach (var obj in sut)
            {
                AddableRepository.Add(obj);
                Assert.IsTrue(searchableRepository.GetSingle <TDeserializer>(obj.Name, ConfigTypes.Candidate).Any());
            }

            // Test
            var script = $"$name1 = '{sut[0].Name}'; $name2 = '{sut[1].Name}'; Remove-{noun} -Name $name1, $name2;";

            psTestRunner.ExecuteCommand(script);

            // Validate
            foreach (var obj in sut)
            {
                Assert.IsFalse(searchableRepository.GetSingle <TDeserializer>(obj.Name, ConfigTypes.Candidate).Any());
            }
        }
Esempio n. 12
0
        public void ShouldDeleteMultipleByObjectPassedViaPipeline()
        {
            // Setup
            var sut = RandomObjectFactory.GenerateRandomObjects <T>();

            foreach (var obj in sut)
            {
                AddableRepository.Add(obj);
                Assert.IsTrue(searchableRepository.GetSingle <TDeserializer>(obj.Name, ConfigTypes.Candidate).Any());
            }

            // Test
            var script =
                $"$obj1 = {sut[0].ToPsScript()}; $obj2 = {sut[1].ToPsScript()}; $obj1, $obj2 | Remove-{this.noun};";

            psTestRunner.ExecuteCommand(script);

            // Validate
            foreach (var obj in sut)
            {
                Assert.IsFalse(searchableRepository.GetSingle <TDeserializer>(obj.Name, ConfigTypes.Candidate).Any());
            }
        }