Fix GenericAccount::to_email_identifier not actually working

The GVariant type "*" only matches a single data type, not many, and
the sense of the test to check serialised ids was wrong anyway. As a
reuslt, this method probably never worked. Add a unit test.
This commit is contained in:
Michael Gratton 2019-10-30 14:12:52 +11:00
parent 543c753186
commit bf4f5c4780
5 changed files with 106 additions and 6 deletions

View file

@ -0,0 +1,93 @@
/*
* Copyright 2019 Michael Gratton <mike@vee.net>
*
* This software is licensed under the GNU Lesser General Public License
* (version 2.1 or later). See the COPYING file in this distribution.
*/
public class Geary.ImapEngine.GenericAccountTest : TestCase {
internal class TestAccount : GenericAccount {
public TestAccount(AccountInformation config,
ImapDB.Account local,
Endpoint incoming_remote,
Endpoint outgoing_remote) {
base(config, local, incoming_remote, outgoing_remote);
}
protected override MinimalFolder new_folder(ImapDB.Folder local_folder) {
return new MinimalFolder(
this,
local_folder,
NONE
);
}
}
private GLib.File? tmp_dir = null;
private Geary.AccountInformation? config = null;
private ImapDB.Account? local_account = null;
public GenericAccountTest() {
base("Geary.ImapEngine.GenericAccountTest");
add_test("to_email_identifier", to_email_identifier);
}
public override void set_up() throws GLib.Error {
this.tmp_dir = GLib.File.new_for_path(
GLib.DirUtils.make_tmp(
"geary-imap-engine-generic-account-test-XXXXXX"
)
);
this.config = new Geary.AccountInformation(
"test",
ServiceProvider.OTHER,
new MockCredentialsMediator(),
new Geary.RFC822.MailboxAddress(null, "test@example.com")
);
this.local_account = new ImapDB.Account(
config,
this.tmp_dir,
GLib.File.new_for_path(_SOURCE_ROOT_DIR).get_child("sql")
);
this.local_account.open_async.begin(
null,
(obj, ret) => { async_complete(ret); }
);
this.local_account.open_async.end(async_result());
}
public override void tear_down() throws GLib.Error {
this.local_account.close_async.begin(
null,
(obj, ret) => { async_complete(ret); }
);
this.local_account.close_async.end(async_result());
this.local_account = null;
this.config = null;
delete_file(this.tmp_dir);
this.tmp_dir = null;
}
public void to_email_identifier() throws GLib.Error {
TestAccount test_article = new TestAccount(
this.config,
this.local_account,
new Endpoint(new GLib.NetworkAddress("localhost", 143), NONE, 0),
new Endpoint(new GLib.NetworkAddress("localhost", 25), NONE, 0)
);
assert_non_null(
test_article.to_email_identifier(new GLib.Variant("(yxx)", 'i', 1, 2))
);
}
}

View file

@ -47,6 +47,7 @@ geary_test_engine_sources = [
'engine/imap-db/imap-db-email-identifier-test.vala',
'engine/imap-db/imap-db-folder-test.vala',
'engine/imap-engine/account-processor-test.vala',
'engine/imap-engine/imap-engine-generic-account-test.vala',
'engine/mime-content-type-test.vala',
'engine/outbox/outbox-email-identifier-test.vala',
'engine/rfc822-mailbox-address-test.vala',

View file

@ -61,6 +61,7 @@ int main(string[] args) {
engine.add_suite(new Geary.ImapDB.EmailIdentifierTest().get_suite());
engine.add_suite(new Geary.ImapDB.FolderTest().get_suite());
engine.add_suite(new Geary.ImapEngine.AccountProcessorTest().get_suite());
engine.add_suite(new Geary.ImapEngine.GenericAccountTest().get_suite());
// Depends on ImapDb.Database working correctly
engine.add_suite(new Geary.ContactStoreImplTest().get_suite());