From b8fc04a90c2c43c61380b3739ec8e72f95fa5634 Mon Sep 17 00:00:00 2001 From: Kim Date: Thu, 13 Apr 2023 14:30:01 +0200 Subject: [PATCH] Testing new error messages in Backend, fixing small bugs, possibly breaking BMSTunnel, fixed tests --- csharp/App/Backend/Backend.csproj | 1 + csharp/App/Backend/Controller.cs | 14 +++++++---- .../App/Backend/DataTypes/Methods/Session.cs | 3 ++- csharp/App/Backend/Exceptions.cs | 16 ++++++++++++ csharp/App/Backend/Program.cs | 20 ++++++++++++++- csharp/App/Backend/db.sqlite | Bin 540672 -> 540672 bytes csharp/App/BmsTunnel/BatteryConnection.cs | 2 +- csharp/App/BmsTunnel/BmsTunnel.cs | 8 +++--- csharp/App/BmsTunnel/Program.cs | 23 +++++++++--------- csharp/Lib/Utils/FileSystem.cs | 2 +- typescript/DataCache/src/server.ts | 1 + .../src/server/dataCache/dataCache.ts | 3 ++- .../AccessManagement/AvailableUserDialog.tsx | 2 +- .../Frontend/src/components/Users/AddUser.tsx | 2 +- typescript/Frontend/src/tests/test.js | 19 +++++++-------- 15 files changed, 79 insertions(+), 37 deletions(-) create mode 100644 csharp/App/Backend/Exceptions.cs diff --git a/csharp/App/Backend/Backend.csproj b/csharp/App/Backend/Backend.csproj index 78c8036ca..ef4777f93 100644 --- a/csharp/App/Backend/Backend.csproj +++ b/csharp/App/Backend/Backend.csproj @@ -3,6 +3,7 @@ + diff --git a/csharp/App/Backend/Controller.cs b/csharp/App/Backend/Controller.cs index 269a5e736..cb761e6c2 100644 --- a/csharp/App/Backend/Controller.cs +++ b/csharp/App/Backend/Controller.cs @@ -17,14 +17,18 @@ public class Controller : ControllerBase public ActionResult Login(String username, String password) { var user = Db.GetUserByName(username); - + if (user is null) - return Unauthorized(); - + { + throw new Exceptions(400,"Null User Exception", "Must provide a user to log in as.", Request.Path.Value!); + } + if (!(user.Password is null && user.MustResetPassword)) { if (!user.VerifyPassword(password)) - return Unauthorized(); + { + throw new Exceptions(401,"Wrong Password Exception", "Please try again.", Request.Path.Value!); + } } var session = new Session(user.HidePassword().HideParentIfUserHasNoAccessToParent(user)); @@ -33,7 +37,7 @@ public class Controller : ControllerBase return Db.Create(session) ? session - : Unauthorized(); + : throw new Exceptions(401,"Session Creation Exception", "Not allowed to log in.", Request.Path.Value!); } diff --git a/csharp/App/Backend/DataTypes/Methods/Session.cs b/csharp/App/Backend/DataTypes/Methods/Session.cs index cf84e848c..0e3eb1685 100644 --- a/csharp/App/Backend/DataTypes/Methods/Session.cs +++ b/csharp/App/Backend/DataTypes/Methods/Session.cs @@ -186,7 +186,8 @@ public static class SessionMethods return sessionUser is not null && sessionUser - .Do(() => sessionUser.Password = sessionUser.SaltAndHashPassword(newPassword)) + .Do(() => sessionUser.Password = sessionUser.SaltAndHashPassword(newPassword)) + .Do(() => sessionUser.MustResetPassword = false) .Apply(Db.Update); } diff --git a/csharp/App/Backend/Exceptions.cs b/csharp/App/Backend/Exceptions.cs new file mode 100644 index 000000000..963a488a8 --- /dev/null +++ b/csharp/App/Backend/Exceptions.cs @@ -0,0 +1,16 @@ +namespace InnovEnergy.App.Backend; + +public class Exceptions : Exception +{ + public String Type { get; set; } + public String Detail { get; set; } + public String Instance { get; set; } + public Int32? Status { get; set; } + public Exceptions(Int32? status, String type, String detail, String instance) + { + Type = type; + Detail = detail; + Instance = instance; + Status = status; + } +} \ No newline at end of file diff --git a/csharp/App/Backend/Program.cs b/csharp/App/Backend/Program.cs index ca4cb8655..3b7979293 100644 --- a/csharp/App/Backend/Program.cs +++ b/csharp/App/Backend/Program.cs @@ -1,4 +1,6 @@ +using Hellang.Middleware.ProblemDetails; using InnovEnergy.App.Backend.Database; +using Microsoft.AspNetCore.Mvc; using Microsoft.OpenApi.Models; namespace InnovEnergy.App.Backend; @@ -16,6 +18,21 @@ public static class Program var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); + builder.Services.AddProblemDetails(setup => + { + //This includes the stacktrace in Development Env + setup.IncludeExceptionDetails = (ctx, env) => builder.Environment.IsDevelopment() || builder.Environment.IsStaging(); + + //This handles our Exceptions + setup.Map(exception => new ProblemDetails() + { + Detail = exception.Detail, + Status = exception.Status, + Type = exception.Type, + Instance = exception.Instance + }); + + }); builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", OpenApiInfo); @@ -30,10 +47,11 @@ public static class Program app.UseSwagger(); app.UseSwaggerUI(); } - + app.UseCors(p => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()) ; app.UseHttpsRedirection(); app.MapControllers(); + app.UseProblemDetails(); app.Run(); } diff --git a/csharp/App/Backend/db.sqlite b/csharp/App/Backend/db.sqlite index 8cc280df09b491ff99d206af462fdfb0fe9bdb88..1970e9bd16a07e7f2a0a7b5acde821655f88c220 100644 GIT binary patch delta 66232 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

badiguVjTY<+F>H`eNw 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 f.StartsWith("ttyUSB")) + .Where(f => f.Contains("ttyUSB")) .Select(t => t.Split("/").LastOrDefault()) .NotNull() .ToList(); diff --git a/csharp/App/BmsTunnel/BmsTunnel.cs b/csharp/App/BmsTunnel/BmsTunnel.cs index 85cefdf14..bb3999280 100644 --- a/csharp/App/BmsTunnel/BmsTunnel.cs +++ b/csharp/App/BmsTunnel/BmsTunnel.cs @@ -23,15 +23,16 @@ public class BmsTunnel : IDisposable private const Byte TunnelCode = 0x41; private const String CrcError = "?? CRC FAILED"; - public BmsTunnel(String tty, Byte node) + public BmsTunnel(String tty, Byte node, SshHost? host) { Tty = tty; Node = node; - StopSerialStarter(); + StopSerialStarter(host); SerialPort = new SerialPort(Tty, BaudRate, Parity, DataBits, StopBits); SerialPort.ReadTimeout = 100; + SerialPort.Open(); } @@ -164,10 +165,11 @@ public class BmsTunnel : IDisposable .Concat(NewLine); } - private void StopSerialStarter() + private void StopSerialStarter(SshHost? host) { CliPrograms.StopTty .WithArguments(Tty) + .OnHost(host) .ExecuteBufferedAsync() .Task .Wait(3000); diff --git a/csharp/App/BmsTunnel/Program.cs b/csharp/App/BmsTunnel/Program.cs index c3ce8f71e..538ff348b 100644 --- a/csharp/App/BmsTunnel/Program.cs +++ b/csharp/App/BmsTunnel/Program.cs @@ -13,16 +13,19 @@ public static class Program public static async Task Main(String[] args) { - var connection = await ConnectToBms(args.FirstOrDefault()); + var hostName = args.FirstOrDefault(); + + BatteryConnection? connection = hostName is not null ? await ConnectToBms(hostName, new SshHost(hostName)): new BatteryConnection(); if (connection is null) return 2; - + + // connection.Tty; Console.WriteLine("\nstarting BMS tunnel\n"); - // var path = $"/dev/{tty}"; - // if (host != null) - // path = $"root@{host}" + path; + var path = $"/dev/{connection.Value.Tty}"; + // if (hostName != null) + // path = $"root@{hostName}:" + path; // // var node = connection.Nodes.Any() // ? connection.Nodes.First() @@ -30,13 +33,13 @@ public static class Program // // TODO: Fixme - var path = ""; + // var path = ""; Byte node = 2; var nodes = new Byte[] { 1, 2, 3 }; // TODO: Fixme - using var tunnel = new BmsTunnel(path, node); + using var tunnel = new BmsTunnel(path, node, hostName is not null ? new SshHost(hostName): null); ExplainNode(); ExplainNodes(); @@ -117,12 +120,8 @@ public static class Program } } - private static async Task ConnectToBms(String? hostName) + private static async Task ConnectToBms(String? hostName, SshHost host) { - if (hostName is null) - return new BatteryConnection(); - - var host = new SshHost(hostName); if (await host.Ping()) return await BatteryConnection.Connect(host); diff --git a/csharp/Lib/Utils/FileSystem.cs b/csharp/Lib/Utils/FileSystem.cs index 95a77a9b0..f0823676c 100644 --- a/csharp/Lib/Utils/FileSystem.cs +++ b/csharp/Lib/Utils/FileSystem.cs @@ -41,7 +41,7 @@ public class FileSystem public async Task> GetFiles(String path, FileType fileType, Int32 maxDepth = 1) { var result = await Find - .WithArguments($"find {path} -maxdepth {maxDepth} -type {(Char)fileType}") + .WithArguments($"{path} -maxdepth {maxDepth} -type {(Char)fileType}") .OnHost(Host) .ExecuteBufferedAsync(); diff --git a/typescript/DataCache/src/server.ts b/typescript/DataCache/src/server.ts index 69d8b0cfc..840593161 100644 --- a/typescript/DataCache/src/server.ts +++ b/typescript/DataCache/src/server.ts @@ -8,6 +8,7 @@ const resolution = TimeSpan.fromSeconds(2); const cache = new DataCache(x => (Promise.resolve({foo: 0})), resolution) +// @ts-ignore const sampleTimes = [1, 2, 3, 4, 5, 6].select(e => UnixTime.fromTicks(e)).toArray(); const series = cache.getSeries(sampleTimes) diff --git a/typescript/DataCache/src/server/dataCache/dataCache.ts b/typescript/DataCache/src/server/dataCache/dataCache.ts index f26068c54..18b5ca3bf 100644 --- a/typescript/DataCache/src/server/dataCache/dataCache.ts +++ b/typescript/DataCache/src/server/dataCache/dataCache.ts @@ -114,7 +114,8 @@ export default class DataCache> const pn = p + n let interpolated: Partial> = {} - + + //What about string nodes? like Alarms for (const k of Object.keys(dataBefore)) { interpolated[k] = (dataBefore[k] * n + dataAfter[k] * p) / pn diff --git a/typescript/Frontend/src/components/Groups/AccessManagement/AvailableUserDialog.tsx b/typescript/Frontend/src/components/Groups/AccessManagement/AvailableUserDialog.tsx index 7859a03e2..96ed26adf 100644 --- a/typescript/Frontend/src/components/Groups/AccessManagement/AvailableUserDialog.tsx +++ b/typescript/Frontend/src/components/Groups/AccessManagement/AvailableUserDialog.tsx @@ -59,7 +59,7 @@ const AvailableUserDialog = () => { scroll="paper" > - Create new folder + Grant access { sx={{ my: 1 }} onClick={() => setOpen(true)} > - +

setOpen(false)} diff --git a/typescript/Frontend/src/tests/test.js b/typescript/Frontend/src/tests/test.js index f2f529b34..72968b030 100644 --- a/typescript/Frontend/src/tests/test.js +++ b/typescript/Frontend/src/tests/test.js @@ -1,4 +1,5 @@ import { Selector } from 'testcafe'; +import { login, logout } from "./helper.js"; fixture('Login testing') .page('http://localhost:3000/'); //Todo write me in a config file @@ -8,33 +9,31 @@ fixture('Login testing') test('Lulu login', async t => { // await t // .debug(); - await t - .login('lulu', '1233') //Todo write me in a config file - .expect(Selector('#demo-simple-select').visible).ok(); + login('lulu', '1233'); //Todo write me in a config file + await t.expect(Selector('#demo-simple-select').visible).ok(); }); test('Wrong PW', async t => { - await t - .login('lulu', '12334') //Todo write me in a config file - .expect(Selector('#demo-simple-select').visible).notOk(); //Todo check for feedback + login('lulu', '12334'); //Todo write me in a config file + await t.expect(Selector('#demo-simple-select').visible).notOk(); //Todo check for feedback }); test('Invalid Username', async t => { + login('Not Agent Smith', '12334') await t - .login('Not Agent Smith', '12334') //Todo write me in a config file .expect(Selector('#demo-simple-select').visible).notOk(); //Todo check for feedback }); test('Logout', async t => { + login('lulu', '1233'); + logout(); await t - .login('lulu', '1233') //Todo write me in a config file - .logout() .expect(Selector('#username-textfield').visible).Ok(); }); test('Installation List Loads', async t => { + login('lulu', '1233'); await t - .login('lulu', '1233') //Todo write me in a config file .expect(Selector('').visible).Ok(); }); \ No newline at end of file