parse-community / parse-server

Parse Server for Node.js / Express
https://parseplatform.org
Apache License 2.0
20.71k stars 4.76k forks source link

Inconsistent config validation when starting a server instance via CLI vs. API #8673

Open FransGH opened 1 year ago

FransGH commented 1 year ago

New Issue Checklist

Issue Description

When starting a Parse Server instance via CLI, all config parameters are extensively checked and warnings/errors are logged if any issues are found (see Definitions.js). These same checks are not performed when creating a server instance via API.

This can lead to situations where a server setup is created and tested via API that later fails when started via CLI.

Ideally the same checks are performed when starting via API and CLI, so possible configuration issues can be detected early on and are consistent independent of how the server is started.

As there might be non-CLI installations that wouldn't pass the existing CLI checks, this should at least initially be an optional feature.

Steps to reproduce

On 5.5.1, the following config can be used to reproduce:

{
  "appName": "test",
  "appId": "test",
  "masterKey": "test",
  "logLevel": "error",
  "auth": {
    "facebook": {
      "appIds": "test"
    }
  }
}

Passing this as config.json on the CLI results in an error (on v5.3 - v5.5.1).

Starting via API works:

const express = require('express');
const ParseServer = require('parse-server').ParseServer;
const fs = require('fs');

let api = new ParseServer(JSON.parse(fs.readFileSync('config.json')));

let app = express();
app.use('/parse', api);
app.listen(1337, () => console.log('parse-server running on port 1337.'));

Actual Outcome

The CLI gave following error (meanwhile addressed: https://github.com/parse-community/parse-server/pull/8666)

Error: [object Object] should be a comma separated string or an array

Expected Outcome

I expected the server to run fine when started via CLI instead of API (as it did before).

Environment

Server

Database

Client

Logs

parse-github-assistant[bot] commented 1 year ago

Thanks for opening this issue!

evtimmy commented 1 week ago

Just stumbled upon this trying to configure 'auth' option in config.json, server starting from CLI (default docker image). This breaks 'auth' option for CLI server. Any work-arounds?

mtrezza commented 1 week ago

Does this still occur with the latest alpha version of Parse Server?

evtimmy commented 1 week ago

I see 'auth' issue is fixed in 5.5.3, here https://github.com/parse-community/parse-server/pull/8669/files thanks!

evtimmy commented 1 week ago

Is the configuration options validation that is performed on starting the server via CLI also performed when starting the server via API and if so, which parse-server version fixed that?

mtrezza commented 1 week ago

I assumed from your comment that the issue has been fixed; I'll re-open.