From 166768ced5c498fe19e85dbbeffd165a5e5422c4 Mon Sep 17 00:00:00 2001
From: Petar Hristov
Date: Sun, 9 Jan 2022 15:59:03 +0100
Subject: [PATCH] Fix: ProtectBranchRequest
---
.../Branches/Requests/ProtectBranchRequest.cs | 20 +++---
.../BranchesClientTest.cs | 70 +++++++++++++++++++
2 files changed, 80 insertions(+), 10 deletions(-)
create mode 100644 test/GitLabApiClient.Test/BranchesClientTest.cs
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();
+ }
+ }
+}