using FabAccessAPI; using FabAccessAPI.Schema; using NLog.Time; using NUnit.Framework; namespace FabAccessAPI_Test; [TestFixture] public class ResourceTest { [Test(Description="TestID: 00001")] [TestCase("UserA", "MachineA")] public async Task Claim(string username, string resourcename) { API api = new API(); ConnectionData connectionData = TestEnv.CreateConnetionData(username); await api.Connect(connectionData).ConfigureAwait(false); Resource resource = await api.Session.Resources.GetByName(resourcename).ConfigureAwait(false); Fallible result = await resource.Claim.Claim().ConfigureAwait(false); // TODO: Claim Error State in Case of Success IClaim claim = result.Ok; // TODO: Change State await claim.Disown().ConfigureAwait(false); await api.Disconnect().ConfigureAwait(false); } [TestCase("UserA", "fabaccess://test.fab-access.space/resources/MachineA")] public async Task GetByUrl(string username, string resourceURN) { API api = new API(); ConnectionData connectionData = TestEnv.CreateConnetionData(username); await api.Connect(connectionData).ConfigureAwait(false); Resource resource = await api.Session.Resources.GetByUrl(resourceURL).ConfigureAwait(false); Assert.That(resource, Is.Not.Null); await api.Disconnect().ConfigureAwait(false); } [TestCase("UserA", "urn:fabaccess:resource:MachineA")] public async Task GetByUrn(string username, string resourceURN) { API api = new API(); ConnectionData connectionData = TestEnv.CreateConnetionData(username); await api.Connect(connectionData); Resource resource = await api.Session.Resources.GetByUrn(resourceURN).ConfigureAwait(false); await api.Disconnect().ConfigureAwait(false); } [TestCase("UserA")] public async Task List(string username) { API api = new API(); ConnectionData connectionData = TestEnv.CreateConnetionData(username); await api.Connect(connectionData).ConfigureAwait(false); IReadOnlyList result = await api.Session.Resources.List().ConfigureAwait(false); await api.Disconnect().ConfigureAwait(false); } [TestCase("UserA")] public async Task Claimed(string username) { API api = new API(); ConnectionData connectionData = TestEnv.CreateConnetionData(username); await api.Connect(connectionData).ConfigureAwait(false); IReadOnlyList result = await api.Session.Resources.Claimed().ConfigureAwait(false); await api.Disconnect().ConfigureAwait(false); } [TestCase("UserA", "MachineA")] public async Task ClaimedListCheck(string username, string resourcename) { API api = new API(); ConnectionData connectionData = TestEnv.CreateConnetionData(username); await api.Connect(connectionData).ConfigureAwait(false); IReadOnlyList result1 = await api.Session.Resources.Claimed().ConfigureAwait(false); Assert.That(result1.Count, Is.Zero); Resource machineA = await api.Session.Resources.GetByName(resourcename).ConfigureAwait(false); IClaim claim = (await machineA.Claim.Claim().ConfigureAwait(false)).Ok; IReadOnlyList result2 = await api.Session.Resources.Claimed().ConfigureAwait(false); Assert.That(result2.Count, Is.Not.Zero); await api.Disconnect().ConfigureAwait(false); } }