Skip to content

Commit 6bbb42f

Browse files
authored
Merge pull request #1593 from dcrewi/feature/test-html-exports
add test for html exports
2 parents ad2dc80 + 919e685 commit 6bbb42f

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

app/src/androidTest/java/com/beemdevelopment/aegis/BackupExportTest.java

+33-2
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,20 @@
6161
import org.junit.rules.RuleChain;
6262
import org.junit.rules.TestRule;
6363
import org.junit.runner.RunWith;
64+
import org.xmlpull.v1.XmlPullParser;
65+
import org.xmlpull.v1.XmlPullParserException;
66+
import org.xmlpull.v1.XmlPullParserFactory;
6467

6568
import java.io.File;
6669
import java.io.FileInputStream;
6770
import java.io.IOException;
6871
import java.io.InputStream;
72+
import java.io.InputStreamReader;
73+
import java.io.Reader;
74+
import java.nio.charset.StandardCharsets;
6975
import java.util.Collection;
7076
import java.util.List;
77+
import java.util.Locale;
7178

7279
import javax.crypto.Cipher;
7380
import javax.crypto.SecretKey;
@@ -183,7 +190,9 @@ public void testPlainVaultExportHtml() {
183190
onView(withText(R.string.export_format_html)).inRoot(RootMatchers.isPlatformPopup()).perform(click());
184191
onView(withId(android.R.id.button1)).perform(click());
185192
onView(withId(R.id.checkbox_accept)).perform(click());
186-
doExport();
193+
File file = doExport();
194+
195+
checkHtmlExport(file);
187196
}
188197

189198
@Test
@@ -196,7 +205,9 @@ public void testEncryptedVaultExportHtml() {
196205
onView(withText(R.string.export_format_html)).inRoot(RootMatchers.isPlatformPopup()).perform(click());
197206
onView(withId(android.R.id.button1)).perform(click());
198207
onView(withId(R.id.checkbox_accept)).perform(click());
199-
doExport();
208+
File file = doExport();
209+
210+
checkHtmlExport(file);
200211
}
201212

202213
@Test
@@ -380,6 +391,26 @@ private void readTxtExport(File file) {
380391
checkReadEntries(entries);
381392
}
382393

394+
private void checkHtmlExport(File file) {
395+
try (InputStream inStream = new FileInputStream(file)) {
396+
Reader inReader = new InputStreamReader(inStream, StandardCharsets.UTF_8);
397+
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
398+
XmlPullParser parser = factory.newPullParser();
399+
parser.setInput(inReader);
400+
while (parser.getEventType() != XmlPullParser.START_TAG) {
401+
parser.next();
402+
}
403+
if (!parser.getName().toLowerCase(Locale.ROOT).equals("html")) {
404+
throw new RuntimeException("not an html document!");
405+
}
406+
while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
407+
parser.next();
408+
}
409+
} catch (IOException | XmlPullParserException e) {
410+
throw new RuntimeException("Unable to read html export file", e);
411+
}
412+
}
413+
383414
private void checkReadEntries(Collection<VaultEntry> entries) {
384415
List<VaultEntry> vectors = VaultEntries.get();
385416
assertEquals(vectors.size(), entries.size());

0 commit comments

Comments
 (0)