{"record":{"id":"598436d0b1a0b05f","repo":"RocketChat/Rocket.Chat","slug":"username-adminuser-username-already-exists","errorCode":null,"errorMessage":"Username ${adminUser.username} already exists","messagePattern":"Username (.+?) already exists","errorType":"exception","errorClass":"Meteor.Error","httpStatus":null,"severity":"critical","filePath":"apps/meteor/server/startup/initialData.ts","lineNumber":238,"sourceCode":"\t\t\t],\n\t\t\tstatus: UserStatus.OFFLINE,\n\t\t\tstatusDefault: UserStatus.ONLINE,\n\t\t\tutcOffset: 0,\n\t\t\tactive: true,\n\t\t\ttype: 'user',\n\t\t};\n\n\t\tconsole.log(colors.green(`Name: ${adminUser.name}`));\n\t\tconsole.log(colors.green(`Email: ${adminUser.emails![0].address}`));\n\t\tconsole.log(colors.green(`Username: ${adminUser.username}`));\n\t\tconsole.log(colors.green(`Password: ${adminUser._id}`));\n\n\t\tif (await Users.findOneByEmailAddress(adminUser.emails![0].address)) {\n\t\t\tthrow new Meteor.Error(`Email ${adminUser.emails![0].address} already exists`, \"Rocket.Chat can't run in test mode\");\n\t\t}\n\n\t\tif (!(await checkUsernameAvailability(adminUser.username!))) {\n\t\t\tthrow new Meteor.Error(`Username ${adminUser.username} already exists`, \"Rocket.Chat can't run in test mode\");\n\t\t}\n\n\t\tawait Users.create(adminUser);\n\n\t\tawait Accounts.setPasswordAsync(adminUser._id, adminUser._id);\n\n\t\tawait addUserRolesAsync(adminUser._id, ['admin']);\n\n\t\tif (settings.get('Show_Setup_Wizard') === 'pending') {\n\t\t\t(await Settings.updateValueById('Show_Setup_Wizard', 'in_progress')).modifiedCount &&\n\t\t\t\tvoid notifyOnSettingChangedById('Show_Setup_Wizard');\n\t\t}\n\n\t\tawait addUserToDefaultChannels(adminUser as IUser, true);\n\n\t\t// Create sample call history for API tests\n\t\treturn addCallHistoryTestData('rocketchat.internal.admin.test', 'rocket.cat');\n\t}","sourceCodeStart":220,"sourceCodeEnd":256,"githubUrl":"https://github.com/RocketChat/Rocket.Chat/blob/b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0/apps/meteor/server/startup/initialData.ts#L220-L256","documentation":"Companion guard to the email check: in TEST_MODE startup, checkUsernameAvailability(adminUser.username) must return true for the fixture username 'rocketchat.internal.admin.test'. If the username is taken (reserved by another document, or held by a user with a different _id), startup throws and the seed is aborted.","triggerScenarios":"TEST_MODE startup against a database where the username 'rocketchat.internal.admin.test' already exists — e.g. a previous test-mode run created it, then the _id row was removed but the username remained, or another user registered that name.","commonSituations":"Partially cleaned test databases (username index still holds the name); repeated CI runs on the same Mongo instance; username collisions after imports.","solutions":["Clean leftover documents with that username: db.users.remove({username:'rocketchat.internal.admin.test'}) then restart.","Use a fresh/reset database for every TEST_MODE run (this is the expected workflow).","If it persists, check reserved-usernames settings and the username unique index for orphans."],"exampleFix":"# before: username collision blocks startup\nmongosh rock_chat --eval 'db.users.find({username:\"rocketchat.internal.admin.test\"}).pretty()'\n\n# after: purge and restart\nmongosh rock_chat --eval 'db.users.remove({username:\"rocketchat.internal.admin.test\"})'","handlingStrategy":"validation","validationCode":"// Pre-start check: fixture username must be available\nconst available = await checkUsernameAvailability('rocketchat.internal.admin.test');\nif (!available && TEST_MODE) { /* purge leftovers: db.users.remove({username:'rocketchat.internal.admin.test'}) */ }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Reset test databases between runs.","Purge partial fixture documents after aborted test runs.","Keep test-mode databases isolated from production data."],"tags":["rocket-chat","startup","test-mode","username-availability"],"backgroundTag":"seed-data-conflict","analyzedSha":"b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0","analyzedAt":"2026-08-18T15:26:39.429Z","contentChangedAt":"2026-08-18T15:26:39.429Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}