summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2018-03-02 22:39:21 +0000
committerChris Wilson <chris+github@qwirx.com>2018-03-02 22:48:51 +0000
commit13116fff3d8932eb1939e3b8c04dfdb8f14ecaa0 (patch)
tree1490715e1307bce7a8ba4607aa8817f9e27e05db /test
parentd3da41380064015add8ffc16c91dbfa57cbd954b (diff)
Add test for decrypting previously-encrypted directory fixture
Diffstat (limited to 'test')
-rw-r--r--test/backupstore/testbackupstore.cpp152
-rw-r--r--test/backupstore/testfiles/encrypted.dirbin0 -> 160 bytes
2 files changed, 83 insertions, 69 deletions
diff --git a/test/backupstore/testbackupstore.cpp b/test/backupstore/testbackupstore.cpp
index 6441d66c..891d1461 100644
--- a/test/backupstore/testbackupstore.cpp
+++ b/test/backupstore/testbackupstore.cpp
@@ -274,81 +274,95 @@ bool test_filename_encoding()
SETUP_TEST_BACKUPSTORE();
// test some basics -- encoding and decoding filenames
+
+ // Make some filenames in various ways
+ BackupStoreFilenameClear fn1;
+ fn1.SetClearFilename(std::string("filenameXYZ"));
+ BackupStoreFilenameClear fn2(std::string("filenameXYZ"));
+ BackupStoreFilenameClear fn3(fn1);
+ TEST_THAT(fn1 == fn2);
+ TEST_THAT(fn1 == fn3);
+
+ // Check that it's been encrypted
+ std::string name(fn2.GetEncodedFilename());
+ TEST_THAT(name.find("name") == name.npos);
+
+ // Bung it in a stream, get it out in a Clear filename
{
- // Make some filenames in various ways
- BackupStoreFilenameClear fn1;
- fn1.SetClearFilename(std::string("filenameXYZ"));
- BackupStoreFilenameClear fn2(std::string("filenameXYZ"));
- BackupStoreFilenameClear fn3(fn1);
- TEST_THAT(fn1 == fn2);
- TEST_THAT(fn1 == fn3);
+ CollectInBufferStream stream;
+ fn1.WriteToStream(stream);
+ stream.SetForReading();
+ BackupStoreFilenameClear fn4;
+ fn4.ReadFromStream(stream, IOStream::TimeOutInfinite);
+ TEST_THAT(fn4.GetClearFilename() == "filenameXYZ");
+ TEST_THAT(fn4 == fn1);
+ }
- // Check that it's been encrypted
- std::string name(fn2.GetEncodedFilename());
- TEST_THAT(name.find("name") == name.npos);
+ // Bung it in a stream, get it out in a server non-Clear filename (two of them into the same var)
+ {
+ BackupStoreFilenameClear fno("pinglet dksfnsf jksjdf ");
+ CollectInBufferStream stream;
+ fn1.WriteToStream(stream);
+ fno.WriteToStream(stream);
+ stream.SetForReading();
+ BackupStoreFilename fn5;
+ fn5.ReadFromStream(stream, IOStream::TimeOutInfinite);
+ TEST_THAT(fn5 == fn1);
+ fn5.ReadFromStream(stream, IOStream::TimeOutInfinite);
+ TEST_THAT(fn5 == fno);
+ }
- // Bung it in a stream, get it out in a Clear filename
- {
- CollectInBufferStream stream;
- fn1.WriteToStream(stream);
- stream.SetForReading();
- BackupStoreFilenameClear fn4;
- fn4.ReadFromStream(stream, IOStream::TimeOutInfinite);
- TEST_THAT(fn4.GetClearFilename() == "filenameXYZ");
- TEST_THAT(fn4 == fn1);
- }
+ // Same again with clear strings
+ {
+ BackupStoreFilenameClear fno("pinglet dksfnsf jksjdf ");
+ CollectInBufferStream stream;
+ fn1.WriteToStream(stream);
+ fno.WriteToStream(stream);
+ stream.SetForReading();
+ BackupStoreFilenameClear fn5;
+ fn5.ReadFromStream(stream, IOStream::TimeOutInfinite);
+ TEST_THAT(fn5.GetClearFilename() == "filenameXYZ");
+ fn5.ReadFromStream(stream, IOStream::TimeOutInfinite);
+ TEST_THAT(fn5.GetClearFilename() == "pinglet dksfnsf jksjdf ");
+ }
- // Bung it in a stream, get it out in a server non-Clear filename (two of them into the same var)
- {
- BackupStoreFilenameClear fno("pinglet dksfnsf jksjdf ");
- CollectInBufferStream stream;
- fn1.WriteToStream(stream);
- fno.WriteToStream(stream);
- stream.SetForReading();
- BackupStoreFilename fn5;
- fn5.ReadFromStream(stream, IOStream::TimeOutInfinite);
- TEST_THAT(fn5 == fn1);
- fn5.ReadFromStream(stream, IOStream::TimeOutInfinite);
- TEST_THAT(fn5 == fno);
- }
+ // Test a very big filename
+ {
+ const char *fnr = "01234567890123456789012345678901234567890123456789"
+ "01234567890123456789012345678901234567890123456789"
+ "01234567890123456789012345678901234567890123456789"
+ "01234567890123456789012345678901234567890123456789"
+ "01234567890123456789012345678901234567890123456789"
+ "01234567890123456789012345678901234567890123456789"
+ "01234567890123456789012345678901234567890123456789"
+ "01234567890123456789012345678901234567890123456789";
+ BackupStoreFilenameClear fnLong(fnr);
+ CollectInBufferStream stream;
+ fnLong.WriteToStream(stream);
+ stream.SetForReading();
+ BackupStoreFilenameClear fn9;
+ fn9.ReadFromStream(stream, IOStream::TimeOutInfinite);
+ TEST_THAT(fn9.GetClearFilename() == fnr);
+ TEST_THAT(fn9 == fnLong);
+ }
- // Same again with clear strings
- {
- BackupStoreFilenameClear fno("pinglet dksfnsf jksjdf ");
- CollectInBufferStream stream;
- fn1.WriteToStream(stream);
- fno.WriteToStream(stream);
- stream.SetForReading();
- BackupStoreFilenameClear fn5;
- fn5.ReadFromStream(stream, IOStream::TimeOutInfinite);
- TEST_THAT(fn5.GetClearFilename() == "filenameXYZ");
- fn5.ReadFromStream(stream, IOStream::TimeOutInfinite);
- TEST_THAT(fn5.GetClearFilename() == "pinglet dksfnsf jksjdf ");
- }
-
- // Test a very big filename
- {
- const char *fnr = "01234567890123456789012345678901234567890123456789"
- "01234567890123456789012345678901234567890123456789"
- "01234567890123456789012345678901234567890123456789"
- "01234567890123456789012345678901234567890123456789"
- "01234567890123456789012345678901234567890123456789"
- "01234567890123456789012345678901234567890123456789"
- "01234567890123456789012345678901234567890123456789"
- "01234567890123456789012345678901234567890123456789";
- BackupStoreFilenameClear fnLong(fnr);
- CollectInBufferStream stream;
- fnLong.WriteToStream(stream);
- stream.SetForReading();
- BackupStoreFilenameClear fn9;
- fn9.ReadFromStream(stream, IOStream::TimeOutInfinite);
- TEST_THAT(fn9.GetClearFilename() == fnr);
- TEST_THAT(fn9 == fnLong);
- }
+ // Test a filename which went wrong once
+ {
+ BackupStoreFilenameClear dodgy("content-negotiation.html");
+ }
- // Test a filename which went wrong once
- {
- BackupStoreFilenameClear dodgy("content-negotiation.html");
+ // Test that we can decrypt filenames in a previously-encrypted directory, to detect
+ // regressions of the encryption setup:
+ {
+ FileStream dir_file("testfiles/encrypted.dir");
+ BackupStoreDirectory dir(dir_file);
+ TEST_EQUAL(2, dir.GetNumberOfEntries());
+ BackupStoreDirectory::Entry* en = dir.FindEntryByID(0x2);
+ TEST_THAT(en != NULL);
+ if(en)
+ {
+ BackupStoreFilenameClear clear(en->GetName());
+ TEST_EQUAL("lovely_directory", clear.GetClearFilename());
}
}
diff --git a/test/backupstore/testfiles/encrypted.dir b/test/backupstore/testfiles/encrypted.dir
new file mode 100644
index 00000000..db46feca
--- /dev/null
+++ b/test/backupstore/testfiles/encrypted.dir
Binary files differ