public void Dispose()
        {
            var         parts   = new TypeCatalog(typeof(FooImpl), typeof(FooImpl2), typeof(FooImpl2)).Parts;
            var         exports = parts.Select(p => Tuple.Create(p, p.ExportDefinitions.First()));
            TestCatalog catalog = new TestCatalog(
                () => parts,
                () => exports);
            var import = parts.SelectMany(p => p.ImportDefinitions).First();

            CompositionScopeDefinition scope = new CompositionScopeDefinition(catalog, null);

            scope.Dispose();
            var ex = ExceptionAssert.Throws <ObjectDisposedException>(RetryMode.DoNotRetry, () =>
            {
                var ps = scope.Parts;
            });

            ex = ExceptionAssert.Throws <ObjectDisposedException>(RetryMode.DoNotRetry, () =>
            {
                var es = scope.GetExports(import);
            });

            scope.Dispose();
            ex = ExceptionAssert.Throws <ObjectDisposedException>(RetryMode.DoNotRetry, () =>
            {
                var ps = scope.Parts;
            });

            ex = ExceptionAssert.Throws <ObjectDisposedException>(RetryMode.DoNotRetry, () =>
            {
                var es = scope.GetExports(import);
            });
        }
Esempio n. 2
0
        public void TestCatalog_FetchTest_WhenInvalidResourceIdTestName_ShouldReturnNull()
        {
            //------------Setup for test--------------------------
            var testCatalog         = new TestCatalog();
            var resourceID          = Guid.NewGuid();
            var serviceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled  = true,
                    TestName = "Test 1"
                },
                new ServiceTestModelTO
                {
                    Enabled  = false,
                    TestName = "Test 2"
                }
            };

            testCatalog.SaveTests(Guid.NewGuid(), serviceTestModelTos);
            //------------Assert Preconditions-------------------
            //------------Execute Test---------------------------
            var test = testCatalog.FetchTest(resourceID, "Test 6");

            //------------Assert Results-------------------------
            Assert.IsNull(test);
        }
Esempio n. 3
0
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            var result = new CompressedExecuteMessage {
                HasError = false
            };
            var jsonSerializer = new Dev2JsonSerializer();

            try
            {
                values.TryGetValue("excludeList", out StringBuilder excludeTests);
                var testsToLive = jsonSerializer.Deserialize <List <string> >(excludeTests);
                TestCatalog.DeleteAllTests(testsToLive.Select(a => a.ToUpper()).ToList());
                result.SetMessage("Test reload succesful");
            }
            catch (Exception ex)
            {
                result.HasError = true;
                result.SetMessage("Error reloading tests...");
                Dev2Logger.Error(ex, GlobalConstants.WarewolfError);
            }

            var serializer = new Dev2JsonSerializer();

            return(serializer.SerializeToBuilder(result));
        }
Esempio n. 4
0
        public IExplorerRepositoryResult DeleteItem(IExplorerItem itemToDelete, Guid workSpaceId)
        {
            if (itemToDelete == null)
            {
                return(new ExplorerRepositoryResult(ExecStatus.Fail, ErrorResource.ItemToDeleteWasNull));
            }
            if (itemToDelete.ResourceType == "Folder")
            {
                return(DeleteFolder(itemToDelete, workSpaceId));
            }
            var result = ResourceCatalogue.DeleteResource(workSpaceId, itemToDelete.ResourceId, itemToDelete.ResourceType);

            TestCatalog.DeleteAllTests(itemToDelete.ResourceId);
            if (result.Status == ExecStatus.Success)
            {
                var itemDeleted = Find(_root, itemToDelete.ResourceId);
                if (itemDeleted != null)
                {
                    var parent = Find(_root, item => item.ResourcePath == GetSavePath(itemDeleted));
                    if (parent != null)
                    {
                        parent.Children.Remove(itemDeleted);
                    }
                    else
                    {
                        _root.Children.Remove(itemDeleted);
                    }
                }
            }
            return(new ExplorerRepositoryResult(result.Status, result.Message));
        }
Esempio n. 5
0
        public void TestCatalog_SaveTests_WhenNoResourceIdList_ShouldSaveTestAsFiles()
        {
            //------------Setup for test--------------------------
            var testCatalog = new TestCatalog();
            var resourceID  = Guid.NewGuid();

            var testToSave = new ServiceTestModelTO
            {
                Enabled  = false,
                TestName = "Test 1"
            };

            //------------Execute Test---------------------------
            testCatalog.SaveTest(resourceID, testToSave);
            //------------Assert Results-------------------------
            var path = EnvironmentVariables.TestPath + "\\" + resourceID;

            Assert.IsTrue(Directory.Exists(path));
            var testFiles     = Directory.EnumerateFiles(path).ToList();
            var test1FilePath = path + "\\" + "Test 1.test";

            Assert.AreEqual(test1FilePath, testFiles[0]);

            var test1String = File.ReadAllText(test1FilePath);
            var serializer  = new Dev2JsonSerializer();
            var test1       = serializer.Deserialize <IServiceTestModelTO>(test1String);

            Assert.AreEqual("Test 1", test1.TestName);
            Assert.IsFalse(test1.Enabled);
        }
