Skip to content

Commit ae26647

Browse files
committed
fix: Added 2 log levels for Testing and followed new ParseServerConfiguration
1 parent a54e2c6 commit ae26647

File tree

5 files changed

+58
-14
lines changed

5 files changed

+58
-14
lines changed

spec/ParseUser.spec.js

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4429,13 +4429,27 @@ describe('allowClientClassCreation option', () => {
44294429
// Need to set it back to true to avoid other test fails
44304430
defaultConfiguration.allowClientClassCreation = true;
44314431
});
4432+
});
4433+
4434+
describe('custom log levels for username already exists error', () => {
4435+
const logger = require('../lib/logger').logger;
4436+
let warnSpy, errorSpy, infoSpy;
4437+
4438+
beforeEach(() => {
4439+
warnSpy = spyOn(logger, 'warn').and.callThrough();
4440+
errorSpy = spyOn(logger, 'error').and.callThrough();
4441+
infoSpy = spyOn(logger, 'info').and.callThrough();
4442+
});
44324443

4433-
it('should respect custom log level for username already exists error', async () => {
4434-
const logger = require('../lib/logger').logger;
4435-
const logSpy = spyOn(logger, 'warn').and.callThrough();
4444+
afterEach(() => {
4445+
warnSpy.calls.reset();
4446+
errorSpy.calls.reset();
4447+
infoSpy.calls.reset();
4448+
});
44364449

4450+
it('should respect warn log level for username already exists error', async () => {
44374451
await reconfigureServer({
4438-
logEvents: {
4452+
logLevels: {
44394453
usernameAlreadyExists: 'warn',
44404454
},
44414455
});
@@ -4453,8 +4467,35 @@ describe('allowClientClassCreation option', () => {
44534467
await duplicateUser.signUp();
44544468
} catch (error) {
44554469
expect(error.code).toBe(Parse.Error.USERNAME_TAKEN);
4456-
expect(logSpy).toHaveBeenCalled();
4457-
expect(logger.error).not.toHaveBeenCalled();
4470+
expect(warnSpy).toHaveBeenCalled();
4471+
expect(errorSpy).not.toHaveBeenCalled();
4472+
expect(infoSpy).not.toHaveBeenCalled();
4473+
}
4474+
});
4475+
4476+
it('should respect info log level for username already exists error', async () => {
4477+
await reconfigureServer({
4478+
logLevels: {
4479+
usernameAlreadyExists: 'info',
4480+
},
4481+
});
4482+
4483+
const user = new Parse.User();
4484+
user.setUsername('anotherExistingUser');
4485+
user.setPassword('password');
4486+
await user.signUp();
4487+
4488+
const duplicateUser = new Parse.User();
4489+
duplicateUser.setUsername('anotherExistingUser');
4490+
duplicateUser.setPassword('password');
4491+
4492+
try {
4493+
await duplicateUser.signUp();
4494+
} catch (error) {
4495+
expect(error.code).toBe(Parse.Error.USERNAME_TAKEN);
4496+
expect(infoSpy).toHaveBeenCalled();
4497+
expect(warnSpy).not.toHaveBeenCalled();
4498+
expect(errorSpy).not.toHaveBeenCalled();
44584499
}
44594500
});
44604501
});

src/Options/Definitions.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,4 +1117,10 @@ module.exports.LogLevels = {
11171117
'Log level used by the Cloud Code Triggers `beforeSave`, `beforeDelete`, `beforeFind`, `beforeLogin` on success. Default is `info`.',
11181118
default: 'info',
11191119
},
1120+
usernameAlreadyExists: {
1121+
env: 'PARSE_SERVER_LOG_LEVELS_USERNAME_ALREADY_EXISTS',
1122+
help:
1123+
'Log level for the username already exists error when trying to sign up.Default is `error`.',
1124+
default: 'error',
1125+
},
11201126
};

src/Options/docs.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Options/index.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export interface ParseServerOptions {
8787
verbose: ?boolean;
8888
/* Sets the level for logs */
8989
logLevel: ?string;
90-
/* Options for customizing log levels for specific events
90+
/* (Optional) Overrides the log levels used internally by Parse Server to log events.
9191
:DEFAULT: {} */
9292
logLevels: ?LogLevels;
9393
/* Maximum number of logs to keep. If not set, no logs will be removed. This can be a number of files or number of days. If using days, add 'd' as the suffix. (default: null) */
@@ -635,10 +635,8 @@ export interface LogLevels {
635635
:DEFAULT: error
636636
*/
637637
cloudFunctionError: ?string;
638-
/* Log level for the "username already exists" error when trying to sign up.
639-
Possible values: 'info', 'error', 'verbose', or false to disable logging.
640-
If not specified, the default behavior (logging as an error) will be used.
641-
:DEFAULT: undefined
638+
/* Log level for the username already exists error when trying to sign up.Default is `error`.
639+
:DEFAULT: error
642640
*/
643-
usernameAlreadyExists: 'silent' | 'error' | 'info' | 'verbose';
641+
usernameAlreadyExists: ?string;
644642
}

src/RestWrite.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1557,7 +1557,6 @@ RestWrite.prototype.runDatabaseOperation = function () {
15571557

15581558
// Quick check, if we were able to infer the duplicated field name
15591559
if (error && error.userInfo && error.userInfo.duplicated_field === 'username') {
1560-
//Instead of directly throwing the error, we will give error based on logEvent
15611560
const usernameError = new Parse.Error(
15621561
Parse.Error.USERNAME_TAKEN,
15631562
'Account already exists for this username.'

0 commit comments

Comments
 (0)