@metaplay/metaplay-auth 1.1.7 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # Changelog
2
2
 
3
- ## [1.1.7] - Unpublished
3
+ ## [1.2.1] - 2024-04-05
4
+
5
+ ### Changed
6
+
7
+ * `Upgraded @kubernetes/client-node dependency to 1.0.0-rc4. This removes transitive dependencies on various deprecated libraries.
8
+
9
+ ## [1.2.0] - 2024-03-20
10
+
11
+ ### Added
12
+
13
+ * Introduce `get-docker-login` command that allows simpler CI flows. It outputs `DOCKER_REPO`, `DOCKER_USERNAME` and `DOCKER_PASSWORD` env variables that can be used to login with docker.
14
+
15
+ ## [1.1.7] - 2024-03-15
4
16
 
5
17
  ### Added
6
18
 
package/README.md CHANGED
@@ -25,24 +25,24 @@ npx @metaplay/metaplay-auth@latest logout
25
25
  When making changes to the `metaplay-auth`, it's easiest to test by running it locally:
26
26
 
27
27
  ```bash
28
- MetaplaySDK/AuthCLI$ pnpm dev login
29
- MetaplaySDK/AuthCLI$ pnpm dev show-tokens
28
+ AuthCLI$ pnpm dev login
29
+ AuthCLI$ pnpm dev show-tokens
30
30
  ```
31
31
 
32
32
  ## Building from sources
33
33
 
34
- The tool is also provided as part of the Metaplay SDK package (available via the [Metaplay Portal](https://portal.metaplay.dev/) under `MetaplaySDK/AuthCLI/` and utilizes the same TypeScript toolchains as other components in the Metaplay SDK.
34
+ The tool is also provided as part of the Metaplay SDK package (available via the [Metaplay Portal](https://portal.metaplay.dev/) under `AuthCLI/` and utilizes the same TypeScript toolchains as other components in the Metaplay SDK.
35
35
 
36
36
  You can build the tool using [Moon](https://www.npmjs.com/package/@moonrepo/cli):
37
37
 
38
38
  ```bash
39
- MetaplaySDK/AuthCLI$ moon run build
39
+ AuthCLI$ moon run build
40
40
  ```
41
41
 
42
42
  Now, you can run the application with node:
43
43
 
44
44
  ```bash
45
- MetaplaySDK/AuthCLI$ node dist/index.js
45
+ AuthCLI$ node dist/index.js
46
46
  Usage: metaplay-auth [options] [command]
47
47
 
48
48
  Authenticate with Metaplay and get AWS and Kubernetes credentials for game servers.
package/dist/index.js CHANGED
@@ -1,15 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from 'commander';
3
- import { loginAndSaveTokens, machineLoginAndSaveTokens, extendCurrentSession, loadTokens, removeTokens } from './auth.js';
4
- import { StackAPI } from './stackapi.js';
5
- import { checkGameServerDeployment } from './deployment.js';
6
- import { setLogLevel } from './logging.js';
3
+ import { loginAndSaveTokens, machineLoginAndSaveTokens, extendCurrentSession, loadTokens, removeTokens } from './src/auth.js';
4
+ import { StackAPI } from './src/stackapi.js';
5
+ import { checkGameServerDeployment } from './src/deployment.js';
6
+ import { logger, setLogLevel } from './src/logging.js';
7
7
  import { exit } from 'process';