Esempio n. 6
0
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            var serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Fetch Tests Service", GlobalConstants.WarewolfInfo);

                values.TryGetValue("resourceID", out StringBuilder resourceIdString);
                if (resourceIdString == null)
                {
                    throw new InvalidDataContractException("resourceID is missing");
                }
                if (!Guid.TryParse(resourceIdString.ToString(), out Guid resourceId))
                {
                    throw new InvalidDataContractException("resourceID is not a valid GUID.");
                }
                var tests   = TestCatalog.Fetch(resourceId);
                var message = new CompressedExecuteMessage();
                message.SetMessage(serializer.Serialize(tests));
                message.HasError = false;

                return(serializer.SerializeToBuilder(message));
            }
            catch (Exception err)
            {
                Dev2Logger.Error(err, GlobalConstants.WarewolfError);
                var res = new CompressedExecuteMessage {
                    HasError = true, Message = new StringBuilder(err.Message)
                };
                return(serializer.SerializeToBuilder(res));
            }
        }
Esempio n. 7
0
        public void TestCatalog_Reload_ShouldLoadDictionaryWithResourceIdAndTests()
        {
            //------------Setup for test--------------------------
            var testCatalog         = new TestCatalog();
            var resourceID          = Guid.NewGuid();
            var resourceID2         = Guid.NewGuid();
            var serviceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled  = true,
                    TestName = "Test 1"
                },
                new ServiceTestModelTO
                {
                    Enabled  = false,
                    TestName = "Test 2"
                }
            };


            var res2ServiceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled  = true,
                    TestName = "Test 21"
                },
                new ServiceTestModelTO
                {
                    Enabled  = false,
                    TestName = "Test 22"
                }
            };

            testCatalog.SaveTests(resourceID, serviceTestModelTos);
            testCatalog.SaveTests(resourceID2, res2ServiceTestModelTos);
            testCatalog.Load();
            //------------Assert Preconditions-------------------
            Assert.AreEqual(2, testCatalog.Tests.Count);
            var res1Tests = testCatalog.Tests[resourceID];

            Assert.AreEqual(2, res1Tests.Count);
            Assert.AreEqual("Test 1", res1Tests[0].TestName);
            Assert.AreEqual("Test 2", res1Tests[1].TestName);
            var res2Tests = testCatalog.Tests[resourceID2];

            Assert.AreEqual(2, res2Tests.Count);
            Assert.AreEqual("Test 21", res2Tests[0].TestName);
            Assert.AreEqual("Test 22", res2Tests[1].TestName);
            DirectoryWrapperInstance().CleanUp(EnvironmentVariables.TestPath);
            Directory.CreateDirectory(EnvironmentVariables.TestPath);
            //------------Execute Test---------------------------
            testCatalog.ReloadAllTests();
            //------------Assert Results-------------------------
            Assert.AreEqual(0, testCatalog.Tests.Count);
        }
Esempio n. 8
0
        public void CatalogPresentation()
        {
            var description = Guid.NewGuid().ToString();
            var catalog     = new TestCatalog
            {
                Наименование = description
            };

            Assert.That(Функции.Представление(catalog), Is.EqualTo(description));
        }
Esempio n. 9
0
        public void TestCatalog_DeleteAllTests_WhenResourceIdTestName_ShouldDeleteTestFolder()
        {
            //------------Setup for test--------------------------
            var testCatalog         = new TestCatalog();
            var resourceID          = Guid.NewGuid();
            var serviceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled  = true,
                    TestName = "Test 1"
                },
                new ServiceTestModelTO
                {
                    Enabled  = false,
                    TestName = "Test 2"
                }
            };

            testCatalog.SaveTests(resourceID, serviceTestModelTos);
            //------------Assert Preconditions-------------------
            var path = EnvironmentVariables.TestPath + "\\" + resourceID;

            Assert.IsTrue(Directory.Exists(path));
            var testFiles     = Directory.EnumerateFiles(path).ToList();
            var test1FilePath = path + "\\" + "Test 1.test";

            Assert.AreEqual(test1FilePath, testFiles[0]);
            var test2FilePath = path + "\\" + "Test 2.test";

            Assert.AreEqual(test2FilePath, testFiles[1]);
            var modelTO = testCatalog.Tests.Select(pair => pair.Value.Single(to => to.TestName == "Test 2")).Single();

            Assert.IsNotNull(modelTO);
            var test1String = File.ReadAllText(test1FilePath);
            var serializer  = new Dev2JsonSerializer();
            var test1       = serializer.Deserialize <IServiceTestModelTO>(test1String);

            Assert.AreEqual("Test 1", test1.TestName);
            Assert.IsTrue(test1.Enabled);

            var test2String = File.ReadAllText(test2FilePath);
            var test2       = serializer.Deserialize <IServiceTestModelTO>(test2String);

            Assert.AreEqual("Test 2", test2.TestName);
            Assert.IsFalse(test2.Enabled);
            //------------Execute Test---------------------------
            testCatalog.DeleteAllTests(resourceID);
            //------------Assert Results-------------------------
            Assert.IsFalse(File.Exists(test1FilePath));
            Assert.IsFalse(File.Exists(test2FilePath));
            modelTO = testCatalog.Tests.Select(pair => pair.Value.SingleOrDefault(to => to.TestName == "Test 2")).SingleOrDefault();
            Assert.IsNull(modelTO);
            Assert.IsFalse(Directory.Exists(path));
        }
