@@ -6753,7 +6753,62 @@ describe('ParseGraphQLServer', () => {
6753
6753
} ) ;
6754
6754
6755
6755
describe ( 'Users Mutations' , ( ) => {
6756
+ const challengeAdapter = {
6757
+ validateAuthData : ( ) => Promise . resolve ( { response : { someData : true } } ) ,
6758
+ validateAppId : ( ) => Promise . resolve ( ) ,
6759
+ challenge : ( ) => Promise . resolve ( { someData : true } ) ,
6760
+ options : { anOption : true } ,
6761
+ } ;
6762
+
6763
+ it ( 'should create user and return authData response' , async ( ) => {
6764
+ parseServer = await global . reconfigureServer ( {
6765
+ publicServerURL : 'http://localhost:13377/parse' ,
6766
+ auth : {
6767
+ challengeAdapter,
6768
+ } ,
6769
+ } ) ;
6770
+ const clientMutationId = uuidv4 ( ) ;
6771
+
6772
+ await parseGraphQLServer . parseGraphQLSchema . databaseController . schemaCache . clear ( ) ;
6773
+ const result = await apolloClient . mutate ( {
6774
+ mutation : gql `
6775
+ mutation createUser($input: CreateUserInput!) {
6776
+ createUser(input: $input) {
6777
+ clientMutationId
6778
+ user {
6779
+ id
6780
+ authDataResponse
6781
+ }
6782
+ }
6783
+ }
6784
+ ` ,
6785
+ variables : {
6786
+ input : {
6787
+ clientMutationId,
6788
+ fields : {
6789
+ authData : {
6790
+ challengeAdapter : {
6791
+ id : 'challengeAdapter' ,
6792
+ } ,
6793
+ } ,
6794
+ } ,
6795
+ } ,
6796
+ } ,
6797
+ } ) ;
6798
+
6799
+ expect ( result . data . createUser . clientMutationId ) . toEqual ( clientMutationId ) ;
6800
+ expect ( result . data . createUser . user . authDataResponse ) . toEqual ( {
6801
+ challengeAdapter : { someData : true } ,
6802
+ } ) ;
6803
+ } ) ;
6804
+
6756
6805
it ( 'should sign user up' , async ( ) => {
6806
+ parseServer = await global . reconfigureServer ( {
6807
+ publicServerURL : 'http://localhost:13377/parse' ,
6808
+ auth : {
6809
+ challengeAdapter,
6810
+ } ,
6811
+ } ) ;
6757
6812
const clientMutationId = uuidv4 ( ) ;
6758
6813
const userSchema = new Parse . Schema ( '_User' ) ;
6759
6814
userSchema . addString ( 'someField' ) ;
@@ -6770,6 +6825,7 @@ describe('ParseGraphQLServer', () => {
6770
6825
sessionToken
6771
6826
user {
6772
6827
someField
6828
+ authDataResponse
6773
6829
aPointer {
6774
6830
id
6775
6831
username
@@ -6785,6 +6841,11 @@ describe('ParseGraphQLServer', () => {
6785
6841
fields : {
6786
6842
username : 'user1' ,
6787
6843
password : 'user1' ,
6844
+ authData : {
6845
+ challengeAdapter : {
6846
+ id : 'challengeAdapter' ,
6847
+ } ,
6848
+ } ,
6788
6849
aPointer : {
6789
6850
createAndLink : {
6790
6851
username : 'user2' ,
@@ -6804,6 +6865,9 @@ describe('ParseGraphQLServer', () => {
6804
6865
expect ( result . data . signUp . viewer . user . aPointer . id ) . toBeDefined ( ) ;
6805
6866
expect ( result . data . signUp . viewer . user . aPointer . username ) . toEqual ( 'user2' ) ;
6806
6867
expect ( typeof result . data . signUp . viewer . sessionToken ) . toBe ( 'string' ) ;
6868
+ expect ( result . data . signUp . viewer . user . authDataResponse ) . toEqual ( {
6869
+ challengeAdapter : { someData : true } ,
6870
+ } ) ;
6807
6871
} ) ;
6808
6872
6809
6873
it ( 'should login with user' , async ( ) => {
@@ -6812,6 +6876,7 @@ describe('ParseGraphQLServer', () => {
6812
6876
parseServer = await global . reconfigureServer ( {
6813
6877
publicServerURL : 'http://localhost:13377/parse' ,
6814
6878
auth : {
6879
+ challengeAdapter,
6815
6880
myAuth : {
6816
6881
module : global . mockCustomAuthenticator ( 'parse' , 'graphql' ) ,
6817
6882
} ,
@@ -6831,6 +6896,7 @@ describe('ParseGraphQLServer', () => {
6831
6896
sessionToken
6832
6897
user {
6833
6898
someField
6899
+ authDataResponse
6834
6900
aPointer {
6835
6901
id
6836
6902
username
@@ -6844,6 +6910,7 @@ describe('ParseGraphQLServer', () => {
6844
6910
input : {
6845
6911
clientMutationId,
6846
6912
authData : {
6913
+ challengeAdapter : { id : 'challengeAdapter' } ,
6847
6914
myAuth : {
6848
6915
id : 'parse' ,
6849
6916
password : 'graphql' ,
@@ -6869,9 +6936,68 @@ describe('ParseGraphQLServer', () => {
6869
6936
expect ( typeof result . data . logInWith . viewer . sessionToken ) . toBe ( 'string' ) ;
6870
6937
expect ( result . data . logInWith . viewer . user . aPointer . id ) . toBeDefined ( ) ;
6871
6938
expect ( result . data . logInWith . viewer . user . aPointer . username ) . toEqual ( 'user2' ) ;
6939
+ expect ( result . data . logInWith . viewer . user . authDataResponse ) . toEqual ( {
6940
+ challengeAdapter : { someData : true } ,
6941
+ } ) ;
6942
+ } ) ;
6943
+
6944
+ it ( 'should handle challenge' , async ( ) => {
6945
+ const clientMutationId = uuidv4 ( ) ;
6946
+
6947
+ spyOn ( challengeAdapter , 'challenge' ) . and . callThrough ( ) ;
6948
+ parseServer = await global . reconfigureServer ( {
6949
+ publicServerURL : 'http://localhost:13377/parse' ,
6950
+ auth : {
6951
+ challengeAdapter,
6952
+ } ,
6953
+ } ) ;
6954
+
6955
+ const user = new Parse . User ( ) ;
6956
+ await user . save ( { username : 'username' , password : 'password' } ) ;
6957
+
6958
+ const result = await apolloClient . mutate ( {
6959
+ mutation : gql `
6960
+ mutation Challenge($input: ChallengeInput!) {
6961
+ challenge(input: $input) {
6962
+ clientMutationId
6963
+ challengeData
6964
+ }
6965
+ }
6966
+ ` ,
6967
+ variables : {
6968
+ input : {
6969
+ clientMutationId,
6970
+ username : 'username' ,
6971
+ password : 'password' ,
6972
+ challengeData : {
6973
+ challengeAdapter : { someChallengeData : true } ,
6974
+ } ,
6975
+ } ,
6976
+ } ,
6977
+ } ) ;
6978
+
6979
+ const challengeCall = challengeAdapter . challenge . calls . argsFor ( 0 ) ;
6980
+ expect ( challengeAdapter . challenge ) . toHaveBeenCalledTimes ( 1 ) ;
6981
+ expect ( challengeCall [ 0 ] ) . toEqual ( { someChallengeData : true } ) ;
6982
+ expect ( challengeCall [ 1 ] instanceof Parse . User ) . toBeTruthy ( ) ;
6983
+ expect ( challengeCall [ 1 ] . id ) . toEqual ( user . id ) ;
6984
+ expect ( challengeCall [ 2 ] . config ) . toBeDefined ( ) ;
6985
+ expect ( challengeCall [ 2 ] . auth ) . toBeDefined ( ) ;
6986
+ expect ( challengeCall [ 2 ] . config . headers ) . toBeDefined ( ) ;
6987
+ expect ( challengeCall [ 2 ] ) . toBeDefined ( { anOption : true } ) ;
6988
+ expect ( result . data . challenge . clientMutationId ) . toEqual ( clientMutationId ) ;
6989
+ expect ( result . data . challenge . challengeData ) . toEqual ( {
6990
+ challengeAdapter : { someData : true } ,
6991
+ } ) ;
6872
6992
} ) ;
6873
6993
6874
6994
it ( 'should log the user in' , async ( ) => {
6995
+ parseServer = await global . reconfigureServer ( {
6996
+ publicServerURL : 'http://localhost:13377/parse' ,
6997
+ auth : {
6998
+ challengeAdapter,
6999
+ } ,
7000
+ } ) ;
6875
7001
const clientMutationId = uuidv4 ( ) ;
6876
7002
const user = new Parse . User ( ) ;
6877
7003
user . setUsername ( 'user1' ) ;
@@ -6888,6 +7014,7 @@ describe('ParseGraphQLServer', () => {
6888
7014
viewer {
6889
7015
sessionToken
6890
7016
user {
7017
+ authDataResponse
6891
7018
someField
6892
7019
}
6893
7020
}
@@ -6899,6 +7026,7 @@ describe('ParseGraphQLServer', () => {
6899
7026
clientMutationId,
6900
7027
username : 'user1' ,
6901
7028
password : 'user1' ,
7029
+ authData : { challengeAdapter : { token : true } } ,
6902
7030
} ,
6903
7031
} ,
6904
7032
} ) ;
@@ -6907,6 +7035,9 @@ describe('ParseGraphQLServer', () => {
6907
7035
expect ( result . data . logIn . viewer . sessionToken ) . toBeDefined ( ) ;
6908
7036
expect ( result . data . logIn . viewer . user . someField ) . toEqual ( 'someValue' ) ;
6909
7037
expect ( typeof result . data . logIn . viewer . sessionToken ) . toBe ( 'string' ) ;
7038
+ expect ( result . data . logIn . viewer . user . authDataResponse ) . toEqual ( {
7039
+ challengeAdapter : { someData : true } ,
7040
+ } ) ;
6910
7041
} ) ;
6911
7042
6912
7043
it ( 'should log the user out' , async ( ) => {
0 commit comments