@@ -7,6 +7,7 @@ SPDX-License-Identifier: Apache-2.0
7
7
package ccmetadata
8
8
9
9
import (
10
+ "fmt"
10
11
"io/ioutil"
11
12
"os"
12
13
"path/filepath"
@@ -22,11 +23,10 @@ func TestGoodIndexJSON(t *testing.T) {
22
23
cleanupDir (testDir )
23
24
defer cleanupDir (testDir )
24
25
25
- fileName := "myIndex.json"
26
+ fileName := "META-INF/statedb/couchdb/indexes/ myIndex.json"
26
27
fileBytes := []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
27
- metadataType := "META-INF/statedb/couchdb/indexes"
28
28
29
- err := ValidateMetadataFile (fileName , fileBytes , metadataType )
29
+ err := ValidateMetadataFile (fileName , fileBytes )
30
30
assert .NoError (t , err , "Error validating a good index" )
31
31
}
32
32
@@ -35,11 +35,10 @@ func TestBadIndexJSON(t *testing.T) {
35
35
cleanupDir (testDir )
36
36
defer cleanupDir (testDir )
37
37
38
- fileName := "myIndex.json"
38
+ fileName := "META-INF/statedb/couchdb/indexes/ myIndex.json"
39
39
fileBytes := []byte ("invalid json" )
40
- metadataType := "META-INF/statedb/couchdb/indexes"
41
40
42
- err := ValidateMetadataFile (fileName , fileBytes , metadataType )
41
+ err := ValidateMetadataFile (fileName , fileBytes )
43
42
44
43
assert .Error (t , err , "Should have received an InvalidIndexContentError" )
45
44
@@ -55,12 +54,10 @@ func TestIndexWrongLocation(t *testing.T) {
55
54
cleanupDir (testDir )
56
55
defer cleanupDir (testDir )
57
56
58
- fileName := "myIndex.json"
57
+ fileName := "META-INF/statedb/couchdb/ myIndex.json"
59
58
fileBytes := []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
60
- // place the index one directory too high
61
- metadataType := "META-INF/statedb/couchdb"
62
59
63
- err := ValidateMetadataFile (fileName , fileBytes , metadataType )
60
+ err := ValidateMetadataFile (fileName , fileBytes )
64
61
assert .Error (t , err , "Should have received an UnhandledDirectoryError" )
65
62
66
63
// Type assertion on UnhandledDirectoryError
@@ -77,9 +74,8 @@ func TestInvalidMetadataType(t *testing.T) {
77
74
78
75
fileName := "myIndex.json"
79
76
fileBytes := []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
80
- metadataType := "Invalid metadata type"
81
77
82
- err := ValidateMetadataFile (fileName , fileBytes , metadataType )
78
+ err := ValidateMetadataFile (fileName , fileBytes )
83
79
assert .Error (t , err , "Should have received an UnhandledDirectoryError" )
84
80
85
81
// Type assertion on UnhandledDirectoryError
@@ -94,14 +90,80 @@ func TestBadMetadataExtension(t *testing.T) {
94
90
95
91
fileName := "myIndex.go"
96
92
fileBytes := []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
97
- metadataType := "META-INF/statedb/couchdb/indexes"
98
93
99
- err := ValidateMetadataFile (fileName , fileBytes , metadataType )
100
- assert .Error (t , err , "Should have received an BadExtensionError" )
94
+ err := ValidateMetadataFile (fileName , fileBytes )
95
+ assert .Error (t , err , "Should have received an error" )
96
+
97
+ }
98
+
99
+ func TestBadFilePaths (t * testing.T ) {
100
+ testDir := filepath .Join (packageTestDir , "BadMetadataExtension" )
101
+ cleanupDir (testDir )
102
+ defer cleanupDir (testDir )
103
+
104
+ // Test bad META-INF
105
+ fileName := "META-INF1/statedb/couchdb/indexes/test1.json"
106
+ fileBytes := []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
107
+
108
+ err := ValidateMetadataFile (fileName , fileBytes )
109
+ fmt .Println (err )
110
+ assert .Error (t , err , "Should have received an error for bad META-INF directory" )
111
+
112
+ // Test bad path length
113
+ fileName = "META-INF/statedb/test1.json"
114
+ fileBytes = []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
115
+
116
+ err = ValidateMetadataFile (fileName , fileBytes )
117
+ fmt .Println (err )
118
+ assert .Error (t , err , "Should have received an error for bad length" )
119
+
120
+ // Test invalid database name
121
+ fileName = "META-INF/statedb/goleveldb/indexes/test1.json"
122
+ fileBytes = []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
123
+
124
+ err = ValidateMetadataFile (fileName , fileBytes )
125
+ fmt .Println (err )
126
+ assert .Error (t , err , "Should have received an error for invalid database" )
127
+
128
+ // Test invalid indexes directory name
129
+ fileName = "META-INF/statedb/couchdb/index/test1.json"
130
+ fileBytes = []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
131
+
132
+ err = ValidateMetadataFile (fileName , fileBytes )
133
+ fmt .Println (err )
134
+ assert .Error (t , err , "Should have received an error for invalid indexes directory" )
135
+
136
+ // Test invalid collections directory name
137
+ fileName = "META-INF/statedb/couchdb/collection/testcoll/indexes/test1.json"
138
+ fileBytes = []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
139
+
140
+ err = ValidateMetadataFile (fileName , fileBytes )
141
+ fmt .Println (err )
142
+ assert .Error (t , err , "Should have received an error for invalid collections directory" )
143
+
144
+ // Test valid collections name
145
+ fileName = "META-INF/statedb/couchdb/collections/testcoll/indexes/test1.json"
146
+ fileBytes = []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
147
+
148
+ err = ValidateMetadataFile (fileName , fileBytes )
149
+ fmt .Println (err )
150
+ assert .NoError (t , err , "Error should not have been thrown for a valid collection name" )
151
+
152
+ // Test invalid collections name
153
+ fileName = "META-INF/statedb/couchdb/collections/#testcoll/indexes/test1.json"
154
+ fileBytes = []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
155
+
156
+ err = ValidateMetadataFile (fileName , fileBytes )
157
+ fmt .Println (err )
158
+ assert .Error (t , err , "Should have received an error for an invalid collection name" )
159
+
160
+ // Test invalid collections name
161
+ fileName = "META-INF/statedb/couchdb/collections/testcoll/indexes/test1.txt"
162
+ fileBytes = []byte (`{"index":{"fields":["data.docType","data.owner"]},"name":"indexOwner","type":"json"}` )
101
163
102
- // Type assertion on BadExtensionError
103
- _ , ok := err .( * BadExtensionError )
104
- assert .True (t , ok , "Should have received an BadExtensionError " )
164
+ err = ValidateMetadataFile ( fileName , fileBytes )
165
+ fmt . Println ( err )
166
+ assert .Error (t , err , "Should have received an error for an invalid file name " )
105
167
106
168
}
107
169
0 commit comments