* Base identifiers used for creating test charging station instances
*/
export const TEST_CHARGING_STATION_BASE_NAME = 'CS-TEST'
-export const TEST_CHARGING_STATION_ID = 'test-charging-station-001'
export const TEST_CHARGING_STATION_HASH_ID = 'cs-test-hash-001'
-/**
- * OCPP Protocol Versions
- * Supported protocol versions for testing
- */
-export const OCPP_VERSION_16 = '1.6'
-export const OCPP_VERSION_20 = '2.0'
-export const OCPP_VERSION_20_1 = '2.0.1'
-export const OCPP_VERSION_21 = '2.1'
-
-/**
- * Connector Status Values - OCPP 1.6
- * Defined in OCPP 1.6 §3.7 StatusNotification
- * @see src/types/ocpp/1.6/ChargePointStatus.ts
- */
-export const OCPP16_CONNECTOR_STATUS_AVAILABLE = 'Available'
-export const OCPP16_CONNECTOR_STATUS_CHARGING = 'Charging'
-export const OCPP16_CONNECTOR_STATUS_FAULTED = 'Faulted'
-export const OCPP16_CONNECTOR_STATUS_FINISHING = 'Finishing'
-export const OCPP16_CONNECTOR_STATUS_PREPARING = 'Preparing'
-export const OCPP16_CONNECTOR_STATUS_RESERVED = 'Reserved'
-export const OCPP16_CONNECTOR_STATUS_SUSPENDED_EV = 'SuspendedEV'
-export const OCPP16_CONNECTOR_STATUS_SUSPENDED_EVSE = 'SuspendedEVSE'
-export const OCPP16_CONNECTOR_STATUS_UNAVAILABLE = 'Unavailable'
-
-/**
- * Connector Status Values - OCPP 2.0.1 / 2.1
- * Defined in OCPP 2.0.1 §2.2, ConnectorStatusEnumType
- * Values differ from OCPP 1.6: "Occupied" instead of "Preparing", no "Charging"/"Finishing" distinction
- */
-export const OCPP20_CONNECTOR_STATUS_AVAILABLE = 'Available'
-export const OCPP20_CONNECTOR_STATUS_OCCUPIED = 'Occupied'
-export const OCPP20_CONNECTOR_STATUS_RESERVED = 'Reserved'
-export const OCPP20_CONNECTOR_STATUS_UNAVAILABLE = 'Unavailable'
-export const OCPP20_CONNECTOR_STATUS_FAULTED = 'Faulted'
-
-/**
- * Transaction Identifiers
- * Test values for transaction ID usage
- *
- * OCPP 1.6: transactionId is integer, assigned by CSMS in StartTransactionResponse
- * OCPP 2.0+: transactionId is UUID string, generated by CS
- *
- * Special value: -1 is used when StartTransaction fails (OCPP 1.6 Errata §3.18)
- * @see tests/charging-station/OCPPSpecRequirements.md §4.2
- */
-export const TEST_TRANSACTION_ID_VALID = 1
-export const TEST_TRANSACTION_ID_VALID_2 = 2
-export const TEST_TRANSACTION_ID_FAILURE = -1
-export const TEST_TRANSACTION_ID_UUID = '12345678-1234-1234-1234-123456789012'
-
-/**
- * EVSE and Connector IDs
- * Test values for EVSE and connector addressing
- *
- * OCPP 1.6: Flat connector model, connectors numbered 1+
- * OCPP 2.0+: Hierarchical EVSE/Connector model
- * - EVSE 0 represents the entire charging station
- * - Connector 0 on EVSE 0 is the charging station aggregate
- * - EVSE 1+ have connectors 1+
- * @see tests/charging-station/OCPPSpecRequirements.md §2.1
- */
-export const TEST_EVSE_ID = 1
-export const TEST_EVSE_ID_STATION = 0
-export const TEST_CONNECTOR_ID = 1
-export const TEST_CONNECTOR_ID_STATION = 0
-export const TEST_CONNECTOR_ID_VALID_INSTANCE = '1'
-export const TEST_CONNECTOR_ID_INVALID_INSTANCE = '999'
-
/**
* Timer Intervals (seconds)
* Test values for timing-related configuration and expectations
*/
export const TEST_HEARTBEAT_INTERVAL_SECONDS = 60
-export const TEST_HEARTBEAT_INTERVAL_MIN = 1
-export const TEST_HEARTBEAT_INTERVAL_MAX = 3600
-export const TEST_WEBSOCKET_PING_INTERVAL_SECONDS = 30
-export const TEST_METER_VALUES_INTERVAL_SECONDS = 30
-export const TEST_BOOT_RETRY_INTERVAL_SECONDS = 60
-export const TEST_CONNECTION_TIMEOUT_SECONDS = 30
-
-/**
- * Boot Notification States
- * Defined in OCPP 1.6 §4.2, OCPP 2.0.1 §B01-B03
- * @see tests/charging-station/OCPPSpecRequirements.md §7.4
- */
-export const BOOT_NOTIFICATION_STATE_ACCEPTED = 'Accepted'
-export const BOOT_NOTIFICATION_STATE_PENDING = 'Pending'
-export const BOOT_NOTIFICATION_STATE_REJECTED = 'Rejected'
/**
* Charging Station Information
export const TEST_STATUS_CHARGE_POINT_VENDOR = 'Test Status Vendor'
/**
- * Authorization Test Values
- * RFID tags and authorization-related test data
+ * Connector IDs
+ * Test values for connector addressing
*/
-export const TEST_RFID_TAG_VALID = 'TAG-001'
-export const TEST_RFID_TAG_VALID_2 = 'TAG-002'
-export const TEST_RFID_TAG_UNAUTHORIZED = 'TAG-INVALID'
-
-/**
- * Message IDs and UUIDs
- * Test values for request/response correlation
- */
-export const TEST_MESSAGE_ID_1 = 'msg-001'
-export const TEST_MESSAGE_ID_2 = 'msg-002'
-export const TEST_REQUEST_UUID = 'req-12345678-1234-1234-1234-123456789012'
-
-/**
- * Error Codes
- * OCPP RPC error codes used in tests
- * @see tests/charging-station/OCPPSpecRequirements.md §6.1
- */
-export const ERROR_CODE_NOT_IMPLEMENTED = 'NotImplemented'
-export const ERROR_CODE_NOT_SUPPORTED = 'NotSupported'
-export const ERROR_CODE_INTERNAL_ERROR = 'InternalError'
-export const ERROR_CODE_PROTOCOL_ERROR = 'ProtocolError'
-export const ERROR_CODE_SECURITY_ERROR = 'SecurityError'
-export const ERROR_CODE_FORMATION_VIOLATION = 'FormationViolation'
-export const ERROR_CODE_PROPERTY_CONSTRAINT_VIOLATION = 'PropertyConstraintViolation'
-export const ERROR_CODE_TYPE_CONSTRAINT_VIOLATION = 'TypeConstraintViolation'
-export const ERROR_CODE_GENERIC_ERROR = 'GenericError'
-
-/**
- * Configuration Parameters - OCPP 1.6
- * Standard OCPP 1.6 configuration keys (§7.2)
- */
-export const CONFIG_KEY_HEARTBEAT_INTERVAL = 'HeartbeatInterval'
-export const CONFIG_KEY_CONNECTION_TIMEOUT = 'ConnectionTimeOut'
-export const CONFIG_KEY_METER_VALUE_SAMPLE_INTERVAL = 'MeterValueSampleInterval'
-export const CONFIG_KEY_NUMBER_OF_CONNECTORS = 'NumberOfConnectors'
-export const CONFIG_KEY_AUTHORIZE_REMOTE_TX_REQUESTS = 'AuthorizeRemoteTxRequests'
-export const CONFIG_KEY_LOCAL_AUTHORIZE_OFFLINE = 'LocalAuthorizeOffline'
-export const CONFIG_KEY_LOCAL_PRE_AUTHORIZE = 'LocalPreAuthorize'
-export const CONFIG_KEY_WEBSOCKET_PING_INTERVAL = 'WebSocketPingInterval'
-export const CONFIG_KEY_RESERVE_CONNECTOR_ZERO_SUPPORTED = 'ReserveConnectorZeroSupported'
-
-/**
- * OCPP Message Type IDs
- * SRPC message type identifiers
- * @see tests/charging-station/OCPPSpecRequirements.md §5.2
- */
-export const SRPC_MESSAGE_TYPE_CALL = 2
-export const SRPC_MESSAGE_TYPE_CALLRESULT = 3
-export const SRPC_MESSAGE_TYPE_CALLERROR = 4
-export const SRPC_MESSAGE_TYPE_CALLRESULTERROR = 5 // OCPP 2.1+
-export const SRPC_MESSAGE_TYPE_SEND = 6 // OCPP 2.1+ (unconfirmed)
-
-/**
- * WebSocket Subprotocols
- * OCPP version-specific WebSocket subprotocol names
- * @see tests/charging-station/OCPPSpecRequirements.md §5.3
- */
-export const WEBSOCKET_SUBPROTOCOL_OCPP_16 = 'ocpp1.6'
-export const WEBSOCKET_SUBPROTOCOL_OCPP_20 = 'ocpp2.0'
-export const WEBSOCKET_SUBPROTOCOL_OCPP_20_1 = 'ocpp2.0.1'
-export const WEBSOCKET_SUBPROTOCOL_OCPP_21 = 'ocpp2.1'
-
-/**
- * Timeout Values (milliseconds)
- * Test timeout configurations
- */
-export const TEST_TIMEOUT_SHORT_MS = 100
-export const TEST_TIMEOUT_MEDIUM_MS = 1000
-export const TEST_TIMEOUT_LONG_MS = 5000
-export const TEST_TIMEOUT_VERY_LONG_MS = 30000
-
-/**
- * Reservation Status Values
- * Response statuses from ReserveNow
- * @see tests/charging-station/OCPPSpecRequirements.md §10.3
- */
-export const RESERVATION_STATUS_ACCEPTED = 'Accepted'
-export const RESERVATION_STATUS_FAULTED = 'Faulted'
-export const RESERVATION_STATUS_OCCUPIED = 'Occupied'
-export const RESERVATION_STATUS_REJECTED = 'Rejected'
-export const RESERVATION_STATUS_UNAVAILABLE = 'Unavailable'
-
-/**
- * Reservation IDs
- * Test reservation identifiers
- */
-export const TEST_RESERVATION_ID = 1
-export const TEST_RESERVATION_ID_2 = 2
-
-/**
- * Date/Time Constants
- * Fixed test values for temporal testing
- */
-export const TEST_ISO_TIMESTAMP = '2025-02-27T10:00:00Z'
-export const TEST_TIMESTAMP_OFFSET_SECONDS = 3600 // 1 hour
-
-/**
- * Meter Value Measurands
- * OCPP standard measurand values
- */
-export const MEASURAND_ENERGY_ACTIVE_IMPORT_REGISTER = 'Energy.Active.Import.Register'
-export const MEASURAND_POWER_ACTIVE_IMPORT = 'Power.Active.Import'
-export const MEASURAND_CURRENT_IMPORT = 'Current.Import'
-export const MEASURAND_VOLTAGE = 'Voltage'
-export const MEASURAND_TEMPERATURE = 'Temperature'
-
-/**
- * Unit of Measurement
- * Standard OCPP measurand units
- */
-export const UNIT_KILOWATT_HOUR = 'kWh'
-export const UNIT_WATT = 'W'
-export const UNIT_AMPERE = 'A'
-export const UNIT_VOLT = 'V'
-export const UNIT_CELSIUS = 'Celsius'
-
-/**
- * Test Configuration Defaults
- * Safe defaults for test fixtures
- */
-export const DEFAULT_OCPP_VERSION = OCPP_VERSION_16
-export const DEFAULT_CONNECTOR_COUNT = 2
-export const DEFAULT_POWER_KILO_WATT = 22
-export const DEFAULT_CURRENT_AMPERE = 32
-export const DEFAULT_VOLTAGE_VOLT = 230
+export const TEST_CONNECTOR_ID_VALID_INSTANCE = '1'
return ws
}
+/**
+ * Create a mock UI server configuration with default values.
+ * @param overrides - Partial configuration to merge with defaults
+ * @returns Complete UIServerConfiguration for testing
+ */
export const createMockUIServerConfiguration = (
overrides?: Partial<UIServerConfiguration>
): UIServerConfiguration => {
}
}
+/**
+ * Create a mock UI server configuration with basic authentication enabled.
+ * @param overrides - Partial configuration to merge with auth defaults
+ * @returns UIServerConfiguration with BASIC_AUTH enabled
+ */
export const createMockUIServerConfigurationWithAuth = (
overrides?: Partial<UIServerConfiguration>
): UIServerConfiguration => {
}
}
+/**
+ * Create a mock HTTP IncomingMessage for testing.
+ * @param overrides - Partial message properties to merge with defaults
+ * @returns IncomingMessage configured for testing
+ */
export const createMockIncomingMessage = (
overrides?: Partial<IncomingMessage>
): IncomingMessage => {
} as IncomingMessage
}
+/**
+ * Create mock charging station data for UI server tests.
+ * @param hashId - Unique identifier for the charging station
+ * @param overrides - Partial data properties to merge with defaults
+ * @returns ChargingStationData configured for testing
+ */
export const createMockChargingStationData = (
hashId: string,
overrides?: Partial<ChargingStationData>
} as ChargingStationData
}
+/**
+ * Create a protocol request tuple for UI server testing.
+ * @param uuid - Request identifier
+ * @param procedureName - OCPP procedure name
+ * @param payload - Request payload (defaults to empty object)
+ * @returns Protocol request tuple [uuid, procedureName, payload]
+ */
export const createProtocolRequest = (
uuid: UUIDv4,
procedureName: ProcedureName,
},
})
+/**
+ * Wait for stream operations to flush.
+ * @param delayMs - Delay in milliseconds to wait
+ * @returns Promise that resolves after the delay
+ */
export const waitForStreamFlush = async (delayMs: number): Promise<void> => {
await new Promise(resolve => {
setTimeout(resolve, delayMs)