8
+ import { ECRClient, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr';
8
9
  const program = new Command();
9
10
  program
10
11
  .name('metaplay-auth')
11
12
  .description('Authenticate with Metaplay and get AWS and Kubernetes credentials for game servers.')
12
- .version('1.1.7')
13
+ .version('1.2.1')
13
14
  .option('-d, --debug', 'enable debug output')
14
15
  .hook('preAction', (thisCommand) => {
15
16
  // Handle debug flag for all commands.
@@ -100,7 +101,7 @@ program.command('get-kubeconfig')
100
101
  try {
101
102
  const tokens = await loadTokens();
102
103
  if (!gameserver && !(options.organization && options.project && options.environment)) {
103
- throw new Error('Could not determine a deployment to fetch the KubeConfigs from. You need to specify either a gameserver or an organization, project, and environment');
104
+ throw new Error('Could not determine a deployment to fetch the KubeConfigs from. You need to specify either a gameserver or an organization, project, and environment. Run this command with --help flag for more information.');
104
105
  }
105
106
  const stackApi = new StackAPI(tokens.access_token);
106
107
  if (options.stackApi) {
@@ -162,6 +163,81 @@ program.command('get-aws-credentials')
162
163
  exit(1);
163
164
  }
164
165
  });
166
+ program.command('get-docker-login')
167
+ .description('get docker login credentials for pushing the server image')
168
+ .argument('[gameserver]', 'address of gameserver (e.g. idler-develop.p1.metaplay.io)')
169
+ .option('-o, --organization <organization>', 'organization name (e.g. metaplay)')
170
+ .option('-p, --project <project>', 'project name (e.g. idler)')
171
+ .option('-e, --environment <environment>', 'environment name (e.g. develop)')
172
+ .option('-f, --format <format>', 'output format (json or env)', 'json')
173
+ .hook('preAction', async () => {
174
+ await extendCurrentSession();
175
+ })
176
+ .action(async (gameserver, options) => {
177
+ try {
178
+ if (options.format !== 'json' && options.format !== 'env') {
179
+ throw new Error('Invalid format; must be one of json or env');
180
+ }
181
+ const tokens = await loadTokens();
182
+ if (!gameserver && !(options.organization && options.project && options.environment)) {
183
+ throw new Error('Could not determine a game server deployment. You need to specify either a gameserver or an organization, project, and environment');
184
+ }
185
+ const stackApi = new StackAPI(tokens.access_token);
186
+ if (options.stackApi) {
187
+ stackApi.stack_api_base_uri = options.stackApi;
188
+ }
189
+ // Fetch AWS credentials from Metaplay cloud
190
+ logger.debug('Get AWS credentials from Metaplay');
191
+ const payload = gameserver ? { gameserver } : { organization: options.organization, project: options.project, environment: options.environment };
192
+ const credentials = await stackApi.getAwsCredentials(payload);
193
+ // Get environment info (region is needed for ECR)
194
+ logger.debug('Get environment info');
195
+ const environment = await stackApi.getEnvironmentDetails(payload);
196
+ const awsRegion = environment.deployment.aws_region;
197
+ const dockerRepo = environment.deployment.ecr_repo;
198
+ // Create ECR client with credentials
199
+ logger.debug('Create ECR client');
200
+ const client = new ECRClient({
201
+ credentials: {
202
+ accessKeyId: credentials.AccessKeyId,
203
+ secretAccessKey: credentials.SecretAccessKey,
204
+ sessionToken: credentials.SessionToken
205
+ },
206
+ region: awsRegion
207
+ });
208
+ // Fetch the ECR docker authentication token
209
+ logger.debug('Fetch ECR login credentials from AWS');
210
+ const command = new GetAuthorizationTokenCommand({});
211
+ const response = await client.send(command);
212
+ if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken) {
213
+ throw new Error('Received an empty authorization token response for ECR repository');
214
+ }
215
+ // Parse username and password from the response (separated by a ':')
216
+ logger.debug('Parse ECR response');
217
+ const authorization64 = response.authorizationData[0].authorizationToken;
218
+ const authorization = Buffer.from(authorization64, 'base64').toString();
219
+ const [username, password] = authorization.split(':');
220
+ // Output the docker repo & credentials
221
+ if (options.format === 'env') {
222
+ console.log(`export DOCKER_REPO=${dockerRepo}`);
223
+ console.log(`export DOCKER_USERNAME=${username}`);
224
+ console.log(`export DOCKER_PASSWORD=${password}`);
225
+ }
226
+ else {
227
+ console.log(JSON.stringify({
228
+ dockerRepo,
229
+ username,
230
+ password
231
+ }));
232
+ }
233
+ }
234
+ catch (error) {
235
+ if (error instanceof Error) {
236
+ console.error(`Error getting docker login credentials: ${error.message}`);
237
+ }
238
+ exit(1);
239
+ }
240
+ });
165
241
  program.command('get-environment')
166
242
  .description('get environment details for deployment')
167
243
  .argument('[gameserver]', 'address of gameserver (e.g. idler-develop.p1.metaplay.io)')
@@ -207,7 +283,7 @@ program.command('check-deployment')
207
283
  exit(exitCode);
208
284
  }
