From 962e570e9191c06cff4d0a5e3877f31723642afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Thu, 26 Jan 2017 22:55:37 +0100 Subject: [PATCH] Better handling of User ID corner cases --- .../keychain/pgp/SplitUserIdTest.java | 63 ++++++++++++++++--- extern/openpgp-api-lib | 2 +- 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/pgp/SplitUserIdTest.java b/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/pgp/SplitUserIdTest.java index 4975d3c6f..3eb474c1d 100644 --- a/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/pgp/SplitUserIdTest.java +++ b/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/pgp/SplitUserIdTest.java @@ -31,59 +31,108 @@ import org.sufficientlysecure.keychain.WorkaroundBuildConfig; @Config(constants = WorkaroundBuildConfig.class, sdk = 23, manifest = "src/main/AndroidManifest.xml") public class SplitUserIdTest { + @Test + public void splitCompleteUserIdShouldReturnEmpty() throws Exception { + OpenPgpUtils.UserId info = KeyRing.splitUserId(""); + Assert.assertNull(info.name); + Assert.assertNull(info.email); + Assert.assertNull(info.comment); + } + @Test public void splitCompleteUserIdShouldReturnAll3Components() throws Exception { OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann (this is a comment) "); Assert.assertEquals("Max Mustermann", info.name); - Assert.assertEquals("this is a comment", info.comment); Assert.assertEquals("max@example.com", info.email); + Assert.assertEquals("this is a comment", info.comment); } @Test public void splitUserIdWithAllButCommentShouldReturnNameAndEmail() throws Exception { OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann "); Assert.assertEquals("Max Mustermann", info.name); - Assert.assertNull(info.comment); Assert.assertEquals("max@example.com", info.email); + Assert.assertNull(info.comment); } @Test public void splitUserIdWithAllButEmailShouldReturnNameAndComment() throws Exception { OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann (this is a comment)"); Assert.assertEquals("Max Mustermann", info.name); - Assert.assertEquals("this is a comment", info.comment); Assert.assertNull(info.email); + Assert.assertEquals("this is a comment", info.comment); } @Test public void splitUserIdWithCommentAndEmailShouldReturnCommentAndEmail() throws Exception { OpenPgpUtils.UserId info = KeyRing.splitUserId(" (this is a comment) "); Assert.assertNull(info.name); - Assert.assertEquals("this is a comment", info.comment); Assert.assertEquals("max@example.com", info.email); + Assert.assertEquals("this is a comment", info.comment); } @Test public void splitUserIdWithEmailShouldReturnEmail() throws Exception { OpenPgpUtils.UserId info = KeyRing.splitUserId("max@example.com"); Assert.assertNull(info.name); - Assert.assertNull(info.comment); Assert.assertEquals("max@example.com", info.email); + Assert.assertNull(info.comment); + } + + @Test + public void splitUserIdWithQuotedEmailShouldReturnEmail() throws Exception { + OpenPgpUtils.UserId info = KeyRing.splitUserId("\"max@example.com\""); + Assert.assertNull(info.name); + Assert.assertEquals("max@example.com", info.email); + Assert.assertNull(info.comment); + } + + @Test + public void splitUserIdWithEmailBracketsShouldReturnEmail() throws Exception { + OpenPgpUtils.UserId info = KeyRing.splitUserId(""); + Assert.assertNull(info.name); + Assert.assertEquals("max@example.com", info.email); + Assert.assertNull(info.comment); + } + + @Test + public void splitUserIdWithEmailAsNameShouldReturnEmail() throws Exception { + OpenPgpUtils.UserId info = KeyRing.splitUserId("max@example.com "); + Assert.assertNull(info.name); + Assert.assertEquals("max@example.com", info.email); + Assert.assertNull(info.comment); + } + + @Test + public void splitUserIdWithQuotedEmailAsNameShouldReturnEmail() throws Exception { + OpenPgpUtils.UserId info = KeyRing.splitUserId("\"max@example.com\" "); + Assert.assertNull(info.name); + Assert.assertEquals("max@example.com", info.email); + Assert.assertNull(info.comment); + } + + @Test + public void splitUserIdWithEmailAndEmailLookingNameShouldReturnEmailAndName() throws Exception { + OpenPgpUtils.UserId info = KeyRing.splitUserId("Name@LooksLike.Email "); + Assert.assertEquals("Name@LooksLike.Email", info.name); + Assert.assertEquals("max@example.com", info.email); + Assert.assertNull(info.comment); } @Test public void splitUserIdWithNameShouldReturnName() throws Exception { OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann"); Assert.assertEquals("Max Mustermann", info.name); - Assert.assertNull(info.comment); Assert.assertNull(info.email); + Assert.assertNull(info.comment); } @Test public void splitUserIdWithCommentShouldReturnComment() throws Exception { OpenPgpUtils.UserId info = KeyRing.splitUserId(" (this is a comment)"); Assert.assertNull(info.name); - Assert.assertEquals("this is a comment", info.comment); Assert.assertNull(info.email); + Assert.assertEquals("this is a comment", info.comment); } + } \ No newline at end of file diff --git a/extern/openpgp-api-lib b/extern/openpgp-api-lib index 4ae9313a4..f953ca8cd 160000 --- a/extern/openpgp-api-lib +++ b/extern/openpgp-api-lib @@ -1 +1 @@ -Subproject commit 4ae9313a4f449c004d5a6e03e3753d1cd956fe25 +Subproject commit f953ca8cdb7fbab0f8877589d9578d74005f8d1f