@@ -6,6 +6,7 @@ const isBsonType = require('../../lib/helpers/isBsonType');
6
6
const { Schema, createConnection } = require ( '../../lib' ) ;
7
7
const { ObjectId, Double, Int32, Decimal128 } = require ( 'bson' ) ;
8
8
const fs = require ( 'fs' ) ;
9
+ const mongoose = require ( '../../lib' ) ;
9
10
10
11
const LOCAL_KEY = Buffer . from ( 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk' , 'base64' ) ;
11
12
@@ -19,37 +20,46 @@ function isEncryptedValue(object, property) {
19
20
assert . ok ( value . sub_type === 6 , `auto encryption for property ${ property } failed: not subtype 6.` ) ;
20
21
}
21
22
22
- describe ( 'ci' , ( ) => {
23
-
23
+ describe ( 'encryption integration tests' , ( ) => {
24
24
const cachedUri = process . env . MONGOOSE_TEST_URI ;
25
25
const cachedLib = process . env . CRYPT_SHARED_LIB_PATH ;
26
26
27
27
before ( function ( ) {
28
28
const cwd = process . cwd ( ) ;
29
29
const file = fs . readFileSync ( cwd + '/data/mo-expansion.yml' , { encoding : 'utf-8' } ) . trim ( ) . split ( '\n' ) ;
30
+
31
+ // matches `key="value"` and extracts key and value.
30
32
const regex = / ^ (?< key > .* ) : " (?< value > .* ) " $ / ;
31
- const variables = file . map ( ( line ) => regex . exec ( line . trim ( ) ) . groups ) . reduce ( ( acc , { key, value } ) => ( { ... acc , [ key ] : value } ) , { } ) ;
33
+ const variables = Object . fromEntries ( file . map ( ( line ) => regex . exec ( line . trim ( ) ) . groups ) . map ( ( { key, value } ) => [ key , value ] ) ) ;
32
34
console . log ( 'File contents' , file ) ;
33
35
console . log ( 'Variables' , variables ) ;
34
- process . env . CRYPT_SHARED_LIB_PATH = variables . CRYPT_SHARED_LIB_PATH ;
35
- process . env . MONGOOSE_TEST_URI = variables . MONGODB_URI ;
36
+
37
+ process . env . CRYPT_SHARED_LIB_PATH ??= variables . CRYPT_SHARED_LIB_PATH ;
38
+ process . env . MONGOOSE_TEST_URI ??= variables . MONGODB_URI ;
36
39
} ) ;
37
40
38
41
after ( function ( ) {
39
42
process . env . CRYPT_SHARED_LIB_PATH = cachedLib ;
40
43
process . env . MONGOOSE_TEST_URI = cachedUri ;
41
44
} ) ;
42
45
43
- describe ( 'environmental variables' , ( ) => {
46
+ describe ( 'meta: environmental variables are correctly set up ' , ( ) => {
44
47
it ( 'MONGOOSE_TEST_URI is set' , async function ( ) {
45
48
const uri = process . env . MONGOOSE_TEST_URI ;
46
- console . log ( 'MONGOOSE_TEST_URI=' , uri ) ;
47
49
assert . ok ( uri ) ;
48
50
} ) ;
49
51
52
+ it ( 'MONGOOSE_TEST_URI points to running cluster' , async function ( ) {
53
+ try {
54
+ const connection = await mongoose . connect ( process . env . MONGOOSE_TEST_URI ) ;
55
+ await connection . disconnect ( ) ;
56
+ } catch ( error ) {
57
+ throw new Error ( 'Unable to connect to running cluster' , { cause : error } ) ;
58
+ }
59
+ } ) ;
60
+
50
61
it ( 'CRYPT_SHARED_LIB_PATH is set' , async function ( ) {
51
62
const shared_library_path = process . env . CRYPT_SHARED_LIB_PATH ;
52
- console . log ( 'CRYPT_SHARED_LIB_PATH=' , shared_library_path ) ;
53
63
assert . ok ( shared_library_path ) ;
54
64
} ) ;
55
65
} ) ;
@@ -98,11 +108,11 @@ describe('ci', () => {
98
108
{ type : Double , name : 'double' , input : new Double ( 1.5 ) }
99
109
] ;
100
110
101
- for ( const { type, name, input, expected } of basicSchemaTypes ) {
102
- this . afterEach ( async function ( ) {
103
- await connection ?. close ( ) ;
104
- } ) ;
111
+ afterEach ( async function ( ) {
112
+ await connection ?. close ( ) ;
113
+ } ) ;
105
114
115
+ for ( const { type, name, input, expected } of basicSchemaTypes ) {
106
116
// eslint-disable-next-line no-inner-declarations
107
117
async function test ( ) {
108
118
const [ { _id } ] = await model . insertMany ( [ { field : input } ] ) ;
0 commit comments