Esempio n. 10
0
        public void TestCatalog_SaveTests_WhenEmptyList_ShouldDoNothing()
        {
            //------------Setup for test--------------------------
            var testCatalog = new TestCatalog();
            var resourceID  = Guid.NewGuid();

            //------------Execute Test---------------------------
            testCatalog.SaveTests(resourceID, new List <IServiceTestModelTO>());
            //------------Assert Results-------------------------
            Assert.IsFalse(Directory.Exists(EnvironmentVariables.TestPath + "\\" + resourceID));
        }
        public void Parts_DelegateToCatalog()
        {
            var         parts   = new TypeCatalog(typeof(FooImpl), typeof(FooImpl2), typeof(FooImpl2)).Parts;
            var         exports = parts.Select(p => Tuple.Create(p, p.ExportDefinitions.First()));
            TestCatalog catalog = new TestCatalog(
                () => parts,
                () => exports);

            CompositionScopeDefinition scope = new CompositionScopeDefinition(catalog, null);

            EqualityExtensions.CheckEquals(parts, scope.Parts);
        }
Esempio n. 12
0
        public void Parts_DelegateToCatalog()
        {
            var         parts   = new TypeCatalog(typeof(FooImpl), typeof(FooImpl2), typeof(FooImpl2)).Parts;
            var         exports = parts.Select(p => Tuple.Create(p, p.ExportDefinitions.First()));
            TestCatalog catalog = new TestCatalog(
                () => parts,
                () => exports);

            CompositionScopeDefinition scope = new CompositionScopeDefinition(catalog, null);

            EnumerableAssert.AreSequenceEqual(parts, scope.Parts);
        }
Esempio n. 13
0
        public void TestCatalog_Load_WhenTests_ShouldLoadDictionaryWithResourceIdAndTests()
        {
            //------------Setup for test--------------------------
            var testCatalog         = new TestCatalog();
            var resourceID          = Guid.NewGuid();
            var resourceID2         = Guid.NewGuid();
            var serviceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled  = true,
                    TestName = "Test 1"
                },
                new ServiceTestModelTO
                {
                    Enabled  = false,
                    TestName = "Test 2"
                }
            };


            var res2ServiceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled  = true,
                    TestName = "Test 21"
                },
                new ServiceTestModelTO
                {
                    Enabled  = false,
                    TestName = "Test 22"
                }
            };

            testCatalog.SaveTests(resourceID, serviceTestModelTos);
            testCatalog.SaveTests(resourceID2, res2ServiceTestModelTos);
            //------------Execute Test---------------------------
            testCatalog.Load();
            //------------Assert Results-------------------------
            Assert.AreEqual(2, testCatalog.Tests.Count);
            var res1Tests = testCatalog.Tests[resourceID];

            Assert.AreEqual(2, res1Tests.Count);
            Assert.AreEqual("Test 1", res1Tests[0].TestName);
            Assert.AreEqual("Test 2", res1Tests[1].TestName);
            var res2Tests = testCatalog.Tests[resourceID2];

            Assert.AreEqual(2, res2Tests.Count);
            Assert.AreEqual("Test 21", res2Tests[0].TestName);
            Assert.AreEqual("Test 22", res2Tests[1].TestName);
        }
        public void GetExports_DelegateToCatalog()
        {
            var         parts   = new TypeCatalog(typeof(FooImpl), typeof(FooImpl2), typeof(FooImpl2)).Parts;
            var         exports = parts.Select(p => Tuple.Create(p, p.ExportDefinitions.First()));
            var         import  = parts.SelectMany(p => p.ImportDefinitions).First();
            TestCatalog catalog = new TestCatalog(
                () => parts,
                () => exports);

            CompositionScopeDefinition scope = new CompositionScopeDefinition(catalog, null);

            Assert.Same(exports, scope.GetExports(import));
        }
        public async Task Items_By_Brand_And_TypeId_Should_Return_HttpOk()
        {
            //Arrange
            var items = TestCatalog.CreateItems();

            _repository.Setup(x => x.GetItemsAsync(1, 1, 0, 10)).Returns(Task.FromResult(items));

            //Act
            var actionResult = await _controller.Items(1, 1, 10, 0) as ObjectResult;

            //Assert
            Assert.NotNull(actionResult);
            Assert.Equal(actionResult.StatusCode, (int)HttpStatusCode.OK);
        }
Esempio n. 16
0
        public void Notifications()
        {
            var         parts   = new TypeCatalog(typeof(FooImpl), typeof(FooImpl2), typeof(FooImpl2)).Parts;
            var         exports = parts.Select(p => Tuple.Create(p, p.ExportDefinitions.First()));
            TestCatalog catalog = new TestCatalog(
                () => parts,
                () => exports);

            CompositionScopeDefinition scope = new CompositionScopeDefinition(catalog, null);

            ComposablePartCatalogChangeEventArgs args = new ComposablePartCatalogChangeEventArgs(Enumerable.Empty <ComposablePartDefinition>(), Enumerable.Empty <ComposablePartDefinition>(), null);

            bool changedFired = false;

            scope.Changed += new EventHandler <ComposablePartCatalogChangeEventArgs>((o, e) =>
            {
                Assert.AreSame(args, e);
                Assert.AreSame(scope, o);
                changedFired = true;
            });

            bool changingFired = false;

            scope.Changing += new EventHandler <ComposablePartCatalogChangeEventArgs>((o, e) =>
            {
                Assert.AreSame(args, e);
                Assert.AreSame(scope, o);
                changingFired = true;
            });


            catalog.OnChanged(args);
            Assert.IsTrue(changedFired);

            catalog.OnChanging(args);
            Assert.IsTrue(changingFired);


            changedFired  = false;
            changingFired = false;

            scope.Dispose();

            catalog.OnChanged(args);
            catalog.OnChanging(args);

            Assert.IsFalse(changedFired);
            Assert.IsFalse(changingFired);
        }
