From 5034ca12c15aa7d7be78e497fe237b92ecd1c8ec Mon Sep 17 00:00:00 2001 From: TheJoKlLa Date: Wed, 1 Jun 2022 01:19:37 +0200 Subject: [PATCH] Fixed Default ConnectionData && Disabled UserSystem --- Borepin/Borepin/PageModel/MainPageModel.cs | 4 +- .../Service/Storage/ILoginStorageService.cs | 1 + .../Service/Storage/LoginStorageService.cs | 12 ++++ FabAccessAPI_Test/API_Test.cs | 2 +- .../PermissionSystem_Test_Stateless.cs | 2 +- .../API_TestEnv/UserSystem_Test.cs | 24 ++++--- FabAccessAPI_Test/API_TestEnv/User_Test.cs | 63 +++++++++++++++---- .../API_TestEnv/User_Test_Stateless.cs | 12 ++-- FabAccessAPI_Test/TestEnv.cs | 2 +- 9 files changed, 92 insertions(+), 30 deletions(-) diff --git a/Borepin/Borepin/PageModel/MainPageModel.cs b/Borepin/Borepin/PageModel/MainPageModel.cs index 296c69b..4860bfd 100644 --- a/Borepin/Borepin/PageModel/MainPageModel.cs +++ b/Borepin/Borepin/PageModel/MainPageModel.cs @@ -30,8 +30,8 @@ namespace Borepin.PageModel #region LoadData public override Task LoadAPIData() { - UserSystem.ManageInterface_Proxy manageInterface = (UserSystem.ManageInterface_Proxy)_API.Session.UserSystem.Manage; - CanManageUsers = !manageInterface.IsNull; + //UserSystem.ManageInterface_Proxy manageInterface = (UserSystem.ManageInterface_Proxy)_API.Session.UserSystem.Manage; + //CanManageUsers = !manageInterface.IsNull; return Task.CompletedTask; } diff --git a/Borepin/Borepin/Service/Storage/ILoginStorageService.cs b/Borepin/Borepin/Service/Storage/ILoginStorageService.cs index fc72cc7..29dcdd0 100644 --- a/Borepin/Borepin/Service/Storage/ILoginStorageService.cs +++ b/Borepin/Borepin/Service/Storage/ILoginStorageService.cs @@ -13,5 +13,6 @@ namespace Borepin.Service.Storage Task GetDefault(); Task SetDefault(ConnectionData connectionData); + Task RemoveDefault(); } } diff --git a/Borepin/Borepin/Service/Storage/LoginStorageService.cs b/Borepin/Borepin/Service/Storage/LoginStorageService.cs index 1605ac6..2c4ff14 100644 --- a/Borepin/Borepin/Service/Storage/LoginStorageService.cs +++ b/Borepin/Borepin/Service/Storage/LoginStorageService.cs @@ -62,6 +62,12 @@ namespace Borepin.Service.Storage connectionData_List.Remove(connectionData); await _SaveConnectionData(connectionData_List).ConfigureAwait(false); + + ConnectionData connectionData_default = await GetDefault().ConfigureAwait(false); + if (connectionData_default.Equals(connectionData)) + { + await RemoveDefault().ConfigureAwait(false); + } } public async Task UpdateTimestamp(ConnectionData connectionData) @@ -108,6 +114,12 @@ namespace Borepin.Service.Storage string data = JsonConvert.SerializeObject(connectionData); await _SecretStorageService.SetAsync(StorageKey_ConnecitonData_AutoConnect, data).ConfigureAwait(false); } + + public async Task RemoveDefault() + { + string data = JsonConvert.SerializeObject(null); + await _SecretStorageService.SetAsync(StorageKey_ConnecitonData_AutoConnect, data).ConfigureAwait(false); + } #endregion #region Private Methods diff --git a/FabAccessAPI_Test/API_Test.cs b/FabAccessAPI_Test/API_Test.cs index fdc0c7d..349fc89 100644 --- a/FabAccessAPI_Test/API_Test.cs +++ b/FabAccessAPI_Test/API_Test.cs @@ -39,7 +39,7 @@ namespace FabAccessAPI_Test Assert.Fail(); } - [Test] + [Test, Ignore("")] public async Task Connect_InvalidCredentials() { API api = new API(); diff --git a/FabAccessAPI_Test/API_TestEnv/PermissionSystem_Test_Stateless.cs b/FabAccessAPI_Test/API_TestEnv/PermissionSystem_Test_Stateless.cs index c1f942d..06148bd 100644 --- a/FabAccessAPI_Test/API_TestEnv/PermissionSystem_Test_Stateless.cs +++ b/FabAccessAPI_Test/API_TestEnv/PermissionSystem_Test_Stateless.cs @@ -52,7 +52,7 @@ namespace FabAccessAPI_Test.API_TestEnv [TestCase("ManagerA1", 13)] [TestCase("MakerA1", 13)] [TestCase("GuestA1", 13)] - [Order(3), Ignore("Not Implemented")] + [Order(3), Ignore("Not implemented")] public async Task ListRoles(string username, int expectRolesCount) { API api = new API(); diff --git a/FabAccessAPI_Test/API_TestEnv/UserSystem_Test.cs b/FabAccessAPI_Test/API_TestEnv/UserSystem_Test.cs index d53d837..cd4a2ae 100644 --- a/FabAccessAPI_Test/API_TestEnv/UserSystem_Test.cs +++ b/FabAccessAPI_Test/API_TestEnv/UserSystem_Test.cs @@ -1,6 +1,8 @@ -using FabAccessAPI; +using Capnp.Rpc; +using FabAccessAPI; using FabAccessAPI.Schema; using NUnit.Framework; +using System; using System.Collections.Generic; using System.Threading.Tasks; @@ -40,12 +42,20 @@ namespace FabAccessAPI_Test.API_TestEnv ConnectionData connectionData = TestEnv.CreateConnetionData(username); await api.Connect(connectionData); - // TODO - User user = (await api.Session.UserSystem.Manage.AddUser(username2, TestEnv.PASSWORD).ConfigureAwait(false)); + bool methodNotImplemented = false; + + try + { + User user = (await api.Session.UserSystem.Manage.AddUser(username2, TestEnv.PASSWORD).ConfigureAwait(false)); + } + catch (RpcException exception) when (string.Equals(exception.Message, "method not implemented", StringComparison.Ordinal)) + { + methodNotImplemented = true; + } await api.Disconnect(); - Assert.IsNull(user); + Assert.IsTrue(methodNotImplemented); } [TestCase("Admin1", "NewUserA1")] @@ -62,7 +72,7 @@ namespace FabAccessAPI_Test.API_TestEnv await api.Disconnect(); - Assert.IsNull(user); + Assert.IsNotNull(user); } [TestCase("Admin1", "Admin1")] @@ -82,7 +92,7 @@ namespace FabAccessAPI_Test.API_TestEnv Assert.AreEqual(UserSystem.ManageInterface.AddUserError.AddUserErrorEnum.alreadyExists, error); } - [TestCase("Admin1", "NewUserC1")] + [TestCase("Admin1", "")] [Order(2)] public async Task AddUser_InvalidUsername(string username, string username2) { @@ -126,7 +136,7 @@ namespace FabAccessAPI_Test.API_TestEnv await api.Disconnect(); - Assert.IsNull(user); + Assert.IsNotNull(user); } } } diff --git a/FabAccessAPI_Test/API_TestEnv/User_Test.cs b/FabAccessAPI_Test/API_TestEnv/User_Test.cs index e7ee2fd..f632af9 100644 --- a/FabAccessAPI_Test/API_TestEnv/User_Test.cs +++ b/FabAccessAPI_Test/API_TestEnv/User_Test.cs @@ -1,6 +1,7 @@ using FabAccessAPI; using FabAccessAPI.Schema; using NUnit.Framework; +using System.Collections.Generic; using System.Threading.Tasks; namespace FabAccessAPI_Test.API_TestEnv @@ -8,19 +9,59 @@ namespace FabAccessAPI_Test.API_TestEnv [TestFixture] public class User_Test { - //[TestCase("Admin1")] - //[Order(1)] - //public async Task InfoInterface(string username) - //{ - // API api = new API(); - // ConnectionData connectionData = TestEnv.CreateConnetionData(username); - // await api.Connect(connectionData); + #region SetUp + [SetUp] + public async Task SetUp() + { + API api = new API(); + ConnectionData connectionData = TestEnv.CreateConnetionData("Admin1"); + await api.Connect(connectionData); - // User user = await api.Session.UserSystem.Info.GetUserSelf().ConfigureAwait(false); + IReadOnlyList user_list = await api.Session.UserSystem.Manage.GetUserList().ConfigureAwait(false); - // bool result = !((User.InfoInterface_Proxy)user.Info).IsNull; + List tasks = new List(); + foreach (User u in user_list) + { + if (u.Username.StartsWith("New")) + { + tasks.Add(api.Session.UserSystem.Manage.RemoveUser(u)); + } + } - // await api.Disconnect(); - //} + await Task.WhenAll(tasks); + } + #endregion + + [TestCase("Admin1", "NewMakerA1", "UseA", "ReadA", "DiscloseA")] + [Order(1)] + public async Task AddRoles(string username, string username2, params string[] roles) + { + API api = new API(); + ConnectionData connectionData = TestEnv.CreateConnetionData(username); + await api.Connect(connectionData); + + await api.Session.UserSystem.Manage.AddUser(username2, TestEnv.PASSWORD); + + User user = (await api.Session.UserSystem.Search.GetUserByName(username2).ConfigureAwait(false)).Just; + + foreach(string s in roles) + { + await user.Admin.AddRole(new Role() { Name = s }).ConfigureAwait(false); + } + + user = (await api.Session.UserSystem.Search.GetUserByName(username2).ConfigureAwait(false)).Just; + List user_roles = new List(await user.Info.ListRoles().ConfigureAwait(false)); + + await api.Disconnect(); + + Assert.Multiple(() => + { + Assert.AreEqual(3, user_roles.Count); + foreach (string s in roles) + { + Assert.IsTrue(user_roles.Exists(x => x.Name == s)); + } + }); + } } } diff --git a/FabAccessAPI_Test/API_TestEnv/User_Test_Stateless.cs b/FabAccessAPI_Test/API_TestEnv/User_Test_Stateless.cs index accbca1..8ca2468 100644 --- a/FabAccessAPI_Test/API_TestEnv/User_Test_Stateless.cs +++ b/FabAccessAPI_Test/API_TestEnv/User_Test_Stateless.cs @@ -1,9 +1,7 @@ using FabAccessAPI; using FabAccessAPI.Schema; using NUnit.Framework; -using System; using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; namespace FabAccessAPI_Test.API_TestEnv @@ -93,11 +91,11 @@ namespace FabAccessAPI_Test.API_TestEnv }); } - [TestCase("Admin1", "somerole")] - [TestCase("ManagerA1")] - [TestCase("MakerA1")] - [TestCase("GuestA1")] - [Order(5), Ignore("Not Implemented")] + [TestCase("Admin1", "Admin", "ManageUsers")] + [TestCase("ManagerA1", "ManageA", "UseA", "ReadA", "DiscloseA", "ManageUsers")] + [TestCase("MakerA1", "UseA", "ReadA", "DiscloseA")] + [TestCase("GuestA1", "ReadA", "DiscloseA")] + [Order(5)] public async Task ListUserRoles(string username, params string[] expect_roles) { API api = new API(); diff --git a/FabAccessAPI_Test/TestEnv.cs b/FabAccessAPI_Test/TestEnv.cs index d331553..b83e951 100644 --- a/FabAccessAPI_Test/TestEnv.cs +++ b/FabAccessAPI_Test/TestEnv.cs @@ -7,7 +7,7 @@ namespace FabAccessAPI_Test public static class TestEnv { public const string SCHEMA = "fabaccess"; - public const string TESTSERVER = "bffh.lab.bln.kjknet.de"; + public const string TESTSERVER = "127.0.0.1";//"bffh.lab.bln.kjknet.de"; public const int TESTSERVER_PORT = 59666; public const string PASSWORD = "secret";