Exemple #1
0
        /// <summary>
        /// Backs up the current environment to the datastore, excluding the environment variables added by Chami.
        /// </summary>
        /// <param name="repository">An <see cref="EnvironmentRepository"/> where to save the backup.</param>
        public static void Backup(EnvironmentRepository repository)
        {
            var environmentVariables = System.Environment.GetEnvironmentVariables();

            environmentVariables = RemoveCurrentChamiVariables(environmentVariables, repository);

            var backupEnvironment = new Environment();

            var environmentName = $"Backup of {DateTime.Now:s}";

            backupEnvironment.Name            = environmentName;
            backupEnvironment.EnvironmentType = EnvironmentType.BackupEnvironment;

            foreach (DictionaryEntry entry in environmentVariables)
            {
                var variableName        = (string)entry.Key;
                var variableValue       = (string)entry.Value;
                var environmentVariable = new EnvironmentVariable {
                    Name = variableName, Value = variableValue
                };
                backupEnvironment.EnvironmentVariables.Add(environmentVariable);
            }

            repository.InsertEnvironment(backupEnvironment);
        }
Exemple #2
0
        public OctopusAsyncRepository(IOctopusAsyncClient client, RepositoryScope repositoryScope = null)
        {
            Client                    = client;
            Scope                     = repositoryScope ?? RepositoryScope.Unspecified();
            Accounts                  = new AccountRepository(this);
            ActionTemplates           = new ActionTemplateRepository(this);
            Artifacts                 = new ArtifactRepository(this);
            Backups                   = new BackupRepository(this);
            BuiltInPackageRepository  = new BuiltInPackageRepositoryRepository(this);
            CertificateConfiguration  = new CertificateConfigurationRepository(this);
            Certificates              = new CertificateRepository(this);
            Channels                  = new ChannelRepository(this);
            CommunityActionTemplates  = new CommunityActionTemplateRepository(this);
            Configuration             = new ConfigurationRepository(this);
            DashboardConfigurations   = new DashboardConfigurationRepository(this);
            Dashboards                = new DashboardRepository(this);
            Defects                   = new DefectsRepository(this);
            DeploymentProcesses       = new DeploymentProcessRepository(this);
            Deployments               = new DeploymentRepository(this);
            Environments              = new EnvironmentRepository(this);
            Events                    = new EventRepository(this);
            FeaturesConfiguration     = new FeaturesConfigurationRepository(this);
            Feeds                     = new FeedRepository(this);
            Interruptions             = new InterruptionRepository(this);
            LibraryVariableSets       = new LibraryVariableSetRepository(this);
            Lifecycles                = new LifecyclesRepository(this);
            MachinePolicies           = new MachinePolicyRepository(this);
            MachineRoles              = new MachineRoleRepository(this);
            Machines                  = new MachineRepository(this);
            Migrations                = new MigrationRepository(this);
            OctopusServerNodes        = new OctopusServerNodeRepository(this);
            PerformanceConfiguration  = new PerformanceConfigurationRepository(this);
            PackageMetadataRepository = new PackageMetadataRepository(this);
            ProjectGroups             = new ProjectGroupRepository(this);
            Projects                  = new ProjectRepository(this);
            ProjectTriggers           = new ProjectTriggerRepository(this);
            Proxies                   = new ProxyRepository(this);
            Releases                  = new ReleaseRepository(this);
            RetentionPolicies         = new RetentionPolicyRepository(this);
            Schedulers                = new SchedulerRepository(this);
            ServerStatus              = new ServerStatusRepository(this);
            Spaces                    = new SpaceRepository(this);
            Subscriptions             = new SubscriptionRepository(this);
            TagSets                   = new TagSetRepository(this);
            Tasks                     = new TaskRepository(this);
            Teams                     = new TeamsRepository(this);
            Tenants                   = new TenantRepository(this);
            TenantVariables           = new TenantVariablesRepository(this);
            UserInvites               = new UserInvitesRepository(this);
            UserRoles                 = new UserRolesRepository(this);
            Users                     = new UserRepository(this);
            VariableSets              = new VariableSetRepository(this);
            Workers                   = new WorkerRepository(this);
            WorkerPools               = new WorkerPoolRepository(this);
            ScopedUserRoles           = new ScopedUserRoleRepository(this);
            UserPermissions           = new UserPermissionsRepository(this);

            loadRootResource      = new Lazy <Task <RootResource> >(LoadRootDocumentInner, true);
            loadSpaceRootResource = new Lazy <Task <SpaceRootResource> >(LoadSpaceRootDocumentInner, true);
        }
        public async Task UpdateEnvironment()
        {
            // arrange
            var serializer = new IdSerializer();
            var environment = new Environment(Guid.NewGuid(), "abc", "def");
            await EnvironmentRepository.AddEnvironmentAsync(environment);
            string id = serializer.Serialize("Environment", environment.Id);

            // act
            IExecutionResult result = await Executor.ExecuteAsync(
                QueryRequestBuilder.New()
                    .SetQuery(
                        @"mutation($id: ID!) {
                            updateEnvironment(input: {
                                id: $id
                                name: ""abc2""
                                description: ""def2""
                                clientMutationId: ""ghi"" }) {
                                environment {
                                    id
                                    name
                                    description
                                }
                                clientMutationId
                            }
                        }")
                    .SetVariableValue("id", id)
                    .Create());

            // assert
            result.MatchSnapshot(o =>
                o.Assert(fo =>
                    Assert.NotNull(fo.Field<string>("Data.updateEnvironment.environment.id"))));
        }
