18d307f52SEvan Baconimport nock from 'nock';
28d307f52SEvan Bacon
38d307f52SEvan Baconimport { getExpoApiBaseUrl } from '../endpoint';
4*edc92349SJuwan Wheatleyimport {
5*edc92349SJuwan Wheatley  updateDevelopmentSessionAsync,
6*edc92349SJuwan Wheatley  closeDevelopmentSessionAsync,
7*edc92349SJuwan Wheatley} from '../updateDevelopmentSession';
88d307f52SEvan Bacon
98d307f52SEvan Bacondescribe(updateDevelopmentSessionAsync, () => {
108d307f52SEvan Bacon  it('update development session', async () => {
118d307f52SEvan Bacon    const scope = nock(getExpoApiBaseUrl())
128d307f52SEvan Bacon      .post('/v2/development-sessions/notify-alive?deviceId=123')
138d307f52SEvan Bacon      .reply(200, require('./fixtures/native-modules/44.0.0.json'));
148d307f52SEvan Bacon    await updateDevelopmentSessionAsync({
158d307f52SEvan Bacon      deviceIds: ['123'],
168d307f52SEvan Bacon      exp: {
178d307f52SEvan Bacon        name: 'Test',
188d307f52SEvan Bacon        description: 'Test',
198d307f52SEvan Bacon        slug: 'test',
208d307f52SEvan Bacon        primaryColor: '#ffffff',
218d307f52SEvan Bacon      },
228d307f52SEvan Bacon      runtime: 'native',
23*edc92349SJuwan Wheatley      url: 'exp://192.168.1.69:19001',
248d307f52SEvan Bacon    });
258d307f52SEvan Bacon
268d307f52SEvan Bacon    expect(scope.isDone()).toBe(true);
278d307f52SEvan Bacon  });
288d307f52SEvan Bacon  it('fails when the servers are down', async () => {
298d307f52SEvan Bacon    const scope = nock(getExpoApiBaseUrl())
308d307f52SEvan Bacon      .post('/v2/development-sessions/notify-alive?deviceId=123')
318d307f52SEvan Bacon      .reply(500, 'something went wrong');
328d307f52SEvan Bacon    await expect(
338d307f52SEvan Bacon      updateDevelopmentSessionAsync({
348d307f52SEvan Bacon        deviceIds: ['123'],
358d307f52SEvan Bacon        exp: {
368d307f52SEvan Bacon          name: 'Test',
378d307f52SEvan Bacon          description: 'Test',
388d307f52SEvan Bacon          slug: 'test',
398d307f52SEvan Bacon          primaryColor: '#ffffff',
408d307f52SEvan Bacon        },
418d307f52SEvan Bacon        runtime: 'native',
42*edc92349SJuwan Wheatley        url: 'exp://192.168.1.69:19001',
43*edc92349SJuwan Wheatley      })
44*edc92349SJuwan Wheatley    ).rejects.toThrowError(/Expo server/);
45*edc92349SJuwan Wheatley    expect(scope.isDone()).toBe(true);
46*edc92349SJuwan Wheatley  });
47*edc92349SJuwan Wheatley});
48*edc92349SJuwan Wheatley
49*edc92349SJuwan Wheatleydescribe(closeDevelopmentSessionAsync, () => {
50*edc92349SJuwan Wheatley  it('close development session', async () => {
51*edc92349SJuwan Wheatley    const scope = nock(getExpoApiBaseUrl())
52*edc92349SJuwan Wheatley      .post('/v2/development-sessions/notify-close?deviceId=123')
53*edc92349SJuwan Wheatley      .reply(200, {
54*edc92349SJuwan Wheatley        data: {
55*edc92349SJuwan Wheatley          deleted: [
56*edc92349SJuwan Wheatley            {
57*edc92349SJuwan Wheatley              username: 'fiberjw',
58*edc92349SJuwan Wheatley              session: {
59*edc92349SJuwan Wheatley                description: 'Goodweebs on Juwans-MacBook-Pro.local',
60*edc92349SJuwan Wheatley                source: 'desktop',
61*edc92349SJuwan Wheatley                url: 'exp://192.168.1.69:19001',
62*edc92349SJuwan Wheatley              },
63*edc92349SJuwan Wheatley            },
64*edc92349SJuwan Wheatley          ],
65*edc92349SJuwan Wheatley        },
66*edc92349SJuwan Wheatley      });
67*edc92349SJuwan Wheatley    await closeDevelopmentSessionAsync({
68*edc92349SJuwan Wheatley      deviceIds: ['123'],
69*edc92349SJuwan Wheatley      url: 'exp://192.168.1.69:19001',
70*edc92349SJuwan Wheatley    });
71*edc92349SJuwan Wheatley
72*edc92349SJuwan Wheatley    expect(scope.isDone()).toBe(true);
73*edc92349SJuwan Wheatley  });
74*edc92349SJuwan Wheatley  it('fails when the servers are down', async () => {
75*edc92349SJuwan Wheatley    const scope = nock(getExpoApiBaseUrl())
76*edc92349SJuwan Wheatley      .post('/v2/development-sessions/notify-close?deviceId=123')
77*edc92349SJuwan Wheatley      .reply(500, 'something went wrong');
78*edc92349SJuwan Wheatley    await expect(
79*edc92349SJuwan Wheatley      closeDevelopmentSessionAsync({
80*edc92349SJuwan Wheatley        deviceIds: ['123'],
81*edc92349SJuwan Wheatley        url: 'exp://192.168.1.69:19001',
828d307f52SEvan Bacon      })
838d307f52SEvan Bacon    ).rejects.toThrowError(/Expo server/);
848d307f52SEvan Bacon    expect(scope.isDone()).toBe(true);
858d307f52SEvan Bacon  });
868d307f52SEvan Bacon});
87