getting collection getting collection getting collection index PAGE_SIZE Rows of data per page ✓ default 10 ✓ Integer 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 ID_LENGTH Length of random ID ✓ default 8 ✓ Integer ALLOW_PUBLIC_API Allow HTTP access to /api ✓ default false ✓ Boolean 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 ENCRYPTION_SECRET 32-character secret string ✓ String ENCRYPTION_SECRET_IV 16-character secret string ✓ String LANGUAGE Default, fixed or selectable UI language ✓ default en ✓ Languages folder name ENABLE_LANGUAGE_PREFERENCE Allows users to customize language, timezone and formats ✓ default unset ✓ Boolean DISABLE_REGISTRATION Disable UI (not API) for registering ✓ default unset ✓ Boolean DASHBOARD_SERVER URL of dashboard server ✓ default unset ✓ Address MINIMUM_PASSWORD_LENGTH Shortest password length ✓ default 1 ✓ Integer MAXIMUM_PASSWORD_LENGTH Longest password length ✓ default 50 ✓ Integer MINIMUM_USERNAME_LENGTH Shortest username length ✓ default 1 ✓ 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 internal-api/api API#createFromSitemap ✓ should remap urls to object ✓ should capitalize the last segment ✓ should capitalize hyphenated last segment 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#parseHTML ✓ should reject invalid strings ✓ should return expected contents 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 (48ms) ✓ should enforce global page size ✓ should override global page size internal-api/merge-package-json MergePackageJSON#loadRootJSON Merged content handler order ✓ should put application content handler last ✓ should put dashboard content handlers first ✓ should put module content handlers between dashboard and application ✓ should include nested modules Merged proxy handler order ✓ should put application proxy handlers last ✓ should put dashboard proxy handlers first ✓ should put module proxy handlers between dashboard and application ✓ should include nested modules Merged proxy handler order ✓ should put application proxy handlers last ✓ should put dashboard proxy handlers first ✓ should put module proxy handlers between dashboard and application ✓ should include nested modules internal-api/proxy Proxy#pass ✓ should include x-accountid header (83ms) ✓ should include x-sessionid header (50ms) ✓ should include x-dashboard-server header (48ms) ✓ should create x-application-server-token header (54ms) ✓ should include referer header (63ms) ✓ should send POST data (48ms) ✓ should send multipart POST data (54ms) ✓ should send file upload POST data (53ms) ✓ should execute proxy handlers (57ms) internal-api/response Response#wrapTemplateWithSrcDoc (global setting) ✓ 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 (47ms) ✓ should add account menu links from package.json (51ms) ✓ should add administrator menu links from package.json (52ms) 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 (49ms) ✓ should add account menu links from package.json (47ms) ✓ should add administrator menu links from package.json (56ms) ✓ 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 (56ms) 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 (56ms) ✓ should execute "before" server handler before identifying user (50ms) ✓ should execute "after" server handler after identifying user (60ms) ✓ should execute "after" server handler after identifying guest ✓ should execute "before" and "after" server handler ✓ should execute each server handler internal-api/sitemap Sitemap#authenticateRequest ✓ should substitute language HTML file (52ms) internal-api/storage-cache get ✓ should require key ✓ should return value set ✓ should require key ✓ should set value remove ✓ should require key ✓ should remove object internal-api/storage-list getting collection StorageList#add ✓ should add string properties ✓ should add int properties ✓ should add float properties ✓ should add boolean properties StorageList#addMany ✓ should add multiple properties ✓ should skip duplicates StorageList#count ✓ should count the items (3609ms) ✓ should not count removed items (4809ms) StorageList#remove ✓ should remove the item (2405ms) StorageList#list ✓ should change page size (4809ms) ✓ should enforce offset (3607ms) StorageList#listAll ✓ should return all records (7214ms) internal-api/storage-object getting collection getProperties ✓ should return string properties ✓ should return int properties ✓ should return float properties ✓ should return boolean properties getProperty ✓ should return string property ✓ should return int property ✓ should return float property ✓ should return boolean property removeProperty ✓ should delete properties removeProperties ✓ should delete properties setProperty ✓ should set string property ✓ should set int property ✓ should set float property ✓ should set boolean property setProperties ✓ should set string properties ✓ should set int properties ✓ should set float properties ✓ should set boolean properties internal-api/storage getting collection Storage#read ✓ should require file ✓ should return file contents Storage#readMany ✓ should require files array ✓ should return files contents Storage#write ✓ should require file ✓ should require contents ✓ should accept content object ✓ should accept content string ✓ should write file contents ✓ should encrypt contents Storage#delete ✓ should require file ✓ should delete file internal-api/timestamp #create ✓ should reject null date ✓ should accept date ✓ should accept string internal-api/uuid #random ✓ should reject null length #v4 ✓ should be a v4 uuid /account/change-password view ✓ should present the form (589ms) submit ✓ should apply new password (screenshots) (3395ms) errors ✓ invalid-new-password (1776ms) ✓ invalid-new-password-length (2023ms) ✓ invalid-confirm-password (1934ms) ✓ invalid-password (1578ms) /account/change-username view ✓ should present the form (525ms) submit ✓ should apply new username (screenshots) (3544ms) errors ✓ invalid-new-username (1417ms) ✓ invalid-new-username-length (1457ms) ✓ invalid-password (1786ms) /account/create-profile view ✓ should present the form (515ms) ✓ should have elements for full-name (566ms) ✓ should have elements for contact-email (518ms) ✓ should have elements for display-email (517ms) ✓ should have elements for dob (530ms) ✓ should have elements for phone (531ms) ✓ should have elements for occupation (524ms) ✓ should have elements for location (514ms) ✓ should have elements for company-name (510ms) ✓ should have elements for website (526ms) submit ✓ should create profile (screenshots) (4521ms) ✓ should create profile with full-name (1374ms) ✓ should create profile and set default (1379ms) ✓ should create profile with display name (1214ms) ✓ should create profile with contact-email (1622ms) ✓ should create profile with display-email (1727ms) ✓ should create profile with dob in YYYY-MM-DD (1272ms) ✓ should create profile with dob in MM-DD-YYYY (1279ms) ✓ should create profile with phone (1680ms) ✓ should create profile with occupation (1658ms) ✓ should create profile with location (1710ms) ✓ should create profile with company-name (1691ms) ✓ should create profile with website (1645ms) errors ✓ invalid-first-name (1016ms) ✓ invalid-first-name-length (2265ms) ✓ invalid-last-name (1010ms) ✓ invalid-last-name-length (2256ms) ✓ invalid-contact-email (1791ms) ✓ invalid-display-email (1867ms) ✓ invalid-display-name (839ms) ✓ invalid-display-name-length (1902ms) ✓ invalid-dob (1906ms) ✓ invalid-phone (888ms) ✓ invalid-occupation (842ms) ✓ invalid-location (887ms) ✓ invalid-company-name (844ms) ✓ invalid-website (852ms) /account/create-reset-code view ✓ should present the form (564ms) submit ✓ should create reset code (screenshots) (2696ms) errors ✓ invalid-secret-code (912ms) ✓ invalid-secret-code-length (1870ms) /account/delete-account-complete view ✓ should present 3 days remaining message (1465ms) ✓ should present 7 days remaining message (1452ms) ✓ should present instant deletion message (1478ms) ✓ should present instant delete message (screenshots) (2460ms) /account/delete-account view ✓ should present the form (542ms) submit ✓ should mark account deleted (screenshots) (2506ms) errors ✓ invalid-password (1041ms) /account/delete-profile before ✓ should bind data (50ms) exceptions ✓ invalid-profileid (39ms) ✓ invalid-profile ✓ invalid-account (106ms) view ✓ should present the form (514ms) submit ✓ should delete profile (screenshots) (3983ms) /account/delete-reset-code before ✓ should bind data (42ms) exceptions ✓ invalid-reset-codeid (38ms) ✓ invalid-account (78ms) view ✓ should present the form (519ms) submit ✓ should delete reset code (screenshots) (3200ms) /account/edit-profile view ✓ should present the form (506ms) ✓ should have elements for full-name (557ms) ✓ should have elements for display-name (524ms) ✓ should have elements for contact-email (506ms) ✓ should have elements for display-email (539ms) ✓ should have elements for dob (518ms) ✓ should have elements for phone (526ms) ✓ should have elements for occupation (515ms) ✓ should have elements for location (532ms) ✓ should have elements for company-name (510ms) ✓ should have elements for website (506ms) submit ✓ should update profile (screenshots) (7259ms) ✓ should update profile with full-name (1316ms) ✓ should update profile with display name (1204ms) ✓ should update profile with contact-email (1670ms) ✓ should update profile with display-email (1503ms) ✓ should update profile with dob in YYYY-MM-DD (1247ms) ✓ should update profile with dob in MM-DD-YYYY (1250ms) ✓ should update profile with phone (1640ms) ✓ should update profile with occupation (1664ms) ✓ should update profile with location (1729ms) ✓ should update profile with company-name (1646ms) ✓ should update profile with website (1703ms) errors ✓ invalid-first-name (1026ms) ✓ invalid-first-name-length (2246ms) ✓ invalid-last-name (1034ms) ✓ invalid-last-name-length (2270ms) ✓ invalid-contact-email (1870ms) ✓ invalid-display-email (1859ms) ✓ invalid-display-name (848ms) ✓ invalid-display-name-length (1959ms) ✓ invalid-dob (1899ms) ✓ invalid-phone (878ms) ✓ invalid-occupation (874ms) ✓ invalid-location (871ms) ✓ invalid-company-name (871ms) ✓ invalid-website (880ms) /account/end-all-sessions view ✓ should present the form (539ms) submit ✓ should generate a new session key (screenshots) (2000ms) /account/end-session before ✓ should bind data to req view ✓ should present the form (500ms) submit ✓ should end the session (screenshots) (3253ms) ✓ should end current session (756ms) /account view ✓ should return page (screenshots) (1396ms) ✓ should not link to account preferences (1390ms) ✓ should link to account preferences (1435ms) /account/language exceptions ✓ should require language enabled view ✓ should present the form (536ms) submit ✓ should change the language (screenshots) (2383ms) /account/profile before ✓ should bind data to req view ✓ should present the profile table (screenshots) (2612ms) ✓ should show fields if data exists (4444ms) /account/profiles before ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset ✓ should show fields if data exists (4454ms) /account/register view ✓ should present the form (391ms) ✓ should disable the form (369ms) ✓ should have elements for full-name (392ms) ✓ should have elements for contact-email (367ms) ✓ should have elements for display-email (391ms) ✓ should have elements for dob (371ms) ✓ should have elements for phone (369ms) ✓ should have elements for occupation (380ms) ✓ should have elements for location (417ms) ✓ should have elements for company-name (385ms) ✓ should have elements for website (379ms) submit ✓ should create new account with full name (6542ms) ✓ should create new profile with contact email (6647ms) ✓ should create new profile with display email (6682ms) ✓ should create new profile with display name (6348ms) ✓ should create new profile with dob in YYYY-MM-DD (6517ms) ✓ should create new profile with dob in MM-DD-YYYY (6481ms) ✓ should create new profile with phone (7040ms) ✓ should create new profile with occupation (6923ms) ✓ should create new profile with location (6952ms) ✓ should create new profile with company-name (6949ms) ✓ should create new profile with website (6922ms) ✓ should create 20-minute session (6245ms) ✓ should create account (screenshots) (8470ms) errors ✓ invalid-username (5416ms) ✓ invalid-username-length (5422ms) ✓ invalid-password (5412ms) ✓ invalid-password-length (5201ms) ✓ invalid-confirm (5562ms) ✓ invalid-first-name (6243ms) ✓ invalid-first-name-length (12779ms) ✓ invalid-last-name (6272ms) ✓ invalid-last-name-length (12774ms) ✓ invalid-contact-email (12394ms) ✓ invalid-display-email (12377ms) ✓ invalid-display-name (6111ms) ✓ invalid-display-name-length (12441ms) ✓ invalid-dob (12531ms) ✓ invalid-phone (6092ms) ✓ invalid-occupation (6072ms) ✓ invalid-location (6104ms) ✓ invalid-company-name (6079ms) ✓ invalid-website (6095ms) /account/reset-account view ✓ should present the form (378ms) submit ✓ should reset session key (6886ms) ✓ should reset code last used (6919ms) ✓ should sign in (screenshots) (11408ms) errors ✓ invalid-username (5663ms) ✓ invalid-secret-code (5630ms) ✓ invalid-new-password (5593ms) ✓ invalid-new-password-length (5351ms) ✓ invalid-confirm-password (5567ms) ✓ invalid-account (6691ms) /account/reset-code before ✓ should bind data to req (52ms) view ✓ should present the reset code table (screenshots) (2015ms) /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 (485ms) submit ✓ should unset account deleted (screenshots) (10566ms) errors ✓ invalid-username (5368ms) ✓ invalid-password (5361ms) ✓ invalid-account (5777ms) /account/session before ✓ should bind data to req (41ms) view ✓ should present the session table (screenshots) (2055ms) /account/sessions before ✓ should bind data to req ✓ should exclude ended sessions (594ms) view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset /account/set-default-profile before ✓ should bind data to req (61ms) view ✓ should present the form (531ms) submit ✓ should set the profile as default (screenshots) (4003ms) /account/signin view ✓ should present the form (373ms) submit ✓ should create session expiring in 20 minutes as default (5956ms) ✓ should create session expiring in 20 minutes (6109ms) ✓ should create session expiring in 8 hours (12171ms) ✓ should create session expiring in 30 days (6127ms) ✓ should sign in (screenshots) (8323ms) errors ✓ invalid-username (4986ms) ✓ invalid-password (5649ms) /account/signout-complete view ✓ should sign out (screenshots) (1485ms) /account/signout view ✓ should end the session (608ms) ✓ should redirect to signout complete page (579ms) ✓ should signout (screenshots) (1472ms) /account/verify view ✓ should present the form (489ms) submit ✓ should mark session as verified (5935ms) ✓ should verify session (screenshots) (10836ms) errors ✓ invalid-username (5061ms) ✓ invalid-password (5742ms) /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 /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 /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 /administrator/account before ✓ should bind data to req (79ms) view ✓ should present the account table (screenshots) (1993ms) ✓ should present the profile table (542ms) ✓ should present the sessions table (578ms) ✓ should hide empty reset codes table (567ms) ✓ should present a populated reset codes table (589ms) /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 (65ms) view ✓ should present the form (529ms) submit ✓ should apply account update (screenshots) (3350ms) /administrator/create-reset-code before ✓ should bind data to req (63ms) view ✓ should present the form (538ms) submit ✓ should create reset code (screenshots) (3880ms) errors ✓ invalid-secret-code (968ms) ✓ invalid-secret-code-length (1925ms) /administrator/delete-account exceptions ✓ should reject invalid accountid before ✓ should bind data to req (77ms) view ✓ should present the form (551ms) submit ✓ should immediately delete (screenshots) (3527ms) /administrator/delete-schedule before ✓ should bind data to req (129ms) view ✓ should present the deleted accounts table (screenshots) (1786ms) ✓ should return one page (639ms) ✓ should change page size (705ms) ✓ should change offset (652ms) /administrator view ✓ should return page (screenshots) (1312ms) /administrator/profile before ✓ should bind data to req (67ms) view ✓ should present the profile table (screenshots) (2576ms) ✓ should show fields if data exists (4435ms) /administrator/profiles before ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset ✓ should show fields if data exists (4605ms) /administrator/reset-code before ✓ should bind data to req (78ms) view ✓ should present the reset code table (screenshots) (2014ms) /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 (71ms) view ✓ should present the form (586ms) submit ✓ should reset session key (screenshots) (3480ms) /administrator/revoke-administrator before ✓ should bind data to req (83ms) view ✓ should present the form (545ms) submit ✓ should revoke administrator status (screenshots) (3338ms) /administrator/schedule-account-delete before ✓ should bind data to req (67ms) view ✓ should present the form (550ms) submit ✓ should schedule account for deletion (screenshots) (3506ms) /administrator/session before ✓ should bind data to req (89ms) view ✓ should present the session table (screenshots) (2032ms) /administrator/sessions before ✓ should bind data to req view ✓ should present the sessions table (screenshots) ✓ should return one page (592ms) ✓ should change page size ✓ should change offset /administrator/transfer-ownership before ✓ should bind data to req (94ms) view ✓ should present the form (555ms) submit ✓ should change ownership (screenshots) (3467ms) /api/administrator/account exceptions invalid-accountid ✓ unspecified querystring accountid (39ms) ✓ invalid querystring accountid returns ✓ object (71ms) redacts ✓ usernameHash (68ms) ✓ passwordHash (85ms) ✓ sessionKey (76ms) /api/administrator/accounts-count returns ✓ integer (157ms) /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 (78ms) /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 (43ms) ✓ invalid querystring accountid invalid-secret-code ✓ missing posted secret-code (61ms) invalid-secret-code-length ✓ invalid posted secret-code length (69ms) returns ✓ object (80ms) configuration ✓ environment MINIMUM_RESET_CODE_LENGTH (60ms) ✓ environment MAXIMUM_RESET_CODE_LENGTH (61ms) /api/administrator/delete-account exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid receieves ✓ querystring accountid (87ms) returns ✓ boolean (85ms) /api/administrator/deleted-accounts-count returns ✓ querystring accountid (153ms) /api/administrator/deleted-accounts receives ✓ optional querystring offset (integer) (146ms) ✓ optional querystring limit (integer) (106ms) ✓ optional querystring all (boolean) (133ms) returns ✓ array (106ms) redacts ✓ usernameHash (78ms) ✓ passwordHash (67ms) ✓ sessionKey (71ms) configuration ✓ environment PAGE_SIZE (203ms) /api/administrator/profile exceptions invalid-profileid ✓ missing querystring profileid ✓ invalid querystring profileid returns ✓ object (59ms) /api/administrator/profiles-count returns ✓ integer (124ms) /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 (59ms) ✓ querystring accountid is not administrator (62ms) returns ✓ object (69ms) /api/administrator/reset-code exceptions invalid-reset-codeid ✓ missing querystring codeid ✓ invalid querystring codeid returns ✓ object (70ms) redacts ✓ secretCodeHash (68ms) /api/administrator/reset-codes-count returns ✓ integer (144ms) /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 (67ms) requires ✓ querystring accountid is not deleted (69ms) returns ✓ object (71ms) /api/administrator/session exceptions invalid-sessionid ✓ unspecified querystring accountid (38ms) ✓ invalid querystring sessionid (41ms) returns ✓ object (61ms) redacts ✓ tokenHash (64ms) /api/administrator/sessions-count returns ✓ integer (126ms) /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 (60ms) /api/administrator/set-account-deleted exceptions invalid-accountid ✓ unspecified querystring accountid (42ms) ✓ invalid querystring accountid invalid-account ✓ ineligible querystring account is already deleted (63ms) invalid-account ✓ querystring accountid is deleted (66ms) returns ✓ object (66ms) configuration ✓ environment DELETE_DELAY (58ms) /api/administrator/set-owner-account exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (88ms) ✓ ineligible querystring account is already owner requires ✓ accessing account is owner (97ms) ✓ querystring account is not owner ✓ querystring account is not deleted (65ms) returns ✓ object (66ms) /api/user/account exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (56ms) returns ✓ object redacts ✓ usernameHash ✓ passwordHash ✓ sessionKey /api/user/create-account exceptions invalid-username ✓ missing posted username 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-first-name ✓ missing posted first-name invalid-first-name-length ✓ posted first-name too short ✓ posted first-name too long invalid-last-name ✓ missing posted last-name invalid-last-name-length ✓ posted last-name too short ✓ posted last-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 first-name ✓ optionally-required posted last-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 (88ms) ✓ environment MINIMUM_PROFILE_FIRST_NAME_LENGTH ✓ environment MAXIMUM_PROFILE_FIRST_NAME_LENGTH ✓ environment MINIMUM_PROFILE_LAST_NAME_LENGTH ✓ environment MAXIMUM_PROFILE_LAST_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 (83ms) /api/user/create-profile exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-accountid ✓ ineligible accessing account (58ms) invalid-first-name ✓ missing posted first-name invalid-first-name-length ✓ posted first-name too short ✓ posted first-name too long invalid-last-name ✓ missing posted last-name invalid-last-name-length ✓ posted last-name too short ✓ posted last-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 first-name ✓ optionally-required posted last-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 (42ms) ✓ optionally-required posted occupation ✓ optionally-required posted phone ✓ optionally-required posted dob returns ✓ object configuration ✓ environment USER_PROFILE_FIELDS (89ms) ✓ environment MINIMUM_PROFILE_FIRST_NAME_LENGTH ✓ environment MAXIMUM_PROFILE_FIRST_NAME_LENGTH ✓ environment MINIMUM_PROFILE_LAST_NAME_LENGTH ✓ environment MAXIMUM_PROFILE_LAST_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 (71ms) /api/user/create-reset-code exceptions invalid-accountid ✓ missing querystring accountid (42ms) ✓ invalid querystring accountid invalid-accountid ✓ ineligible accessing account (55ms) invalid-secret-code ✓ missing posted secret-code (38ms) 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) (40ms) returns ✓ object /api/user/delete-profile exceptions invalid-profileid ✓ missing querystring profileid ✓ invalid querystring profileid invalid-profile ✓ querystring profileid is default contact profile (38ms) invalid-account ✓ ineligible querystring profileid (64ms) returns ✓ boolean (38ms) /api/user/delete-reset-code exceptions invalid-reset-codeid ✓ missing querystring codeid ✓ invalid querystring codeid invalid-account ✓ ineligible querystring codeid (64ms) returns ✓ boolean (39ms) /api/user/profile exceptions invalid-profileid ✓ missing querystring profileid ✓ invalid querystring profileid invalid-account ✓ ineligible querystring profileid (59ms) returns ✓ object /api/user/profiles-count exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (55ms) returns ✓ integer (46ms) /api/user/profiles exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (66ms) 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 (42ms) 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 (40ms) /api/user/reset-code exceptions invalid-reset-codeid ✓ missing querystring codeid ✓ invalid querystring codeid invalid-account ✓ ineligible querystring codeid (68ms) returns ✓ object (39ms) redacts ✓ secretCodeHash /api/user/reset-codes-count exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (65ms) returns ✓ integer (55ms) /api/user/reset-codes exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (57ms) 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 (61ms) returns ✓ boolean (40ms) /api/user/session exceptions invalid-sessionid ✓ missing querystring sessionid ✓ invalid querystring sessionid invalid-account ✓ ineligible querystring sessionid (73ms) returns ✓ object redacts ✓ tokenHash /api/user/sessions-count exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (62ms) returns ✓ integer (56ms) /api/user/sessions exceptions invalid-accountid ✓ missing querystring accountid (69ms) ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (70ms) 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 (57ms) invalid-password ✓ missing posted password ✓ invalid posted password returns ✓ object configuration ✓ environment DELETE_DELAY /api/user/set-account-language exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (56ms) invalid-language ✓ missing posted language ✓ invalid posted language receives ✓ required posted language returns ✓ object /api/user/set-account-password exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (64ms) 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 (55ms) invalid-profileid ✓ missing posted profileid ✓ invalid posted profileid returns ✓ object (45ms) /api/user/set-account-username exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid (40ms) invalid-account ✓ ineligible accessing account (71ms) 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 not active session (47ms) invalid-account ✓ ineligible querystring sessionid (60ms) returns ✓ object /api/user/set-session-verified exceptions invalid-sessionid ✓ missing querystring sessionid ✓ invalid querystring sessionid invalid-account ✓ ineligible querystring sessionid (58ms) returns ✓ object /api/user/update-profile exceptions invalid-profileid ✓ missing querystring profileid ✓ invalid querystring profileid invalid-profileid ✓ ineligible querystring profileid (64ms) invalid-first-name ✓ missing posted first-name invalid-first-name-length ✓ posted first-name too short ✓ posted first-name too long (40ms) invalid-last-name ✓ missing posted last-name invalid-last-name-length ✓ posted last-name too short ✓ posted last-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 first-name ✓ optionally-required posted last-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 (84ms) ✓ environment MINIMUM_PROFILE_FIRST_NAME_LENGTH ✓ environment MAXIMUM_PROFILE_FIRST_NAME_LENGTH ✓ environment MINIMUM_PROFILE_LAST_NAME_LENGTH ✓ environment MAXIMUM_PROFILE_LAST_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 (70ms) index MINIMUM_ORGANIZATION_NAME_LENGTH Shortest organization name length ✓ default 1 getting collection ✓ Integer getting collection MAXIMUM_ORGANIZATION_NAME_LENGTH Longest organization name length ✓ default 50 getting collection ✓ Integer MINIMUM_INVITATION_CODE_LENGTH Shortest invitation code length getting collection ✓ default 6 getting collection ✓ Integer getting collection MAXIMUM_INVITATION_CODE_LENGTH Longest invitation code length ✓ default 50 getting collection ✓ Integer getting collection MEMBERSHIP_PROFILE_FIELDS Personal information to share with members ✓ default display-name,display-email getting collection ✓ Profile property list getting collection /account/organizations/accept-invitation view ✓ should present the form (519ms) ✓ should exclude invalid profiles (608ms) submit ✓ should accept valid existing profile (2263ms) ✓ should accept invitation and create profile (screenshots) (4253ms) errors ✓ invalid-account (4098ms) /account/organizations/create-invitation exceptions ✓ invalid-account (134ms) before ✓ should bind data to req (50ms) view ✓ should present the form (526ms) submit ✓ should create invitation (screenshots) (4494ms) /account/organizations/create-organization view ✓ should present the form (513ms) submit ✓ should accept valid existing profile (1610ms) ✓ should create organization (screenshots) (3441ms) errors ✓ invalid-organization-name (1236ms) ✓ invalid-organization-name-length (3516ms) ✓ invalid-organization-email (1942ms) /account/organizations/delete-invitation exceptions ✓ invalid-account (91ms) before ✓ should bind data (65ms) view ✓ should present the form (532ms) submit ✓ should delete invitation (screenshots) (4002ms) /account/organizations/delete-membership exceptions ✓ invalid-account (138ms) before ✓ should bind data to req (130ms) view ✓ should present the form (583ms) submit ✓ should delete membership (screenshots) (3386ms) /account/organizations/delete-organization exceptions ✓ invalid-account (147ms) before ✓ should bind data to req (45ms) view ✓ should present the form (525ms) submit ✓ should delete organization (screenshots) (3881ms) /account/organizations/edit-membership-profile view ✓ should present the form (582ms) ✓ should have elements for full-name (578ms) ✓ should have elements for display-name (600ms) ✓ should have elements for contact-email (573ms) ✓ should have elements for display-email (595ms) ✓ should have elements for dob (566ms) ✓ should have elements for phone (650ms) ✓ should have elements for occupation (592ms) ✓ should have elements for location (572ms) ✓ should have elements for company-name (584ms) ✓ should have elements for website (593ms) submit ✓ should update profile (screenshots) (6841ms) ✓ should update profile with full-name (1390ms) ✓ should update profile with display name (1408ms) ✓ should update profile with contact-email (1498ms) ✓ should update profile with display-email (1578ms) ✓ should update profile with dob in YYYY-MM-DD (1353ms) ✓ should update profile with dob in MM-DD-YYYY (1348ms) ✓ should update profile with phone (1756ms) ✓ should update profile with occupation (1760ms) ✓ should update profile with location (1748ms) ✓ should update profile with company-name (1760ms) ✓ should update profile with website (1831ms) errors ✓ invalid-first-name (1106ms) ✓ invalid-first-name-length (2345ms) ✓ invalid-last-name (1069ms) ✓ invalid-last-name-length (2348ms) ✓ invalid-contact-email (1995ms) ✓ invalid-display-email (1949ms) ✓ invalid-display-name (956ms) ✓ invalid-display-name-length (1994ms) ✓ invalid-dob (2065ms) ✓ invalid-phone (959ms) ✓ invalid-occupation (973ms) ✓ invalid-location (941ms) ✓ invalid-company-name (929ms) ✓ invalid-website (928ms) /account/organizations/edit-organization exceptions ✓ should require owner (88ms) before ✓ should bind data to req (44ms) view ✓ should present the form (507ms) submit ✓ should apply organization update (screenshots) (4890ms) errors ✓ invalid-organization-name (1479ms) ✓ invalid-organization-name-length (2042ms) ✓ invalid-organization-email (1105ms) /account/organizations/index before ✓ should bind data to req (103ms) view ✓ should have row for each organization (578ms) ✓ should have row for each membership (screenshots) (1456ms) /account/organizations/invitation before ✓ should require owner (84ms) ✓ should bind data to req (69ms) view ✓ should have row for invitation (screenshots) (3760ms) /account/organizations/membership before ✓ should reject non-member (125ms) ✓ should bind data to req (117ms) view ✓ should have row for membership (screenshots) (2379ms) ✓ should show profile fields if data exists (3223ms) /account/organizations/memberships before ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset ✓ should show profile fields if data exists (4604ms) /account/organizations/organization-invitations before ✓ should require owner (92ms) ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset /account/organizations/organization-memberships before ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset /account/organizations/organization before ✓ should reject non-member (80ms) ✓ should bind data to req (104ms) view ✓ should have row for organization (screenshots) (2626ms) /account/organizations/organizations before ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset /account/organizations/revoke-membership exceptions ✓ invalid-account (121ms) before ✓ should bind data to req (115ms) view ✓ should present the form (565ms) submit ✓ should delete membership (screenshots) (4942ms) /account/organizations/transfer-organization exceptions ✓ invalid-account (101ms) before ✓ should bind data to req (105ms) view ✓ should present the form (593ms) submit ✓ should transfer ownership (screenshots) (4099ms) /administrator/organizations/index before ✓ should bind data to req (181ms) view ✓ should have row for each organization (screenshots) (1387ms) ✓ should have organization row for each membership (595ms) /administrator/organizations/invitation before ✓ should bind data to req (97ms) view ✓ should have row for invitation (screenshots) (2796ms) /administrator/organizations/invitations before ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset /administrator/organizations/membership before ✓ should bind data to req (186ms) view ✓ should have row for membership (screenshots) (2706ms) /administrator/organizations/memberships before ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset ✓ should show profile fields if data exists (4874ms) /administrator/organizations/organization-invitations before ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset /administrator/organizations/organization-memberships before ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset /administrator/organizations/organization before ✓ should bind data to req (137ms) view ✓ should have row for organization (screenshots) (1666ms) /administrator/organizations/organizations before ✓ should bind data to req view ✓ should return one page (screenshots) ✓ should change page size ✓ should change offset /api/administrator/organizations/invitation exceptions invalid-invitationid ✓ missing querystring invitationid (39ms) ✓ invalid querystring invitationid returns ✓ object (86ms) redacts ✓ secretCodeHash (79ms) /api/administrator/organizations/invitations-count returns ✓ integer (213ms) /api/administrator/organizations/invitations receives ✓ optional querystring offset (integer) ✓ optional querystring limit (integer) ✓ optional querystring all (boolean) ✓ optional querystring accountid (string) ✓ optional querystring organizationid (string) returns ✓ array configuration ✓ environment PAGE_SIZE /api/administrator/organizations/membership exceptions invalid-membershipid ✓ missing querystring membershipid (44ms) ✓ invalid querystring membershipid (38ms) returns ✓ object (144ms) /api/administrator/organizations/memberships-count returns ✓ integer (269ms) /api/administrator/organizations/memberships receives ✓ optional querystring offset (integer) ✓ optional querystring limit (integer) ✓ optional querystring all (boolean) ✓ optional querystring accountid (string) ✓ optional querystring organizationid (string) returns ✓ array configuration ✓ environment PAGE_SIZE /api/administrator/organizations/organization exceptions invalid-organizationid ✓ unspecified querystring organizationid ✓ invalid querystring organizationid returns ✓ object (79ms) /api/administrator/organizations/organizations-count returns ✓ integer (160ms) /api/administrator/organizations/organizations receives ✓ optional querystring offset (integer) ✓ optional querystring limit (integer) ✓ optional querystring all (boolean) ✓ optional querystring accountid (string) returns ✓ array configuration ✓ environment PAGE_SIZE /api/user/organizations/create-invitation exceptions invalid-organizationid ✓ missing querystring organizationid ✓ invalid querystring organizationid invalid-secret-code ✓ missing posted secret-code (48ms) invalid-secret-code-length ✓ posted secret-code too short (46ms) ✓ posted secret-code too long (54ms) invalid-account ✓ accessing account is not organization owner (72ms) receives ✓ required posted secret-code (47ms) returns ✓ object (47ms) /api/user/organizations/create-membership exceptions invalid-invitationid ✓ missing querystring invitationid ✓ invalid querystring invitationid invalid-invitation ✓ querystring invitationid has been used (127ms) ✓ posted secret-code has been used (125ms) invalid-secret-code ✓ missing posted secret-code (76ms) ✓ invalid posted secret-code (78ms) invalid-account ✓ accessing account is organization owner (54ms) ✓ accessing account is organization member (116ms) invalid-profileid ✓ missing posted profileid (84ms) ✓ invalid posted profileid (89ms) invalid-profile ✓ ineligible posted profileid is missing fields (85ms) invalid-invitation ✓ querystring invitationid is not open invitation (122ms) receives ✓ required posted secret-code (96ms) ✓ required posted profileid (98ms) returns ✓ object (94ms) /api/user/organizations/create-organization exceptions invalid-organization-name ✓ missing posted name invalid-organization-name-length ✓ posted name too short ✓ posted name too long invalid-organization-email ✓ missing posted email (77ms) ✓ invalid posted email invalid-profile ✓ missing posted profileid ✓ invalid posted profileid ✓ ineligible posted profileid missing fields receives ✓ required posted organization-email ✓ required posted organization-name (39ms) ✓ required posted profileid (49ms) returns ✓ object /api/user/organizations/delete-invitation exceptions invalid-invitationid ✓ missing querystring invitationid ✓ invalid querystring invitationid invalid-invitation ✓ querystring invitationid is used invitation (92ms) invalid-account ✓ accessing account is not organization owner (77ms) returns ✓ boolean (55ms) /api/user/organizations/delete-membership exceptions invalid-membershipid ✓ missing querystring membershipid ✓ invalid querystring membershipid invalid-account ✓ accessing account is not membership or organization owner (121ms) returns ✓ boolean (95ms) /api/user/organizations/delete-organization exceptions invalid-organizationid ✓ missing querystring organizationid ✓ invalid querystring organizationid invalid-account ✓ accessing account does not own organization (90ms) returns ✓ boolean (57ms) /api/user/organizations/invitation exceptions invalid-invitationid ✓ missing querystring invitationid ✓ invalid querystring invitationid invalid-account ✓ accessing account is not organization owner (118ms) returns ✓ object (57ms) redacts ✓ secretCodeHash (49ms) /api/user/organizations/invitations-count exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (102ms) returns ✓ integer (62ms) /api/user/organizations/invitations exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (95ms) receives ✓ optional querystring offset (integer) ✓ optional querystring limit (integer) ✓ optional querystring all (boolean) ✓ optional querystring organizationid (string) returns ✓ array configuration ✓ environment PAGE_SIZE /api/user/organizations/membership exceptions invalid-membershipid ✓ missing querystring membershipid ✓ invalid querystring membershipid invalid-account ✓ accessing account must be organization member or owner (123ms) returns ✓ object (100ms) /api/user/organizations/memberships-count exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (93ms) returns ✓ integer (210ms) /api/user/organizations/memberships exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (107ms) receives ✓ optional querystring offset (integer) ✓ optional querystring limit (integer) ✓ optional querystring all (boolean) ✓ optional querystring organizationid (string) returns ✓ array configuration ✓ environment PAGE_SIZE /api/user/organizations/invitation exceptions invalid-invitationid ✓ missing querystring invitationid ✓ invalid querystring invitationid invalid-invitation ✓ querystring invitationid is used (96ms) returns ✓ object (51ms) /api/user/organizations/open-invitation exceptions invalid-invitationid ✓ missing querystring invitationid ✓ invalid querystring invitationid invalid-invitation ✓ querystring invitationid is used (98ms) returns ✓ object (95ms) redacts ✓ secretCodeHash (79ms) /api/user/organizations/organization-membership exceptions invalid-organizationid ✓ missing querystring organizationid ✓ invalid querystring organizationid (40ms) invalid-account ✓ accessing account must be organization member (136ms) returns ✓ object (96ms) /api/user/organizations/organization exceptions invalid-organizationid ✓ missing querystring organizationid ✓ invalid querystring organizationid invalid-account ✓ accessing account must be organization member (130ms) returns ✓ object (48ms) /api/user/organizations/organizations-count exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid (50ms) invalid-account ✓ ineligible accessing account (104ms) returns ✓ integer (68ms) /api/user/organizations/organizations exceptions invalid-accountid ✓ missing querystring accountid ✓ invalid querystring accountid invalid-account ✓ ineligible accessing account (90ms) receives ✓ optional querystring offset (integer) ✓ optional querystring limit (integer) ✓ optional querystring all (boolean) returns ✓ array configuration ✓ environment PAGE_SIZE /api/user/organizations/set-organization-owner exceptions invalid-organizationid ✓ missing querystring organizationid ✓ invalid querystring organizationid invalid-accountid ✓ posted accountid is missing (42ms) ✓ posted accountid is invalid (44ms) invalid-account ✓ accessing account is not organization owner (98ms) ✓ posted accountid is organization owner (52ms) ✓ posted accountid is not member (71ms) returns ✓ object (107ms) /api/user/organizations/update-organization exceptions invalid-organizationid ✓ missing querystring organizationid ✓ invalid querystring organizationid invalid-account ✓ accessing account is not organization owner (107ms) invalid-organization-name ✓ missing posted name (47ms) invalid-organization-name-length ✓ posted name is too short (49ms) ✓ posted name is too long (53ms) invalid-organization-email ✓ missing posted email (53ms) ✓ invalid posted email (51ms) receives ✓ required posted name (45ms) ✓ required posted email (46ms) returns ✓ object (45ms) 1200 passing (16m)