]> Piment Noir Git Repositories - e-mobility-charging-stations-simulator.git/commitdiff
fix(ocpp): replace unsafe messagePayload as OCPPError casts with instanceof
authorJérôme Benoit <jerome.benoit@sap.com>
Mon, 16 Mar 2026 14:57:48 +0000 (15:57 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Mon, 16 Mar 2026 14:57:48 +0000 (15:57 +0100)
6 casts in sendMessage error handling replaced with proper
instanceof OCPPError guard per existing codebase pattern.

src/charging-station/ocpp/OCPPRequestService.ts

index b9e09b18950719d240ce621384b20bba7c3271c2..174b6a05023e85e6eebc68ba45fcd6d189ce7534 100644 (file)
@@ -275,13 +275,20 @@ export abstract class OCPPRequestService {
       // Error Message
       case MessageType.CALL_ERROR_MESSAGE:
         // Build Error Message
+        if (!(messagePayload instanceof OCPPError)) {
+          throw new OCPPError(
+            ErrorType.INTERNAL_ERROR,
+            `Expected OCPPError instance for CALL_ERROR_MESSAGE, got ${typeof messagePayload}`,
+            commandName
+          )
+        }
         messageToSend = JSON.stringify([
           messageType,
           messageId,
-          (messagePayload as OCPPError).code,
-          (messagePayload as OCPPError).message,
-          (messagePayload as OCPPError).details ?? {
-            command: (messagePayload as OCPPError).command,
+          messagePayload.code,
+          messagePayload.message,
+          messagePayload.details ?? {
+            command: messagePayload.command,
           },
         ] satisfies ErrorResponse)
         break
@@ -441,7 +448,7 @@ export abstract class OCPPRequestService {
                   params.skipBufferingOnError === false ? '' : 'non '
                 }buffered message id '${messageId}' with content '${messageToSend}'`,
                 commandName,
-                (messagePayload as OCPPError).details
+                messagePayload instanceof OCPPError ? messagePayload.details : undefined
               )
             )
           }, OCPPConstants.OCPP_WEBSOCKET_TIMEOUT)
@@ -492,7 +499,7 @@ export abstract class OCPPRequestService {
                 params.skipBufferingOnError === false ? '' : 'non '
               }buffered message id '${messageId}' with content '${messageToSend}'`,
               commandName,
-              (messagePayload as OCPPError).details
+              messagePayload instanceof OCPPError ? messagePayload.details : undefined
             )
           )
         }