public void GetVersions_Returns_All_The_Installed_Versions() { // Arrange using var api = new SqlLocalDbApi(_loggerFactory); // Act IReadOnlyList <ISqlLocalDbVersionInfo> actual = api.GetVersions(); // Assert actual.ShouldNotBeNull(); actual.Count.ShouldBeGreaterThanOrEqualTo(1); actual.ShouldBeUnique(); actual.ShouldAllBe((p) => p != null); actual.ShouldContain((p) => p.Exists); }
/// <summary> /// The main entry point to the application. /// </summary> /// <param name="args">The command-line arguments passed to the application.</param> internal static void Main(string[] args) { PrintBanner(); var options = new SqlLocalDbOptions() { AutomaticallyDeleteInstanceFiles = true, StopOptions = StopInstanceOptions.NoWait, }; var services = new ServiceCollection().AddLogging((p) => p.AddConsole().SetMinimumLevel(LogLevel.Debug)); var loggerFactory = services.BuildServiceProvider().GetRequiredService <ILoggerFactory>(); var localDB = new SqlLocalDbApi(options, loggerFactory); if (!localDB.IsLocalDBInstalled()) { Console.WriteLine(SR.SqlLocalDbApi_NotInstalledFormat, Environment.MachineName); return; } if (args?.Length == 1 && (string.Equals(args[0], "/deleteuserinstances", StringComparison.OrdinalIgnoreCase) || string.Equals(args[0], "--delete-user-instances", StringComparison.OrdinalIgnoreCase))) { localDB.DeleteUserInstances(deleteFiles: true); } IReadOnlyList <ISqlLocalDbVersionInfo> versions = localDB.GetVersions(); Console.WriteLine(Strings.Program_VersionsListHeader); Console.WriteLine(); foreach (ISqlLocalDbVersionInfo version in versions) { Console.WriteLine(version.Name); } Console.WriteLine(); IReadOnlyList <ISqlLocalDbInstanceInfo> instances = localDB.GetInstances(); Console.WriteLine(Strings.Program_InstancesListHeader); Console.WriteLine(); foreach (ISqlLocalDbInstanceInfo instanceInfo in instances) { Console.WriteLine(instanceInfo.Name); } Console.WriteLine(); string instanceName = Guid.NewGuid().ToString(); ISqlLocalDbInstanceInfo instance = localDB.CreateInstance(instanceName); var manager = new SqlLocalDbInstanceManager(instance, localDB); manager.Start(); try { if (IsCurrentUserAdmin()) { manager.Share(Guid.NewGuid().ToString()); } try { using (SqlConnection connection = manager.CreateConnection()) { connection.Open(); try { using (SqlCommand command = new SqlCommand("create database [MyDatabase]", connection)) { command.ExecuteNonQuery(); } using (SqlCommand command = new SqlCommand("drop database [MyDatabase]", connection)) { command.ExecuteNonQuery(); } } finally { connection.Close(); } } } finally { if (IsCurrentUserAdmin()) { manager.Unshare(); } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { manager.Stop(); localDB.DeleteInstance(instance.Name); } Console.WriteLine(); Console.Write(Strings.Program_ExitPrompt); Console.ReadKey(); }