> @layeredapps/dashboard@0.0.149 test > PORT=50002 NODE_ENV=testing STORAGE=sqlite DATABASE=dashboard mocha --ignore 'node_modules/**/*' --timeout 90000 --slow 90000 --recursive --extension .test.js . index PAGE_SIZE Rows of data per page ✔ default 10 ✔ Integer DASHBOARD_SERVER URL of dashboard server ✔ Address DASHBOARD_SESSION_KEY An application-level secret for user session tokens ✔ String DOMAIN Domain of server ✔ default unset ✔ String HOST IP or address web server listens on ✔ default localhost ✔ IP address PORT Port web server listens on ✔ default 8000 ✔ Integer HOME_PATH Alternative path for application home ✔ String DELETE_DELAY Cool-down time in days to delete accounts ✔ default 7 ✔ Integer APPLICATION_SERVER URL of application server ✔ Address APPLICATION_SERVER_TOKEN Secret shared between servers ✔ String BCRYPT_WORKLOAD_FACTOR Strength to protect passwords ✔ default 10 ✔ Integer DISABLE_METRICS Disable aggregated metrics ✔ default unset ✔ Boolean DISABLE_REGISTRATION Disable UI (not API) for registering ✔ default unset ✔ Boolean MAXIMUM_POST_DATA_LENGTH Largest POST payload accepted in bytes ✔ default 2000000 ✔ Integer MINIMUM_PASSWORD_LENGTH Shortest password length ✔ default 6 ✔ Integer MAXIMUM_PASSWORD_LENGTH Longest password length ✔ default 50 ✔ Integer MINIMUM_USERNAME_LENGTH Shortest username length ✔ default 6 ✔ Integer MAXIMUM_USERNAME_LENGTH Longest username length ✔ default 50 ✔ Integer MINIMUM_RESET_CODE_LENGTH Shortest reset code length ✔ default 6 ✔ Integer MAXIMUM_RESET_CODE_LENGTH Longest reset code length ✔ default 50 ✔ Integer REQUIRE_PROFILE Require registration information ✔ default unset ✔ Integer USER_PROFILE_FIELDS Information to collect at registration ✔ default contact-email,full-name ✔ Profile property list SESSION_VERIFICATION_DELAY Seconds before verifying a prolongued session ✔ default 14400 ✔ Integer CACHE_APPLICATION_SERVER_FILES Seconds to cache files from application server ✔ default 60 ✔ Integer CONTENT_SECURITY_POLICY Value for content-security-policy header ✔ CSP header HOT_RELOAD Reloads files every request ✔ Boolean INLINE_CSS Replaces linked CSS with embedded CSS ✔ Boolean INLINE_JS Replaces linked JS with embedded JS ✔ Boolean INLINE_SVG Replaces image SVG wtih embedded SVG ✔ Boolean internal-api/api API#generate ✔ should remap urls to object ✔ should capitalize the last segment ✔ should capitalize hyphenated last segment content/insert-csrf-token page ✔ should add CSRF token to input[name=csrf-token] template ✔ should add CSRF token to input[name=csrf-token] internal-api/format Format#parseDate ✔ should throw error for missing date ✔ should throw error for invalid date Format#date ✔ should zero pad days ✔ should zero pad months internal-api/hash Hash#sha512Hash ✔ should produce the same hash each time Hash#sha512HashCompare ✔ should match text with hash Hash#bcryptHashHash ✔ should hash differently each time Hash#bcryptHashCompare ✔ should match passwords ✔ should not match invalid passwords internal-api/html HTML#parse ✔ should reject invalid strings ✔ should return expected contents ✔ should modify content link to /home ✔ should modify navbar link to /home HTML#findOrCreateTableBody ✔ should require a document ✔ should require a table ✔ should accept table ids ✔ should return existing TBODY ✔ should create new TBODY as last child of table HTML#renderTable ✔ should require a document ✔ should require a table ✔ should require a template ✔ should require a dataset ✔ should create TR for each item ✔ should alternate TR class ✔ should contain expected data HTML#renderList ✔ should require a document ✔ should require a list ✔ should require a template ✔ should require a dataset ✔ should create LI for each item ✔ should contain expected data HTML#renderTemplate ✔ should require a document ✔ should not require a data object ✔ should require a template ✔ should require a parent element ✔ should append contents to parent element HTML#renderPagination ✔ should require a document ✔ should require a total greater than 0 ✔ should require an offset less than total ✔ should accept null or string offset ✔ should enforce global page size ✔ should override global page size internal-api/package-json mergeTitle ✔ should prioritize application title ✔ should default to Dashboard title mergeScriptArray ✔ should add scripts ✔ should put application scripts last internal-api/proxy Proxy#pass ✔ should include x-accountid header ✔ should include x-sessionid header ✔ should include x-dashboard-server header ✔ should create x-application-server-token header ✔ should include referer header ✔ should send POST data ✔ should send multipart POST data ✔ should send file upload POST data ✔ should execute proxy handlers internal-api/response Response#wrapTemplateWithSrcDoc (global setting) ✔ should transfer head content from template to page ✔ should transfer navigation to template from page ✔ should transfer title to page from template ✔ should remove menus for guests ✔ should disable administrator menu for normal user ✔ should add account menu links from package.json ✔ should add administrator menu links from package.json Response#wrapTemplateWithSrcDoc (config override) ✔ should transfer head content from page to template ✔ should transfer head content from template to page ✔ should transfer navigation to template from page ✔ should transfer title to page from template ✔ should remove menus for guests ✔ should disable administrator menu for normal user ✔ should add account menu links from package.json ✔ should add administrator menu links from package.json ✔ should execute "page" handlers on the rendered page ✔ should execute "template" handlers on the rendered + page-merged template ✔ should execute "page" and "template" handlers on the rendered + page-merged template ✔ should execute each content handler Response#throw404 ✔ should set 404 status ✔ should contain 404 code ✔ should contain 404 error Response#throw500 ✔ should set 500 status ✔ should contain 500 code ✔ should contain error message Response#throw511 ✔ should set 511 status ✔ should contain 511 code internal-api/server Server#authenticateRequest ✔ should reject missing token ✔ should reject invalid token ✔ should identify user from token Server#parsePostData ✔ should ignore file uploads ✔ should ignore no-content uploads ✔ should parse post data Server#receiveRequest ✔ should bind query data of URL to req ✔ should not bind route for unknown url ✔ should bind route to req ✔ should redirect user to verification ✔ should accept recent verification ✔ should not require verification ✔ should execute "before" server handler before identifying user ✔ should execute "after" server handler after identifying user ✔ should execute "after" server handler after identifying guest ✔ should execute "before" and "after" server handler ✔ should execute each server handler internal-api/sitemap Sitemap#readHTMLAttributes ✔ should detect attributes Sitemap#loadRoute ✔ should load API route ✔ should load HTML route ✔ should load static HTML route Sitemap#scanFiles ✔ should read files recursively ✔ should exclude navbar files ✔ should exclude test files /account/change-password view ✔ should present the form submit ✔ should apply new password (screenshots) errors ✔ invalid-new-password ✔ invalid-new-password-length ✔ invalid-confirm-password ✔ invalid-password ✔ invalid-xss-input ✔ invalid-csrf-token /account/change-username view ✔ should present the form submit ✔ should apply new username (screenshots) errors ✔ invalid-new-username ✔ invalid-new-username-length ✔ invalid-password ✔ invalid-xss-input ✔ invalid-csrf-token /account/create-profile view ✔ should present the form ✔ should have elements for full-name ✔ should have elements for contact-email ✔ should have elements for display-email ✔ should have elements for dob ✔ should have elements for phone ✔ should have elements for occupation ✔ should have elements for location ✔ should have elements for company-name ✔ should have elements for website submit ✔ should create profile (screenshots) ✔ should create profile with full-name ✔ should create profile and set default ✔ should create profile with display name ✔ should create profile with contact-email ✔ should create profile with display-email ✔ should create profile with dob in YYYY-MM-DD ✔ should create profile with dob in MM-DD-YYYY ✔ should create profile with phone ✔ should create profile with occupation ✔ should create profile with location ✔ should create profile with company-name ✔ should create profile with website errors ✔ invalid-full-name ✔ invalid-full-name-length ✔ invalid-contact-email ✔ invalid-display-email ✔ invalid-display-name ✔ invalid-display-name-length ✔ invalid-dob ✔ invalid-phone ✔ invalid-occupation ✔ invalid-location ✔ invalid-company-name ✔ invalid-website ✔ invalid-xss-input ✔ invalid-csrf-token /account/create-reset-code view ✔ should present the form submit ✔ should create reset code (screenshots) errors ✔ invalid-secret-code (missing) ✔ invalid-secret-code is not alphanumeric ✔ invalid-secret-code-length ✔ invalid-xss-input ✔ invalid-csrf-token /account/delete-account-complete view ✔ should present 3 days remaining message ✔ should present 7 days remaining message ✔ should present instant delete message (screenshots) /account/delete-account view ✔ should present the form submit ✔ should mark account deleted (screenshots) errors ✔ invalid-password ✔ invalid-csrf-token /account/delete-profile before ✔ should bind data view ✔ should present the form submit ✔ should delete profile (screenshots) errors ✔ invalid-profileid ✔ invalid-profile ✔ invalid-account ✔ invalid-csrf-token /account/delete-reset-code before ✔ should bind data view ✔ should present the form submit ✔ should delete reset code (screenshots) errors ✔ invalid-reset-codeid ✔ invalid-account ✔ invalid-csrf-token /account/edit-profile view ✔ should present the form ✔ should have elements for full-name ✔ should have elements for display-name ✔ should have elements for contact-email ✔ should have elements for display-email ✔ should have elements for dob ✔ should have elements for phone ✔ should have elements for occupation ✔ should have elements for location ✔ should have elements for company-name ✔ should have elements for website submit ✔ should update profile (screenshots) ✔ should update profile with full-name ✔ should update profile with display name ✔ should update profile with contact-email ✔ should update profile with display-email ✔ should update profile with dob in YYYY-MM-DD ✔ should update profile with dob in MM-DD-YYYY ✔ should update profile with phone ✔ should update profile with occupation ✔ should update profile with location ✔ should update profile with company-name ✔ should update profile with website errors ✔ invalid-full-name ✔ invalid-full-name-length ✔ invalid-contact-email ✔ invalid-display-email ✔ invalid-display-name ✔ invalid-display-name-length ✔ invalid-dob ✔ invalid-phone ✔ invalid-occupation ✔ invalid-location ✔ invalid-company-name ✔ invalid-website ✔ invalid-profileid ✔ invalid-account ✔ invalid-xss-input ✔ invalid-csrf-token /account/end-all-sessions view ✔ should present the form submit ✔ should generate a new session key (screenshots) errors ✔ invalid-csrf-token /account/end-session before ✔ should bind data to req view ✔ should present the form submit ✔ should end the session (screenshots) ✔ should end current session errors ✔ invalid-sessionid ✔ invalid-session ✔ invalid-account ✔ invalid-csrf-token /account view ✔ should return page (screenshots) ✔ should not link to account preferences ✔ should link to account preferences /account/profile before ✔ should bind data to req view ✔ should present the profile table (screenshots) ✔ should show fields if data exists errors ✔ invalid-profileid ✔ invalid-account /account/profiles before ✔ should bind data to req view ✔ should return one page (screenshots) ✔ should change page size ✔ should change offset /account/register view ✔ should present the form ✔ should disable the form ✔ should have elements for full-name ✔ should have elements for contact-email ✔ should have elements for display-email ✔ should have elements for dob ✔ should have elements for phone ✔ should have elements for occupation ✔ should have elements for location ✔ should have elements for company-name ✔ should have elements for website submit ✔ should create new account with full name ✔ should create new profile with contact email ✔ should create new profile with display email ✔ should create new profile with display name ✔ should create new profile with dob in YYYY-MM-DD ✔ should create new profile with dob in MM-DD-YYYY ✔ should create new profile with phone ✔ should create new profile with occupation ✔ should create new profile with location ✔ should create new profile with company-name ✔ should create new profile with website ✔ should create 20-minute session ✔ should create account (screenshots) errors ✔ invalid-username ✔ duplicate-username ✔ invalid-username-length ✔ invalid-password ✔ invalid-password-length ✔ invalid-confirm ✔ invalid-full-name ✔ invalid-full-name-length ✔ invalid-contact-email ✔ invalid-display-email ✔ invalid-display-name ✔ invalid-display-name-length ✔ invalid-dob ✔ invalid-phone ✔ invalid-occupation ✔ invalid-location ✔ invalid-company-name ✔ invalid-website /account/reset-account view ✔ should present the form submit ✔ should reset session key ✔ should reset code last used ✔ should sign in (screenshots) errors ✔ invalid-username ✔ invalid-secret-code ✔ invalid-new-password ✔ invalid-new-password-length ✔ invalid-confirm-password ✔ invalid-account /account/reset-code before ✔ should bind data to req view ✔ should present the reset code table (screenshots) errors ✔ invalid-reset-codeid ✔ invalid-account /account/reset-codes before ✔ should bind data to req view ✔ should return one page (screenshots) ✔ should change page size ✔ should change offset /account/restore-account view ✔ should present the form submit ✔ should unset account deleted (screenshots) errors ✔ invalid-username ✔ invalid-password ✔ invalid-account /account/session before ✔ should bind data to req view ✔ should present the session table (screenshots) errors ✔ invalid-sessionid ✔ invalid-account /account/sessions before ✔ should bind data to req ✔ should exclude ended sessions view ✔ should return one page (screenshots) ✔ should change page size ✔ should change offset /account/set-default-profile before ✔ should bind data to req view ✔ should present the form submit ✔ should set the profile as default (screenshots) errors ✔ invalid-profileid ✔ invalid-account ✔ invalid-csrf-token /account/signin view ✔ should present the form submit ✔ should create session expiring in 20 minutes as default ✔ should create session expiring in 20 minutes ✔ should create session expiring in 8 hours ✔ should create session expiring in 30 days ✔ should sign in (screenshots) errors ✔ invalid-username ✔ invalid-password /account/signout-complete view ✔ should sign out (screenshots) /account/signout view ✔ should end the session ✔ should redirect to signout complete page ✔ should signout (screenshots) /account/verify view ✔ should present the form submit ✔ should mark session as verified ✔ should verify session (screenshots) errors ✔ invalid-username ✔ invalid-password ✔ invalid-xss-input ✔ invalid-csrf-token /administrator/account-profiles before ✔ should bind data to req view ✔ should present the profiles table (screenshots) ✔ should return one page ✔ should change page size ✔ should change offset errors ✔ invalid-accountid /administrator/account-reset-codes before ✔ should bind data to req view ✔ should present the reset codes table (screenshots) ✔ should return one page ✔ should change page size ✔ should change offset errors ✔ invalid-accountid /administrator/account-sessions before ✔ should bind data to req view ✔ should present the sessions table (screenshots) ✔ should return one page ✔ should change page size ✔ should change offset errors ✔ invalid-accountid /administrator/account before ✔ should bind data to req view ✔ should present the account table (screenshots) ✔ should present the profile table ✔ should present the sessions table ✔ should hide empty reset codes table ✔ should present a populated reset codes table errors ✔ invalid-accountid /administrator/accounts before ✔ should bind data to req view ✔ should present the accounts table (screenshots) ✔ should return one page ✔ should change page size ✔ should change offset /administrator/administrators before ✔ should bind data to req view ✔ should present the administrators table (screenshots) ✔ should return one page ✔ should change page size ✔ should change offset /administrator/assign-administrator before ✔ should bind data to req view ✔ should present the form submit ✔ should assign administrator (screenshots) errors ✔ invalid-account-deleting ✔ invalid-account-administrator ✔ invalid-accountid ✔ invalid-csrf-token /administrator/create-reset-code before ✔ should bind data to req view ✔ should present the form submit ✔ should create reset code (screenshots) errors ✔ invalid-secret-code (missing) ✔ invalid-secret-code is not alphanumeric ✔ invalid-secret-code-length ✔ invalid-accountid ✔ invalid-xss-input ✔ invalid-csrf-token /administrator/delete-account before ✔ should bind data to req view ✔ should present the form submit ✔ should immediately delete (screenshots) errors ✔ invalid-account-not-deleting ✔ invalid-owner-account ✔ invalid-administrator-account ✔ invalid-accountid ✔ invalid-csrf-token /administrator/delete-schedule before ✔ should bind data to req view ✔ should present the deleted accounts table (screenshots) ✔ should return one page ✔ should change page size ✔ should change offset /administrator view ✔ should return page (screenshots) /administrator/profile before ✔ should bind data to req view ✔ should present the profile table (screenshots) ✔ should show fields if data exists errors ✔ invalid-profileid /administrator/profiles before ✔ should bind data to req view ✔ should return one page (screenshots) ✔ should change page size ✔ should change offset /administrator/reset-code before ✔ should bind data to req view ✔ should present the reset code table (screenshots) errors ✔ invalid-codeid /administrator/reset-codes before ✔ should bind data to req view ✔ should present the reset codes table (screenshots) ✔ should return one page ✔ should change page size ✔ should change offset /administrator/reset-session-key before ✔ should bind data to req view ✔ should present the form submit ✔ should reset session key (screenshots) errors ✔ invalid-accountid ✔ invalid-csrf-token /administrator/revoke-administrator before ✔ should bind data to req view ✔ should present the form submit ✔ should revoke administrator status (screenshots) errors ✔ invalid-accountid ✔ invalid-account-administrator /administrator/schedule-account-delete before ✔ should bind data to req view ✔ should present the form submit ✔ should schedule account for deletion (screenshots) errors ✔ invalid-accountid ✔ invalid-account ✔ invalid-csrf-token /administrator/session before ✔ should bind data to req view ✔ should present the session table (screenshots) errors ✔ invalid-sessionid /administrator/sessions before ✔ should bind data to req view ✔ should present the sessions table (screenshots) ✔ should return one page ✔ should change page size ✔ should change offset /administrator/transfer-ownership before ✔ should bind data to req view ✔ should present the form submit ✔ should change ownership (screenshots) errors ✔ invalid-accountid ✔ invalid-account ✔ invalid-account-receiving ✔ invalid-account-receiving ✔ invalid-csrf-token /api/administrator/account exceptions invalid-accountid ✔ unspecified querystring accountid ✔ invalid querystring accountid returns ✔ object redacts ✔ usernameHash ✔ passwordHash ✔ sessionKey /api/administrator/accounts-count returns ✔ integer /api/administrator/accounts receives ✔ optional querystring offset (integer) ✔ optional querystring limit (integer) ✔ optional querystring all (boolean) returns ✔ array redacts ✔ usernameHash ✔ passwordHash ✔ sessionKey configuration ✔ environment PAGE_SIZE /api/administrator/administrator-accounts-count returns ✔ integer /api/administrator/administrator-accounts receives ✔ optional querystring offset (integer) ✔ optional querystring limit (integer) ✔ optional querystring all (boolean) returns ✔ array redacts ✔ usernameHash ✔ passwordHash ✔ sessionKey configuration ✔ environment PAGE_SIZE /api/administrator/create-reset-code exceptions invalid-accountid ✔ unspecified querystring accountid ✔ invalid querystring accountid invalid-secret-code ✔ missing posted secret-code ✔ invalid posted secret-code is not alphanumeric invalid-secret-code-length ✔ invalid posted secret-code length returns ✔ object configuration ✔ environment MINIMUM_RESET_CODE_LENGTH ✔ environment MAXIMUM_RESET_CODE_LENGTH /api/administrator/delete-account exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid receieves ✔ querystring accountid returns ✔ boolean /api/administrator/deleted-accounts-count returns ✔ querystring accountid /api/administrator/deleted-accounts receives ✔ optional querystring offset (integer) ✔ optional querystring limit (integer) ✔ optional querystring all (boolean) returns ✔ array redacts ✔ usernameHash ✔ passwordHash ✔ sessionKey configuration ✔ environment PAGE_SIZE /api/administrator/profile exceptions invalid-profileid ✔ missing querystring profileid ✔ invalid querystring profileid returns ✔ object /api/administrator/profiles-count returns ✔ integer /api/administrator/profiles receives ✔ optional querystring offset (integer) ✔ optional querystring limit (integer) ✔ optional querystring all (boolean) ✔ optional querystring accountid (string) returns ✔ array configuration ✔ environment PAGE_SIZE /api/administrator/reset-account-administrator exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ accessing account is not owner ✔ querystring accountid is not administrator returns ✔ object /api/administrator/reset-code exceptions invalid-reset-codeid ✔ missing querystring codeid ✔ invalid querystring codeid returns ✔ object redacts ✔ secretCodeHash /api/administrator/reset-codes-count returns ✔ integer /api/administrator/reset-codes receives ✔ optional querystring offset (integer) ✔ optional querystring limit (integer) ✔ optional querystring all (boolean) ✔ optional querystring accountid (string) returns ✔ array redacts ✔ secretCodeHash configuration ✔ environment PAGE_SIZE /api/administrator/reset-session-key exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible querystring account is deleted requires ✔ querystring accountid is not deleted returns ✔ object /api/administrator/session exceptions invalid-sessionid ✔ unspecified querystring accountid ✔ invalid querystring sessionid returns ✔ object redacts ✔ tokenHash /api/administrator/sessions-count returns ✔ integer /api/administrator/sessions receives ✔ optional querystring offset (integer) ✔ optional querystring limit (integer) ✔ optional querystring all (boolean) ✔ optional querystring accountid (string) returns ✔ array redacts ✔ tokenHash configuration ✔ environment PAGE_SIZE /api/administrator/set-account-administrator exceptions invalid-accountid ✔ unspecified querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible querystring account is already administrator requires ✔ querystring accountid is not administrator returns ✔ object /api/administrator/set-account-deleted exceptions invalid-accountid ✔ unspecified querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible querystring account is already deleted invalid-account ✔ querystring accountid is deleted returns ✔ object configuration ✔ environment DELETE_DELAY /api/administrator/set-owner-account exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account ✔ ineligible querystring account is already owner requires ✔ accessing account is owner ✔ querystring account is not owner ✔ querystring account is not deleted returns ✔ object /api/user/account exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account returns ✔ object redacts ✔ usernameHash ✔ passwordHash ✔ sessionKey /api/user/create-account exceptions invalid-username ✔ missing posted username duplicate-username ✔ username already registered invalid-username-length ✔ posted username too short ✔ posted username too long invalid-password ✔ missing posted password invalid-password-length ✔ posted password too short ✔ posted password too long invalid-full-name ✔ missing posted full-name invalid-full-name-length ✔ posted full-name too short ✔ posted full-name too long invalid-display-name ✔ missing posted display-name invalid-display-name-length ✔ posted display-name too short ✔ posted display-name too long invalid-company-name ✔ missing posted company-name invalid-contact-email ✔ missing posted contact-email invalid-display-email ✔ missing posted display-email invalid-location ✔ missing posted location invalid-occupation ✔ missing posted occupation invalid-phone ✔ missing posted phone invalid-dob ✔ missing posted dob receives ✔ optionally-required posted full-name ✔ optionally-required posted display-name ✔ optionally-required posted company-name ✔ optionally-required posted contact-email ✔ optionally-required posted display-email ✔ optionally-required posted location ✔ optionally-required posted occupation ✔ optionally-required posted phone ✔ optionally-required posted dob returns ✔ object configuration ✔ environment MINIMUM_USERNAME_LENGTH ✔ environment MAXIMUM_USERNAME_LENGTH ✔ environment MINIMUM_PASSWORD_LENGTH ✔ environment MAXIMUM_PASSWORD_LENGTH ✔ environment REQUIRE_PROFILE ✔ environment USER_PROFILE_FIELDS ✔ environment MINIMUM_PROFILE_FULL_NAME_LENGTH ✔ environment MAXIMUM_PROFILE_FULL_NAME_LENGTH ✔ environment MINIMUM_PROFILE_DISPLAY_NAME_LENGTH ✔ environment MAXIMUM_PROFILE_DISPLAY_NAME_LENGTH ✔ environment MINIMUM_PROFILE_COMPANY_NAME_LENGTH ✔ environment MAXIMUM_PROFILE_COMPANY_NAME_LENGTH ✔ override req.userProfileFields /api/user/create-profile exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-accountid ✔ ineligible accessing account invalid-full-name ✔ missing posted full-name invalid-full-name-length ✔ posted full-name too short ✔ posted full-name too long invalid-display-name ✔ missing posted display-name invalid-display-name-length ✔ posted display-name too short ✔ posted display-name too long invalid-company-name-length ✔ posted company-name too short ✔ posted company-name too long invalid-company-name-length ✔ invalid-company-name-length invalid-contact-email ✔ missing posted contact-email invalid-display-email ✔ missing posted display-email invalid-location ✔ missing posted location invalid-occupation ✔ missing posted occupation invalid-phone ✔ missing posted phone invalid-dob ✔ missing posted dob receives ✔ optionally-required posted full-name ✔ optionally-required posted display-name ✔ optionally-required posted company-name ✔ optionally-required posted contact-email ✔ optionally-required posted display-email ✔ optionally-required posted location ✔ optionally-required posted occupation ✔ optionally-required posted phone ✔ optionally-required posted dob returns ✔ object configuration ✔ environment USER_PROFILE_FIELDS ✔ environment MINIMUM_PROFILE_FULL_NAME_LENGTH ✔ environment MAXIMUM_PROFILE_FULL_NAME_LENGTH ✔ environment MINIMUM_PROFILE_DISPLAY_NAME_LENGTH ✔ environment MAXIMUM_PROFILE_DISPLAY_NAME_LENGTH ✔ environment MINIMUM_PROFILE_COMPANY_NAME_LENGTH ✔ environment MAXIMUM_PROFILE_COMPANY_NAME_LENGTH ✔ override req.userProfileFields /api/user/create-reset-code exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-accountid ✔ ineligible accessing account invalid-secret-code ✔ missing posted secret-code ✔ invalid posted secret-code is not alphanumeric invalid-secret-code-length ✔ posted secret code too short ✔ posted secret code too long returns ✔ object /api/user/create-session exceptions invalid-username ✔ missing posted username invalid-password ✔ missing posted password receives ✔ optional posted remember (hours|days) returns ✔ object /api/user/delete-profile exceptions invalid-profileid ✔ missing querystring profileid ✔ invalid querystring profileid invalid-profile ✔ querystring profileid is default contact profile invalid-account ✔ ineligible querystring profileid returns ✔ boolean /api/user/delete-reset-code exceptions invalid-reset-codeid ✔ missing querystring codeid ✔ invalid querystring codeid invalid-account ✔ ineligible querystring codeid returns ✔ boolean /api/user/profile exceptions invalid-profileid ✔ missing querystring profileid ✔ invalid querystring profileid invalid-account ✔ ineligible querystring profileid returns ✔ object /api/user/profiles-count exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account returns ✔ integer /api/user/profiles exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account receives ✔ optional querystring offset (integer) ✔ optional querystring limit (integer) ✔ optional querystring all (boolean) returns ✔ array configuration ✔ environment PAGE_SIZE /api/user/reset-account-deleted exceptions invalid-username ✔ missing posted username ✔ invalid posted username invalid-password ✔ missing posted password ✔ invalid posted password invalid-account ✔ credentialed account is not scheduled for deletion returns ✔ object /api/user/reset-account-password exceptions invalid-username ✔ missing posted username ✔ invalid posted username invalid-password ✔ missing posted new-password invalid-secret-code ✔ missing posted secret-code invalid-reset-code ✔ invalid posted secret-code returns ✔ boolean /api/user/reset-code exceptions invalid-reset-codeid ✔ missing querystring codeid ✔ invalid querystring codeid invalid-account ✔ ineligible querystring codeid returns ✔ object redacts ✔ secretCodeHash /api/user/reset-codes-count exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account returns ✔ integer /api/user/reset-codes exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account receives ✔ optional querystring offset (integer) ✔ optional querystring limit (integer) ✔ optional querystring all (boolean) returns ✔ array redacts ✔ secretCodeHash configuration ✔ environment PAGE_SIZE /api/user/reset-session-key exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account returns ✔ boolean /api/user/session exceptions invalid-sessionid ✔ missing querystring sessionid ✔ invalid querystring sessionid invalid-account ✔ ineligible querystring sessionid returns ✔ object redacts ✔ tokenHash /api/user/sessions-count exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account returns ✔ integer /api/user/sessions exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account receives ✔ optional querystring offset (integer) ✔ optional querystring limit (integer) ✔ optional querystring all (boolean) returns ✔ array configuration ✔ environment PAGE_SIZE /api/user/set-account-deleted exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account invalid-password ✔ missing posted password ✔ invalid posted password returns ✔ object configuration ✔ environment DELETE_DELAY /api/user/set-account-password exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account invalid-password ✔ missing posted password ✔ invalid posted password invalid-new-password ✔ missing posted new-password invalid-new-password-length ✔ posted new-password too short ✔ posted new-password too long returns ✔ object /api/user/set-account-profile exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account invalid-profileid ✔ missing posted profileid ✔ invalid posted profileid returns ✔ object /api/user/set-account-username exceptions invalid-accountid ✔ missing querystring accountid ✔ invalid querystring accountid invalid-account ✔ ineligible accessing account invalid-password ✔ missing posted password ✔ invalid posted password invalid-new-username ✔ missing posted new-username invalid-new-username-length ✔ posted new-username too short ✔ posted new-username too long returns ✔ object /api/user/set-session-ended exceptions invalid-sessionid ✔ missing querystring sessionid ✔ invalid querystring sessionid invalid-session ✔ querystring sessionid is already ended invalid-account ✔ ineligible querystring sessionid returns ✔ object /api/user/set-session-verified exceptions invalid-sessionid ✔ missing querystring sessionid ✔ invalid querystring sessionid invalid-account ✔ ineligible querystring sessionid returns ✔ object /api/user/update-profile exceptions invalid-profileid ✔ missing querystring profileid ✔ invalid querystring profileid invalid-profileid ✔ ineligible querystring profileid invalid-full-name ✔ missing posted full-name invalid-full-name-length ✔ posted full-name too short ✔ posted full-name too long invalid-display-name ✔ missing posted display-name invalid-display-name-length ✔ posted display-name too short ✔ posted display-name too long invalid-company-name ✔ missing posted company-name invalid-company-name-length ✔ posted company-name too short ✔ posted company-name too long invalid-contact-email ✔ missing posted contact-email invalid-display-email ✔ missing posted display-email invalid-location ✔ missing posted location invalid-occupation ✔ missing posted occupation invalid-phone ✔ missing posted phone invalid-dob ✔ missing posted dob receives ✔ optionally-required posted full-name ✔ optionally-required posted display-name ✔ optionally-required posted company-name ✔ optionally-required posted contact-email ✔ optionally-required posted display-email ✔ optionally-required posted location ✔ optionally-required posted occupation ✔ optionally-required posted phone ✔ optionally-required posted dob returns ✔ object configuration ✔ environment USER_PROFILE_FIELDS ✔ environment MINIMUM_PROFILE_FULL_NAME_LENGTH ✔ environment MAXIMUM_PROFILE_FULL_NAME_LENGTH ✔ environment MINIMUM_PROFILE_DISPLAY_NAME_LENGTH ✔ environment MAXIMUM_PROFILE_DISPLAY_NAME_LENGTH ✔ environment MINIMUM_PROFILE_COMPANY_NAME_LENGTH ✔ environment MAXIMUM_PROFILE_COMPANY_NAME_LENGTH ✔ override req.userProfileFields 870 passing (19m)