Beispiel #1
0
        public void CreateStreamsTestingDatabase()
        {
            var sqlServerLocator = GetSqlServerLocator();
            var configuration    = SqlServerDatabaseDefinition.BuildDatabaseConfigurationUsingDefaultsAsNecessary("Streams", @"D:\SQL\");
            var createDatabaseOp = new CreateDatabaseOp(configuration, ExistingDatabaseStrategy.Throw);
            var protocol         = new SqlOperationsProtocol(sqlServerLocator);

            protocol.Execute(createDatabaseOp);
        }
Beispiel #2
0
        public static void CreateDatabase_ExistingDatabaseTest()
        {
            var sqlServerLocatorCopy = GetSqlServerLocator();
            var sqlServerLocator     = sqlServerLocatorCopy.DeepCloneWithDatabaseName("Monkey");
            var protocol             = new SqlOperationsProtocol(sqlServerLocator);
            var configuration        = SqlServerDatabaseDefinition.BuildDatabaseConfigurationUsingDefaultsAsNecessary(sqlServerLocator.DatabaseName, @"D:\SQL\");

            var createDatabaseOpThrow = new CreateDatabaseOp(configuration, ExistingDatabaseStrategy.Throw);
            var createDatabaseOpSkip  = new CreateDatabaseOp(configuration, ExistingDatabaseStrategy.Skip);

            protocol.Execute(createDatabaseOpThrow);
            protocol.Execute(createDatabaseOpSkip);
            var ex = Record.Exception(() => protocol.Execute(createDatabaseOpThrow));
        }
        public void CreateStreamExampleDatabaseAndScripts()
        {
            var sqlServerLocator = new SqlServerLocator("localhost", "StreamExample3", "sa", "<password>", "SQLDEV2017");
            var configuration    = SqlServerDatabaseDefinition.BuildDatabaseConfigurationUsingDefaultsAsNecessary(sqlServerLocator.DatabaseName, @"D:\SQL\");
            var createDatabaseOp = new CreateDatabaseOp(configuration, ExistingDatabaseStrategy.Throw);
            var protocol         = new SqlOperationsProtocol(sqlServerLocator);

            protocol.Execute(createDatabaseOp);

            var resourceLocatorProtocol = new SingleResourceLocatorProtocols(sqlServerLocator);

            var configurationTypeRepresentation = typeof(NullJsonSerializationConfiguration).ToRepresentation();

            SerializerRepresentation defaultSerializerRepresentation = new SerializerRepresentation(
                SerializationKind.Json,
                configurationTypeRepresentation);

            var defaultSerializationFormat = SerializationFormat.String;
            var stream = new SqlStream(
                "Example",
                TimeSpan.FromMinutes(1),
                TimeSpan.FromMinutes(3),
                defaultSerializerRepresentation,
                defaultSerializationFormat,
                new JsonSerializerFactory(),
                resourceLocatorProtocol);

            stream.Execute(new StandardCreateStreamOp(stream.StreamRepresentation, ExistingStreamStrategy.Skip));

            this.testOutputHelper.WriteLine("Created database.");

            /*
             * var path = "D:/Temp/Example";
             * var connectionString = sqlServerLocator.BuildConnectionString(TimeSpan.FromSeconds(20));
             * Scripter.ScriptDatabaseToFilePath(connectionString, path, this.testOutputHelper.WriteLine, false);
             */
        }
Beispiel #4
0
        static SqlServerDatabaseDefinitionTest()
        {
            ConstructorArgumentValidationTestScenarios
            .RemoveAllScenarios()
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name             = "constructor should throw ArgumentNullException when parameter 'databaseName' is null scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        null,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFileLogicalName,
                        referenceObject.DataFilePath,
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        referenceObject.LogFilePath,
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentNullException),
                ExpectedExceptionMessageContains = new[]
                {
                    "databaseName",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name             = "constructor should throw ArgumentException when parameter 'databaseName' is white space scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        Invariant($"  {Environment.NewLine}  "),
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFileLogicalName,
                        referenceObject.DataFilePath,
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        referenceObject.LogFilePath,
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "databaseName",
                    "white space",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name             = "constructor should throw ArgumentException when parameter 'databaseName' is 'invalid' scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        "not-valid",
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFileLogicalName,
                        referenceObject.DataFilePath,
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        referenceObject.LogFilePath,
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "databaseName",
                    "alphanumeric",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name             = "constructor should throw ArgumentException when parameter 'dataFileLogicalName' is 'invalid' scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        referenceObject.DatabaseName,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        "not-valid",
                        referenceObject.DataFilePath,
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        referenceObject.LogFilePath,
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "dataFileLogicalName",
                    "alphanumeric",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name =
                    "constructor should throw ArgumentException when parameter 'dataFilePath' is 'invalid for FileInfo' when specified scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        referenceObject.DatabaseName,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFilePath,
                        "C:::::/not-possible-to-new-up-FileInfo-constructor",
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        referenceObject.LogFilePath,
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "dataFilePath",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name =
                    "constructor should throw ArgumentException when parameter 'dataFilePath' is 'invalid with single quote' when specified scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        referenceObject.DatabaseName,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFileLogicalName,
                        "path-with-single-quote'",
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        referenceObject.LogFilePath,
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "dataFilePath",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name =
                    "constructor should throw ArgumentException when parameter 'dataFilePath' is 'invalid with double quote' when specified scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        referenceObject.DatabaseName,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFileLogicalName,
                        "path-with-double-quote\"",
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        referenceObject.LogFilePath,
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "dataFilePath",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name =
                    "constructor should throw ArgumentException when parameter 'dataFilePath' is 'invalid with semicolon' when specified scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        referenceObject.DatabaseName,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFileLogicalName,
                        "path-with-semicolon;",
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        referenceObject.LogFilePath,
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "dataFilePath",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name             = "constructor should throw ArgumentException when parameter 'logFileLogicalName' is 'invalid' scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        referenceObject.DatabaseName,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFileLogicalName,
                        referenceObject.DataFilePath,
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        "not-valid",
                        referenceObject.LogFilePath,
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "logFileLogicalName",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name =
                    "constructor should throw ArgumentException when parameter 'logFilePath' is 'invalid with FileInfo' when specified scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        referenceObject.DatabaseName,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFilePath,
                        referenceObject.DataFilePath,
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        "C:::::/not-possible-to-new-up-FileInfo-constructor",
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "logFilePath",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name =
                    "constructor should throw ArgumentException when parameter 'logFilePath' is 'invalid with single quote' when specified scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        referenceObject.DatabaseName,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFilePath,
                        referenceObject.DataFilePath,
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        "path-with-single-quote'",
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "logFilePath",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name =
                    "constructor should throw ArgumentException when parameter 'logFilePath' is 'invalid with double quote' when specified scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        referenceObject.DatabaseName,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFilePath,
                        referenceObject.DataFilePath,
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        "path-with-double-quote\"",
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "logFilePath",
                },
            })
            .AddScenario(
                () =>
                new ConstructorArgumentValidationTestScenario <SqlServerDatabaseDefinition>
            {
                Name =
                    "constructor should throw ArgumentException when parameter 'logFilePath' is 'invalid with semicolon' when specified scenario",
                ConstructionFunc = () =>
                {
                    var referenceObject = A.Dummy <SqlServerDatabaseDefinition>();

                    var result = new SqlServerDatabaseDefinition(
                        referenceObject.DatabaseName,
                        referenceObject.DatabaseType,
                        referenceObject.RecoveryMode,
                        referenceObject.DataFilePath,
                        referenceObject.DataFilePath,
                        referenceObject.DataFileCurrentSizeInKb,
                        referenceObject.DataFileMaxSizeInKb,
                        referenceObject.DataFileGrowthSizeInKb,
                        referenceObject.LogFileLogicalName,
                        "path-with-semicolon;",
                        referenceObject.LogFileCurrentSizeInKb,
                        referenceObject.LogFileMaxSizeInKb,
                        referenceObject.LogFileGrowthSizeInKb);

                    return(result);
                },
                ExpectedExceptionType            = typeof(ArgumentException),
                ExpectedExceptionMessageContains = new[]
                {
                    "logFilePath",
                },
            });
        }