@@ -4,7 +4,11 @@ import test from 'ava'
44import { getTestServer } from 'fixtures/seam/connect/api.js'
55import jwt from 'jsonwebtoken'
66
7- import { SeamHttp , SeamHttpInvalidOptionsError } from '@seamapi/http/connect'
7+ import {
8+ SeamHttp ,
9+ SeamHttpInvalidOptionsError ,
10+ SeamHttpMultiWorkspace ,
11+ } from '@seamapi/http/connect'
812
913/*
1014 * Tests in this file must run serially to ensure a clean environment for each test.
@@ -273,3 +277,93 @@ test.serial(
273277 t . is ( device . device_id , seed . august_device_1 )
274278 } ,
275279)
280+
281+ test . serial (
282+ 'SeamHttp: constructor uses SEAM_PERSONAL_ACCESS_TOKEN and SEAM_WORKSPACE_ID environment variables' ,
283+ async ( t ) => {
284+ const { seed, endpoint } = await getTestServer ( t )
285+ env [ 'SEAM_PERSONAL_ACCESS_TOKEN' ] = seed . seam_at1_token
286+ env [ 'SEAM_WORKSPACE_ID' ] = seed . seed_workspace_1
287+ const seam = new SeamHttp ( { endpoint } )
288+ const device = await seam . devices . get ( {
289+ device_id : seed . august_device_1 ,
290+ } )
291+ t . is ( device . workspace_id , seed . seed_workspace_1 )
292+ t . is ( device . device_id , seed . august_device_1 )
293+ } ,
294+ )
295+
296+ test . serial (
297+ 'SeamHttp: throws error when both SEAM_API_KEY and SEAM_PERSONAL_ACCESS_TOKEN are defined' ,
298+ ( t ) => {
299+ env . SEAM_API_KEY = 'some-api-key'
300+ env [ 'SEAM_PERSONAL_ACCESS_TOKEN' ] = 'some-access-token'
301+ env [ 'SEAM_WORKSPACE_ID' ] = 'some-workspace-id'
302+ t . throws ( ( ) => new SeamHttp ( ) , {
303+ instanceOf : SeamHttpInvalidOptionsError ,
304+ message :
305+ / B o t h S E A M _ A P I _ K E Y a n d S E A M _ P E R S O N A L _ A C C E S S _ T O K E N e n v i r o n m e n t v a r i a b l e s a r e d e f i n e d / ,
306+ } )
307+ } ,
308+ )
309+
310+ test . serial (
311+ 'SeamHttp: personalAccessToken option overrides environment variables' ,
312+ async ( t ) => {
313+ const { seed, endpoint } = await getTestServer ( t )
314+ env [ 'SEAM_PERSONAL_ACCESS_TOKEN' ] = 'some-invalid-token'
315+ env [ 'SEAM_WORKSPACE_ID' ] = seed . seed_workspace_1
316+ const seam = new SeamHttp ( {
317+ personalAccessToken : seed . seam_at1_token ,
318+ endpoint,
319+ } )
320+ const device = await seam . devices . get ( {
321+ device_id : seed . august_device_1 ,
322+ } )
323+ t . is ( device . workspace_id , seed . seed_workspace_1 )
324+ t . is ( device . device_id , seed . august_device_1 )
325+ } ,
326+ )
327+
328+ test . serial (
329+ 'SeamHttp: workspaceId option overrides environment variables' ,
330+ async ( t ) => {
331+ const { seed, endpoint } = await getTestServer ( t )
332+ env [ 'SEAM_PERSONAL_ACCESS_TOKEN' ] = seed . seam_at1_token
333+ env [ 'SEAM_WORKSPACE_ID' ] = 'some-invalid-workspace'
334+ const seam = new SeamHttp ( {
335+ workspaceId : seed . seed_workspace_1 ,
336+ endpoint,
337+ } )
338+ const device = await seam . devices . get ( {
339+ device_id : seed . august_device_1 ,
340+ } )
341+ t . is ( device . workspace_id , seed . seed_workspace_1 )
342+ t . is ( device . device_id , seed . august_device_1 )
343+ } ,
344+ )
345+
346+ test . serial (
347+ 'SeamHttpMultiWorkspace: constructor uses SEAM_PERSONAL_ACCESS_TOKEN environment variable' ,
348+ async ( t ) => {
349+ const { seed, endpoint } = await getTestServer ( t )
350+ env [ 'SEAM_PERSONAL_ACCESS_TOKEN' ] = seed . seam_at1_token
351+ const multiWorkspace = new SeamHttpMultiWorkspace ( { endpoint } )
352+ const workspaces = await multiWorkspace . workspaces . list ( )
353+ t . true ( workspaces . length > 0 )
354+ } ,
355+ )
356+
357+ test . serial (
358+ 'SeamHttpMultiWorkspace: personalAccessToken option overrides environment variables' ,
359+ async ( t ) => {
360+ const { seed, endpoint } = await getTestServer ( t )
361+ env [ 'SEAM_PERSONAL_ACCESS_TOKEN' ] = 'some-invalid-token'
362+ const multiWorkspace = new SeamHttpMultiWorkspace ( {
363+ personalAccessToken : seed . seam_at1_token ,
364+ endpoint,
365+ } )
366+ const workspaces = await multiWorkspace . workspaces . list ( )
367+ t . true ( workspaces . length > 0 )
368+ } ,
369+ )
0 commit comments