diff --git a/src/GitLabApiClient/Models/Branches/Requests/ProtectBranchRequest.cs b/src/GitLabApiClient/Models/Branches/Requests/ProtectBranchRequest.cs index e9ea51e5..ab10f8aa 100644 --- a/src/GitLabApiClient/Models/Branches/Requests/ProtectBranchRequest.cs +++ b/src/GitLabApiClient/Models/Branches/Requests/ProtectBranchRequest.cs @@ -19,15 +19,15 @@ public sealed class ProtectBranchRequest /// Access levels allowed to unprotect. public ProtectBranchRequest( string name, - ProtectedRefAccessLevels? pushAccessLevel = ProtectedRefAccessLevels.MaintainerAccess, - ProtectedRefAccessLevels? mergeAccessLevel = ProtectedRefAccessLevels.MaintainerAccess, - ProtectedRefAccessLevels? unprotectAccessLevel = ProtectedRefAccessLevels.MaintainerAccess) + ProtectedRefAccessLevels pushAccessLevel = ProtectedRefAccessLevels.MaintainerAccess, + ProtectedRefAccessLevels mergeAccessLevel = ProtectedRefAccessLevels.MaintainerAccess, + ProtectedRefAccessLevels unprotectAccessLevel = ProtectedRefAccessLevels.MaintainerAccess) { Guard.NotEmpty(name, nameof(name)); - - PushAccessLevel = pushAccessLevel.ToString(); - MergeAccessLevel = mergeAccessLevel.ToString(); - UnprotectAccessLevel = unprotectAccessLevel.ToString(); + Name = name; + PushAccessLevel = pushAccessLevel; + MergeAccessLevel = mergeAccessLevel; + UnprotectAccessLevel = unprotectAccessLevel; } /// @@ -40,18 +40,18 @@ public ProtectBranchRequest( /// Access levels allowed to push (defaults: 40, maintainer access level). /// [JsonProperty("push_access_level")] - public string PushAccessLevel { get; set; } + public ProtectedRefAccessLevels PushAccessLevel { get; set; } /// /// Access levels allowed to merge (defaults: 40, maintainer access level). /// [JsonProperty("merge_access_level")] - public string MergeAccessLevel { get; set; } + public ProtectedRefAccessLevels MergeAccessLevel { get; set; } /// /// Access levels allowed to unprotect (defaults: 40, maintainer access level). /// [JsonProperty("unprotect_access_level")] - public string UnprotectAccessLevel { get; set; } + public ProtectedRefAccessLevels UnprotectAccessLevel { get; set; } } } diff --git a/test/GitLabApiClient.Test/BranchesClientTest.cs b/test/GitLabApiClient.Test/BranchesClientTest.cs new file mode 100644 index 00000000..fee80df2 --- /dev/null +++ b/test/GitLabApiClient.Test/BranchesClientTest.cs @@ -0,0 +1,70 @@ +using System.Threading.Tasks; +using FluentAssertions; +using GitLabApiClient.Internal.Queries; +using GitLabApiClient.Models.Branches.Requests; +using GitLabApiClient.Models.Branches.Responses; +using Xunit; +using static GitLabApiClient.Test.Utilities.GitLabApiHelper; + +namespace GitLabApiClient.Test +{ + [Trait("Category", "LinuxIntegration")] + [Collection("GitLabContainerFixture")] + public class BranchesClientTest + { + private readonly BranchClient _sut = new BranchClient( + GetFacade(), new BranchQueryBuilder()); + + [Fact] + public async Task CreatedBranchCanBeDeleted() + { + //arrange + const string name = "Title1"; + const string source = "main"; + var createdBranch = await _sut.CreateAsync(TestProjectId, new Models.Branches.Requests.CreateBranchRequest(name, source)); + + //act + await _sut.DeleteBranch(TestProjectTextId, createdBranch.Name); + + //assert + var deletedBranch = await _sut.GetAsync(TestProjectId, name); + createdBranch.Should().Match(i => + i.Name == "Title1"); + + deletedBranch.Should().BeNull(); + } + + [Fact] + public async Task CreatedBranchCanBeProtected() + { + //arrange + const string name = "Title2"; + const string source = "main"; + var createdBranch = await _sut.CreateAsync(TestProjectId, new Models.Branches.Requests.CreateBranchRequest(name, source)); + + //act + var protectedBranch = await _sut.ProtectBranchAsync(TestProjectId, new ProtectBranchRequest(name)); + + //assert + protectedBranch.Should().Match(i => i.Name == name); + } + + [Fact] + public async Task CreatedBranchCanBeUnprotected() + { + //arrange + const string name = "Title3"; + const string source = "main"; + var createdBranch = await _sut.CreateAsync(TestProjectId, new Models.Branches.Requests.CreateBranchRequest(name, source)); + + //act + var protectedBranch = await _sut.ProtectBranchAsync(TestProjectId, new ProtectBranchRequest(name)); + await _sut.UnprotectBranchAsync(TestProjectId, name); + + //assert + protectedBranch.Should().Match(i => i.Name == name); + var unprotectedBranch = await _sut.GetProtectedBranchesAsync(TestProjectId, name); + unprotectedBranch.Should().BeNull(); + } + } +}