Repository navigation
Expand file tree
/
Copy pathTestDownloadChemCompProvider.java
More file actions
143 lines (100 loc) · 4.08 KB
/
Copy pathTestDownloadChemCompProvider.java
File metadata and controls
143 lines (100 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojava.nbio.structure;
import org.biojava.nbio.core.util.FlatFileCache;
import org.biojava.nbio.structure.io.mmcif.DownloadChemCompProvider;
import org.biojava.nbio.structure.io.mmcif.model.ChemComp;
import org.junit.Test;
import static org.junit.Assert.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.zip.GZIPOutputStream;
public class TestDownloadChemCompProvider {
@Test
public void testProtectedIDs(){
String id = "CON";
DownloadChemCompProvider prov = new DownloadChemCompProvider();
ChemComp cc = prov.getChemComp(id);
assertNotNull(cc);
assertEquals(cc.getId(), id);
}
@Test
public void testRedirectWorks() {
// since August 2017, RCSB is redirecting:
// http://rcsb.org/pdb/files/ligand/HEM.cif ----> http://files.org/ligands/HEM.cif
// see #703
File file = new File(DownloadChemCompProvider.getLocalFileName("HEM"));
file.delete();
DownloadChemCompProvider prov = new DownloadChemCompProvider();
DownloadChemCompProvider.serverBaseUrl = "http://www.rcsb.org/pdb/files/ligand/";
ChemComp cc = prov.getChemComp("HEM");
//System.out.println(file.toString());
assertTrue(file.exists());
// just in case the we did get garbage, let's clean up
file.delete();
// very important: we have a memory cache of files, we need to reset it not to pollute the cache for later tests
FlatFileCache.clear();
assertNotNull(cc);
assertNotNull(cc.getName());
// reset to default URL or otherwise we could affect other tests
DownloadChemCompProvider.serverBaseUrl = DownloadChemCompProvider.DEFAULT_SERVER_URL;
}
@Test
public void testWeDontCacheGarbage() {
// see #703
File file = new File(DownloadChemCompProvider.getLocalFileName("HEM"));
file.delete();
DownloadChemCompProvider prov = new DownloadChemCompProvider();
// a fake URL that should give a 404
DownloadChemCompProvider.serverBaseUrl = "http://www.rcsb.org/non-existent-ligand-url/";
ChemComp cc = prov.getChemComp("HEM");
// we got a 404 back from server so we shouldn't have cached a file
assertTrue(!file.exists());
file.delete();
// very important: we have a memory cache of files, we need to reset it not to pollute the cache for later tests
FlatFileCache.clear();
// we couldn't parse, thus there should be no content
assertNull(cc.getName());
// reset to default URL or otherwise we could affect other tests
DownloadChemCompProvider.serverBaseUrl = DownloadChemCompProvider.DEFAULT_SERVER_URL;
}
@Test
public void testIfWeCachedGarbageWeCanDetectIt() throws IOException {
// see #703
// TODO this test for the moment only asserts that we get an empty chemcomp, since we can't detect bad cached files yet
// very important: we have a memory cache of files, we need to reset it
FlatFileCache.clear();
File file = new File(DownloadChemCompProvider.getLocalFileName("HEM"));
PrintWriter pw = new PrintWriter(new GZIPOutputStream(new FileOutputStream(file)));
pw.println("A lot of garbage");
pw.close();
DownloadChemCompProvider prov = new DownloadChemCompProvider();
ChemComp cc = prov.getChemComp("HEM");
assertTrue(file.exists());
file.delete();
// very important: we have a memory cache of files, we need to reset it not to pollute the cache for later tests
// we've got to reset here before asserting, in case the assertion fails
FlatFileCache.clear();
assertNull(cc.getName());
}
}