Exemple #4
0
        public void GetNotExistingEnvironment()
        {
            var repository   = new EnvironmentRepository(connectionString);
            var shouldBeNull = repository.GetEnvironmentById(-1);

            Assert.Null(shouldBeNull);
        }
Exemple #5
0
        public async Task GetEnvironmentsById()
        {
            // arrange
            var serializer  = new IdSerializer();
            var environment = new Environment(Guid.NewGuid(), "abc", "def");
            await EnvironmentRepository.AddEnvironmentAsync(environment);

            string id = serializer.Serialize("Environment", environment.Id);

            // act
            IExecutionResult result = await Executor.ExecuteAsync(
                QueryRequestBuilder.New()
                .SetQuery(
                    @"query($ids: [ID!]!) {
                            environmentsById(ids: $ids) {
                                id
                                name
                                description
                            }
                        }")
                .SetVariableValue("ids", new[] { id })
                .Create());

            // assert
            result.MatchSnapshot(o =>
                                 o.Assert(fo =>
                                          Assert.Equal(id, fo.Field <string>("Data.environmentsById[0].id"))));
        }
Exemple #6
0
        public async Task ExecutePublishDocumentServer_With_SchemaFile_Handler()
        {
            // arrange
            var handler = new PublishSchemaDocumentHandler(
                Storage, SchemaRepository, PublishSchemaEventSender);

            using var service = new PublishDocumentService(
                      PublishDocumentMessageReceiver, new
                      IPublishDocumentHandler[] { handler });

            var schema = new Schema("abc", "def");
            await SchemaRepository.AddSchemaAsync(schema);

            var environment = new Environment("abc", "def");
            await EnvironmentRepository.AddEnvironmentAsync(environment);

            var message = new PublishDocumentMessage(
                "ghi", environment.Id, schema.Id, Array.Empty <Tag>());

            IFileContainer fileContainer = await Storage.CreateContainerAsync("ghi");

            using (Stream stream = await fileContainer.CreateFileAsync("schema.graphql"))
            {
                byte[] buffer = Encoding.UTF8.GetBytes(@"
                    type Query {
                        foo: String
                    }
                ");
                await stream.WriteAsync(buffer, 0, buffer.Length);
            }

            await PublishDocumentMessageSender.SendAsync(message);

            // act
            await service.StartAsync(default);
Exemple #7
0
        /// <summary>
        ///     Opens an item.
        /// </summary>
        /// <param name="payload">The payload.</param>
        void OpenItem(object payload)
        {
            var debugState = payload as IDebugState;

            if (debugState == null)
            {
                return;
            }

            if (debugState.ActivityType == ActivityType.Workflow && EnvironmentRepository != null)
            {
                var environment = EnvironmentRepository.All().FirstOrDefault(e => e.ID == debugState.EnvironmentID);

                if (environment == null || !environment.IsConnected)
                {
                    return;
                }

                var resource = environment.ResourceRepository.FindSingle(r => r.ResourceName == debugState.DisplayName);

                if (resource == null)
                {
                    return;
                }
                EventPublishers.Aggregator.Publish(new AddWorkSurfaceMessage(resource));
            }
        }
        public void Should_Create_New_Environment()
        {
            var fakeContext = new FakeContext("CreateNewEnvironment");

            var fakeEnvironment = new Environment();

            fakeEnvironment.Name = "full name";

            using (var context = new MainContext(fakeContext.FakeOptions))
            {
                var repository    = new EnvironmentRepository(context);
                var mockValidator = new Mock <IValidator <Environment> >(MockBehavior.Strict);

                mockValidator
                .Setup(x => x.Validate(fakeEnvironment))
                .Returns(new FluentValidation.Results.ValidationResult());

                var service = new EnvironmentService(repository, mockValidator.Object);
                var actual  = service.Create(fakeEnvironment);
                var id      = actual.Id;

                Assert.NotEqual(0, id);
                repository.Dispose();
            }
        }
Exemple #9
0
        public async Task PublishSchema()
        {
            // arrange
            var serializer = new IdSerializer();

            var schema = new Schema("abc", "def");
            await SchemaRepository.AddSchemaAsync(schema);

            var environment = new Environment("abc", "def");
            await EnvironmentRepository.AddEnvironmentAsync(environment);

            // act
            IExecutionResult result = await Executor.ExecuteAsync(
                QueryRequestBuilder.New()
                .SetQuery(
                    @"mutation(
                            $schemaName: String!
                            $environmentName: String!
                            $sourceText: String!
                            $version: String!) {
                            publishSchema(input: {
                                schemaName: $schemaName
                                environmentName: $environmentName
                                sourceText: $sourceText
                                tags: [ { key: ""version"" value: $version } ]
                                clientMutationId: ""ghi"" }) {
                                sessionId
                                clientMutationId
                            }
                        }")
                .SetVariableValue("schemaName", "abc")
                .SetVariableValue("environmentName", "abc")
                .SetVariableValue("sourceText", "type Query { a: String }")
                .SetVariableValue("version", "1.0.0")
                .Create());

            // assert
            result.MatchSnapshot(o =>
                                 o.Assert(fo =>
                                          Assert.NotNull(fo.Field <string>("Data.publishSchema.sessionId"))));
            Assert.Collection(ReceivedMessages,
                              t =>
            {
                PublishDocumentMessage message = Assert.IsType <PublishDocumentMessage>(t);
                Assert.Equal(schema.Id, message.SchemaId);
                Assert.Equal(environment.Id, message.EnvironmentId);
                Assert.Equal(DocumentType.Schema, message.Type);
                Assert.Null(message.ClientId);
                Assert.NotNull(message.SessionId);
                Assert.Collection(message.Tags,
                                  t =>
                {
                    Assert.Equal("version", t.Key);
                    Assert.Equal("1.0.0", t.Value);
                });
            });
        }
        public void EnvironmentRepository_GetAllValues()
        {
            var repo = new EnvironmentRepository();

            var values = repo.GetAllValues <List <string> >();

            Assert.IsNotNull(values);
            Assert.IsTrue(values.Count > 0);
            Assert.IsTrue(values.Contains("Q5"));
        }
Exemple #11
0
        public ExportWindowViewModel()
        {
            ExportAll            = true;
            ExportSelected       = false;
            Environments         = new ObservableCollection <EnvironmentExportWindowViewModel>();
            SelectedEnvironments = new ObservableCollection <EnvironmentExportWindowViewModel>();
            var connectionString = App.GetConnectionString();

            _repository = new EnvironmentRepository(connectionString);
        }
Exemple #12
0
        public void GetPrigPath_should_return_prig_path_in_tools_directory()
        {
            // Arrange
            var envRepos = new EnvironmentRepository();

            // Act
            var result = envRepos.GetPrigPath();

            // Assert
            Assert.AreEqual(@"C:\ProgramData\chocolatey\lib\Prig\tools\prig.exe", result);
        }
Exemple #13
0
        public void GetRegsvr32Path_should_return_regsvr32_path_in_system32_directory()
        {
            // Arrange
            var envRepos = new EnvironmentRepository();

            // Act
            var result = envRepos.GetRegsvr32Path();

            // Assert
            Assert.That(result, Is.SamePath(@"C:\Windows\SysNative\regsvr32.exe"));
        }
Exemple #14
0
        public void GetVsixPackageFolder_should_return_executing_assembly_directory_path()
        {
            // Arrange
            var envRepos = new EnvironmentRepository();

            // Act
            var result = envRepos.GetVsixPackageFolder();

            // Assert
            Assert.That(result, Is.StringMatching(GetShadowCopyTargetDirectoryPattern()));
        }
Exemple #15
0
        public void GetLibPath_should_return_lib_directory_in_chocolatey_compatible_directory_path()
        {
            // Arrange
            var envRepos = new EnvironmentRepository();

            // Act
            var result = envRepos.GetLibPath();

            // Assert
            Assert.AreEqual(@"C:\ProgramData\chocolatey\lib\Prig\lib", result);
        }
Exemple #16
0
        public void ExistsDirectory_should_return_true_if_directory_exists()
        {
            // Arrange
            var envRepos = new EnvironmentRepository();

            // Act
            var result = envRepos.ExistsDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));

            // Assert
            Assert.IsTrue(result);
        }
        public void EnvironmentRepository_GetValue()
        {
            var repo = new EnvironmentRepository();

            var key = "Q5";

            var value = repo.GetValue <string>(key);

            Assert.IsNotNull(value);
            Assert.AreEqual(key, value);
        }
