Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(Personas Import): Starting account names with a space breaks persona import (LL-273) #1495

Merged
merged 8 commits into from
Jan 31, 2020
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions api/src/controllers/ImportPersonasController.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,17 @@ const uploadPersonas = catchErrors(async (req, res) => {
});

const importPersonas = catchErrors(async (req, res) => {
const authInfo = getAuthFromRequest(req);

const { id } = req.body;

const authInfo = getAuthFromRequest(req);
const personaService = getPersonaService();

const { personaImport } = await importPersonasService({
id,
authInfo,
personaService,
});

return res.status(200).json(personaImport);
res.status(200).json(personaImport);
});

const importPersonasError = catchErrors(async (req, res) => {
Expand Down
24 changes: 14 additions & 10 deletions api/src/routes/HttpRoutes.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,8 @@ import getAuthFromRequest from 'lib/helpers/getAuthFromRequest';
import getTokenTypeFromAuthInfo from 'lib/services/auth/authInfoSelectors/getTokenTypeFromAuthInfo';
import getScopesFromAuthInfo from 'lib/services/auth/authInfoSelectors/getScopesFromAuthInfo';
import getUserIdFromAuthInfo from 'lib/services/auth/authInfoSelectors/getUserIdFromAuthInfo';
import { SITE_ADMIN } from 'lib/constants/scopes';
import { jsonSuccess, serverError } from 'api/utils/responses';
import passport from 'api/auth/passport';
import {
GOOGLE_AUTH_OPTIONS,
DEFAULT_PASSPORT_OPTIONS,
RESTIFY_DEFAULTS,
setNoCacheHeaders,
checkOrg,
} from 'lib/constants/auth';
import { MANAGER_SELECT } from 'lib/services/auth/selects/models/user.js';

// CONTROLLERS
Expand All @@ -38,7 +30,7 @@ import StatementMetadataController from 'api/controllers/StatementMetadataContro
import BatchDeleteController from 'api/controllers/BatchDeleteController';
import RequestAppAccessController from 'api/controllers/RequestAppAccessController';

// REST
// MODELS
import LRS from 'lib/models/lrs';
import Client from 'lib/models/client';
import User from 'lib/models/user';
Expand All @@ -59,14 +51,26 @@ import PersonaAttribute from 'lib/models/personaAttribute';
import PersonasImport from 'lib/models/personasImport';
import PersonasImportTemplate from 'lib/models/personasImportTemplate';
import SiteSettings from 'lib/models/siteSettings';
import BatchDelete from 'lib/models/batchDelete';

// REST
import personaRESTHandler from 'api/routes/personas/personaRESTHandler';
import personaIdentifierRESTHandler from 'api/routes/personas/personaIdentifierRESTHandler';
import UserOrganisationsRouter from 'api/routes/userOrganisations/router';
import UserOrganisationSettingsRouter from 'api/routes/userOrganisationSettings/router';
import BatchDelete from 'lib/models/batchDelete';
import getOrgFromAuthInfo from 'lib/services/auth/authInfoSelectors/getOrgFromAuthInfo';
import { updateStatementCountsInOrg } from 'lib/services/lrs';

// CONSTANTS
import * as routes from 'lib/constants/routes';
import { SITE_ADMIN } from 'lib/constants/scopes';
import {
GOOGLE_AUTH_OPTIONS,
DEFAULT_PASSPORT_OPTIONS,
RESTIFY_DEFAULTS,
setNoCacheHeaders,
checkOrg,
} from 'lib/constants/auth';

const router = new express.Router();
router.use(setNoCacheHeaders);
Expand Down
4 changes: 2 additions & 2 deletions api/src/utils/exports.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import csv from 'fast-csv';
import * as csv from 'fast-csv';
import Statement from 'lib/models/statement';
import highland from 'highland';
import async from 'async';
Expand All @@ -23,7 +23,7 @@ export function groupStreams(streams) {
}

export const streamToCsv = (headers, stream) => new Promise((resolve, reject) => {
const csvStream = csv.createWriteStream({ headers });
const csvStream = csv.format({ headers });
stream.pipe(csvStream);
csvStream.on('error', reject);
stream.on('error', reject);
Expand Down
2 changes: 1 addition & 1 deletion lib/services/importPersonas/getCsvHeaders.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import csv from 'fast-csv';
import * as csv from 'fast-csv';
import { isUndefined, uniq } from 'lodash';
import EmptyCsvError from 'lib/errors/EmptyCsvError';
import DuplicateCsvHeadersError from 'lib/errors/DuplicateCsvHeadersError';
Expand Down
2 changes: 1 addition & 1 deletion lib/services/importPersonas/importPersonas-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { uploadFromStream, downloadToStream } from 'lib/services/files/storage';
import PersonasImport from 'lib/models/personasImport';
import { PERSONAS_CSV_PATH } from 'lib/services/importPersonas/persistPersonas';
import highland from 'highland';
import csv from 'fast-csv';
import * as csv from 'fast-csv';
import { expect } from 'chai';
import {
COLUMN_NAME,
Expand Down
4 changes: 2 additions & 2 deletions lib/services/importPersonas/importPersonas.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import PersonasImport from 'lib/models/personasImport';
import * as filesService from 'lib/services/files';
import csv from 'fast-csv';
import * as csv from 'fast-csv';
import highland from 'highland';
import { promisify } from 'bluebird';
import getScopeFilter from 'lib/services/auth/filters/getScopeFilter';
Expand All @@ -24,7 +24,7 @@ export const addErrorsToCsv = async ({
quoteHeaders: true
});

const csvWriteStream = csv.createWriteStream({
const csvWriteStream = csv.format({
headers: true
});

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
"express": "^4.13.4",
"express-restify-mongoose": "^3.2.0",
"faker": "^3.0.1",
"fast-csv": "^2.3.0",
"fast-csv": "^3.7.0",
"file-loader": "^0.8.5",
"file-stream-rotator": "^0.0.6",
"git-rev": "^0.2.1",
Expand Down
111 changes: 40 additions & 71 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,11 @@
version "10.14.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.12.tgz#0eec3155a46e6c4db1f27c3e588a205f767d622f"

"@types/node@^12.12.17":
version "12.12.22"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.22.tgz#b8d9eae3328b96910a373cf06ac8d3c5abe9c200"
integrity sha512-r5i93jqbPWGXYXxianGATOxTelkp6ih/U0WVnvaqAvTqM+0U6J3kw6Xk6uq/dWNRkEVw/0SLcO5ORXbVNz4FMQ==

"@types/node@^8.0.47":
version "8.10.49"
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.49.tgz#f331afc5efed0796798e5591d6e0ece636969b7b"
Expand Down Expand Up @@ -949,13 +954,6 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"

arguments-extended@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/arguments-extended/-/arguments-extended-0.0.3.tgz#6107e4917d0eb6f0a4dd66320fc15afc72ef4946"
dependencies:
extended "~0.0.3"
is-extended "~0.0.8"

argv-formatter@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/argv-formatter/-/argv-formatter-1.0.0.tgz#a0ca0cbc29a5b73e836eebe1cbf6c5e0e4eb82f9"
Expand Down Expand Up @@ -986,14 +984,6 @@ array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"

array-extended@~0.0.3, array-extended@~0.0.4, array-extended@~0.0.5:
version "0.0.11"
resolved "https://registry.yarnpkg.com/array-extended/-/array-extended-0.0.11.tgz#d7144ae748de93ca726f121009dbff1626d164bd"
dependencies:
arguments-extended "~0.0.3"
extended "~0.0.3"
is-extended "~0.0.3"

array-filter@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
Expand Down Expand Up @@ -3702,14 +3692,6 @@ dashify@^0.2.0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/dashify/-/dashify-0.2.2.tgz#6a07415a01c91faf4a32e38d9dfba71f61cb20fe"

date-extended@~0.0.3:
version "0.0.6"
resolved "https://registry.yarnpkg.com/date-extended/-/date-extended-0.0.6.tgz#23802d57dd1bf7818813fe0c32e851a86da267c9"
dependencies:
array-extended "~0.0.3"
extended "~0.0.3"
is-extended "~0.0.3"

date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
Expand Down Expand Up @@ -3775,10 +3757,6 @@ decimal.js-light@^2.4.1:
version "2.5.0"
resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.0.tgz#ca7faf504c799326df94b0ab920424fdfc125348"

declare.js@~0.0.4:
version "0.0.8"
resolved "https://registry.yarnpkg.com/declare.js/-/declare.js-0.0.8.tgz#0478adff9564c004f51df73d8bc134019d28dcde"

decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
Expand Down Expand Up @@ -4843,18 +4821,6 @@ extend@^3.0.0, extend@^3.0.1, extend@^3.0.2, extend@~3.0.0, extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"

extended@0.0.6, extended@~0.0.3:
version "0.0.6"
resolved "https://registry.yarnpkg.com/extended/-/extended-0.0.6.tgz#7fb8bf7b9dae397586e48570acfd642c78e50669"
dependencies:
extender "~0.0.5"

extender@~0.0.5:
version "0.0.10"
resolved "https://registry.yarnpkg.com/extender/-/extender-0.0.10.tgz#589c07482be61a1460b6d81f9c24aa67e8f324cd"
dependencies:
declare.js "~0.0.4"

extglob@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
Expand Down Expand Up @@ -4894,15 +4860,21 @@ faker@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/faker/-/faker-3.1.0.tgz#0f908faf4e6ec02524e54a57e432c5c013e08c9f"

fast-csv@^2.3.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/fast-csv/-/fast-csv-2.5.0.tgz#5332dfede3f59340cb8e9f46b2e6dff1e7612005"
fast-csv@^3.7.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/fast-csv/-/fast-csv-3.7.0.tgz#7f737115b77b19c1576432e6e5eae457f3eb7129"
integrity sha512-vCuVnDX0yjJEpSuQxZW0+Wf7aL8P7EtRzUgmLqpjwooza7mgpfKs2hwuV7nSdmjcb3f0abCp3jJY+E5Ws3piDw==
dependencies:
extended "0.0.6"
is-extended "0.0.10"
object-extended "0.0.7"
safer-buffer "^2.1.2"
string-extended "0.0.8"
"@types/node" "^12.12.17"
lodash.escaperegexp "^4.1.2"
lodash.groupby "^4.6.0"
lodash.isboolean "^3.0.3"
lodash.isequal "^4.5.0"
lodash.isfunction "^3.0.9"
lodash.isnil "^4.0.0"
lodash.isstring "^4.0.1"
lodash.isundefined "^3.0.1"
lodash.uniq "^4.5.0"

fast-deep-equal@^2.0.1:
version "2.0.1"
Expand Down Expand Up @@ -6759,12 +6731,6 @@ is-extendable@^1.0.1:
dependencies:
is-plain-object "^2.0.4"

is-extended@0.0.10, is-extended@~0.0.3, is-extended@~0.0.8:
version "0.0.10"
resolved "https://registry.yarnpkg.com/is-extended/-/is-extended-0.0.10.tgz#244e140df75bb1c9a3106f412ff182fb534a6d62"
dependencies:
extended "~0.0.3"

is-extglob@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
Expand Down Expand Up @@ -8088,6 +8054,11 @@ lodash.get@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"

lodash.groupby@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz#0b08a1dcf68397c397855c3239783832df7403d1"
integrity sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=

lodash.includes@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
Expand Down Expand Up @@ -8123,10 +8094,20 @@ lodash.isequal@^4.0.0, lodash.isequal@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"

lodash.isfunction@^3.0.9:
version "3.0.9"
resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051"
integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==

lodash.isinteger@^4.0.4:
version "4.0.4"
resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"

lodash.isnil@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz#49e28cd559013458c814c5479d3c663a21bfaa6c"
integrity sha1-SeKM1VkBNFjIFMVHnTxmOiG/qmw=

lodash.isnumber@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
Expand All @@ -8151,6 +8132,11 @@ lodash.istypedarray@^3.0.0:
version "3.0.6"
resolved "https://registry.yarnpkg.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz#c9a477498607501d8e8494d283b87c39281cef62"

lodash.isundefined@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz#23ef3d9535565203a66cefd5b830f848911afb48"
integrity sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=

lodash.keys@^3.0.0:
version "3.1.2"
resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
Expand Down Expand Up @@ -9689,14 +9675,6 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"

object-extended@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/object-extended/-/object-extended-0.0.7.tgz#84fd23f56b15582aeb3e88b05cb55d2432d68a33"
dependencies:
array-extended "~0.0.4"
extended "~0.0.3"
is-extended "~0.0.3"

object-hash@1.3.1, object-hash@^1.1.2, object-hash@^1.1.4:
version "1.3.1"
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df"
Expand Down Expand Up @@ -12377,7 +12355,7 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"

"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0:
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"

Expand Down Expand Up @@ -13054,15 +13032,6 @@ strict-uri-encode@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"

string-extended@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/string-extended/-/string-extended-0.0.8.tgz#741957dff487b0272a79eec5a44f239ee6f17ccd"
dependencies:
array-extended "~0.0.5"
date-extended "~0.0.3"
extended "~0.0.3"
is-extended "~0.0.3"

string-format-obj@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string-format-obj/-/string-format-obj-1.1.1.tgz#c7612ca4e2ad923812a81db192dc291850aa1f65"
Expand Down