OverviewFilesCommitsIssuesDocsReleasesPeers

P2P-Hiverelay / test / unit / blind-protocol-schema-field-drift.test.js

24 lines · javascript ref:
import test from 'brittle'
import {
  EXECUTABLE_SCHEMA_CODECS,
  EXECUTABLE_SCHEMA_FIELD_STATUS,
  IMPLEMENTED_SCHEMAS,
  validateExecutableSchemaFieldMetadata
} from '../../packages/blind-protocol/index.js'

test('blind protocol executable struct metadata rejects field-name and order drift', t => {
  t.ok(EXECUTABLE_SCHEMA_FIELD_STATUS.checkedSchemaNames.length > 80)
  t.alike(EXECUTABLE_SCHEMA_FIELD_STATUS.mismatches, [])
  t.ok(EXECUTABLE_SCHEMA_FIELD_STATUS.complete)

  const drifted = IMPLEMENTED_SCHEMAS.map(row => row.name === 'BlindForwardOpenResultV1'
    ? {
        ...row,
        fields: row.fields.map(field => [...field]).with(2, ['selectedRouteId', 'optional(fixed16)'])
      }
    : row)
  const status = validateExecutableSchemaFieldMetadata(drifted, EXECUTABLE_SCHEMA_CODECS)
  t.absent(status.complete)
  t.alike(status.mismatches.map(row => row.schemaName), ['BlindForwardOpenResultV1'])
})