@@ -1750,10 +1750,9 @@ describe('microsoft graph auth adapter', () => {
1750
1750
} ) ;
1751
1751
1752
1752
describe ( 'Auth Adapter features' , ( ) => {
1753
- const requiredAdapter = {
1753
+ const baseAdapter = {
1754
1754
validateAppId : ( ) => Promise . resolve ( ) ,
1755
1755
validateAuthData : ( ) => Promise . resolve ( ) ,
1756
- required : true ,
1757
1756
} ;
1758
1757
const alwaysValidateAdapter = {
1759
1758
validateAppId : ( ) => Promise . resolve ( ) ,
@@ -1789,6 +1788,13 @@ describe('Auth Adapter features', () => {
1789
1788
} ,
1790
1789
} ;
1791
1790
1791
+ /* const modernAdapter = {
1792
+ validateAppId: () => Promise.resolve(),
1793
+ validateSetUp: () => Promise.resolve(),
1794
+ validateUpdate: () => Promise.resolve(),
1795
+ validateLogin: () => Promise.resolve(),
1796
+ }; */
1797
+
1792
1798
const headers = {
1793
1799
'Content-Type' : 'application/json' ,
1794
1800
'X-Parse-Application-Id' : 'test' ,
@@ -1839,83 +1845,39 @@ describe('Auth Adapter features', () => {
1839
1845
expect ( secondCall [ 3 ] instanceof Parse . User ) . toBeTruthy ( ) ;
1840
1846
expect ( secondCall [ 3 ] . id ) . toEqual ( user . id ) ;
1841
1847
} ) ;
1842
- it ( 'should require authData on username/password signup' , async ( ) => {
1843
- spyOn ( requiredAdapter , 'validateAuthData' ) . and . resolveTo ( { } ) ;
1844
- await reconfigureServer ( { auth : { requiredAdapter } } ) ;
1845
-
1846
- const user = new Parse . User ( ) ;
1847
-
1848
- try {
1849
- await user . save ( { username : 'test' , password : 'test' } ) ;
1850
- fail ( 'should not save the user' ) ;
1851
- } catch ( e ) {
1852
- expect ( e . message ) . toContain ( 'Missing required authData requiredAdapter' ) ;
1853
- expect ( user . getSessionToken ( ) ) . toBeUndefined ( ) ;
1854
- }
1855
-
1856
- const payload = { someData : true } ;
1857
-
1858
- await user . save ( {
1859
- username : 'test' ,
1860
- password : 'test' ,
1861
- authData : { requiredAdapter : payload } ,
1862
- } ) ;
1863
-
1864
- expect ( requiredAdapter . validateAuthData . calls . argsFor ( 0 ) [ 0 ] ) . toEqual ( payload ) ;
1865
-
1866
- expect ( user . getSessionToken ( ) ) . toBeDefined ( ) ;
1867
- } ) ;
1868
- it ( 'should require authData on login with' , async ( ) => {
1869
- spyOn ( requiredAdapter , 'validateAuthData' ) . and . resolveTo ( { } ) ;
1870
- await reconfigureServer ( { auth : { requiredAdapter } } ) ;
1871
-
1872
- const user = new Parse . User ( ) ;
1873
-
1874
- try {
1875
- await user . save ( { authData : { alwaysValidateAdapter : { id : 'shouldRequireAdapter' } } } ) ;
1876
- fail ( 'should not save the user' ) ;
1877
- } catch ( e ) {
1878
- expect ( e . message ) . toContain ( 'Missing required authData requiredAdapter' ) ;
1879
- expect ( user . getSessionToken ( ) ) . toBeUndefined ( ) ;
1880
- }
1881
-
1882
- const payload = { someData : true , id : 'requiredAdapter' } ;
1883
1848
1884
- await user . save ( {
1885
- authData : { requiredAdapter : payload } ,
1886
- } ) ;
1887
-
1888
- expect ( requiredAdapter . validateAuthData . calls . argsFor ( 0 ) [ 0 ] ) . toEqual ( payload ) ;
1889
- expect ( user . getSessionToken ( ) ) . toBeDefined ( ) ;
1890
- } ) ;
1849
+ xit ( 'should trigger correctly validateSetUp' ) ;
1850
+ xit ( 'should trigger correctly validateLogin' ) ;
1851
+ xit ( 'should trigger correctly validateUpdate' ) ;
1852
+ xit ( 'should throw if no triggers found' ) ;
1891
1853
it ( 'should not update authData if provider return doNotSave' , async ( ) => {
1892
1854
spyOn ( doNotSaveAdapter , 'validateAuthData' ) . and . resolveTo ( { doNotSave : true } ) ;
1893
1855
await reconfigureServer ( {
1894
- auth : { doNotSaveAdapter, requiredAdapter } ,
1856
+ auth : { doNotSaveAdapter, baseAdapter } ,
1895
1857
} ) ;
1896
1858
1897
1859
const user = new Parse . User ( ) ;
1898
1860
1899
1861
await user . save ( {
1900
- authData : { requiredAdapter : { id : 'requiredAdapter ' } , doNotSaveAdapter : { token : true } } ,
1862
+ authData : { baseAdapter : { id : 'baseAdapter ' } , doNotSaveAdapter : { token : true } } ,
1901
1863
} ) ;
1902
1864
1903
1865
await user . fetch ( { useMasterKey : true } ) ;
1904
1866
1905
- expect ( user . get ( 'authData' ) ) . toEqual ( { requiredAdapter : { id : 'requiredAdapter ' } } ) ;
1867
+ expect ( user . get ( 'authData' ) ) . toEqual ( { baseAdapter : { id : 'baseAdapter ' } } ) ;
1906
1868
} ) ;
1907
1869
it ( 'should force authData validation if provider use alwaysValidate' , async ( ) => {
1908
1870
spyOn ( alwaysValidateAdapter , 'validateAuthData' ) . and . resolveTo ( { } ) ;
1909
- spyOn ( requiredAdapter , 'validateAuthData' ) . and . resolveTo ( { } ) ;
1871
+ spyOn ( baseAdapter , 'validateAuthData' ) . and . resolveTo ( { } ) ;
1910
1872
await reconfigureServer ( {
1911
- auth : { alwaysValidateAdapter, requiredAdapter } ,
1873
+ auth : { alwaysValidateAdapter, baseAdapter } ,
1912
1874
} ) ;
1913
1875
1914
1876
const user = new Parse . User ( ) ;
1915
1877
1916
1878
await user . save ( {
1917
1879
authData : {
1918
- requiredAdapter : { id : 'requiredAdapter ' } ,
1880
+ baseAdapter : { id : 'baseAdapter ' } ,
1919
1881
alwaysValidateAdapter : { token : true } ,
1920
1882
} ,
1921
1883
} ) ;
@@ -1925,7 +1887,7 @@ describe('Auth Adapter features', () => {
1925
1887
const user2 = new Parse . User ( ) ;
1926
1888
await user2 . save ( {
1927
1889
authData : {
1928
- requiredAdapter : { id : 'requiredAdapter ' } ,
1890
+ baseAdapter : { id : 'baseAdapter ' } ,
1929
1891
} ,
1930
1892
} ) ;
1931
1893
@@ -1934,7 +1896,7 @@ describe('Auth Adapter features', () => {
1934
1896
const user3 = new Parse . User ( ) ;
1935
1897
await user3 . save ( {
1936
1898
authData : {
1937
- requiredAdapter : { id : 'requiredAdapter ' } ,
1899
+ baseAdapter : { id : 'baseAdapter ' } ,
1938
1900
alwaysValidateAdapter : { token : true } ,
1939
1901
} ,
1940
1902
} ) ;
@@ -1943,14 +1905,14 @@ describe('Auth Adapter features', () => {
1943
1905
} ) ;
1944
1906
it ( 'should require additional provider if configured' , async ( ) => {
1945
1907
await reconfigureServer ( {
1946
- auth : { requiredAdapter , additionalAdapter } ,
1908
+ auth : { baseAdapter , additionalAdapter } ,
1947
1909
} ) ;
1948
1910
1949
1911
const user = new Parse . User ( ) ;
1950
1912
1951
1913
await user . save ( {
1952
1914
authData : {
1953
- requiredAdapter : { id : 'requiredAdapter ' } ,
1915
+ baseAdapter : { id : 'baseAdapter ' } ,
1954
1916
additionalAdapter : { token : true } ,
1955
1917
} ,
1956
1918
} ) ;
@@ -1959,7 +1921,7 @@ describe('Auth Adapter features', () => {
1959
1921
try {
1960
1922
await user2 . save ( {
1961
1923
authData : {
1962
- requiredAdapter : { id : 'requiredAdapter ' } ,
1924
+ baseAdapter : { id : 'baseAdapter ' } ,
1963
1925
} ,
1964
1926
} ) ;
1965
1927
fail ( 'should require additional authData' ) ;
@@ -1970,7 +1932,7 @@ describe('Auth Adapter features', () => {
1970
1932
1971
1933
await user2 . save ( {
1972
1934
authData : {
1973
- requiredAdapter : { id : 'requiredAdapter ' } ,
1935
+ baseAdapter : { id : 'baseAdapter ' } ,
1974
1936
additionalAdapter : { token : true } ,
1975
1937
} ,
1976
1938
} ) ;
@@ -2000,35 +1962,35 @@ describe('Auth Adapter features', () => {
2000
1962
expect ( user2 . getSessionToken ( ) ) . toBeDefined ( ) ;
2001
1963
} ) ;
2002
1964
it ( 'should return authData response and save some info on non username login' , async ( ) => {
2003
- spyOn ( requiredAdapter , 'validateAuthData' ) . and . resolveTo ( {
1965
+ spyOn ( baseAdapter , 'validateAuthData' ) . and . resolveTo ( {
2004
1966
response : { someData : true } ,
2005
1967
} ) ;
2006
1968
spyOn ( alwaysValidateAdapter , 'validateAuthData' ) . and . resolveTo ( {
2007
1969
response : { someData2 : true } ,
2008
1970
save : { otherData : true } ,
2009
1971
} ) ;
2010
1972
await reconfigureServer ( {
2011
- auth : { requiredAdapter , alwaysValidateAdapter } ,
1973
+ auth : { baseAdapter , alwaysValidateAdapter } ,
2012
1974
} ) ;
2013
1975
2014
1976
const user = new Parse . User ( ) ;
2015
1977
2016
1978
await user . save ( {
2017
1979
authData : {
2018
- requiredAdapter : { id : 'requiredAdapter ' } ,
1980
+ baseAdapter : { id : 'baseAdapter ' } ,
2019
1981
alwaysValidateAdapter : { test : true } ,
2020
1982
} ,
2021
1983
} ) ;
2022
1984
2023
1985
expect ( user . get ( 'authDataResponse' ) ) . toEqual ( {
2024
- requiredAdapter : { someData : true } ,
1986
+ baseAdapter : { someData : true } ,
2025
1987
alwaysValidateAdapter : { someData2 : true } ,
2026
1988
} ) ;
2027
1989
2028
1990
const user2 = new Parse . User ( ) ;
2029
1991
await user2 . save ( {
2030
1992
authData : {
2031
- requiredAdapter : { id : 'requiredAdapter ' } ,
1993
+ baseAdapter : { id : 'baseAdapter ' } ,
2032
1994
alwaysValidateAdapter : { test : true } ,
2033
1995
} ,
2034
1996
} ) ;
@@ -2039,21 +2001,20 @@ describe('Auth Adapter features', () => {
2039
2001
userViaMasterKey . id = user2 . id ;
2040
2002
await userViaMasterKey . fetch ( { useMasterKey : true } ) ;
2041
2003
expect ( userViaMasterKey . get ( 'authData' ) ) . toEqual ( {
2042
- requiredAdapter : { id : 'requiredAdapter ' } ,
2004
+ baseAdapter : { id : 'baseAdapter ' } ,
2043
2005
alwaysValidateAdapter : { otherData : true } ,
2044
2006
} ) ;
2045
2007
} ) ;
2046
-
2047
2008
it ( 'should return authData response and save some info on username login' , async ( ) => {
2048
- spyOn ( requiredAdapter , 'validateAuthData' ) . and . resolveTo ( {
2009
+ spyOn ( baseAdapter , 'validateAuthData' ) . and . resolveTo ( {
2049
2010
response : { someData : true } ,
2050
2011
} ) ;
2051
2012
spyOn ( alwaysValidateAdapter , 'validateAuthData' ) . and . resolveTo ( {
2052
2013
response : { someData2 : true } ,
2053
2014
save : { otherData : true } ,
2054
2015
} ) ;
2055
2016
await reconfigureServer ( {
2056
- auth : { requiredAdapter , alwaysValidateAdapter } ,
2017
+ auth : { baseAdapter , alwaysValidateAdapter } ,
2057
2018
} ) ;
2058
2019
2059
2020
const user = new Parse . User ( ) ;
@@ -2062,13 +2023,13 @@ describe('Auth Adapter features', () => {
2062
2023
username : 'username' ,
2063
2024
password : 'password' ,
2064
2025
authData : {
2065
- requiredAdapter : { id : 'requiredAdapter ' } ,
2026
+ baseAdapter : { id : 'baseAdapter ' } ,
2066
2027
alwaysValidateAdapter : { test : true } ,
2067
2028
} ,
2068
2029
} ) ;
2069
2030
2070
2031
expect ( user . get ( 'authDataResponse' ) ) . toEqual ( {
2071
- requiredAdapter : { someData : true } ,
2032
+ baseAdapter : { someData : true } ,
2072
2033
alwaysValidateAdapter : { someData2 : true } ,
2073
2034
} ) ;
2074
2035
@@ -2081,23 +2042,111 @@ describe('Auth Adapter features', () => {
2081
2042
password : 'password' ,
2082
2043
authData : {
2083
2044
alwaysValidateAdapter : { test : true } ,
2084
- requiredAdapter : { id : 'requiredAdapter ' } ,
2045
+ baseAdapter : { id : 'baseAdapter ' } ,
2085
2046
} ,
2086
2047
} ) ,
2087
2048
} ) ;
2088
- expect ( JSON . parse ( res . text ) . authDataResponse ) . toEqual ( {
2049
+ const result = JSON . parse ( res . text ) ;
2050
+ expect ( result . authDataResponse ) . toEqual ( {
2089
2051
alwaysValidateAdapter : { someData2 : true } ,
2052
+ baseAdapter : { someData : true } ,
2090
2053
} ) ;
2091
2054
2092
- const userViaMasterKey = new Parse . User ( ) ;
2093
- userViaMasterKey . id = user . id ;
2094
- await userViaMasterKey . fetch ( { useMasterKey : true } ) ;
2095
- expect ( userViaMasterKey . get ( 'authData' ) ) . toEqual ( {
2096
- requiredAdapter : { id : 'requiredAdapter' } ,
2055
+ await user . fetch ( { useMasterKey : true } ) ;
2056
+ expect ( user . get ( 'authData' ) ) . toEqual ( {
2057
+ baseAdapter : { id : 'baseAdapter' } ,
2097
2058
alwaysValidateAdapter : { otherData : true } ,
2098
2059
} ) ;
2099
2060
} ) ;
2061
+ it ( 'should allow update of authData' , async ( ) => {
2062
+ spyOn ( baseAdapter , 'validateAuthData' ) . and . resolveTo ( {
2063
+ response : { someData : true } ,
2064
+ } ) ;
2065
+ spyOn ( alwaysValidateAdapter , 'validateAuthData' ) . and . resolveTo ( {
2066
+ response : { someData2 : true } ,
2067
+ save : { otherData : true } ,
2068
+ } ) ;
2069
+ await reconfigureServer ( {
2070
+ auth : { baseAdapter, alwaysValidateAdapter } ,
2071
+ } ) ;
2072
+ await reconfigureServer ( {
2073
+ auth : { baseAdapter, alwaysValidateAdapter } ,
2074
+ } ) ;
2075
+
2076
+ const user = new Parse . User ( ) ;
2100
2077
2078
+ await user . save ( {
2079
+ username : 'username' ,
2080
+ password : 'password' ,
2081
+ authData : {
2082
+ baseAdapter : { id : 'baseAdapter' } ,
2083
+ alwaysValidateAdapter : { test : true } ,
2084
+ } ,
2085
+ } ) ;
2086
+ expect ( baseAdapter . validateAuthData ) . toHaveBeenCalledTimes ( 1 ) ;
2087
+
2088
+ expect ( user . id ) . toBeDefined ( ) ;
2089
+ expect ( user . getSessionToken ( ) ) . toBeDefined ( ) ;
2090
+ // Should not re validate the baseAdapter
2091
+ // when user is already logged in and authData not changed
2092
+ await user . save (
2093
+ {
2094
+ authData : {
2095
+ alwaysValidateAdapter : { test : true } ,
2096
+ baseAdapter : { id : 'baseAdapter' } ,
2097
+ } ,
2098
+ } ,
2099
+ { sessionToken : user . getSessionToken ( ) }
2100
+ ) ;
2101
+
2102
+ expect ( baseAdapter . validateAuthData ) . toHaveBeenCalledTimes ( 1 ) ;
2103
+
2104
+ // Should not re validate the baseAdapter
2105
+ // when master key used and authData are not changed
2106
+ await user . save (
2107
+ {
2108
+ authData : {
2109
+ alwaysValidateAdapter : { test : true } ,
2110
+ baseAdapter : { id : 'baseAdapter' } ,
2111
+ } ,
2112
+ } ,
2113
+ { useMasterKey : true }
2114
+ ) ;
2115
+
2116
+ expect ( baseAdapter . validateAuthData ) . toHaveBeenCalledTimes ( 1 ) ;
2117
+
2118
+ // Should allow user to change authData
2119
+ await user . save (
2120
+ {
2121
+ authData : {
2122
+ alwaysValidateAdapter : { test : true } ,
2123
+ baseAdapter : { id : 'baseAdapter2' } ,
2124
+ } ,
2125
+ } ,
2126
+ { sessionToken : user . getSessionToken ( ) }
2127
+ ) ;
2128
+
2129
+ expect ( baseAdapter . validateAuthData ) . toHaveBeenCalledTimes ( 2 ) ;
2130
+
2131
+ // Should allow master key to change authData
2132
+ await user . save (
2133
+ {
2134
+ authData : {
2135
+ alwaysValidateAdapter : { test : true } ,
2136
+ baseAdapter : { id : 'baseAdapter3' } ,
2137
+ } ,
2138
+ } ,
2139
+ { useMasterKey : true }
2140
+ ) ;
2141
+
2142
+ expect ( baseAdapter . validateAuthData ) . toHaveBeenCalledTimes ( 3 ) ;
2143
+
2144
+ await user . fetch ( { useMasterKey : true } ) ;
2145
+ expect ( user . get ( 'authData' ) ) . toEqual ( {
2146
+ baseAdapter : { id : 'baseAdapter3' } ,
2147
+ alwaysValidateAdapter : { otherData : true } ,
2148
+ } ) ;
2149
+ } ) ;
2101
2150
it ( 'should pass user to auth adapter on update by matching session' , async ( ) => {
2102
2151
spyOn ( alwaysValidateAdapter , 'validateAuthData' ) . and . resolveTo ( { } ) ;
2103
2152
await reconfigureServer ( { auth : { alwaysValidateAdapter } } ) ;
@@ -2138,7 +2187,6 @@ describe('Auth Adapter features', () => {
2138
2187
expect ( secondCall [ 3 ] instanceof Parse . User ) . toBeTruthy ( ) ;
2139
2188
expect ( secondCall [ 3 ] . id ) . toEqual ( user . id ) ;
2140
2189
} ) ;
2141
-
2142
2190
it ( 'should return challenge with no logged user' , async ( ) => {
2143
2191
spyOn ( challengeAdapter , 'challenge' ) . and . resolveTo ( { token : 'test' } ) ;
2144
2192
0 commit comments