diff options
author | Eric Wong <e@80x24.org> | 2021-04-24 09:28:42 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-04-24 16:10:00 -0400 |
commit | 7ed233d847467ef2a963bf3f6dd25b1ee1cb1b1e (patch) | |
tree | c6f0e38a0f26350dc40fd77b2cf410fbf7cbbd47 /t/uri_imap.t | |
parent | 81ed86d5f250adcb407b7278eec37c7ce1975e05 (diff) | |
download | public-inbox-7ed233d847467ef2a963bf3f6dd25b1ee1cb1b1e.tar.gz |
URIimap: support ->uidvalidity and ->iuid
These will be useful for keyword synchronization, and perhaps importing a single IMAP message with ->iuid.
Diffstat (limited to 't/uri_imap.t')
-rw-r--r-- | t/uri_imap.t | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/t/uri_imap.t b/t/uri_imap.t index f7c78665..e2aadf84 100644 --- a/t/uri_imap.t +++ b/t/uri_imap.t @@ -54,6 +54,7 @@ is(PublicInbox::URIimap->new('imaps://0:993/')->canonical->as_string, $uri = PublicInbox::URIimap->new('imap://NSA:Hunter2@0/INBOX'); is($uri->user, 'NSA'); is($uri->password, 'Hunter2'); +is($uri->uidvalidity, undef, 'no UIDVALIDITY'); $uri = PublicInbox::URIimap->new('imap://0/%'); is($uri->mailbox, '%', "RFC 2192 '%' supported"); @@ -61,6 +62,35 @@ $uri = PublicInbox::URIimap->new('imap://0/%25'); $uri = PublicInbox::URIimap->new('imap://0/*'); is($uri->mailbox, '*', "RFC 2192 '*' supported"); -# TODO: support UIDVALIDITY and other params +$uri = PublicInbox::URIimap->new('imap://0/mmm;UIDVALIDITY=1'); +is($uri->mailbox, 'mmm', 'mailbox works with UIDVALIDITY'); +is($uri->uidvalidity, 1, 'single-digit UIDVALIDITY'); +$uri = PublicInbox::URIimap->new('imap://0/mmm;UIDVALIDITY=21'); +is($uri->uidvalidity, 21, 'multi-digit UIDVALIDITY'); +$uri = PublicInbox::URIimap->new('imap://0/mmm;UIDVALIDITY=bogus'); +is($uri->uidvalidity, undef, 'bogus UIDVALIDITY'); +is($uri->uidvalidity(2), 2, 'iuid set'); +is($$uri, 'imap://0/mmm;UIDVALIDITY=2', 'bogus uidvalidity replaced'); +is($uri->uidvalidity(13), 13, 'iuid set'); +is($$uri, 'imap://0/mmm;UIDVALIDITY=13', 'valid uidvalidity replaced'); + +$uri = PublicInbox::URIimap->new('imap://0/mmm'); +is($uri->uidvalidity(2), 2, 'iuid set'); +is($$uri, 'imap://0/mmm;UIDVALIDITY=2', 'uidvalidity appended'); +is($uri->iuid, undef, 'no iuid'); + +$uri = PublicInbox::URIimap->new('imap://0/mmm/;uid=8'); +is($uri->mailbox, 'mmm', 'mailbox works with iuid'); +is($uri->iuid, 8, 'iuid extracted'); +is($uri->iuid(9), 9, 'iuid set'); +is($$uri, 'imap://0/mmm/;UID=9', 'correct iuid when stringified'); +is($uri->uidvalidity(1), 1, 'set uidvalidity with iuid'); +is($$uri, 'imap://0/mmm;UIDVALIDITY=1/;UID=9', + 'uidvalidity added with iuid'); +is($uri->uidvalidity(4), 4, 'set uidvalidity with iuid'); +is($$uri, 'imap://0/mmm;UIDVALIDITY=4/;UID=9', + 'uidvalidity replaced with iuid'); +is($uri->iuid(3), 3, 'iuid set with uidvalidity'); +is($$uri, 'imap://0/mmm;UIDVALIDITY=4/;UID=3', 'iuid replaced properly'); done_testing; |