Exemple #18
0
        public void ExistsFile_should_return_true_if_file_exists()
        {
            // Arrange
            var envRepos = new EnvironmentRepository();

            // Act
            var result = envRepos.ExistsFile(Assembly.GetExecutingAssembly().Location);

            // Assert
            Assert.IsTrue(result);
        }
Exemple #19
0
        public void GetVsixLibPath_should_return_lib_directory_in_executing_assembly_directory_path()
        {
            // Arrange
            var envRepos = new EnvironmentRepository();

            // Act
            var result = envRepos.GetVsixLibPath();

            // Assert
            Assert.That(result, Is.StringMatching(ToShadowCopyTargetPattern(@"lib")));
        }
Exemple #20
0
        public void GetFileDescription_should_return_the_file_description_of_the_specified_file()
        {
            // Arrange
            var envRepos = new EnvironmentRepository();

            // Act
            var result = envRepos.GetFileDescription(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"tools\x64\Urasandesu.Prig.dll"));

            // Assert
            Assert.That(result, Is.StringMatching(@"Prig Profiler \d+\.\d+\.\d+ Type Library"));
        }
        public void EnvironmentRepository_RemoveValue()
        {
            var repo = new EnvironmentRepository();

            var key = "D3";

            repo.RemoveValue(key);

            var containsKey = repo.ContainsKey(key);

            Assert.IsFalse(containsKey);
        }
