예제 #1
0
    public async Task AddStandardTest()
    {
        using (var scope = Fixture.Container.BeginLifetimeScope())
        {
            var cl = scope.Resolve <HttpClient>();
            await cl.PostJsonToActor(Fixture.TestMiddlewareUri, ActorName, "Add", TestStandard);

            var vstsConfig = scope.Resolve <VstsConfiguration>();
            var vstsClient = scope.Resolve <GitHttpClient>();
            var repos      = await vstsClient.GetRepositoriesAsync(vstsConfig.VstsTargetProjectId, includeHidden : true);

            //check no fork was created
            repos.Should().NotContain(r => r.Name == TestFork.ToString());
        }
    }
예제 #2
0
    public void ForkRepo_ToStringTest()
    {
        var sut = new SourceCodeRepository {
            SourceRepositoryName = "SourceRepoName", TenantCode = "TNT", Fork = true
        };

        sut.ToString().Should().Be("SourceRepoName-TNT");
    }
예제 #3
0
    public void StandardComponent_ToStringTest()
    {
        var sut = new SourceCodeRepository {
            SourceRepositoryName = "SourceRepoName", TenantCode = "TNT", Fork = false
        };

        sut.ToString().Should().Be("SourceRepoName");
    }
예제 #4
0
    public async Task StandardRepoNotRemovedTest()
    {
        using (var scope = Fixture.Container.BeginLifetimeScope())
        {
            var cl = scope.Resolve <HttpClient>();
            await cl.PostJsonToActor(Fixture.TestMiddlewareUri, ActorName, "Remove", TestStandard);

            var vstsConfig = scope.Resolve <VstsConfiguration>();
            var vstsClient = scope.Resolve <GitHttpClient>();
            var repos      = await vstsClient.GetRepositoriesAsync(vstsConfig.VstsTargetProjectId, includeHidden : true);

            //check standard repo still there
            repos.Should().ContainSingle(r => r.Name == TestStandard.ToString());
        }
    }
예제 #5
0
    public void Update_CheckNotCreatedBuildDefinitionRetry()
    {
        var forkRepoA = new SourceCodeRepository
        {
            SourceRepositoryName = "RepoA",
            State      = EntityStateEnum.Created,
            TenantCode = "TenantA"
        };
        var currentTenant = new Tenant
        {
            Code             = "TenantA",
            Name             = "oldName",
            SourceRepos      = new List <SourceCodeRepository>(new[] { forkRepoA }),
            BuildDefinitions = new List <VstsBuildDefinition>(new[]
            {
                new VstsBuildDefinition
                {
                    SourceCode = forkRepoA, State = EntityStateEnum.NotCreated, TenantCode = "TenantA"
                }
            })
        };

        var tenantRequest = new Tenant
        {
            SourceRepos = new List <SourceCodeRepository>(new[]
            {
                new SourceCodeRepository {
                    SourceRepositoryName = "RepoA"
                }
            })
        };

        currentTenant.Update(tenantRequest, GetEnvironments());

        currentTenant.BuildDefinitions.Should()
        .ContainSingle(d =>
                       d.SourceCode.ToString() == forkRepoA.ToString() && d.TenantCode == "TenantA" &&
                       d.State == EntityStateEnum.NotCreated);
    }
예제 #6
0
        /// <summary>
        /// Creates a repository Fork through the VSTS <see cref="GitHttpClient"/>.
        /// </summary>
        /// <param name="client">The <see cref="GitHttpClient"/> used to create the Fork.</param>
        /// <param name="vstsCollectionId">The target collection ID where we are creating the fork on.</param>
        /// <param name="vstsTargetProjectId">The target project ID where we are creating the fork on.</param>
        /// <param name="sourceCodeRepository">fork definition</param>
        /// <returns>The async <see cref="Task{GitRepository}"/> wrapper with pre-existing or new repo</returns>
        internal static async Task <GitRepository> CreateForkIfNotExists(this GitHttpClient client, string vstsCollectionId, string vstsTargetProjectId, SourceCodeRepository sourceCodeRepository)
        {
            var sourceRepo = await client.LoadGitRepositoryIfExists(sourceCodeRepository.SourceRepositoryName);

            if (sourceRepo == null)
            {
                throw new ArgumentException($"Repository {sourceCodeRepository.SourceRepositoryName} not found");
            }

            return(await CreateForkIfNotExists(client, vstsCollectionId, vstsTargetProjectId, sourceRepo, sourceCodeRepository.ToString()));
        }