Skip to content

Commit 4c122cc

Browse files
committed
Test fromPublishableKey
1 parent 0e09cd0 commit 4c122cc

26 files changed

+159
-54
lines changed

package-lock.json

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@
8888
"axios-retry": "^3.8.0"
8989
},
9090
"devDependencies": {
91-
"@seamapi/fake-seam-connect": "^1.18.0",
92-
"@seamapi/types": "^1.14.0",
91+
"@seamapi/fake-seam-connect": "^1.21.0",
92+
"@seamapi/types": "^1.24.0",
9393
"@types/eslint": "^8.44.2",
9494
"@types/node": "^18.11.18",
9595
"ava": "^5.0.1",

src/lib/seam/connect/routes/access-codes-unmanaged.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpAccessCodesUnmanaged {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpAccessCodesUnmanaged.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/access-codes.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ export class SeamHttpAccessCodes {
7777
const clientOptions = parseOptions({ ...options, publishableKey })
7878
const client = createClient(clientOptions)
7979
const clientSessions = SeamHttpClientSessions.fromClient(client)
80-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
81-
const { token } = await clientSessions.create({
80+
const { token } = await clientSessions.getOrCreate({
8281
user_identifier_key: userIdentifierKey,
8382
})
8483
return SeamHttpAccessCodes.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/acs-access-groups.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpAcsAccessGroups {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpAcsAccessGroups.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/acs-credentials.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpAcsCredentials {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpAcsCredentials.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/acs-systems.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpAcsSystems {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpAcsSystems.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/acs-users.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpAcsUsers {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpAcsUsers.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/acs.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ export class SeamHttpAcs {
7777
const clientOptions = parseOptions({ ...options, publishableKey })
7878
const client = createClient(clientOptions)
7979
const clientSessions = SeamHttpClientSessions.fromClient(client)
80-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
81-
const { token } = await clientSessions.create({
80+
const { token } = await clientSessions.getOrCreate({
8281
user_identifier_key: userIdentifierKey,
8382
})
8483
return SeamHttpAcs.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/action-attempts.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpActionAttempts {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpActionAttempts.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/client-sessions.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ export class SeamHttpClientSessions {
7474
const clientOptions = parseOptions({ ...options, publishableKey })
7575
const client = createClient(clientOptions)
7676
const clientSessions = SeamHttpClientSessions.fromClient(client)
77-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
78-
const { token } = await clientSessions.create({
77+
const { token } = await clientSessions.getOrCreate({
7978
user_identifier_key: userIdentifierKey,
8079
})
8180
return SeamHttpClientSessions.fromClientSessionToken(token, options)
@@ -111,6 +110,18 @@ export class SeamHttpClientSessions {
111110
return data.client_session
112111
}
113112

113+
async getOrCreate(
114+
body: ClientSessionsGetOrCreateBody,
115+
): Promise<ClientSessionsGetOrCreateResponse['client_session']> {
116+
const { data } =
117+
await this.client.request<ClientSessionsGetOrCreateResponse>({
118+
url: '/client_sessions/get_or_create',
119+
method: 'post',
120+
data: body,
121+
})
122+
return data.client_session
123+
}
124+
114125
async grantAccess(
115126
body: ClientSessionsGrantAccessBody,
116127
): Promise<ClientSessionsGrantAccessResponse['client_session']> {
@@ -155,6 +166,13 @@ export type ClientSessionsGetResponse = SetNonNullable<
155166
Required<RouteResponse<'/client_sessions/get'>>
156167
>
157168

169+
export type ClientSessionsGetOrCreateBody =
170+
RouteRequestBody<'/client_sessions/get_or_create'>
171+
172+
export type ClientSessionsGetOrCreateResponse = SetNonNullable<
173+
Required<RouteResponse<'/client_sessions/get_or_create'>>
174+
>
175+
158176
export type ClientSessionsGrantAccessBody =
159177
RouteRequestBody<'/client_sessions/grant_access'>
160178

src/lib/seam/connect/routes/connect-webviews.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ export class SeamHttpConnectWebviews {
8080
const clientOptions = parseOptions({ ...options, publishableKey })
8181
const client = createClient(clientOptions)
8282
const clientSessions = SeamHttpClientSessions.fromClient(client)
83-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
84-
const { token } = await clientSessions.create({
83+
const { token } = await clientSessions.getOrCreate({
8584
user_identifier_key: userIdentifierKey,
8685
})
8786
return SeamHttpConnectWebviews.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/connected-accounts.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ export class SeamHttpConnectedAccounts {
8080
const clientOptions = parseOptions({ ...options, publishableKey })
8181
const client = createClient(clientOptions)
8282
const clientSessions = SeamHttpClientSessions.fromClient(client)
83-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
84-
const { token } = await clientSessions.create({
83+
const { token } = await clientSessions.getOrCreate({
8584
user_identifier_key: userIdentifierKey,
8685
})
8786
return SeamHttpConnectedAccounts.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/devices-unmanaged.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpDevicesUnmanaged {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpDevicesUnmanaged.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/devices.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ export class SeamHttpDevices {
7777
const clientOptions = parseOptions({ ...options, publishableKey })
7878
const client = createClient(clientOptions)
7979
const clientSessions = SeamHttpClientSessions.fromClient(client)
80-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
81-
const { token } = await clientSessions.create({
80+
const { token } = await clientSessions.getOrCreate({
8281
user_identifier_key: userIdentifierKey,
8382
})
8483
return SeamHttpDevices.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/events.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpEvents {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpEvents.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/locks.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpLocks {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpLocks.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/noise-sensors-noise-thresholds.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpNoiseSensorsNoiseThresholds {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpNoiseSensorsNoiseThresholds.fromClientSessionToken(

src/lib/seam/connect/routes/noise-sensors.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ export class SeamHttpNoiseSensors {
7474
const clientOptions = parseOptions({ ...options, publishableKey })
7575
const client = createClient(clientOptions)
7676
const clientSessions = SeamHttpClientSessions.fromClient(client)
77-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
78-
const { token } = await clientSessions.create({
77+
const { token } = await clientSessions.getOrCreate({
7978
user_identifier_key: userIdentifierKey,
8079
})
8180
return SeamHttpNoiseSensors.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/thermostats-climate-setting-schedules.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ export class SeamHttpThermostatsClimateSettingSchedules {
7676
const clientOptions = parseOptions({ ...options, publishableKey })
7777
const client = createClient(clientOptions)
7878
const clientSessions = SeamHttpClientSessions.fromClient(client)
79-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
80-
const { token } = await clientSessions.create({
79+
const { token } = await clientSessions.getOrCreate({
8180
user_identifier_key: userIdentifierKey,
8281
})
8382
return SeamHttpThermostatsClimateSettingSchedules.fromClientSessionToken(

src/lib/seam/connect/routes/thermostats.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ export class SeamHttpThermostats {
7777
const clientOptions = parseOptions({ ...options, publishableKey })
7878
const client = createClient(clientOptions)
7979
const clientSessions = SeamHttpClientSessions.fromClient(client)
80-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
81-
const { token } = await clientSessions.create({
80+
const { token } = await clientSessions.getOrCreate({
8281
user_identifier_key: userIdentifierKey,
8382
})
8483
return SeamHttpThermostats.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/webhooks.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ export class SeamHttpWebhooks {
8080
const clientOptions = parseOptions({ ...options, publishableKey })
8181
const client = createClient(clientOptions)
8282
const clientSessions = SeamHttpClientSessions.fromClient(client)
83-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
84-
const { token } = await clientSessions.create({
83+
const { token } = await clientSessions.getOrCreate({
8584
user_identifier_key: userIdentifierKey,
8685
})
8786
return SeamHttpWebhooks.fromClientSessionToken(token, options)

src/lib/seam/connect/routes/workspaces.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ export class SeamHttpWorkspaces {
8080
const clientOptions = parseOptions({ ...options, publishableKey })
8181
const client = createClient(clientOptions)
8282
const clientSessions = SeamHttpClientSessions.fromClient(client)
83-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
84-
const { token } = await clientSessions.create({
83+
const { token } = await clientSessions.getOrCreate({
8584
user_identifier_key: userIdentifierKey,
8685
})
8786
return SeamHttpWorkspaces.fromClientSessionToken(token, options)

src/lib/seam/connect/seam-http.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ export class SeamHttp {
8181
const clientOptions = parseOptions({ ...options, publishableKey })
8282
const client = createClient(clientOptions)
8383
const clientSessions = SeamHttpClientSessions.fromClient(client)
84-
// TODO: clientSessions.getOrCreate({ user_identifier_key: userIdentifierKey })
85-
const { token } = await clientSessions.create({
84+
const { token } = await clientSessions.getOrCreate({
8685
user_identifier_key: userIdentifierKey,
8786
})
8887
return SeamHttp.fromClientSessionToken(token, options)

test/seam/connect/env.test.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,43 @@ test.serial(
164164
},
165165
)
166166

167+
test.serial(
168+
'SeamHttp: SEAM_API_KEY environment variable is ignored with fromPublishableKey',
169+
async (t) => {
170+
const { seed, endpoint } = await getTestServer(t)
171+
env.SEAM_API_KEY = 'some-invalid-api-key-5'
172+
const seam = await SeamHttp.fromPublishableKey(
173+
seed.seam_pk1_token,
174+
seed.john_user_identifier_key,
175+
{
176+
endpoint,
177+
},
178+
)
179+
const device = await seam.devices.get({
180+
device_id: seed.august_device_1,
181+
})
182+
t.is(device.workspace_id, seed.seed_workspace_1)
183+
t.is(device.device_id, seed.august_device_1)
184+
},
185+
)
186+
187+
test.serial(
188+
'SeamHttp: SEAM_ENDPOINT environment variable is used with fromPublishableKey',
189+
async (t) => {
190+
const { seed, endpoint } = await getTestServer(t)
191+
env.SEAM_ENDPOINT = endpoint
192+
const seam = await SeamHttp.fromPublishableKey(
193+
seed.seam_pk1_token,
194+
seed.john_user_identifier_key,
195+
)
196+
const device = await seam.devices.get({
197+
device_id: seed.august_device_1,
198+
})
199+
t.is(device.workspace_id, seed.seed_workspace_1)
200+
t.is(device.device_id, seed.august_device_1)
201+
},
202+
)
203+
167204
test.serial(
168205
'SeamHttp: SEAM_ENDPOINT environment variable is used with fromClientSessionToken',
169206
async (t) => {

0 commit comments

Comments
 (0)