Exemple #22
0
        public void SelectLocalHost()
        {
            var localhostItem = StudioResourceRepository.FindItem(model => model.DisplayName.ToLower().Contains("localhost"));

            if (localhostItem != null)
            {
                localhostItem.IsExplorerSelected = true;
                Dev2Logger.Log.Debug("Publish message of type - " + typeof(SetActiveEnvironmentMessage));
                var localHost = EnvironmentRepository.FindSingle(model => model.ID == localhostItem.EnvironmentId);
                _eventPublisher.Publish(new SetActiveEnvironmentMessage(localHost));
            }
        }
Exemple #23
0
        public void OpenRegistryBaseKey_should_open_specified_registry_key()
        {
            // Arrange
            var envRepos = new EnvironmentRepository();

            // Act
            using (var result = envRepos.OpenRegistryBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32))
            {
                // Assert
                Assert.AreEqual(Registry.ClassesRoot.ToString(), result.ToString());
            }
        }
Exemple #24
0
        public void OpenRegistrySubKey_should_open_specified_registry_sub_key()
        {
            // Arrange
            var envRepos = new EnvironmentRepository();

            // Act
            using (var result = envRepos.OpenRegistrySubKey(Registry.ClassesRoot, @"TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1"))
            {
                // Assert
                Assert.IsNotNull(result);
            }
        }
