Summary
Four request-validation error messages diverge from real DynamoDB strings. Surfaced by tier-3 exact-string assertions in the conformance suite.
Version: dynoxide 0.9.9
Cases
CreateTable: KeySchema list rendered as JSON, not Java toString
Test: tests/tier3/error-messages/createTable.test.ts "more than 2 KeySchema elements"
Expected:
Value '[KeySchemaElement(attributeName=pk, keyType=HASH), KeySchemaElement(attributeName=sk, keyType=RANGE), KeySchemaElement(attributeName=extra, keyType=RANGE)]' at 'keySchema' failed to satisfy constraint: Member must have length less than or equal to 2
Actual:
Value '[{"AttributeName":"pk","KeyType":"HASH"},{"AttributeName":"sk","KeyType":"RANGE"},{"AttributeName":"extra","KeyType":"RANGE"}]' at 'keySchema' failed to satisfy constraint: Member must have length less than or equal to 2
PutItem: empty TableName produces 2 errors with wrong length minimum
Test: tests/tier3/error-messages/putItem.test.ts "empty table name: minimum length 1 error"
Expected:
1 validation error detected: Value '' at 'tableName' failed to satisfy constraint: Member must have length greater than or equal to 1
Actual:
2 validation errors detected: Value '' at 'tableName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z0-9_.-]+; Value '' at 'tableName' failed to satisfy constraint: Member must have length greater than or equal to 3
The 3 minimum belongs to CreateTable.TableName. Other operations require length >= 1.
Query: invalid Select enum listed alphabetically
Test: tests/tier3/error-messages/query.test.ts "invalid Select value"
Expected:
Member must satisfy enum value set: [SPECIFIC_ATTRIBUTES, COUNT, ALL_ATTRIBUTES, ALL_PROJECTED_ATTRIBUTES]
Actual:
Member must satisfy enum value set: [ALL_ATTRIBUTES, ALL_PROJECTED_ATTRIBUTES, COUNT, SPECIFIC_ATTRIBUTES]
Query: numeric range error includes rejected value
Test: tests/tier3/error-messages/query.test.ts "Limit of 0"
Expected:
Value at 'Limit' failed to satisfy constraint: Member must have value greater than or equal to 1
Actual:
Value '0' at 'Limit' failed to satisfy constraint: Member must have value greater than or equal to 1
Reproduction
git clone https://github.com/nubo-db/dynamodb-conformance.git
cd dynamodb-conformance && npm ci
npx dynoxide --port 8001 &
DYNAMODB_ENDPOINT=http://localhost:8001 \
AWS_ACCESS_KEY_ID=fake AWS_SECRET_ACCESS_KEY=fake AWS_REGION=us-east-1 \
npx vitest run tests/tier3/error-messages/createTable.test.ts \
tests/tier3/error-messages/putItem.test.ts \
tests/tier3/error-messages/query.test.ts
Conformance run: https://github.com/nubo-db/dynamodb-conformance/actions/runs/24932177778
Summary
Four request-validation error messages diverge from real DynamoDB strings. Surfaced by tier-3 exact-string assertions in the conformance suite.
Version: dynoxide 0.9.9
Cases
CreateTable: KeySchema list rendered as JSON, not Java toString
Test:
tests/tier3/error-messages/createTable.test.ts"more than 2 KeySchema elements"Expected:
Actual:
PutItem: empty TableName produces 2 errors with wrong length minimum
Test:
tests/tier3/error-messages/putItem.test.ts"empty table name: minimum length 1 error"Expected:
Actual:
The
3minimum belongs toCreateTable.TableName. Other operations require length>= 1.Query: invalid Select enum listed alphabetically
Test:
tests/tier3/error-messages/query.test.ts"invalid Select value"Expected:
Actual:
Query: numeric range error includes rejected value
Test:
tests/tier3/error-messages/query.test.ts"Limit of 0"Expected:
Actual:
Reproduction
Conformance run: https://github.com/nubo-db/dynamodb-conformance/actions/runs/24932177778