Esempio n. 17
0
        public void TestCatalog_Fetch_WhenResourceIdValid_ShouldReturnListOfTestsForResourceId()
        {
            //------------Setup for test--------------------------
            var testCatalog         = new TestCatalog();
            var resourceID          = Guid.NewGuid();
            var resourceID2         = Guid.NewGuid();
            var serviceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled  = true,
                    TestName = "Test 1"
                },
                new ServiceTestModelTO
                {
                    Enabled  = false,
                    TestName = "Test 2"
                }
            };


            var res2ServiceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled  = true,
                    TestName = "Test 21"
                },
                new ServiceTestModelTO
                {
                    Enabled  = false,
                    TestName = "Test 22"
                }
            };

            testCatalog.SaveTests(resourceID, serviceTestModelTos);
            testCatalog.SaveTests(resourceID2, res2ServiceTestModelTos);
            testCatalog.Load();
            //------------Execute Test---------------------------
            var tests = testCatalog.Fetch(resourceID2);
            //------------Assert Results-------------------------
            var res2Tests = tests;

            Assert.AreEqual(2, res2Tests.Count);
            Assert.AreEqual("Test 21", res2Tests[0].TestName);
            Assert.AreEqual("Test 22", res2Tests[1].TestName);
        }
Esempio n. 18
0
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            var serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Delete Test Service");

                StringBuilder resourceIdString;
                values.TryGetValue("resourceID", out resourceIdString);
                if (resourceIdString == null)
                {
                    throw new InvalidDataContractException("resourceID is missing");
                }
                Guid resourceId;
                if (!Guid.TryParse(resourceIdString.ToString(), out resourceId))
                {
                    throw new InvalidDataContractException("resourceID is not a valid GUID.");
                }
                StringBuilder testName;
                values.TryGetValue("testName", out testName);
                if (string.IsNullOrEmpty(testName?.ToString()))
                {
                    throw new InvalidDataContractException("testName is missing");
                }

                TestCatalog.DeleteTest(resourceId, testName.ToString());
                CompressedExecuteMessage message = new CompressedExecuteMessage {
                    HasError = false
                };
                return(serializer.SerializeToBuilder(message));
            }
            catch (Exception err)
            {
                Dev2Logger.Error(err);
                var res = new CompressedExecuteMessage {
                    HasError = true, Message = new StringBuilder(err.Message)
                };
                return(serializer.SerializeToBuilder(res));
            }
        }
Esempio n. 19
0
        public override StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            var serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Reload All Tests", GlobalConstants.WarewolfInfo);
                TestCatalog.ReloadAllTests();
                var message = new CompressedExecuteMessage {
                    HasError = false
                };
                return(serializer.SerializeToBuilder(message));
            }
            catch (Exception err)
            {
                Dev2Logger.Error(err, GlobalConstants.WarewolfError);
                var res = new CompressedExecuteMessage {
                    HasError = true, Message = new StringBuilder(err.Message)
                };
                return(serializer.SerializeToBuilder(res));
            }
        }
Esempio n. 20
0
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            Dev2JsonSerializer serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Fetch Tests for deploy Service");

                StringBuilder resourceIdString;
                values.TryGetValue("resourceID", out resourceIdString);
                if (resourceIdString == null)
                {
                    throw new InvalidDataContractException("resourceID is missing");
                }
                Guid resourceId;
                if (!Guid.TryParse(resourceIdString.ToString(), out resourceId))
                {
                    throw new InvalidDataContractException("resourceID is not a valid GUID.");
                }
                var tests = TestCatalog.Fetch(resourceId);
                foreach (var serviceTestModelTO in tests.Where(to => !string.IsNullOrEmpty(to.Password)))
                {
                    serviceTestModelTO.Password = SecurityEncryption.Encrypt(serviceTestModelTO.Password);
                }
                CompressedExecuteMessage message = new CompressedExecuteMessage();
                message.SetMessage(serializer.Serialize(tests));
                message.HasError = false;

                return(serializer.SerializeToBuilder(message));
            }
            catch (Exception err)
            {
                Dev2Logger.Error(err);
                var res = new CompressedExecuteMessage {
                    HasError = true, Message = new StringBuilder(err.Message)
                };
                return(serializer.SerializeToBuilder(res));
            }
        }