209
285
  catch (error) {
210
- console.error(`Failed to check deployment status: ${error}`);
286
+ console.error(`Failed to check deployment status: ${error.message}`);
211
287
  exit(1);
212
288
  }
213
289
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- import { promises as fs, existsSync } from 'fs';
1
+ import { existsSync } from 'fs';
2
2
  import { KubeConfig, CoreV1Api, V1Pod } from '@kubernetes/client-node';
3
3
  import { logger } from './logging.js';
4
- import { error } from 'console';
5
4
  var GameServerPodPhase;
6
5
  (function (GameServerPodPhase) {
7
6
  GameServerPodPhase["Pending"] = "Pending";
@@ -11,12 +10,15 @@ var GameServerPodPhase;
11
10
  })(GameServerPodPhase || (GameServerPodPhase = {}));
12
11
  async function fetchGameServerPods(k8sApi, namespace) {
13
12
  // Define label selector for gameserver
14
- const labelSelector = 'app=metaplay-server';
13
+ const param = {
14
+ namespace,
15
+ labelSelector: 'app=metaplay-server'
16
+ };
15
17
  try {
16
18
  // Get gameserver pods in the namespace
17
- const response = await k8sApi.listNamespacedPod(namespace, undefined, undefined, undefined, undefined, labelSelector);
19
+ const response = await k8sApi.listNamespacedPod(param);
18
20
  // Return pod statuses
19
- return response.body.items;
21
+ return response.items;
20
22
  }
21
23
  catch (error) {
22
24
  // \todo Better error handling ..
@@ -141,13 +143,18 @@ async function fetchPodLogs(k8sApi, pod) {
141
143
  if (!podName || !namespace || !containerName) {
142
144
  throw new Error('Unable to determine pod metadata');
143
145
  }
144
- const pretty = 'True';
145
- const previous = false;
146
- const tailLines = 100;
147
- const timestamps = true;
146
+ const params = {
147
+ name: podName,
148
+ namespace,
149
+ container: containerName,
150
+ pretty: 'true',
151
+ previous: false,
152
+ tailLines: 100,
153
+ timestamps: true
154
+ };
148
155
  try {
149
- const response = await k8sApi.readNamespacedPodLog(podName, namespace, containerName, undefined, undefined, undefined, pretty, previous, undefined, tailLines, timestamps);
150
- return response.body;
156
+ const response = await k8sApi.readNamespacedPodLog(params);
157
+ return response;
151
158
  }
152
159
  catch (error) {
153
160
  // \todo Better error handling ..
@@ -183,7 +190,13 @@ export async function checkGameServerDeployment(namespace) {
183
190
  }
184
191
  // Create Kubernetes API instance (with default kubeconfig)
185
192
  const kc = new KubeConfig();
186
- kc.loadFromFile(kubeconfigPath);
193
+ // Loda kubeconfig from file and throw error if validation fails.
194
+ try {
195
+ kc.loadFromFile(kubeconfigPath);
196
+ }
197
+ catch (error) {
198
+ throw new Error(`Failed to load or validate kubeconfig. ${error}`);
199
+ }
187
200
  const k8sApi = kc.makeApiClient(CoreV1Api);
188
201
  // Figure out when to stop
189
202
  const startTime = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../src/deployment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../src/deployment.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from 'commander'
3
- import { loginAndSaveTokens, machineLoginAndSaveTokens, extendCurrentSession, loadTokens, removeTokens } from './auth.js'
4
- import { StackAPI } from './stackapi.js'
5
- import { checkGameServerDeployment } from './deployment.js'
6
- import { setLogLevel } from './logging.js'
3
+ import { loginAndSaveTokens, machineLoginAndSaveTokens, extendCurrentSession, loadTokens, removeTokens } from './src/auth.js'
4
+ import { StackAPI } from './src/stackapi.js'
5
+ import { checkGameServerDeployment } from './src/deployment.js'
6
+ import { logger, setLogLevel } from './src/logging.js'
7
7
  import { exit } from 'process'
8
+ import { ECRClient, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr'
8
9
 
9
10
  const program = new Command()
10
11
 
11
12
  program
12
13
  .name('metaplay-auth')
13
14
  .description('Authenticate with Metaplay and get AWS and Kubernetes credentials for game servers.')
14
- .version('1.1.7')
15
+ .version('1.2.1')
15
16
  .option('-d, --debug', 'enable debug output')
16
17
  .hook('preAction', (thisCommand) => {
17
18
  // Handle debug flag for all commands.
@@ -107,7 +108,7 @@ program.command('get-kubeconfig')
107
108
  const tokens = await loadTokens()
108
109
 
109
110
  if (!gameserver && !(options.organization && options.project && options.environment)) {
110
- throw new Error('Could not determine a deployment to fetch the KubeConfigs from. You need to specify either a gameserver or an organization, project, and environment')
111
+ throw new Error('Could not determine a deployment to fetch the KubeConfigs from. You need to specify either a gameserver or an organization, project, and environment. Run this command with --help flag for more information.')
111
112
  }
112
113
 
113
114
  const stackApi = new StackAPI(tokens.access_token)
@@ -177,6 +178,89 @@ program.command('get-aws-credentials')
177
178
  }
178
179
  })
179
180
 
181
+ program.command('get-docker-login')
182
+ .description('get docker login credentials for pushing the server image')
183
+ .argument('[gameserver]', 'address of gameserver (e.g. idler-develop.p1.metaplay.io)')
184
+ .option('-o, --organization <organization>', 'organization name (e.g. metaplay)')
185
+ .option('-p, --project <project>', 'project name (e.g. idler)')
186
+ .option('-e, --environment <environment>', 'environment name (e.g. develop)')
187
+ .option('-f, --format <format>', 'output format (json or env)', 'json')
188
+ .hook('preAction', async () => {
189
+ await extendCurrentSession()
190
+ })
191
+ .action(async (gameserver, options) => {
192
+ try {
193
+ if (options.format !== 'json' && options.format !== 'env') {
194
+ throw new Error('Invalid format; must be one of json or env')
195
+ }
196
+
197
+ const tokens = await loadTokens()
198
+
199
+ if (!gameserver && !(options.organization && options.project && options.environment)) {
200
+ throw new Error('Could not determine a game server deployment. You need to specify either a gameserver or an organization, project, and environment')
201
+ }
202
+
203
+ const stackApi = new StackAPI(tokens.access_token)
204
+ if (options.stackApi) {
205
+ stackApi.stack_api_base_uri = options.stackApi
206
+ }
207
+
208
+ // Fetch AWS credentials from Metaplay cloud
209
+ logger.debug('Get AWS credentials from Metaplay')
210
+ const payload = gameserver ? { gameserver } : { organization: options.organization, project: options.project, environment: options.environment }
211
+ const credentials = await stackApi.getAwsCredentials(payload)
212
+
213
+ // Get environment info (region is needed for ECR)
214
+ logger.debug('Get environment info')
215
+ const environment = await stackApi.getEnvironmentDetails(payload)
216
+ const awsRegion = environment.deployment.aws_region
217
+ const dockerRepo = environment.deployment.ecr_repo
218
+
219
+ // Create ECR client with credentials
220
+ logger.debug('Create ECR client')
221
+ const client = new ECRClient({
222
+ credentials: {
223
+ accessKeyId: credentials.AccessKeyId,
224
+ secretAccessKey: credentials.SecretAccessKey,
225
+ sessionToken: credentials.SessionToken
226
+ },
227
+ region: awsRegion
228
+ })
229
+
230
+ // Fetch the ECR docker authentication token
231
+ logger.debug('Fetch ECR login credentials from AWS')
232
+ const command = new GetAuthorizationTokenCommand({})
233
+ const response = await client.send(command)
234
+ if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken) {
235
+ throw new Error('Received an empty authorization token response for ECR repository')
236
+ }
237
+
238
+ // Parse username and password from the response (separated by a ':')
239
+ logger.debug('Parse ECR response')
240
+ const authorization64 = response.authorizationData[0].authorizationToken
241
+ const authorization = Buffer.from(authorization64, 'base64').toString()
242
+ const [username, password] = authorization.split(':')
243
+
244
+ // Output the docker repo & credentials
245
+ if (options.format === 'env') {
246
+ console.log(`export DOCKER_REPO=${dockerRepo}`)
247
+ console.log(`export DOCKER_USERNAME=${username}`)
248
+ console.log(`export DOCKER_PASSWORD=${password}`)
249
+ } else {
250
+ console.log(JSON.stringify({
251
+ dockerRepo,
252
+ username,
253
+ password
254
+ }))
255
+ }
256
+ } catch (error) {
257
+ if (error instanceof Error) {
258
+ console.error(`Error getting docker login credentials: ${error.message}`)
259
+ }
260
+ exit(1)
261
+ }
262
+ })
263
+
180
264
  program.command('get-environment')
181
265
  .description('get environment details for deployment')
182
266
  .argument('[gameserver]', 'address of gameserver (e.g. idler-develop.p1.metaplay.io)')
@@ -226,8 +310,8 @@ program.command('check-deployment')
226
310
  // Run the checks and exit with success/failure exitCode depending on result
227
311
  const exitCode = await checkGameServerDeployment(namespace)
228
312
  exit(exitCode)
229
- } catch (error) {
230
- console.error(`Failed to check deployment status: ${error}`)
313
+ } catch (error: any) {
314
+ console.error(`Failed to check deployment status: ${error.message}`)
231
315
  exit(1)
232
316
  }
233
317
  })
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@metaplay/metaplay-auth",
3
3
  "description": "Utility CLI for authenticating with the Metaplay Auth and making authenticated calls to infrastructure endpoints.",
