private async Task <Mock <RequestContext <DacFxResult> > > SendAndValidateGenerateDeployScriptRequest() { // first extract a dacpac var result = GetLiveAutoCompleteTestObjects(); var extractRequestContext = new Mock <RequestContext <DacFxResult> >(); extractRequestContext.Setup(x => x.SendResult(It.IsAny <DacFxResult>())).Returns(Task.FromResult(new object())); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "DacFxGenerateScriptTest"); string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "DacFxTest"); Directory.CreateDirectory(folderPath); var extractParams = new ExtractParams { DatabaseName = sourceDb.DatabaseName, PackageFilePath = Path.Combine(folderPath, string.Format("{0}.dacpac", sourceDb.DatabaseName)), ApplicationName = "test", ApplicationVersion = "1.0.0.0" }; DacFxService service = new DacFxService(); ExtractOperation extractOperation = new ExtractOperation(extractParams, result.ConnectionInfo); service.PerformOperation(extractOperation); // generate script var generateScriptRequestContext = new Mock <RequestContext <DacFxResult> >(); generateScriptRequestContext.Setup(x => x.SendResult(It.IsAny <DacFxResult>())).Returns(Task.FromResult(new object())); var generateScriptParams = new GenerateDeployScriptParams { PackageFilePath = extractParams.PackageFilePath, DatabaseName = string.Concat(sourceDb.DatabaseName, "-deployed"), ScriptFilePath = Path.Combine(folderPath, string.Concat(sourceDb.DatabaseName, "_", "UpgradeDACScript.sql")) }; GenerateDeployScriptOperation generateScriptOperation = new GenerateDeployScriptOperation(generateScriptParams, result.ConnectionInfo); service.PerformOperation(generateScriptOperation); SqlTestDb targetDb = SqlTestDb.CreateFromExisting(generateScriptParams.DatabaseName); // cleanup VerifyAndCleanup(generateScriptParams.ScriptFilePath); VerifyAndCleanup(extractParams.PackageFilePath); sourceDb.Cleanup(); targetDb.Cleanup(); return(generateScriptRequestContext); }
public async void GenerateDeployScript() { // first extract a dacpac var result = GetLiveAutoCompleteTestObjects(); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "DacFxGenerateScriptTest"); SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "DacFxGenerateScriptTest"); string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "DacFxTest"); Directory.CreateDirectory(folderPath); try { var extractParams = new ExtractParams { DatabaseName = sourceDb.DatabaseName, PackageFilePath = Path.Combine(folderPath, string.Format("{0}.dacpac", sourceDb.DatabaseName)), ApplicationName = "test", ApplicationVersion = "1.0.0.0" }; DacFxService service = new DacFxService(); ExtractOperation extractOperation = new ExtractOperation(extractParams, result.ConnectionInfo); service.PerformOperation(extractOperation, TaskExecutionMode.Execute); // generate script var generateScriptParams = new GenerateDeployScriptParams { PackageFilePath = extractParams.PackageFilePath, DatabaseName = targetDb.DatabaseName }; // Generate script for deploying source dacpac to target db GenerateDeployScriptOperation generateScriptOperation = new GenerateDeployScriptOperation(generateScriptParams, result.ConnectionInfo); service.PerformOperation(generateScriptOperation, TaskExecutionMode.Script); // Verify script was generated Assert.NotEmpty(generateScriptOperation.Result.DatabaseScript); Assert.Contains("CREATE TABLE", generateScriptOperation.Result.DatabaseScript); VerifyAndCleanup(extractParams.PackageFilePath); } finally { sourceDb.Cleanup(); targetDb.Cleanup(); } }
public async void GenerateDeployScriptWithSqlCmdVariables() { var result = GetLiveAutoCompleteTestObjects(); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, query : storedProcScript, dbNamePrefix : "DacFxGenerateScriptSqlCmdVarsTest"); try { DacFxService service = new DacFxService(); // First extract a db to have a dacpac to generate the script for later string dacpacPath = InitialExtract(service, sourceDb, result); // Generate script for deploying source dacpac to target db with SqlCmdVars var generateScriptParams = new GenerateDeployScriptParams { PackageFilePath = dacpacPath, DatabaseName = string.Concat(sourceDb.DatabaseName, "-generated"), SqlCommandVariableValues = new Dictionary <string, string>() { { databaseRefVarName, "OtherDatabase" }, { filterValueVarName, "Employee" } } }; GenerateDeployScriptOperation generateScriptOperation = new GenerateDeployScriptOperation(generateScriptParams, result.ConnectionInfo); service.PerformOperation(generateScriptOperation, TaskExecutionMode.Script); // Verify the SqlCmdVars were set correctly in the script Assert.NotEmpty(generateScriptOperation.Result.DatabaseScript); Assert.Contains($":setvar {databaseRefVarName} \"{generateScriptParams.SqlCommandVariableValues[databaseRefVarName]}\"", generateScriptOperation.Result.DatabaseScript); Assert.Contains($":setvar {filterValueVarName} \"{generateScriptParams.SqlCommandVariableValues[filterValueVarName]}\"", generateScriptOperation.Result.DatabaseScript); VerifyAndCleanup(dacpacPath); } finally { sourceDb.Cleanup(); } }
public async void GenerateDeployScript() { // first extract a dacpac var result = GetLiveAutoCompleteTestObjects(); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "DacFxGenerateScriptTest"); SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "DacFxGenerateScriptTest"); try { DacFxService service = new DacFxService(); string dacpacPath = InitialExtract(service, sourceDb, result); // generate script var generateScriptParams = new GenerateDeployScriptParams { PackageFilePath = dacpacPath, DatabaseName = targetDb.DatabaseName }; // Generate script for deploying source dacpac to target db GenerateDeployScriptOperation generateScriptOperation = new GenerateDeployScriptOperation(generateScriptParams, result.ConnectionInfo); service.PerformOperation(generateScriptOperation, TaskExecutionMode.Script); // Verify script was generated Assert.NotEmpty(generateScriptOperation.Result.DatabaseScript); Assert.Contains("CREATE TABLE", generateScriptOperation.Result.DatabaseScript); VerifyAndCleanup(dacpacPath); } finally { sourceDb.Cleanup(); targetDb.Cleanup(); } }