Exemple #25
0
        public void GetExistingEnvironment()
        {
            var repository  = new EnvironmentRepository(connectionString);
            var environment = repository.GetEnvironmentById(4);

            Assert.NotNull(environment);
            Assert.NotEmpty(environment.EnvironmentVariables);

            var environmentVariableId = environment.EnvironmentVariables.First().EnvironmentVariableId;

            Assert.NotEqual(0, environmentVariableId);
        }
        public void Delete_NotFoundIdEnvironment()
        {
            var context = _contextFake.GetContext("Delete_NotFoundIdEnvironment")
                          .AddFakeEnvironments();

            var repo = new EnvironmentRepository(context);

            var controller = new EnvironmentController(repo, _mapper);

            var result       = controller.Delete(int.MaxValue);
            var actionResult = Assert.IsType <NotFoundResult>(result);
        }
        public OctopusAsyncRepository(IOctopusAsyncClient client)
        {
            this.Client = client;

            Accounts                 = new AccountRepository(client);
            ActionTemplates          = new ActionTemplateRepository(client);
            Artifacts                = new ArtifactRepository(client);
            Backups                  = new BackupRepository(client);
            BuiltInPackageRepository = new BuiltInPackageRepositoryRepository(client);
            CertificateConfiguration = new CertificateConfigurationRepository(client);
            Certificates             = new CertificateRepository(client);
            Channels                 = new ChannelRepository(client);
            CommunityActionTemplates = new CommunityActionTemplateRepository(client);
            Configuration            = new ConfigurationRepository(client);
            DashboardConfigurations  = new DashboardConfigurationRepository(client);
            Dashboards               = new DashboardRepository(client);
            Defects                  = new DefectsRepository(client);
            DeploymentProcesses      = new DeploymentProcessRepository(client);
            Deployments              = new DeploymentRepository(client);
            Environments             = new EnvironmentRepository(client);
            Events = new EventRepository(client);
            FeaturesConfiguration = new FeaturesConfigurationRepository(client);
            Feeds                    = new FeedRepository(client);
            Interruptions            = new InterruptionRepository(client);
            LibraryVariableSets      = new LibraryVariableSetRepository(client);
            Lifecycles               = new LifecyclesRepository(client);
            MachinePolicies          = new MachinePolicyRepository(client);
            MachineRoles             = new MachineRoleRepository(client);
            Machines                 = new MachineRepository(client);
            Migrations               = new MigrationRepository(client);
            OctopusServerNodes       = new OctopusServerNodeRepository(client);
            PerformanceConfiguration = new PerformanceConfigurationRepository(client);
            ProjectGroups            = new ProjectGroupRepository(client);
            Projects                 = new ProjectRepository(client);
            ProjectTriggers          = new ProjectTriggerRepository(client);
            Proxies                  = new ProxyRepository(client);
            Releases                 = new ReleaseRepository(client);
            RetentionPolicies        = new RetentionPolicyRepository(client);
            Schedulers               = new SchedulerRepository(client);
            ServerStatus             = new ServerStatusRepository(client);
            Subscriptions            = new SubscriptionRepository(client);
            TagSets                  = new TagSetRepository(client);
            Tasks                    = new TaskRepository(client);
            Teams                    = new TeamsRepository(client);
            Tenants                  = new TenantRepository(client);
            TenantVariables          = new TenantVariablesRepository(client);
            UserRoles                = new UserRolesRepository(client);
            Users                    = new UserRepository(client);
            VariableSets             = new VariableSetRepository(client);
            Workers                  = new WorkerRepository(client);
            WorkerPools              = new WorkerPoolRepository(client);
        }
