parse-server icon indicating copy to clipboard operation
parse-server copied to clipboard

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

Open FransGH opened this issue 2 years ago • 6 comments
trafficstars

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

  • Parse Server version: all (tested with 5.5.1)
  • Operating system: macOS, linux
  • Local or remote host (AWS, Azure, Google Cloud, Heroku, Digital Ocean, etc): localhost

Database

  • System (MongoDB or Postgres): n/a
  • Database version: n/a
  • Local or remote host (MongoDB Atlas, mLab, AWS, Azure, Google Cloud, etc): n/a

Client

  • SDK (iOS, Android, JavaScript, PHP, Unity, etc): n/a
  • SDK version: n/a

Logs

FransGH avatar Jun 28 '23 09:06 FransGH

Thanks for opening this issue!

  • 🚀 You can help us to fix this issue faster by opening a pull request with a failing test. See our Contribution Guide for how to make a pull request, or read our New Contributor's Guide if this is your first time contributing.

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?

evtimmy avatar Jul 05 '24 22:07 evtimmy

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

mtrezza avatar Jul 06 '24 08:07 mtrezza

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

evtimmy avatar Jul 07 '24 18:07 evtimmy

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?

evtimmy avatar Jul 08 '24 21:07 evtimmy

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

mtrezza avatar Jul 08 '24 21:07 mtrezza