Skip to content

Commit 9d7b653

Browse files
committed
Add read-only mode to test-server to prevent data persistence
- Added readOnly config option to TestServer class - Skip saving to disk when in read-only mode - Added --read-only flag to bin/test-server.js - Updated npm test-server script to use read-only mode by default - This ensures db.json never gets modified during test runs - Fixes data accumulation issue in CI where DELETE requests appeared to fail - Removed start-json-server.sh script (no longer needed)
1 parent 0193a46 commit 9d7b653

File tree

6 files changed

+15
-24
lines changed

6 files changed

+15
-24
lines changed

bin/test-server.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const args = process.argv.slice(2)
1717
let dbFile = path.join(__dirname, '../test/data/rest/db.json')
1818
let port = 8010
1919
let host = '0.0.0.0'
20+
let readOnly = false
2021

2122
// Simple argument parsing
2223
for (let i = 0; i < args.length; i++) {
@@ -26,15 +27,20 @@ for (let i = 0; i < args.length; i++) {
2627
port = parseInt(args[++i])
2728
} else if (arg === '--host') {
2829
host = args[++i]
30+
} else if (arg === '--read-only' || arg === '-r') {
31+
readOnly = true
2932
} else if (!arg.startsWith('-')) {
3033
dbFile = path.resolve(arg)
3134
}
3235
}
3336

3437
// Create and start server
35-
const server = new TestServer({ port, host, dbFile })
38+
const server = new TestServer({ port, host, dbFile, readOnly })
3639

3740
console.log(`Starting test server with db file: ${dbFile}`)
41+
if (readOnly) {
42+
console.log('Running in READ-ONLY mode - changes will not be persisted to disk')
43+
}
3844

3945
server
4046
.start()

lib/test-server.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class TestServer {
1313
this.port = config.port || 8010
1414
this.host = config.host || 'localhost'
1515
this.dbFile = config.dbFile || path.join(__dirname, '../test/data/rest/db.json')
16+
this.readOnly = config.readOnly || false
1617
this.lastModified = null
1718
this.data = this.loadData()
1819

@@ -49,6 +50,10 @@ class TestServer {
4950
}
5051

5152
saveData() {
53+
if (this.readOnly) {
54+
console.log('[Save] Skipping save - running in read-only mode')
55+
return
56+
}
5257
try {
5358
fs.writeFileSync(this.dbFile, JSON.stringify(this.data, null, 2))
5459
console.log('[Save] Data saved to file')

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
},
4949
"repository": "Codeception/codeceptjs",
5050
"scripts": {
51-
"test-server": "node bin/test-server.js test/data/rest/db.json --host 0.0.0.0 -p 8010",
51+
"test-server": "node bin/test-server.js test/data/rest/db.json --host 0.0.0.0 -p 8010 --read-only",
5252
"mock-server:start": "node test/mock-server/start-mock-server.js",
5353
"mock-server:stop": "kill -9 $(lsof -t -i:3001)",
5454
"test:with-mock-server": "npm run mock-server:start && npm test",

test/data/rest/db.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"comments":[],"posts":[{"id":1,"title":"json-server","author":"davert"}]}
1+
{"posts":[{"id":1,"title":"json-server","author":"davert"}],"user":{"name":"davert"}}

test/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ services:
7070
json_server:
7171
<<: *test-service
7272
entrypoint: []
73-
command: /bin/bash /codecept/test/scripts/start-json-server.sh
73+
command: npm run test-server
7474
ports:
7575
- '8010:8010' # Expose to host
7676
restart: always # Automatically restart the container if it fails or becomes unhealthy

test/scripts/start-json-server.sh

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)