@@ -2031,6 +2031,62 @@ describe('ProtectedFields', function () {
20312031 expect ( response . data . objectId ) . toBe ( user . id ) ;
20322032 } ) ;
20332033
2034+ it ( '/login with master key bypasses protectedFields' , async function ( ) {
2035+ await reconfigureServer ( {
2036+ protectedFields : {
2037+ _User : {
2038+ '*' : [ 'phone' ] ,
2039+ } ,
2040+ } ,
2041+ protectedFieldsOwnerExempt : false ,
2042+ } ) ;
2043+ const user = await Parse . User . signUp ( 'user1' , 'password' ) ;
2044+ const sessionToken = user . getSessionToken ( ) ;
2045+ user . set ( 'phone' , '555-1234' ) ;
2046+ await user . save ( null , { sessionToken } ) ;
2047+
2048+ const response = await request ( {
2049+ method : 'POST' ,
2050+ url : 'http://localhost:8378/1/login' ,
2051+ headers : {
2052+ 'X-Parse-Application-Id' : 'test' ,
2053+ 'X-Parse-Master-Key' : 'test' ,
2054+ 'Content-Type' : 'application/json' ,
2055+ } ,
2056+ body : JSON . stringify ( { username : 'user1' , password : 'password' } ) ,
2057+ } ) ;
2058+ expect ( response . data . phone ) . toBe ( '555-1234' ) ;
2059+ expect ( response . data . sessionToken ) . toBeDefined ( ) ;
2060+ } ) ;
2061+
2062+ it ( '/verifyPassword with master key bypasses protectedFields' , async function ( ) {
2063+ await reconfigureServer ( {
2064+ protectedFields : {
2065+ _User : {
2066+ '*' : [ 'phone' ] ,
2067+ } ,
2068+ } ,
2069+ protectedFieldsOwnerExempt : false ,
2070+ verifyUserEmails : false ,
2071+ } ) ;
2072+ const user = await Parse . User . signUp ( 'user1' , 'password' ) ;
2073+ const sessionToken = user . getSessionToken ( ) ;
2074+ user . set ( 'phone' , '555-1234' ) ;
2075+ await user . save ( null , { sessionToken } ) ;
2076+
2077+ const response = await request ( {
2078+ method : 'POST' ,
2079+ url : 'http://localhost:8378/1/verifyPassword' ,
2080+ headers : {
2081+ 'X-Parse-Application-Id' : 'test' ,
2082+ 'X-Parse-Master-Key' : 'test' ,
2083+ 'Content-Type' : 'application/json' ,
2084+ } ,
2085+ body : JSON . stringify ( { username : 'user1' , password : 'password' } ) ,
2086+ } ) ;
2087+ expect ( response . data . phone ) . toBe ( '555-1234' ) ;
2088+ } ) ;
2089+
20342090 it ( 'owner sees non-protected fields like email when protectedFieldsOwnerExempt is true' , async function ( ) {
20352091 await reconfigureServer ( {
20362092 protectedFields : {
0 commit comments