Esempio n. 21
0
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            var result = new CompressedExecuteMessage {
                HasError = false
            };

            try
            {
                TestCatalog.Load();
                result.SetMessage("Test reload succesful");
            }
            catch (Exception ex)
            {
                result.HasError = true;
                result.SetMessage("Error reloading tests...");
                Dev2Logger.Error(ex, GlobalConstants.WarewolfError);
            }

            var serializer = new Dev2JsonSerializer();

            return(serializer.SerializeToBuilder(result));
        }
        public CatalogRepositoryTests()
        {
            var logger = new Mock <ILogger>();

            var builder = new WebHostBuilder()
                          .UseEnvironment("UnitTesting")
                          .UseStartup <Startup>();

            var server = new TestServer(builder);

            _context = server.Host.Services.GetService(typeof(CatalogContext)) as CatalogContext;

            _repository = new CatalogRepository(_context, logger.Object);

            _catalogBrands   = TestCatalog.CreateBrands();
            _catalogTypes    = TestCatalog.CreateTypes();
            _catalogResponse = TestCatalog.CreateItems();

            _context.AddRange(_catalogBrands);
            _context.AddRange(_catalogTypes);
            _context.AddRange(_catalogResponse.ItemsOnPage);
            _context.SaveChanges();
        }
        public IExplorerRepositoryResult DeleteFolder(string path, bool deleteContents, Guid workSpaceId)
        {
            if (!Directory.Exists(DirectoryStructureFromPath(path)))
            {
                return(new ExplorerRepositoryResult(ExecStatus.Fail, string.Format(ErrorResource.RequestedFolderDoesNotExistOnServer, path)));
            }
            var resourceList = ResourceCatalogue.GetResourceList(workSpaceId);

            if (!deleteContents && resourceList.Count(a => a.GetResourcePath(workSpaceId) == path) > 0)
            {
                return(new ExplorerRepositoryResult(ExecStatus.Fail, string.Format(ErrorResource.RequestedFolderDoesNotExistOnServer, path)));
            }
            if (path.Trim() == "")
            {
                return(new ExplorerRepositoryResult(ExecStatus.Fail, ErrorResource.CannotDeleteRootPath));
            }
            try
            {
                var testResourceIDsToDelete = resourceList.Where(resource => resource.GetResourcePath(workSpaceId).StartsWith(path));
                var guids = testResourceIDsToDelete.Select(resourceToDelete => resourceToDelete.ResourceID);
                Directory.Delete(DirectoryStructureFromPath(path), true);


                foreach (var guid in guids)
                {
                    TestCatalog.DeleteAllTests(guid);
                }


                return(new ExplorerRepositoryResult(ExecStatus.Success, ""));
            }
            catch (Exception err)
            {
                return(new ExplorerRepositoryResult(ExecStatus.Fail, err.Message));
            }
        }
Esempio n. 24
0
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            Dev2JsonSerializer serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Save Tests Service");
                StringBuilder testDefinitionMessage;
                StringBuilder resourceIdString;
                StringBuilder resourcePathString;
                values.TryGetValue("resourceID", out resourceIdString);
                if (resourceIdString == null)
                {
                    throw new InvalidDataContractException("resourceID is missing");
                }
                Guid resourceId;
                if (!Guid.TryParse(resourceIdString.ToString(), out resourceId))
                {
                    throw new InvalidDataContractException("resourceID is not a valid GUID.");
                }
                values.TryGetValue("resourcePath", out resourcePathString);
                if (resourcePathString == null)
                {
                    throw new InvalidDataContractException("resourcePath is missing");
                }
                values.TryGetValue("testDefinitions", out testDefinitionMessage);
                if (testDefinitionMessage == null || testDefinitionMessage.Length == 0)
                {
                    throw new InvalidDataContractException("testDefinition is missing");
                }
                var res = new ExecuteMessage
                {
                    HasError = false,
                    Message  = serializer.SerializeToBuilder(new TestSaveResult
                    {
                        Result = SaveResult.Success,
                    })
                };

                var decompressedMessage = serializer.Deserialize <CompressedExecuteMessage>(testDefinitionMessage).GetDecompressedMessage();
                var serviceTestModelTos = serializer.Deserialize <List <IServiceTestModelTO> >(decompressedMessage);
                var resource            = ResourceCatalog.GetResource(GlobalConstants.ServerWorkspaceID, resourceId);
                if (resource == null)
                {
                    var testResult = new TestSaveResult
                    {
                        Result  = SaveResult.ResourceDeleted,
                        Message = $"Resource {resourcePathString} has been deleted. No Tests can be saved for this resource."
                    };
                    res.Message = serializer.SerializeToBuilder(testResult);
                }
                else
                {
                    var resourcePath = resource.GetResourcePath(GlobalConstants.ServerWorkspaceID);
                    if (!resourcePath.Equals(resourcePathString.ToString(), StringComparison.InvariantCultureIgnoreCase))
                    {
                        var testResult = new TestSaveResult
                        {
                            Result  = SaveResult.ResourceUpdated,
                            Message = $"Resource {resourcePathString} has changed to {resourcePath}. Tests have been saved for this resource."
                        };
                        res.Message = serializer.SerializeToBuilder(testResult);
                    }
                    TestCatalog.SaveTests(resourceId, serviceTestModelTos);
                }
                return(serializer.SerializeToBuilder(res));
            }
            catch (Exception err)
            {
                Dev2Logger.Error(err);
                var res = new ExecuteMessage {
                    HasError = true, Message = new StringBuilder(err.Message)
                };
                return(serializer.SerializeToBuilder(res));
            }
        }