Exemple #28
0
        public void GetAll_ShouldWork()
        {
            var context = _contextFake.GetContext("GetAll_ShouldWork")
                          .AddFakeEnvironments();

            var environmentsFind = context.Environments.ToList();

            var repo   = new EnvironmentRepository(context);
            var result = repo.GetAll();

            Assert.NotNull(result);
            Assert.Equal(environmentsFind, result, new EnvironmentComparer());
        }
Exemple #29
0
        public void FindById_ShouldWork()
        {
            var context = _contextFake.GetContext("FindById_ShouldWork")
                          .AddFakeEnvironments();

            var environmentFind = context.Environments.Skip(1).First();

            var repo   = new EnvironmentRepository(context);
            var result = repo.FindById(environmentFind.Id);

            Assert.NotNull(result);
            Assert.Equal(environmentFind, result, new EnvironmentComparer());
        }
Exemple #30
0
        public void ExistsDirectory_should_return_false_if_directory_does_not_exist()
        {
            // Arrange
            var fixture = new Fixture().Customize(new AutoMoqCustomization());

            var envRepos = new EnvironmentRepository();

            // Act
            var result = envRepos.ExistsDirectory(fixture.Create <string>());

            // Assert
            Assert.IsFalse(result);
        }
 public OctopusRepository(IOctopusClient client)
 {
     this.Client = client;
     Feeds = new FeedRepository(client);
     Backups = new BackupRepository(client);
     Machines = new MachineRepository(client);
     MachineRoles = new MachineRoleRepository(client);
     MachinePolicies = new MachinePolicyRepository(client);
     Subscriptions = new SubscriptionRepository(client);
     Environments = new EnvironmentRepository(client);
     Events = new EventRepository(client);
     FeaturesConfiguration = new FeaturesConfigurationRepository(client);
     ProjectGroups = new ProjectGroupRepository(client);
     Projects = new ProjectRepository(client);
     Proxies = new ProxyRepository(client);
     Tasks = new TaskRepository(client);
     Users = new UserRepository(client);
     VariableSets = new VariableSetRepository(client);
     LibraryVariableSets = new LibraryVariableSetRepository(client);
     DeploymentProcesses = new DeploymentProcessRepository(client);
     Releases = new ReleaseRepository(client);
     Deployments = new DeploymentRepository(client);
     Certificates = new CertificateRepository(client);
     Dashboards = new DashboardRepository(client);
     DashboardConfigurations = new DashboardConfigurationRepository(client);
     Artifacts = new ArtifactRepository(client);
     Interruptions = new InterruptionRepository(client);
     ServerStatus = new ServerStatusRepository(client);
     UserRoles = new UserRolesRepository(client);
     Teams = new TeamsRepository(client);
     RetentionPolicies = new RetentionPolicyRepository(client);
     Accounts = new AccountRepository(client);
     Defects = new DefectsRepository(client);
     Lifecycles = new LifecyclesRepository(client);
     OctopusServerNodes = new OctopusServerNodeRepository(client);
     Channels = new ChannelRepository(client);
     ProjectTriggers = new ProjectTriggerRepository(client);
     Schedulers = new SchedulerRepository(client);
     Tenants = new TenantRepository(client);
     TagSets = new TagSetRepository(client);
     BuiltInPackageRepository = new BuiltInPackageRepositoryRepository(client);
     ActionTemplates = new ActionTemplateRepository(client);
     CommunityActionTemplates = new CommunityActionTemplateRepository(client);
 }
Exemple #32
0
 /// <summary>
 /// Get assignments
 /// </summary>
 /// <param name="str"></param>
 /// <returns></returns>
 public static void LoadPlanning(this RAssignedResource resource)
 {
     var rep = new EnvironmentRepository();
     var assignments = rep.GetAssignments(resource.Id);
     resource.Planning.AddRange(assignments);
 }