4
- "version": "1.1.7",
4
+ "version": "1.2.1",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE",
7
7
  "homepage": "https://metaplay.io",
8
8
  "bin": "dist/index.js",
9
9
  "scripts": {
10
- "dev": "tsx src/index.ts",
10
+ "dev": "tsx index.ts",
11
11
  "prepublish": "tsc"
12
12
  },
13
13
  "publishConfig": {
@@ -19,18 +19,20 @@
19
19
  "@types/express": "^4.17.21",
20
20
  "@types/jsonwebtoken": "^9.0.5",
21
21
  "@types/jwk-to-pem": "^2.0.3",
22
- "@types/node": "^20.11.20",
22
+ "@types/node": "^20.11.30",
23
23
  "tsx": "^4.7.1",
24
- "typescript": "^5.1.6"
24
+ "typescript": "^5.1.6",
25
+ "vitest": "^1.4.0"
25
26
  },
26
27
  "dependencies": {
27
- "@ory/client": "^1.6.2",
28
+ "@aws-sdk/client-ecr": "^3.540.0",
29
+ "@kubernetes/client-node": "^1.0.0-rc4",
30
+ "@ory/client": "^1.9.0",
28
31
  "commander": "^12.0.0",
29
32
  "h3": "^1.10.2",
30
33
  "jsonwebtoken": "^9.0.2",
31
34
  "jwk-to-pem": "^2.0.5",
32
- "open": "^10.0.2",
33
- "tslog": "^4.9.2",
34
- "@kubernetes/client-node": "^0.20.0"
35
+ "open": "^10.1.0",
36
+ "tslog": "^4.9.2"
35
37
  }
