2
2
3
3
const Buffer = require ( 'buffer' ) . Buffer ;
4
4
const BSON = require ( '../register-bson' ) ;
5
- const Code = BSON . Code ;
6
- const Binary = BSON . Binary ;
7
- const Timestamp = BSON . Timestamp ;
8
- const Long = BSON . Long ;
9
- const ObjectId = BSON . ObjectId ;
10
- const DBRef = BSON . DBRef ;
11
- const MinKey = BSON . MinKey ;
12
- const MaxKey = BSON . MaxKey ;
13
5
14
6
describe ( 'BSON Compliance' , function ( ) {
15
7
/**
@@ -36,77 +28,4 @@ describe('BSON Compliance', function () {
36
28
37
29
done ( ) ;
38
30
} ) ;
39
-
40
- /**
41
- * @ignore
42
- */
43
- it ( 'Pass all valid BSON serialization scenarios ./compliance/valid.json' , function ( done ) {
44
- // Read and parse the json file
45
- const scenarios = require ( './compliance/valid' ) ;
46
-
47
- // Translate extended json to correctly typed doc
48
- function translate ( doc , object ) {
49
- for ( let name in doc ) {
50
- if (
51
- typeof doc [ name ] === 'number' ||
52
- typeof doc [ name ] === 'string' ||
53
- typeof doc [ name ] === 'boolean'
54
- ) {
55
- object [ name ] = doc [ name ] ;
56
- } else if ( Array . isArray ( doc [ name ] ) ) {
57
- object [ name ] = translate ( doc [ name ] , [ ] ) ;
58
- } else if ( doc [ name ] [ '$numberLong' ] ) {
59
- object [ name ] = Long . fromString ( doc [ name ] [ '$numberLong' ] ) ;
60
- } else if ( doc [ name ] [ '$undefined' ] ) {
61
- object [ name ] = null ;
62
- } else if ( doc [ name ] [ '$date' ] ) {
63
- const date = new Date ( ) ;
64
- date . setTime ( parseInt ( doc [ name ] [ '$date' ] [ '$numberLong' ] , 10 ) ) ;
65
- object [ name ] = date ;
66
- } else if ( doc [ name ] [ '$regexp' ] ) {
67
- object [ name ] = new RegExp ( doc [ name ] [ '$regexp' ] , doc [ name ] [ '$options' ] || '' ) ;
68
- } else if ( doc [ name ] [ '$oid' ] ) {
69
- object [ name ] = new ObjectId ( doc [ name ] [ '$oid' ] ) ;
70
- } else if ( doc [ name ] [ '$binary' ] ) {
71
- object [ name ] = new Binary ( doc [ name ] [ '$binary' ] , doc [ name ] [ '$type' ] || 1 ) ;
72
- } else if ( doc [ name ] [ '$timestamp' ] ) {
73
- object [ name ] = Timestamp . fromBits (
74
- parseInt ( doc [ name ] [ '$timestamp' ] [ 't' ] , 10 ) ,
75
- parseInt ( doc [ name ] [ '$timestamp' ] [ 'i' ] )
76
- ) ;
77
- } else if ( doc [ name ] [ '$ref' ] ) {
78
- object [ name ] = new DBRef ( doc [ name ] [ '$ref' ] , doc [ name ] [ '$id' ] , doc [ name ] [ '$db' ] ) ;
79
- } else if ( doc [ name ] [ '$minKey' ] ) {
80
- object [ name ] = new MinKey ( ) ;
81
- } else if ( doc [ name ] [ '$maxKey' ] ) {
82
- object [ name ] = new MaxKey ( ) ;
83
- } else if ( doc [ name ] [ '$code' ] ) {
84
- object [ name ] = new Code ( doc [ name ] [ '$code' ] , doc [ name ] [ '$scope' ] || { } ) ;
85
- } else if ( doc [ name ] != null && typeof doc [ name ] === 'object' ) {
86
- object [ name ] = translate ( doc [ name ] , { } ) ;
87
- }
88
- }
89
-
90
- return object ;
91
- }
92
-
93
- // Iterate over all the results
94
- scenarios . documents . forEach ( function ( doc ) {
95
- if ( doc . skip ) return ;
96
- // Create a buffer containing the payload
97
- const expectedData = Buffer . from ( doc . encoded , 'hex' ) ;
98
- // Get the expectedDocument
99
- const expectedDocument = translate ( doc . document , { } ) ;
100
- // Serialize to buffer
101
- const buffer = BSON . serialize ( expectedDocument ) ;
102
- // Validate the output
103
- expect ( expectedData . toString ( 'hex' ) ) . to . equal ( buffer . toString ( 'hex' ) ) ;
104
- // Attempt to deserialize
105
- const object = BSON . deserialize ( buffer , { promoteLongs : false } ) ;
106
- // // Validate the object
107
- expect ( JSON . stringify ( expectedDocument ) ) . to . deep . equal ( JSON . stringify ( object ) ) ;
108
- } ) ;
109
-
110
- done ( ) ;
111
- } ) ;
112
31
} ) ;
0 commit comments