Esempio n. 25
0
        public void TestCatalog_UpdateTestsBasedOnIOChange_WhenTestsFound_ShouldUpdateBasedOnChange_RecordSets()
        {
            //------------Setup for test--------------------------
            var inputDefs = new List <IDev2Definition> {
                DataListFactory.CreateDefinition_Recordset("Age", "", "", "", false, "", false, "", false), DataListFactory.CreateDefinition_Recordset("Gender", "", "", "", false, "", false, "", false), DataListFactory.CreateDefinition_Recordset("f", "", "", "rs", false, "", false, "", false), DataListFactory.CreateDefinition_Recordset("g", "", "", "rs", false, "", false, "", false), DataListFactory.CreateDefinition_Recordset("i", "", "", "rs", false, "", false, "", false), DataListFactory.CreateDefinition_Recordset("set", "", "", "rec", false, "", false, "", false)
            };
            var outputDefs = new List <IDev2Definition> {
                DataListFactory.CreateDefinition_Recordset("MessageForUser", "", "", "", false, "", false, "", false), DataListFactory.CreateDefinition_Recordset("out", "", "", "res", false, "", false, "", false)
            };
            var testCatalog         = new TestCatalog();
            var resourceID          = Guid.NewGuid();
            var serviceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled  = true,
                    TestName = "Test 1",
                    Inputs   = new List <IServiceTestInput>
                    {
                        new ServiceTestInputTO
                        {
                            Variable = "Name"
                        },
                        new ServiceTestInputTO
                        {
                            Variable = "Age",
                            Value    = "20"
                        },
                        new ServiceTestInputTO
                        {
                            Variable = "rs(1).f",
                            Value    = "20"
                        },
                        new ServiceTestInputTO
                        {
                            Variable = "rs(1).g",
                            Value    = "2"
                        },
                        new ServiceTestInputTO
                        {
                            Variable = "rs(1).h",
                            Value    = "1"
                        },
                        new ServiceTestInputTO
                        {
                            Variable = "rs(2).f",
                            Value    = "20"
                        },
                        new ServiceTestInputTO
                        {
                            Variable = "rs(2).g",
                            Value    = "2"
                        },
                        new ServiceTestInputTO
                        {
                            Variable = "rs(2).h",
                            Value    = "1"
                        }
                    },
                    Outputs = new List <IServiceTestOutput>
                    {
                        new ServiceTestOutputTO
                        {
                            Variable = "OutputMessage"
                        },
                        new ServiceTestOutputTO
                        {
                            Variable = "MessageForUser",
                            Value    = "This is the message"
                        }
                    }
                },
                new ServiceTestModelTO
                {
                    Enabled  = false,
                    TestName = "Test 2",
                    Inputs   = new List <IServiceTestInput>
                    {
                        new ServiceTestInputTO
                        {
                            Variable = "Name"
                        },
                        new ServiceTestInputTO
                        {
                            Variable = "Age",
                            Value    = "25"
                        }
                    }
                }
            };

            testCatalog.SaveTests(resourceID, serviceTestModelTos);
            //------------Execute Test---------------------------
            testCatalog.UpdateTestsBasedOnIOChange(resourceID, inputDefs, outputDefs);
            //------------Assert Results-------------------------
            var updatedTests = testCatalog.Fetch(resourceID);
            var updatedTest1 = updatedTests[0];
            var updatedTest2 = updatedTests[1];

            Assert.AreEqual("Test 1", updatedTest1.TestName);
            Assert.IsTrue(updatedTest1.TestInvalid);
            Assert.IsFalse(updatedTest1.TestFailing);
            Assert.IsFalse(updatedTest1.TestPassed);
            Assert.IsFalse(updatedTest1.TestPending);
            Assert.AreEqual(9, updatedTest1.Inputs.Count);
            Assert.AreEqual("Age", updatedTest1.Inputs[0].Variable);
            Assert.AreEqual("20", updatedTest1.Inputs[0].Value);
            Assert.AreEqual("Gender", updatedTest1.Inputs[1].Variable);
            Assert.AreEqual("", updatedTest1.Inputs[1].Value);
            Assert.IsFalse(updatedTest1.Inputs[1].EmptyIsNull);

            Assert.AreEqual(2, updatedTest1.Outputs.Count);
            Assert.AreEqual("MessageForUser", updatedTest1.Outputs[0].Variable);
            Assert.AreEqual("This is the message", updatedTest1.Outputs[0].Value);



            Assert.AreEqual("Test 2", updatedTest2.TestName);
            Assert.IsTrue(updatedTest2.TestInvalid);
            Assert.IsFalse(updatedTest2.TestFailing);
            Assert.IsFalse(updatedTest2.TestPassed);
            Assert.IsFalse(updatedTest2.TestPending);
            Assert.AreEqual(6, updatedTest2.Inputs.Count);
            Assert.AreEqual("Age", updatedTest2.Inputs[0].Variable);
            Assert.AreEqual("25", updatedTest2.Inputs[0].Value);
            Assert.AreEqual("Gender", updatedTest2.Inputs[1].Variable);
            Assert.AreEqual("", updatedTest2.Inputs[1].Value);
            Assert.IsFalse(updatedTest2.Inputs[1].EmptyIsNull);

            Assert.AreEqual(2, updatedTest2.Outputs.Count);
            Assert.AreEqual("MessageForUser", updatedTest2.Outputs[0].Variable);
            Assert.AreEqual("", updatedTest2.Outputs[0].Value);
        }
