1
- import { afterEach , describe , expect , inject , test , vi } from 'vitest'
2
- import { createClientFactory } from 'nice-grpc'
3
-
4
- import { StaticCredentialsProvider } from '../dist/esm/static.js'
5
-
6
- let username = inject ( 'credentialsUsername' )
7
- let password = inject ( 'credentialsPassword' )
8
- let endpoint = inject ( 'credentialsEndpoint' )
1
+ import * as crypto from 'node:crypto'
2
+ import * as fs from 'node:fs/promises'
3
+ import * as os from 'node:os'
4
+ import * as path from 'node:path'
5
+
6
+ import { create } from '@bufbuild/protobuf'
7
+ import { anyPack } from '@bufbuild/protobuf/wkt'
8
+ import { AuthServiceDefinition , LoginResponseSchema , LoginResultSchema } from '@ydbjs/api/auth'
9
+ import { StatusIds_StatusCode } from '@ydbjs/api/operation'
10
+ import { type ServiceImplementation , createServer } from 'nice-grpc'
11
+ import { afterAll , afterEach , describe , expect , test , vi } from 'vitest'
12
+
13
+ import { StaticCredentialsProvider } from './static.js'
14
+
15
+ let AuthServiceTestImpl : ServiceImplementation < typeof AuthServiceDefinition > = {
16
+ login : async ( ) => {
17
+ return create ( LoginResponseSchema , {
18
+ operation : {
19
+ status : StatusIds_StatusCode . SUCCESS ,
20
+ result : anyPack ( LoginResultSchema , create ( LoginResultSchema , {
21
+ token : crypto . randomUUID ( )
22
+ } ) ) ,
23
+ }
24
+ } )
25
+ }
26
+ }
9
27
10
28
describe ( 'StaticCredentialsProvider' , async ( ) => {
11
29
let calls = 0
12
- let clientFactory = createClientFactory ( ) . use ( ( call , options ) => {
30
+
31
+ let server = createServer ( ) . use ( ( call , options ) => {
13
32
calls ++
14
33
return call . next ( call . request , options )
15
34
} )
16
35
36
+ server . add ( AuthServiceDefinition , AuthServiceTestImpl )
37
+
17
38
afterEach ( ( ) => {
18
39
calls = 0
19
40
} )
20
41
42
+ afterAll ( async ( ) => {
43
+ await server . shutdown ( )
44
+ await fs . rm ( socket , { force : true } ) ;
45
+ } )
46
+
47
+ let socket = path . join ( os . tmpdir ( ) , `test-grpc-server-${ Date . now ( ) } .sock` ) ;
48
+ let endpoint = `unix:${ socket } `
49
+ let username = 'test'
50
+ let password = '1234'
51
+
52
+ await server . listen ( endpoint )
53
+
21
54
test ( 'valid token' , async ( ) => {
22
- let provider = new StaticCredentialsProvider ( { username, password } , endpoint , clientFactory )
55
+ let provider = new StaticCredentialsProvider ( { username, password } , endpoint )
23
56
24
57
let token = await provider . getToken ( false )
25
58
expect ( token , 'Token is not empty' ) . not . empty
26
59
} )
27
60
28
61
test ( 'reuse token' , async ( ) => {
29
- let provider = new StaticCredentialsProvider ( { username, password } , endpoint , clientFactory )
62
+ let provider = new StaticCredentialsProvider ( { username, password } , endpoint )
30
63
31
64
let token = await provider . getToken ( false )
32
65
let token2 = await provider . getToken ( false )
@@ -36,7 +69,7 @@ describe('StaticCredentialsProvider', async () => {
36
69
} )
37
70
38
71
test ( 'force refresh token' , async ( ) => {
39
- let provider = new StaticCredentialsProvider ( { username, password } , endpoint , clientFactory )
72
+ let provider = new StaticCredentialsProvider ( { username, password } , endpoint )
40
73
41
74
let token = await provider . getToken ( false )
42
75
let token2 = await provider . getToken ( true )
@@ -46,7 +79,7 @@ describe('StaticCredentialsProvider', async () => {
46
79
} )
47
80
48
81
test ( 'auto refresh expired token' , async ( ) => {
49
- let provider = new StaticCredentialsProvider ( { username, password } , endpoint , clientFactory )
82
+ let provider = new StaticCredentialsProvider ( { username, password } , endpoint )
50
83
51
84
let token = await provider . getToken ( false )
52
85
vi . useFakeTimers ( { now : new Date ( 2100 , 0 , 1 ) } )
@@ -58,7 +91,7 @@ describe('StaticCredentialsProvider', async () => {
58
91
} )
59
92
60
93
test ( 'multiple token aquisition' , async ( ) => {
61
- let provider = new StaticCredentialsProvider ( { username, password } , endpoint , clientFactory )
94
+ let provider = new StaticCredentialsProvider ( { username, password } , endpoint )
62
95
63
96
let tokens = await Promise . all ( [ provider . getToken ( false ) , provider . getToken ( false ) , provider . getToken ( false ) ] )
64
97
@@ -67,7 +100,7 @@ describe('StaticCredentialsProvider', async () => {
67
100
} )
68
101
69
102
test ( 'abort token aquisition' , async ( ) => {
70
- let provider = new StaticCredentialsProvider ( { username, password } , endpoint , clientFactory )
103
+ let provider = new StaticCredentialsProvider ( { username, password } , endpoint )
71
104
72
105
let controller = new AbortController ( )
73
106
controller . abort ( )
@@ -77,7 +110,7 @@ describe('StaticCredentialsProvider', async () => {
77
110
} )
78
111
79
112
test ( 'timeout token aquisition' , async ( ) => {
80
- let provider = new StaticCredentialsProvider ( { username, password } , endpoint , clientFactory )
113
+ let provider = new StaticCredentialsProvider ( { username, password } , endpoint )
81
114
82
115
let token = provider . getToken ( false , AbortSignal . timeout ( 0 ) )
83
116
0 commit comments