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