From bb4c5f2ca58f640bcbf99a40431beb3500bbdf0d Mon Sep 17 00:00:00 2001 From: Gabriel Grubba Date: Thu, 8 Dec 2022 15:46:13 -0300 Subject: [PATCH] tests: solved verify beforeExternalLogin hook can stop user login --- packages/accounts-base/accounts_tests.js | 43 +++++++++++++++--------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/packages/accounts-base/accounts_tests.js b/packages/accounts-base/accounts_tests.js index 77b51de146..6130cf30d1 100644 --- a/packages/accounts-base/accounts_tests.js +++ b/packages/accounts-base/accounts_tests.js @@ -694,9 +694,13 @@ Tinytest.addAsync( { profile: { foo: 1 } }, ); const ignoreFieldName = "bigArray"; - const c = await Meteor.users.update(u1.userId, { $set: { [ignoreFieldName]: [1] } }); + + const c = + await Meteor.users.update(u1.userId, { $set: { [ignoreFieldName]: [1] } }); + let users = await Meteor.users.find({ 'services.facebook.id': facebookId }).fetch(); + test.length(users, 1); test.equal(users[0].profile.foo, 1); test.isNotUndefined(users[0][ignoreFieldName], 'ignoreField - before limit fields'); @@ -749,15 +753,22 @@ Tinytest.addAsync( // Verify user data is saved properly when not using the // beforeExternalLogin hook. let facebookId = Random.id(); - const uid1 = Accounts.updateOrCreateUserFromExternalService( - 'facebook', - { id: facebookId }, - { profile: { foo: 1 } }, - ).userId; + + const u = + await Accounts.updateOrCreateUserFromExternalService( + 'facebook', + { id: facebookId }, + { profile: { foo: 1 } }, + ); + const ignoreFieldName = "bigArray"; - const c = Meteor.users.update(uid1, { $set: { [ignoreFieldName]: [1] } }); + + const c = + await Meteor.users.update(u.userId, { $set: { [ignoreFieldName]: [1] } }); + let users = - Meteor.users.find({ 'services.facebook.id': facebookId }).fetch(); + await Meteor.users.find({ 'services.facebook.id': facebookId }).fetch(); + test.length(users, 1); test.equal(users[0].profile.foo, 1); test.isNotUndefined(users[0][ignoreFieldName], 'ignoreField - before limit fields'); @@ -768,18 +779,20 @@ Tinytest.addAsync( // Check that we get the correct data test.equal(serviceName, 'facebook'); test.equal(serviceData, { id: facebookId }); - test.equal(user._id, uid1); + test.equal(user._id, u.userId); return false }); - test.throws(() => Accounts.updateOrCreateUserFromExternalService( - 'facebook', - { id: facebookId }, - { profile: { foo: 1 } }, - )); + await test.throwsAsync( + async () => + await Accounts.updateOrCreateUserFromExternalService( + 'facebook', + { id: facebookId }, + { profile: { foo: 1 } }, + )); // Cleanup - Meteor.users.remove(uid1); + await Meteor.users.remove(u.userId); Accounts._beforeExternalLoginHook = null; } );