Esempio n. 26
0
        private IEnumerable <DeployResult> DeployResource(Guid resourceId, StringBuilder roles, Dev2JsonSerializer serializer, IHubProxy proxy, bool doTestDeploy)
        {
            var toReturn        = new List <DeployResult>();
            var savePath        = new StringBuilder();
            var resourceContent = ResourceCatalog.GetResourceContents(GlobalConstants.ServerWorkspaceID, resourceId);
            var resource        = ResourceCatalog.GetResource(GlobalConstants.ServerWorkspaceID, resourceId);

            if (!resource.IsService)
            {
                var fetchResourceService = new FetchResourceDefinition();
                resourceContent = fetchResourceService.DecryptAllPasswords(resourceContent);
            }
            savePath.Append(resource.GetSavePath());

            var esbExecuteRequest = new EsbExecuteRequest {
                ServiceName = "DeployResourceService"
            };

            esbExecuteRequest.AddArgument("savePath", savePath);
            esbExecuteRequest.AddArgument("ResourceDefinition", resourceContent);
            esbExecuteRequest.AddArgument("Roles", roles);
            Envelope envelope = new Envelope
            {
                Content = serializer.SerializeToBuilder(esbExecuteRequest).ToString(),
                PartID  = 0,
                Type    = typeof(Envelope)
            };
            var messageId = Guid.NewGuid();

            proxy.Invoke <Receipt>("ExecuteCommand", envelope, true, Guid.Empty, Guid.Empty, messageId).Wait();
            Task <string> fragmentInvoke = proxy.Invoke <string>("FetchExecutePayloadFragment", new FutureReceipt {
                PartID = 0, RequestID = messageId
            });
            var fragmentInvokeResult = fragmentInvoke.Result;
            var execResult           = serializer.Deserialize <ExecuteMessage>(fragmentInvokeResult) ?? new ExecuteMessage {
                HasError = true, Message = new StringBuilder("Deploy Fialed")
            };

            toReturn.Add(new DeployResult(execResult, resource.ResourceName));

            if (doTestDeploy)
            {
                var testsToDeploy = TestCatalog.Fetch(resourceId);
                CompressedExecuteMessage message = new CompressedExecuteMessage();
                message.SetMessage(serializer.Serialize(testsToDeploy));
                var testDeployRequest = new EsbExecuteRequest {
                    ServiceName = "SaveTests"
                };
                testDeployRequest.AddArgument("resourceID", resourceId.ToString().ToStringBuilder());
                testDeployRequest.AddArgument("resourcePath", savePath);
                testDeployRequest.AddArgument("testDefinitions", serializer.SerializeToBuilder(message));
                Envelope deployEnvelope = new Envelope
                {
                    Content = serializer.SerializeToBuilder(testDeployRequest).ToString(),
                    PartID  = 0,
                    Type    = typeof(Envelope)
                };
                var deployMessageId = Guid.NewGuid();
                proxy.Invoke <Receipt>("ExecuteCommand", deployEnvelope, true, Guid.Empty, Guid.Empty, deployMessageId).Wait();
                Task <string> deployFragmentInvoke = proxy.Invoke <string>("FetchExecutePayloadFragment", new FutureReceipt {
                    PartID = 0, RequestID = deployMessageId
                });
                var deployFragmentInvokeResult = deployFragmentInvoke.Result;
                var deployExecResult           = serializer.Deserialize <ExecuteMessage>(deployFragmentInvokeResult) ?? new ExecuteMessage {
                    HasError = true, Message = new StringBuilder("Deploy Fialed")
                };
                toReturn.Add(new DeployResult(deployExecResult, $"{resource.ResourceName} Tests"));
            }
            return(toReturn);
        }
Esempio n. 27
0
        public void TestCatalog_Fetch_WhenPassResult_ShouldReturnListOfTestsForResourceIdWithCorrectPassResult()
        {
            //------------Setup for test--------------------------
            var testCatalog         = new TestCatalog();
            var resourceID          = Guid.NewGuid();
            var resourceID2         = Guid.NewGuid();
            var serviceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled     = true,
                    TestName    = "Test 1",
                    TestFailing = true,
                    TestInvalid = true,
                    TestPassed  = true,
                    TestPending = true
                },
                new ServiceTestModelTO
                {
                    Enabled     = false,
                    TestName    = "Test 2",
                    TestFailing = true,
                    TestInvalid = true,
                    TestPassed  = true,
                    TestPending = true
                }
            };


            var res2ServiceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled     = true,
                    TestName    = "Test 21",
                    TestFailing = true,
                    TestInvalid = true,
                    TestPassed  = true,
                    TestPending = true
                },
                new ServiceTestModelTO
                {
                    Enabled     = false,
                    TestName    = "Test 22",
                    TestFailing = true,
                    TestInvalid = true,
                    TestPassed  = true,
                    TestPending = true
                }
            };

            testCatalog.SaveTests(resourceID, serviceTestModelTos);
            testCatalog.SaveTests(resourceID2, res2ServiceTestModelTos);
            testCatalog.Load();
            //------------Execute Test---------------------------
            var tests = testCatalog.Fetch(resourceID2);
            //------------Assert Results-------------------------
            var res2Tests = tests;

            Assert.AreEqual(2, res2Tests.Count);
            Assert.AreEqual(true, res2Tests[0].TestFailing);
            Assert.AreEqual(true, res2Tests[0].TestInvalid);
            Assert.AreEqual(true, res2Tests[0].TestPending);
            Assert.AreEqual(true, res2Tests[0].TestPassed);
            Assert.AreEqual(true, res2Tests[1].TestPassed);
            Assert.AreEqual(true, res2Tests[1].TestPassed);
            Assert.AreEqual(true, res2Tests[1].TestPassed);
            Assert.AreEqual(true, res2Tests[1].TestPassed);
        }
