diff --git a/Contentstack.Management.Core.Tests/Contentstack.Management.Core.Tests.csproj b/Contentstack.Management.Core.Tests/Contentstack.Management.Core.Tests.csproj
index 295d80b..e38c043 100644
--- a/Contentstack.Management.Core.Tests/Contentstack.Management.Core.Tests.csproj
+++ b/Contentstack.Management.Core.Tests/Contentstack.Management.Core.Tests.csproj
@@ -58,6 +58,5 @@
-
diff --git a/Contentstack.Management.Core.Tests/IntegrationTest/Contentstack019_RoleTest.cs b/Contentstack.Management.Core.Tests/IntegrationTest/Contentstack019_RoleTest.cs
index 7d6921a..f48b1f7 100644
--- a/Contentstack.Management.Core.Tests/IntegrationTest/Contentstack019_RoleTest.cs
+++ b/Contentstack.Management.Core.Tests/IntegrationTest/Contentstack019_RoleTest.cs
@@ -8,7 +8,7 @@
using Contentstack.Management.Core.Tests.Helpers;
using Contentstack.Management.Core.Tests.Model;
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using Newtonsoft.Json.Linq;
+using System.Text.Json.Nodes;
namespace Contentstack.Management.Core.Tests.IntegrationTest
{
@@ -66,7 +66,7 @@ private static RoleModel BuildMinimalRoleModel(string uniqueName)
private static string ParseRoleUid(ContentstackResponse response)
{
- var jo = response.OpenJObjectResponse();
+ var jo = response.OpenJsonObjectResponse();
return jo?["role"]?["uid"]?.ToString();
}
@@ -87,7 +87,7 @@ private void SafeDelete(string roleUid)
}
}
- private static bool RolesArrayContainsUid(JArray roles, string uid)
+ private static bool RolesArrayContainsUid(JsonArray roles, string uid)
{
if (roles == null || string.IsNullOrEmpty(uid))
{
@@ -324,7 +324,7 @@ public void Test001_Should_Create_Role_Sync()
roleUid = ParseRoleUid(response);
AssertLogger.IsNotNull(roleUid, "role uid");
- var jo = response.OpenJObjectResponse();
+ var jo = response.OpenJsonObjectResponse();
AssertLogger.AreEqual(name, jo["role"]?["name"]?.ToString(), "Response name should match", "RoleName");
}
finally
@@ -349,7 +349,7 @@ public void Test002_Should_Fetch_Role_Sync()
ContentstackResponse fetchResponse = _stack.Role(roleUid).Fetch();
AssertLogger.IsTrue(fetchResponse.IsSuccessStatusCode, "Fetch should succeed", "FetchSyncSuccess");
- var role = fetchResponse.OpenJObjectResponse()?["role"];
+ var role = fetchResponse.OpenJsonObjectResponse()?["role"];
AssertLogger.AreEqual(name, role?["name"]?.ToString(), "Fetched name should match", "FetchedName");
AssertLogger.AreEqual(roleUid, role?["uid"]?.ToString(), "Fetched uid should match", "FetchedUid");
}
@@ -375,7 +375,7 @@ public void Test003_Should_Query_Roles_Sync()
ContentstackResponse queryResponse = _stack.Role().Query().Find();
AssertLogger.IsTrue(queryResponse.IsSuccessStatusCode, "Query Find should succeed", "QueryFindSuccess");
- var roles = queryResponse.OpenJObjectResponse()?["roles"] as JArray;
+ var roles = queryResponse.OpenJsonObjectResponse()?["roles"] as JsonArray;
AssertLogger.IsNotNull(roles, "roles array");
AssertLogger.IsTrue(
RolesArrayContainsUid(roles, roleUid),
@@ -408,7 +408,7 @@ public void Test004_Should_Update_Role_Sync()
ContentstackResponse fetchResponse = _stack.Role(roleUid).Fetch();
AssertLogger.IsTrue(fetchResponse.IsSuccessStatusCode, "Fetch after update should succeed", "FetchAfterUpdate");
- var role = fetchResponse.OpenJObjectResponse()?["role"];
+ var role = fetchResponse.OpenJsonObjectResponse()?["role"];
AssertLogger.AreEqual(updatedName, role?["name"]?.ToString(), "Name should reflect update", "UpdatedName");
}
finally
@@ -466,7 +466,7 @@ public async Task Test006_Should_Create_Role_Async()
roleUid = ParseRoleUid(response);
AssertLogger.IsNotNull(roleUid, "role uid");
- var jo = response.OpenJObjectResponse();
+ var jo = response.OpenJsonObjectResponse();
AssertLogger.AreEqual(name, jo["role"]?["name"]?.ToString(), "Response name should match", "RoleName");
}
finally
@@ -491,7 +491,7 @@ public async Task Test007_Should_Fetch_Role_Async()
ContentstackResponse fetchResponse = await _stack.Role(roleUid).FetchAsync();
AssertLogger.IsTrue(fetchResponse.IsSuccessStatusCode, "FetchAsync should succeed", "FetchAsyncSuccess");
- var role = fetchResponse.OpenJObjectResponse()?["role"];
+ var role = fetchResponse.OpenJsonObjectResponse()?["role"];
AssertLogger.AreEqual(name, role?["name"]?.ToString(), "Fetched name should match", "FetchedName");
AssertLogger.AreEqual(roleUid, role?["uid"]?.ToString(), "Fetched uid should match", "FetchedUid");
}
@@ -517,7 +517,7 @@ public async Task Test008_Should_Query_Roles_Async()
ContentstackResponse queryResponse = await _stack.Role().Query().FindAsync();
AssertLogger.IsTrue(queryResponse.IsSuccessStatusCode, "Query FindAsync should succeed", "QueryFindAsyncSuccess");
- var roles = queryResponse.OpenJObjectResponse()?["roles"] as JArray;
+ var roles = queryResponse.OpenJsonObjectResponse()?["roles"] as JsonArray;
AssertLogger.IsNotNull(roles, "roles array");
AssertLogger.IsTrue(
RolesArrayContainsUid(roles, roleUid),
@@ -550,7 +550,7 @@ public async Task Test009_Should_Update_Role_Async()
ContentstackResponse fetchResponse = await _stack.Role(roleUid).FetchAsync();
AssertLogger.IsTrue(fetchResponse.IsSuccessStatusCode, "FetchAsync after update should succeed", "FetchAsyncAfterUpdate");
- var role = fetchResponse.OpenJObjectResponse()?["role"];
+ var role = fetchResponse.OpenJsonObjectResponse()?["role"];
AssertLogger.AreEqual(updatedName, role?["name"]?.ToString(), "Name should reflect update", "UpdatedName");
}
finally
@@ -888,11 +888,11 @@ public void Test023_Should_Accept_Create_Role_With_Null_Rules_Sync()
AssertLogger.IsNotNull(roleUid, "NullRulesAccepted");
// Verify API accepted the request - detailed rule validation is optional
- var responseContent = response.OpenJObjectResponse();
+ var responseContent = response.OpenJsonObjectResponse();
if (responseContent?["role"] != null)
{
var role = responseContent["role"];
- var rules = role["rules"] as JArray;
+ var rules = role["rules"] as JsonArray;
if (rules != null && rules.Count > 0)
{
AssertLogger.IsTrue(true, "DefaultRulesAdded");
@@ -941,7 +941,7 @@ public void Test024_Should_Accept_Create_Role_With_Empty_Rules_Sync()
AssertLogger.IsNotNull(roleUid, "EmptyRulesAccepted");
// Verify API accepted the request - detailed rule validation is optional
- var responseContent = response.OpenJObjectResponse();
+ var responseContent = response.OpenJsonObjectResponse();
if (responseContent?["role"] != null)
{
AssertLogger.IsTrue(true, "EmptyRulesHandledByAPI");
@@ -985,7 +985,7 @@ public void Test025_Should_Accept_Create_Role_With_Empty_Branches_Sync()
AssertLogger.IsNotNull(roleUid, "EmptyBranchesAccepted");
// Verify API accepted the request - detailed branch validation is optional
- var responseContent = response.OpenJObjectResponse();
+ var responseContent = response.OpenJsonObjectResponse();
if (responseContent?["role"] != null)
{
AssertLogger.IsTrue(true, "EmptyBranchesHandledByAPI");
@@ -1029,7 +1029,7 @@ public void Test026_Should_Accept_Create_Role_With_Nonexistent_Branch_Sync()
AssertLogger.IsNotNull(roleUid, "NonexistentBranchAccepted");
// Verify API accepted the request - detailed branch validation is optional
- var responseContent = response.OpenJObjectResponse();
+ var responseContent = response.OpenJsonObjectResponse();
if (responseContent?["role"] != null)
{
AssertLogger.IsTrue(true, "NonexistentBranchHandledByAPI");
@@ -1144,7 +1144,7 @@ public void Test029_Should_Accept_Update_Role_With_Empty_Name_Sync()
AssertLogger.IsTrue(true, "EmptyNameUpdateAccepted");
// Verify API preserved original name when empty name provided
- var role = updateResponse.OpenJObjectResponse()?["role"];
+ var role = updateResponse.OpenJsonObjectResponse()?["role"];
var currentName = role?["name"]?.ToString();
AssertLogger.AreEqual(originalName, currentName, "OriginalNamePreserved");
AssertLogger.IsTrue(!string.IsNullOrEmpty(currentName), "NameNotEmpty");
@@ -1401,7 +1401,7 @@ public async Task Test035_Should_Accept_Update_Role_With_Empty_Name_Async()
AssertLogger.IsTrue(true, "EmptyNameUpdateAcceptedAsync");
// Verify API preserved original name when empty name provided
- var role = updateResponse.OpenJObjectResponse()?["role"];
+ var role = updateResponse.OpenJsonObjectResponse()?["role"];
var currentName = role?["name"]?.ToString();
AssertLogger.AreEqual(originalName, currentName, "OriginalNamePreservedAsync");
AssertLogger.IsTrue(!string.IsNullOrEmpty(currentName), "NameNotEmptyAsync");
@@ -2264,7 +2264,7 @@ public void Test054_Should_Handle_Unicode_Characters_In_Role_Name_Sync()
ContentstackResponse fetchResponse = _stack.Role(roleUid).Fetch();
if (fetchResponse.IsSuccessStatusCode)
{
- var role = fetchResponse.OpenJObjectResponse()?["role"];
+ var role = fetchResponse.OpenJsonObjectResponse()?["role"];
var fetchedName = role?["name"]?.ToString();
AssertLogger.AreEqual(unicodeName, fetchedName, "Unicode name should be preserved", "UnicodePreserved");
}
@@ -2360,7 +2360,7 @@ public void Test056_Should_Handle_Stack_Role_Limits_Sync()
else if (response.StatusCode == (HttpStatusCode)422) // Unprocessable Entity
{
// Check for role limit error (Error Code 157)
- var errorContent = response.OpenJObjectResponse();
+ var errorContent = response.OpenJsonObjectResponse();
var errorCode = errorContent?["error_code"]?.ToString();
if (errorCode == "157")
@@ -2574,7 +2574,7 @@ public void Test059_Should_Handle_Concurrent_Role_Modifications_Sync()
ContentstackResponse fetchResponse = _stack.Role(roleUid).Fetch();
if (fetchResponse.IsSuccessStatusCode)
{
- var role = fetchResponse.OpenJObjectResponse()?["role"];
+ var role = fetchResponse.OpenJsonObjectResponse()?["role"];
AssertLogger.IsNotNull(role, "ConcurrentFinalState");
}
diff --git a/Contentstack.Management.Core.Unit.Tests/Models/RoleTest.cs b/Contentstack.Management.Core.Unit.Tests/Models/RoleTest.cs
index db9d1f3..dbc4fd7 100644
--- a/Contentstack.Management.Core.Unit.Tests/Models/RoleTest.cs
+++ b/Contentstack.Management.Core.Unit.Tests/Models/RoleTest.cs
@@ -59,7 +59,7 @@ public void Should_Create_Role()
ContentstackResponse response = _stack.Role().Create(_fixture.Create());
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -68,7 +68,7 @@ public async System.Threading.Tasks.Task Should_Create_Role_Async()
ContentstackResponse response = await _stack.Role().CreateAsync(_fixture.Create());
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -77,7 +77,7 @@ public void Should_Query_Role()
ContentstackResponse response = _stack.Role().Query().Find();
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -86,7 +86,7 @@ public async System.Threading.Tasks.Task Should_Query_Role_Async()
ContentstackResponse response = await _stack.Role().Query().FindAsync();
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -95,7 +95,7 @@ public void Should_Fetch_Role()
ContentstackResponse response = _stack.Role(_fixture.Create()).Fetch();
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -104,7 +104,7 @@ public async System.Threading.Tasks.Task Should_Find_Role_Async()
ContentstackResponse response = await _stack.Role(_fixture.Create()).FetchAsync();
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -113,7 +113,7 @@ public void Should_Update_Role()
ContentstackResponse response = _stack.Role(_fixture.Create()).Update(_fixture.Create());
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -122,7 +122,7 @@ public async System.Threading.Tasks.Task Should_Update_Role_Async()
ContentstackResponse response = await _stack.Role(_fixture.Create()).UpdateAsync(_fixture.Create());
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -131,7 +131,7 @@ public void Should_Delete_Role()
ContentstackResponse response = _stack.Role(_fixture.Create()).Delete();
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -140,7 +140,7 @@ public async System.Threading.Tasks.Task Should_Delete_Role_Async()
ContentstackResponse response = await _stack.Role(_fixture.Create()).DeleteAsync();
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -149,7 +149,7 @@ public void Should_Create_Role_With_Taxonomy_Permissions()
ContentstackResponse response = _stack.Role().Create(_fixture.Create());
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
[TestMethod]
@@ -158,7 +158,7 @@ public void Should_Update_Role_With_Taxonomy_Permissions()
ContentstackResponse response = _stack.Role(_fixture.Create()).Update(_fixture.Create());
Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse());
- Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString());
+ Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString());
}
}
}
diff --git a/Contentstack.Management.Core/Models/RoleModel.cs b/Contentstack.Management.Core/Models/RoleModel.cs
index 13c0d25..f8c3de1 100644
--- a/Contentstack.Management.Core/Models/RoleModel.cs
+++ b/Contentstack.Management.Core/Models/RoleModel.cs
@@ -1,107 +1,106 @@
using System.Collections.Generic;
-using Newtonsoft.Json;
+using System.Text.Json.Serialization;
namespace Contentstack.Management.Core.Models
{
- [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)]
public class RoleModel
{
- [JsonProperty(propertyName: "name")]
+ [JsonPropertyName("name")]
public string? Name { get; set; }
- [JsonProperty(propertyName: "description")]
+ [JsonPropertyName("description")]
public string? Description { get; set; }
- [JsonProperty(propertyName: "rules")]
+ [JsonPropertyName("rules")]
public List? Rules { get; set; }
- [JsonProperty(propertyName: "deploy_content")]
+ [JsonPropertyName("deploy_content")]
public bool DeployContent { get; set; } = true;
}
public class Rule
{
- [JsonProperty(propertyName: "acl")]
+ [JsonPropertyName("acl")]
public Dictionary? ACL { get; }
- [JsonProperty(propertyName: "restrict")]
+ [JsonPropertyName("restrict")]
public bool Restrict { get; }
}
public class ContentTypeRules: Rule
{
- [JsonProperty(propertyName: "module")]
+ [JsonPropertyName("module")]
public string Module { get; } = "content_type";
- [JsonProperty(propertyName: "content_types")]
+ [JsonPropertyName("content_types")]
public List? ContentTypes { get; set; }
}
public class BranchRules : Rule
{
- [JsonProperty(propertyName: "module")]
+ [JsonPropertyName("module")]
public string Module { get; } = "branch";
- [JsonProperty(propertyName: "branches")]
+ [JsonPropertyName("branches")]
public List? Branches { get; set; }
}
public class BranchAliasRules : Rule
{
- [JsonProperty(propertyName: "module")]
+ [JsonPropertyName("module")]
public string Module { get; } = "branch_alias";
- [JsonProperty(propertyName: "branch_aliases")]
+ [JsonPropertyName("branch_aliases")]
public List? BranchAliases { get; set; }
}
public class AssetRules : Rule
{
- [JsonProperty(propertyName: "module")]
+ [JsonPropertyName("module")]
public string Module { get; } = "asset";
- [JsonProperty(propertyName: "assets")]
+ [JsonPropertyName("assets")]
public List? Assets { get; set; }
}
public class FolderRules : Rule
{
- [JsonProperty(propertyName: "module")]
+ [JsonPropertyName("module")]
public string Module { get; } = "folder";
- [JsonProperty(propertyName: "folders")]
+ [JsonPropertyName("folders")]
public List? Folders { get; set; }
}
public class EnvironmentRules : Rule
{
- [JsonProperty(propertyName: "module")]
+ [JsonPropertyName("module")]
public string Module { get; } = "environment";
- [JsonProperty(propertyName: "environments")]
+ [JsonPropertyName("environments")]
public List? Environments { get; set; }
}
public class TaxonomyContentType
{
- [JsonProperty(propertyName: "uid")]
+ [JsonPropertyName("uid")]
public string? Uid { get; set; }
- [JsonProperty(propertyName: "acl")]
+ [JsonPropertyName("acl")]
public Dictionary? ACL { get; }
}
public class TaxonomyRules : Rule
{
- [JsonProperty(propertyName: "module")]
+ [JsonPropertyName("module")]
public string Module { get; } = "taxonomy";
- [JsonProperty(propertyName: "taxonomies")]
+ [JsonPropertyName("taxonomies")]
public List? Taxonomies { get; set; }
- [JsonProperty(propertyName: "terms")]
+ [JsonPropertyName("terms")]
public List? Terms { get; set; }
- [JsonProperty(propertyName: "content_types")]
+ [JsonPropertyName("content_types")]
public List? ContentTypes { get; set; }
}
}
diff --git a/Contentstack.Management.Core/Models/Stack.cs b/Contentstack.Management.Core/Models/Stack.cs
index ade5aea..12d0352 100644
--- a/Contentstack.Management.Core/Models/Stack.cs
+++ b/Contentstack.Management.Core/Models/Stack.cs
@@ -818,15 +818,13 @@ public ManagementToken ManagementTokens(string? uid = null)
///
///
/// The
- /*
- public Role Role(string uid = null)
+ public Role Role(string? uid = null)
{
ThrowIfNotLoggedIn();
ThrowIfAPIKeyEmpty();
return new Role(this, uid);
}
- */
///
/// A is a set of entries and assets that needs to be deployed (published or unpublished) all at once to a particular environment.
diff --git a/Contentstack.Management.Core/contentstack.management.core.csproj b/Contentstack.Management.Core/contentstack.management.core.csproj
index d917a71..e508703 100644
--- a/Contentstack.Management.Core/contentstack.management.core.csproj
+++ b/Contentstack.Management.Core/contentstack.management.core.csproj
@@ -91,7 +91,7 @@
-
+