36
- }
38
+ }
package/src/deployment.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { promises as fs, existsSync } from 'fs'
1
+ import { existsSync } from 'fs'
2
2
  import { KubeConfig, CoreV1Api, V1Pod } from '@kubernetes/client-node'
3
3
  import { logger } from './logging.js'
4
- import { error } from 'console'
4
+ import type { CoreV1ApiListNamespacedPodRequest, CoreV1ApiReadNamespacedPodLogRequest } from '@kubernetes/client-node'
5
5
 
6
6
  enum GameServerPodPhase {
7
7
  Pending = 'Pending', // Still being deployed
@@ -18,14 +18,17 @@ interface GameServerPodStatus {
18
18
 
19
19
  async function fetchGameServerPods (k8sApi: CoreV1Api, namespace: string) {
20
20
  // Define label selector for gameserver
21
- const labelSelector = 'app=metaplay-server'
21
+ const param: CoreV1ApiListNamespacedPodRequest = {
22
+ namespace,
23
+ labelSelector: 'app=metaplay-server'
24
+ }
22
25
 
23
26
  try {
24
27
  // Get gameserver pods in the namespace
25
- const response = await k8sApi.listNamespacedPod(namespace, undefined, undefined, undefined, undefined, labelSelector)
28
+ const response = await k8sApi.listNamespacedPod(param)
26
29
 
27
30
  // Return pod statuses
28
- return response.body.items
31
+ return response.items
29
32
  } catch (error) {
30
33
  // \todo Better error handling ..
31
34
  console.log('Failed to fetch pods from Kubernetes:', error)
@@ -168,13 +171,19 @@ async function fetchPodLogs (k8sApi: CoreV1Api, pod: V1Pod) {
168
171
  throw new Error('Unable to determine pod metadata')
169
172
  }
170
173
 
171
- const pretty = 'True'
172
- const previous = false
173
- const tailLines = 100
174
- const timestamps = true
174
+ const params: CoreV1ApiReadNamespacedPodLogRequest = {
175
+ name: podName,
176
+ namespace,
177
+ container: containerName,
178
+ pretty: 'true',
179
+ previous: false,
180
+ tailLines: 100,
181
+ timestamps: true
182
+ }
183
+
175
184
  try {
176
- const response = await k8sApi.readNamespacedPodLog(podName, namespace, containerName, undefined, undefined, undefined, pretty, previous, undefined, tailLines, timestamps)
177
- return response.body
185
+ const response: string = await k8sApi.readNamespacedPodLog(params)
186
+ return response
178
187
  } catch (error) {
179
188
  // \todo Better error handling ..
180
189
  console.log('Failed to fetch pod logs from Kubernetes:', error)
@@ -218,7 +227,12 @@ export async function checkGameServerDeployment (namespace: string): Promise<num
218
227
 
219
228
  // Create Kubernetes API instance (with default kubeconfig)
220
229
  const kc = new KubeConfig()
221
- kc.loadFromFile(kubeconfigPath)
230
+ // Loda kubeconfig from file and throw error if validation fails.
231
+ try {
232
+ kc.loadFromFile(kubeconfigPath)
233
+ } catch (error) {
234
+ throw new Error(`Failed to load or validate kubeconfig. ${error}`)
235
+ }
222
236
  const k8sApi = kc.makeApiClient(CoreV1Api)
223
237
 
224
238
  // Figure out when to stop
@@ -0,0 +1,20 @@
1
+ import { expect, test, describe } from 'vitest'
2
+
3
+ import { isValidFQDN } from '../src/utils.js'
4
+
5
+ describe('isValidFQDN', () => {
6
+ test('should return true for valid FQDNs', () => {
7
+ expect(isValidFQDN('www.example.com')).toBe(true)
8
+ expect(isValidFQDN('subdomain.example.com')).toBe(true)
9
+ expect(isValidFQDN('example.com')).toBe(true)
10
+ expect(isValidFQDN('example.co.uk')).toBe(true)
11
+ })
12
+
13
+ test('should return false for invalid FQDNs', () => {
14
+ expect(isValidFQDN('example')).toBe(false)
15
+ expect(isValidFQDN('www.example..com')).toBe(false)
16
+ expect(isValidFQDN('www.-example.com')).toBe(false)
17
+ expect(isValidFQDN('www.example-.com')).toBe(false)
18
+ expect(isValidFQDN('www.example.com-')).toBe(false)
19
+ })
20
+ })
@@ -0,0 +1,7 @@
1
+ import { defineConfig } from 'vitest/config'
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ dir: 'tests',
6
+ },
7
+ })