1082815dcSEvan Baconimport { vol } from 'memfs'; 2082815dcSEvan Baconimport path from 'path'; 3082815dcSEvan Bacon 4082815dcSEvan Baconimport { 5082815dcSEvan Bacon getGoogleServicesFile, 6*5f51f606SEvan Bacon getGoogleSignInReversedClientId, 7*5f51f606SEvan Bacon setGoogleSignInReversedClientId, 8082815dcSEvan Bacon} from '../Google'; 9082815dcSEvan Baconimport { appendScheme } from '../Scheme'; 10082815dcSEvan Bacon 11082815dcSEvan Baconjest.mock('fs'); 12*5f51f606SEvan Baconjest.mock('../Scheme', () => ({ 13*5f51f606SEvan Bacon appendScheme: jest.fn((...props) => jest.requireActual('../Scheme').appendScheme(...props)), 14*5f51f606SEvan Bacon})); 15082815dcSEvan Bacon 16*5f51f606SEvan Baconconst googleServicesFixture = jest 17*5f51f606SEvan Bacon .requireActual('fs') 18*5f51f606SEvan Bacon .readFileSync(path.join(__dirname, 'fixtures/GoogleService-Info.plist'), 'utf-8'); 19082815dcSEvan Bacon 20*5f51f606SEvan Bacondescribe(getGoogleSignInReversedClientId, () => { 21082815dcSEvan Bacon afterEach(() => vol.reset()); 22*5f51f606SEvan Bacon it(`returns null when no file is defined`, () => { 23*5f51f606SEvan Bacon expect(getGoogleSignInReversedClientId({}, { projectRoot: '' })).toBe(null); 24082815dcSEvan Bacon expect(getGoogleServicesFile({})).toBe(null); 25082815dcSEvan Bacon }); 26*5f51f606SEvan Bacon it(`returns the REVERSED_CLIENT_ID from the linked file`, () => { 27082815dcSEvan Bacon vol.fromJSON( 28082815dcSEvan Bacon { 29*5f51f606SEvan Bacon 'path/to/GoogleService-Info.plist': googleServicesFixture, 30082815dcSEvan Bacon }, 31*5f51f606SEvan Bacon '/' 32082815dcSEvan Bacon ); 33082815dcSEvan Bacon 34*5f51f606SEvan Bacon const config = { 35*5f51f606SEvan Bacon ios: { googleServicesFile: './path/to/GoogleService-Info.plist' }, 36*5f51f606SEvan Bacon }; 37082815dcSEvan Bacon 38*5f51f606SEvan Bacon expect(getGoogleServicesFile(config)).toBe('./path/to/GoogleService-Info.plist'); 39*5f51f606SEvan Bacon expect(getGoogleSignInReversedClientId(config, { projectRoot: '/' })).toBe( 40*5f51f606SEvan Bacon 'com.googleusercontent.apps.1234567890123-abcdef' 41*5f51f606SEvan Bacon ); 42*5f51f606SEvan Bacon }); 43082815dcSEvan Bacon}); 44082815dcSEvan Bacon 45*5f51f606SEvan Bacondescribe(setGoogleSignInReversedClientId, () => { 46*5f51f606SEvan Bacon afterEach(() => vol.reset()); 47*5f51f606SEvan Bacon 48*5f51f606SEvan Bacon it(`adds the reversed client id to scheme from GoogleService-Info.Plist`, () => { 49082815dcSEvan Bacon vol.fromJSON( 50082815dcSEvan Bacon { 51*5f51f606SEvan Bacon 'path/to/GoogleService-Info.plist': googleServicesFixture, 52082815dcSEvan Bacon }, 53*5f51f606SEvan Bacon '/' 54082815dcSEvan Bacon ); 55082815dcSEvan Bacon 56*5f51f606SEvan Bacon expect( 57*5f51f606SEvan Bacon setGoogleSignInReversedClientId( 58082815dcSEvan Bacon { 59082815dcSEvan Bacon ios: { googleServicesFile: './path/to/GoogleService-Info.plist' }, 60082815dcSEvan Bacon }, 61*5f51f606SEvan Bacon {}, 62*5f51f606SEvan Bacon { projectRoot: '/' } 63*5f51f606SEvan Bacon ) 64*5f51f606SEvan Bacon ).toEqual({ 65*5f51f606SEvan Bacon CFBundleURLTypes: [ 66*5f51f606SEvan Bacon { CFBundleURLSchemes: ['com.googleusercontent.apps.1234567890123-abcdef'] }, 67*5f51f606SEvan Bacon ], 68*5f51f606SEvan Bacon }); 69082815dcSEvan Bacon 70082815dcSEvan Bacon expect(appendScheme).toHaveBeenCalledWith( 71082815dcSEvan Bacon 'com.googleusercontent.apps.1234567890123-abcdef', 72*5f51f606SEvan Bacon {} 73082815dcSEvan Bacon ); 74082815dcSEvan Bacon }); 75082815dcSEvan Bacon}); 76