Esempio n. 28
0
        public void TestCatalog_UpdateTestsBasedOnIOChange_WhenTestsFound_ShouldUpdateStepsToInvalid()
        {
            //------------Setup for test--------------------------
            var inputDefs = new List <IDev2Definition> {
                DataListFactory.CreateDefinition_Recordset("Age", "", "", "", false, "", false, "", false), DataListFactory.CreateDefinition_Recordset("Gender", "", "", "", false, "", false, "", false)
            };
            var outputDefs = new List <IDev2Definition> {
                DataListFactory.CreateDefinition_Recordset("MessageForUser", "", "", "", false, "", false, "", false)
            };
            var testCatalog         = new TestCatalog();
            var resourceID          = Guid.NewGuid();
            var serviceTestModelTos = new List <IServiceTestModelTO>
            {
                new ServiceTestModelTO
                {
                    Enabled   = true,
                    TestName  = "Test 1",
                    TestSteps = new List <IServiceTestStep>
                    {
                        new ServiceTestStepTO
                        {
                            StepOutputs = new System.Collections.ObjectModel.ObservableCollection <IServiceTestOutput>
                            {
                                new ServiceTestOutputTO
                                {
                                    Variable = "OutputMessage"
                                },
                                new ServiceTestOutputTO
                                {
                                    Variable = "MessageForUser",
                                    Value    = "This is the message"
                                }
                            },
                            Result = new TestRunResult
                            {
                                RunTestResult = RunResult.TestPassed
                            }
                        },
                        new ServiceTestStepTO
                        {
                            Result = new TestRunResult
                            {
                                RunTestResult = RunResult.TestFailed
                            },
                            Children = new System.Collections.ObjectModel.ObservableCollection <IServiceTestStep>
                            {
                                new ServiceTestStepTO
                                {
                                    StepOutputs = new System.Collections.ObjectModel.ObservableCollection <IServiceTestOutput>
                                    {
                                        new ServiceTestOutputTO
                                        {
                                            Variable = "OutputMessage"
                                        },
                                        new ServiceTestOutputTO
                                        {
                                            Variable = "MessageForUser",
                                            Value    = "This is the message"
                                        }
                                    },
                                    Result = new TestRunResult
                                    {
                                        RunTestResult = RunResult.TestPassed
                                    }
                                }
                            }
                        }
                    },
                    Inputs = new List <IServiceTestInput>
                    {
                        new ServiceTestInputTO
                        {
                            Variable = "Name"
                        },
                        new ServiceTestInputTO
                        {
                            Variable = "Age",
                            Value    = "20"
                        }
                    },
                    Outputs = new List <IServiceTestOutput>
                    {
                        new ServiceTestOutputTO
                        {
                            Variable = "OutputMessage"
                        },
                        new ServiceTestOutputTO
                        {
                            Variable = "MessageForUser",
                            Value    = "This is the message"
                        }
                    }
                }
            };

            testCatalog.SaveTests(resourceID, serviceTestModelTos);
            //------------Execute Test---------------------------
            testCatalog.UpdateTestsBasedOnIOChange(resourceID, inputDefs, outputDefs);
            //------------Assert Results-------------------------
            var updatedTests = testCatalog.Fetch(resourceID);
            var updatedTest1 = updatedTests[0];

            Assert.AreEqual("Test 1", updatedTest1.TestName);
            Assert.IsTrue(updatedTest1.TestInvalid);
            Assert.AreEqual(RunResult.TestInvalid, updatedTest1.TestSteps[0].Result.RunTestResult);
            Assert.AreEqual(RunResult.TestInvalid, updatedTest1.TestSteps[0].StepOutputs[0].Result.RunTestResult);
            Assert.AreEqual(RunResult.TestInvalid, updatedTest1.TestSteps[1].Result.RunTestResult);
            Assert.AreEqual(RunResult.TestInvalid, updatedTest1.TestSteps[1].Children[0].StepOutputs[0].Result.RunTestResult);
        }
Esempio n. 29
0
        public void TestCatalog_SaveTests_WhenResourceIdListHasTest_ShouldSaveTestUpdateToList()
        {
            //------------Setup for test--------------------------
            var testCatalog = new TestCatalog();
            var resourceID  = Guid.NewGuid();

            var testToSave = new ServiceTestModelTO
            {
                Enabled  = false,
                TestName = "Test 1"
            };

            var testToSave2 = new ServiceTestModelTO
            {
                Enabled  = false,
                TestName = "Test 2"
            };

            testCatalog.SaveTest(resourceID, testToSave);
            testCatalog.SaveTest(resourceID, testToSave2);

            //------------Assert Preconditions-------------------
            var path = EnvironmentVariables.TestPath + "\\" + resourceID;

            Assert.IsTrue(Directory.Exists(path));
            var testFiles     = Directory.EnumerateFiles(path).ToList();
            var test1FilePath = path + "\\" + "Test 1.test";
            var test2FilePath = path + "\\" + "Test 2.test";

            Assert.AreEqual(test1FilePath, testFiles[0]);
            Assert.AreEqual(test2FilePath, testFiles[1]);

            var test1String = File.ReadAllText(test2FilePath);
            var serializer  = new Dev2JsonSerializer();
            var test2       = serializer.Deserialize <IServiceTestModelTO>(test1String);

            Assert.AreEqual("Test 2", test2.TestName);
            Assert.IsFalse(test2.Enabled);

            var testInList = testCatalog.FetchTest(resourceID, "Test 2");

            Assert.IsNotNull(testInList);
            Assert.AreEqual("Test 2", testInList.TestName);
            //------------Execute Test---------------------------
            var testToSaveUpdate = new ServiceTestModelTO
            {
                Enabled  = true,
                TestName = "Test 2"
            };

            testCatalog.SaveTest(resourceID, testToSaveUpdate);
            //------------Assert Results-------------------------
            var test2StringUpdated = File.ReadAllText(test2FilePath);
            var test2Updated       = serializer.Deserialize <IServiceTestModelTO>(test2StringUpdated);

            Assert.AreEqual("Test 2", test2Updated.TestName);
            Assert.IsTrue(test2Updated.Enabled);

            var testInListUpdated = testCatalog.FetchTest(resourceID, "Test 2");

            Assert.IsNotNull(testInListUpdated);
            Assert.AreEqual("Test 2", testInListUpdated.TestName);
            Assert.IsTrue(testInListUpdated.Enabled);
        }