1import * as Network from 'expo-network'; 2import { Platform } from 'react-native'; 3 4export const name = 'Network'; 5const Ipv4Regex = 6 /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; 7 8export async function test(t) { 9 if (Platform.OS === 'android') { 10 t.describe(`Network.isAirplaneModeEnabledAsync()`, async () => { 11 t.it(`returns a boolean`, async () => { 12 const isAirplaneModeOn = await Network.isAirplaneModeEnabledAsync(); 13 t.expect(isAirplaneModeOn).toBeDefined(); 14 t.expect(typeof isAirplaneModeOn).toBe('boolean'); 15 }); 16 t.it(`throws error Network.getIpAddressAsync() if Airplane mode is on`, async () => { 17 const isAirplaneModeOn = await Network.isAirplaneModeEnabledAsync(); 18 if (isAirplaneModeOn) { 19 let ipAddress; 20 let error; 21 try { 22 ipAddress = await Network.getIpAddressAsync(); 23 } catch (e) { 24 error = e; 25 } 26 t.expect(error).toBeDefined(); 27 t.expect(typeof ipAddress).toEqual('undefined'); 28 } 29 }); 30 t.it(`throws error Network.getNetworkStateAsync() if Airplane mode is on`, async () => { 31 const isAirplaneModeOn = await Network.isAirplaneModeEnabledAsync(); 32 if (isAirplaneModeOn) { 33 let networkState; 34 let error; 35 try { 36 networkState = await Network.getNetworkStateAsync(); 37 } catch (e) { 38 error = e; 39 } 40 t.expect(error).toBeDefined(); 41 t.expect(typeof networkState).toEqual('undefined'); 42 } 43 }); 44 }); 45 } 46 t.describe(`Network.getIpAddressAsync()`, () => { 47 t.it(`gets valid IPV4 address when device's online`, async () => { 48 let ipAddress; 49 let error; 50 try { 51 ipAddress = await Network.getIpAddressAsync(); 52 } catch (e) { 53 error = e; 54 } 55 t.expect(typeof ipAddress).toEqual('string'); 56 t.expect(typeof error).toEqual('undefined'); 57 t.expect(Ipv4Regex.test(ipAddress)).toBeTruthy(); 58 }); 59 }); 60 t.describe(`Network.getNetworkStateAsync()`, () => { 61 t.it(`gets valid NetworkState types and valid NetworkStateType enums`, async () => { 62 function validateBoolean(result) { 63 t.expect(result).toBeDefined(); 64 t.expect(typeof result).toBe('boolean'); 65 } 66 let error; 67 try { 68 const { type, isConnected, isInternetReachable } = await Network.getNetworkStateAsync(); 69 validateBoolean(isConnected); 70 validateBoolean(isInternetReachable); 71 t.expect(Object.values(Network.NetworkStateType).includes(type)).toBeTruthy(); 72 t.expect(typeof error).toEqual('undefined'); 73 } catch (e) { 74 error = e; 75 } 76 }); 77 }); 78} 79