Example #1
0
        private async Task DeactivateProjectAsync(AccountConfiguration configuration, string projectId, bool force = false)
        {
            if (!configuration.IsActivated(projectId) && !force)
            {
                return;
            }

            if (configuration.HasActiveRepositories(projectId) && !force)
            {
                return;
            }

            var serviceFactory = _connectionFactory.CreateFactory(new Uri(configuration.BaseUrl),
                                                                  new VssBasicCredential(string.Empty, configuration.PersonalAccessToken));

            var client = await serviceFactory.GetClientAsync <ServiceHooksPublisherHttpClient>();

            var serviceHookIds = configuration.GetServiceHookIds(projectId);

            configuration.Deactivate(projectId);

            foreach (var serviceHookId in serviceHookIds)
            {
                try
                {
                    await client.DeleteSubscriptionAsync(new Guid(serviceHookId));
                }
                catch
                {
                    // TODO: log?
                }
            }

            await _configurationRepository.UpdateAsync(configuration);
        }
        public void DeactivateProject_NotActivated_ShouldReturnNotActivated()
        {
            var projectId = Guid.NewGuid().ToString();

            var accountConfiguration = new AccountConfiguration();

            accountConfiguration.Deactivate(projectId);

            accountConfiguration.IsActivated(projectId).Should().BeFalse();
        }
        public void HasActivateRepositories_StillOneActive_ShouldReturnTrue()
        {
            var projectId        = Guid.NewGuid().ToString();
            var repositoryId     = Guid.NewGuid().ToString();
            var statusPolicyName = "TestPolic";

            var accountConfiguration = new AccountConfiguration();

            accountConfiguration.Activate(projectId, repositoryId, statusPolicyName);
            accountConfiguration.Activate(projectId, repositoryId, statusPolicyName + "2");
            accountConfiguration.Deactivate(projectId, repositoryId, statusPolicyName);

            accountConfiguration.HasActiveRepositories(projectId).Should().BeTrue();
        }
        public void DeactivateStatusPolicy_Activated_ShouldReturnNotActivated()
        {
            var projectId        = Guid.NewGuid().ToString();
            var repositoryId     = Guid.NewGuid().ToString();
            var statusPolicyName = "TestPolic";

            var accountConfiguration = new AccountConfiguration();

            accountConfiguration.Activate(projectId, repositoryId, statusPolicyName);
            accountConfiguration.Deactivate(projectId, repositoryId, statusPolicyName);

            accountConfiguration.IsStatusPolicyEnabled(projectId, repositoryId, statusPolicyName).Should().BeFalse();
            accountConfiguration.HasActiveRepositories(projectId).Should().BeFalse();
        }
        public void DeactivateProject_Activated_ShouldDeactivateProjectAndNotReturnsServiceHookIds()
        {
            var projectId      = Guid.NewGuid().ToString();
            var serviceHookIds = new[]
            {
                Guid.NewGuid().ToString(),
                Guid.NewGuid().ToString()
            };

            var accountConfiguration = new AccountConfiguration();

            accountConfiguration.Activate(projectId, new Guid().ToString(), serviceHookIds);
            accountConfiguration.Deactivate(projectId);

            accountConfiguration.IsActivated(projectId).Should().BeFalse();
            accountConfiguration.GetServiceHookIds(projectId).Should().BeEmpty();
        }