Consolidate test files: 1 spec + 1 integration spec per source file max. Merged 16 spec files into 8. Structure: main_state_machine (.spec + .integration), state_machine_manager.spec, device_action_executor.spec, configuration_evaluation_state (.spec + .integration), immediate_command_state_machine.spec, task_queue.spec. Merged soap_fault into soap.spec. All 749 tests pass. Build status: Success

This commit is contained in:
ATX Bot committed 2026-06-09 12:02:07 +02:00
1 parent 25fa7b993b
commit 3a03f9f516
32 files changed
+1993 -6553

No files matched your search

+46
View File
@@ -75,3 +75,49 @@ describe('buildSoapEnvelope', () => {
expect(xml).toContain('<cwmp:Reboot/>')
})
})
describe('extractCwmpMessage — SOAP Fault detection', () => {
it('detects soap-env:Fault as Fault message', () => {
const body = {
'soap-env:Fault': {
faultcode: 'Client',
faultstring: 'CWMP fault',
detail: { 'cwmp:Fault': { FaultCode: '9001', FaultString: 'Request denied' } },
},
}
const msg = extractCwmpMessage(body)
expect(msg).not.toBeNull()
expect(msg!.type).toBe('Fault')
expect(msg!.data.faultcode).toBe('Client')
})
it('detects SOAP-ENV:Fault as Fault message', () => {
const body = { 'SOAP-ENV:Fault': { faultcode: 'Server', faultstring: 'Internal error' } }
const msg = extractCwmpMessage(body)
expect(msg).not.toBeNull()
expect(msg!.type).toBe('Fault')
})
it('detects bare Fault as Fault message', () => {
const body = { Fault: { FaultCode: '9002', FaultString: 'Internal error' } }
const msg = extractCwmpMessage(body)
expect(msg!.type).toBe('Fault')
})
it('detects soapenv:Fault as Fault message', () => {
const body = { 'soapenv:Fault': { faultcode: 'Client', faultstring: 'Fault' } }
const msg = extractCwmpMessage(body)
expect(msg!.type).toBe('Fault')
})
it('prefers cwmp: prefixed keys over Fault detection', () => {
const body = { 'cwmp:GetParameterValuesResponse': { ParameterList: [] }, 'soap-env:Fault': { faultcode: 'Client' } }
const msg = extractCwmpMessage(body)
expect(msg!.type).toBe('GetParameterValuesResponse')
})
it('returns null when body has no cwmp: keys and no Fault', () => {
expect(extractCwmpMessage({ 'other:Something': {} })).toBeNull()
})
})
-64
View File
@@ -1,64 +0,0 @@
import { describe, it, expect } from 'vitest'
import { extractCwmpMessage } from '../../../app/protocol/soap.js'
describe('extractCwmpMessage — SOAP Fault detection', () => {
it('detects soap-env:Fault as Fault message', () => {
const body = {
'soap-env:Fault': {
faultcode: 'Client',
faultstring: 'CWMP fault',
detail: { 'cwmp:Fault': { FaultCode: '9001', FaultString: 'Request denied' } },
},
}
const msg = extractCwmpMessage(body)
expect(msg).not.toBeNull()
expect(msg!.type).toBe('Fault')
expect(msg!.data.faultcode).toBe('Client')
})
it('detects SOAP-ENV:Fault as Fault message', () => {
const body = {
'SOAP-ENV:Fault': {
faultcode: 'Server',
faultstring: 'Internal error',
},
}
const msg = extractCwmpMessage(body)
expect(msg).not.toBeNull()
expect(msg!.type).toBe('Fault')
expect(msg!.data.faultcode).toBe('Server')
})
it('detects bare Fault as Fault message', () => {
const body = {
Fault: { FaultCode: '9002', FaultString: 'Internal error' },
}
const msg = extractCwmpMessage(body)
expect(msg).not.toBeNull()
expect(msg!.type).toBe('Fault')
})
it('detects soapenv:Fault as Fault message', () => {
const body = {
'soapenv:Fault': { faultcode: 'Client', faultstring: 'Fault' },
}
const msg = extractCwmpMessage(body)
expect(msg).not.toBeNull()
expect(msg!.type).toBe('Fault')
})
it('prefers cwmp: prefixed keys over Fault detection', () => {
const body = {
'cwmp:GetParameterValuesResponse': { ParameterList: [] },
'soap-env:Fault': { faultcode: 'Client' },
}
const msg = extractCwmpMessage(body)
expect(msg).not.toBeNull()
expect(msg!.type).toBe('GetParameterValuesResponse')
})
it('returns null when body has no cwmp: keys and no Fault', () => {
const body = { 'other:Something': {} }
expect(extractCwmpMessage(body)).toBeNull()
})
})