mirror of
https://github.com/dotnet/skills.git
synced 2026-09-20 09:49:54 +08:00
9f531203ec
Move assertion-quality, test-gap-analysis, test-smell-detection, and test-tagging from dotnet-experimental to dotnet-test. These skills have demonstrated sufficient eval coverage, unique value beyond baseline model capabilities, and are already integrated into the test-quality-auditor agent pipeline. Changes: - Move skills and tests, dropping the exp- prefix - Update all cross-references in skill descriptions and routing tables - Update test-quality-auditor agent and eval scenarios - Update CODEOWNERS for the moved paths - Delete duplicate exp-dotnet-test-frameworks (identical to dotnet-test-frameworks) - Fix stale exp-dotnet-test-frameworks reference in exp-test-maintainability Skills held back for further iteration: - exp-mock-usage-analysis: baseline model scores 5/5 on key scenarios - exp-test-maintainability: quality gains offset by token overhead
97 lines
3.1 KiB
C#
97 lines
3.1 KiB
C#
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using AccessControl;
|
|
|
|
namespace AccessControl.Tests;
|
|
|
|
[TestClass]
|
|
public sealed class AccessCheckerTests
|
|
{
|
|
// -- GetPermission tests --
|
|
// Tests the happy path for Admin and User, but never checks Editor on system resources,
|
|
// never verifies Guest access denial, and never checks CanWrite for User role.
|
|
// A flip of CanRead/CanWrite for Editor+system would survive.
|
|
// Removing the Guest denial branch would survive.
|
|
|
|
[TestMethod]
|
|
public void GetPermission_Admin_CanReadAndWrite()
|
|
{
|
|
var checker = new AccessChecker();
|
|
var perm = checker.GetPermission(Role.Admin, "documents/report.pdf");
|
|
Assert.IsTrue(perm.CanRead);
|
|
Assert.IsTrue(perm.CanWrite);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetPermission_Admin_SystemResource_CanReadAndWrite()
|
|
{
|
|
var checker = new AccessChecker();
|
|
var perm = checker.GetPermission(Role.Admin, "sys/config");
|
|
Assert.IsTrue(perm.CanRead);
|
|
Assert.IsTrue(perm.CanWrite);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetPermission_Editor_NormalResource_CanReadAndWrite()
|
|
{
|
|
var checker = new AccessChecker();
|
|
var perm = checker.GetPermission(Role.Editor, "documents/report.pdf");
|
|
Assert.IsTrue(perm.CanRead);
|
|
Assert.IsTrue(perm.CanWrite);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetPermission_User_NormalResource_CanRead()
|
|
{
|
|
var checker = new AccessChecker();
|
|
var perm = checker.GetPermission(Role.User, "documents/report.pdf");
|
|
Assert.IsTrue(perm.CanRead);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GetPermission_NullResource_Throws()
|
|
{
|
|
var checker = new AccessChecker();
|
|
Assert.ThrowsException<ArgumentNullException>(
|
|
() => checker.GetPermission(Role.Admin, null!));
|
|
}
|
|
|
|
// -- CanPerform tests --
|
|
// Only tests the read path, never tests writeAccess=true.
|
|
// A mutation flipping the ternary (writeAccess ? CanWrite : CanRead) would survive.
|
|
|
|
[TestMethod]
|
|
public void CanPerform_AdminRead_ReturnsTrue()
|
|
{
|
|
var checker = new AccessChecker();
|
|
Assert.IsTrue(checker.CanPerform(Role.Admin, "documents/report.pdf", false));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void CanPerform_UserReadNormal_ReturnsTrue()
|
|
{
|
|
var checker = new AccessChecker();
|
|
Assert.IsTrue(checker.CanPerform(Role.User, "documents/report.pdf", false));
|
|
}
|
|
|
|
// -- ElevateRole tests --
|
|
// Tests the happy path but never checks null token, empty token, or invalid token.
|
|
// Removing the null/empty check would survive.
|
|
// Also never verifies that a Guest can't be elevated to Editor.
|
|
|
|
[TestMethod]
|
|
public void ElevateRole_EditorToAdmin_WithValidToken()
|
|
{
|
|
var checker = new AccessChecker();
|
|
var result = checker.ElevateRole(Role.Editor, "ELEVATE-ADMIN");
|
|
Assert.AreEqual(Role.Admin, result);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ElevateRole_UserToEditor_WithValidToken()
|
|
{
|
|
var checker = new AccessChecker();
|
|
var result = checker.ElevateRole(Role.User, "ELEVATE-EDITOR");
|
|
Assert.AreEqual(Role.Editor, result);
|
|
}
|
|
}
|