1*8d307f52SEvan Baconimport fs from 'fs-extra'; 2*8d307f52SEvan Baconimport { vol } from 'memfs'; 3*8d307f52SEvan Baconimport path from 'path'; 4*8d307f52SEvan Bacon 5*8d307f52SEvan Baconimport UserSettings from '../UserSettings'; 6*8d307f52SEvan Bacon 7*8d307f52SEvan Bacondescribe(UserSettings.getDirectory, () => { 8*8d307f52SEvan Bacon beforeEach(() => { 9*8d307f52SEvan Bacon delete process.env.__UNSAFE_EXPO_HOME_DIRECTORY; 10*8d307f52SEvan Bacon delete process.env.EXPO_STAGING; 11*8d307f52SEvan Bacon delete process.env.EXPO_LOCAL; 12*8d307f52SEvan Bacon }); 13*8d307f52SEvan Bacon afterAll(() => { 14*8d307f52SEvan Bacon delete process.env.__UNSAFE_EXPO_HOME_DIRECTORY; 15*8d307f52SEvan Bacon delete process.env.EXPO_STAGING; 16*8d307f52SEvan Bacon delete process.env.EXPO_LOCAL; 17*8d307f52SEvan Bacon }); 18*8d307f52SEvan Bacon 19*8d307f52SEvan Bacon it(`gets the default state directory`, () => { 20*8d307f52SEvan Bacon expect(UserSettings.getDirectory()).toBe('/home/.expo'); 21*8d307f52SEvan Bacon }); 22*8d307f52SEvan Bacon it(`gets the staging state directory`, () => { 23*8d307f52SEvan Bacon process.env.EXPO_STAGING = 'true'; 24*8d307f52SEvan Bacon expect(UserSettings.getDirectory()).toBe('/home/.expo-staging'); 25*8d307f52SEvan Bacon }); 26*8d307f52SEvan Bacon it(`gets the local state directory`, () => { 27*8d307f52SEvan Bacon process.env.EXPO_LOCAL = 'true'; 28*8d307f52SEvan Bacon expect(UserSettings.getDirectory()).toBe('/home/.expo-local'); 29*8d307f52SEvan Bacon }); 30*8d307f52SEvan Bacon it(`gets the custom state directory`, () => { 31*8d307f52SEvan Bacon process.env.__UNSAFE_EXPO_HOME_DIRECTORY = '/foobar/yolo'; 32*8d307f52SEvan Bacon expect(UserSettings.getDirectory()).toBe('/foobar/yolo'); 33*8d307f52SEvan Bacon }); 34*8d307f52SEvan Bacon}); 35*8d307f52SEvan Bacon 36*8d307f52SEvan Baconconst authStub: any = { 37*8d307f52SEvan Bacon sessionSecret: 'SESSION_SECRET', 38*8d307f52SEvan Bacon userId: 'USER_ID', 39*8d307f52SEvan Bacon username: 'USERNAME', 40*8d307f52SEvan Bacon currentConnection: 'Username-Password-Authentication', 41*8d307f52SEvan Bacon}; 42*8d307f52SEvan Bacon 43*8d307f52SEvan BaconbeforeEach(() => { 44*8d307f52SEvan Bacon vol.reset(); 45*8d307f52SEvan Bacon}); 46*8d307f52SEvan Bacon 47*8d307f52SEvan Bacondescribe(UserSettings.getSession, () => { 48*8d307f52SEvan Bacon it('returns null when session is not stored', () => { 49*8d307f52SEvan Bacon expect(UserSettings.getSession()).toBeNull(); 50*8d307f52SEvan Bacon }); 51*8d307f52SEvan Bacon 52*8d307f52SEvan Bacon it('returns stored session data', async () => { 53*8d307f52SEvan Bacon await fs.mkdirp(path.dirname(UserSettings.getFilePath())); 54*8d307f52SEvan Bacon await fs.writeJSON(UserSettings.getFilePath(), { auth: authStub }); 55*8d307f52SEvan Bacon expect(UserSettings.getSession()).toMatchObject(authStub); 56*8d307f52SEvan Bacon }); 57*8d307f52SEvan Bacon}); 58*8d307f52SEvan Bacon 59*8d307f52SEvan Bacondescribe(UserSettings.setSessionAsync, () => { 60*8d307f52SEvan Bacon it('stores empty session data', async () => { 61*8d307f52SEvan Bacon await UserSettings.setSessionAsync(); 62*8d307f52SEvan Bacon expect(await fs.pathExists(UserSettings.getFilePath())).toBeTruthy(); 63*8d307f52SEvan Bacon }); 64*8d307f52SEvan Bacon 65*8d307f52SEvan Bacon it('stores actual session data', async () => { 66*8d307f52SEvan Bacon await UserSettings.setSessionAsync(authStub); 67*8d307f52SEvan Bacon expect(await fs.readJSON(UserSettings.getFilePath())).toMatchObject({ auth: authStub }); 68*8d307f52SEvan Bacon }); 69*8d307f52SEvan Bacon}); 70*8d307f52SEvan Bacon 71*8d307f52SEvan Bacondescribe(UserSettings.getAccessToken, () => { 72*8d307f52SEvan Bacon it('returns null when envvar is undefined', () => { 73*8d307f52SEvan Bacon expect(UserSettings.getAccessToken()).toBeNull(); 74*8d307f52SEvan Bacon }); 75*8d307f52SEvan Bacon 76*8d307f52SEvan Bacon it('returns token when envar is defined', () => { 77*8d307f52SEvan Bacon process.env.EXPO_TOKEN = 'mytesttoken'; 78*8d307f52SEvan Bacon expect(UserSettings.getAccessToken()).toBe('mytesttoken'); 79*8d307f52SEvan Bacon process.env.EXPO_TOKEN = undefined; 80*8d307f52SEvan Bacon }); 81*8d307f52SEvan Bacon}); 82