Merge pull request #2013 from open-keychain/user-id-parsing
Better handling of User ID corner cases
This commit is contained in:
@@ -54,7 +54,7 @@ import java.io.IOException;
|
|||||||
*/
|
*/
|
||||||
public class KeychainDatabase extends SQLiteOpenHelper {
|
public class KeychainDatabase extends SQLiteOpenHelper {
|
||||||
private static final String DATABASE_NAME = "openkeychain.db";
|
private static final String DATABASE_NAME = "openkeychain.db";
|
||||||
private static final int DATABASE_VERSION = 17;
|
private static final int DATABASE_VERSION = 18;
|
||||||
static Boolean apgHack = false;
|
static Boolean apgHack = false;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
@@ -318,6 +318,10 @@ public class KeychainDatabase extends SQLiteOpenHelper {
|
|||||||
// no consolidate necessary
|
// no consolidate necessary
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
case 16:
|
||||||
|
// splitUserId changed: Execute consolidate for new parsing of name, email
|
||||||
|
case 17:
|
||||||
|
// splitUserId changed: Execute consolidate for new parsing of name, email
|
||||||
}
|
}
|
||||||
|
|
||||||
// always do consolidate after upgrade
|
// always do consolidate after upgrade
|
||||||
|
|||||||
@@ -31,59 +31,108 @@ import org.sufficientlysecure.keychain.WorkaroundBuildConfig;
|
|||||||
@Config(constants = WorkaroundBuildConfig.class, sdk = 23, manifest = "src/main/AndroidManifest.xml")
|
@Config(constants = WorkaroundBuildConfig.class, sdk = 23, manifest = "src/main/AndroidManifest.xml")
|
||||||
public class SplitUserIdTest {
|
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
|
@Test
|
||||||
public void splitCompleteUserIdShouldReturnAll3Components() throws Exception {
|
public void splitCompleteUserIdShouldReturnAll3Components() throws Exception {
|
||||||
OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann (this is a comment) <max@example.com>");
|
OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann (this is a comment) <max@example.com>");
|
||||||
Assert.assertEquals("Max Mustermann", info.name);
|
Assert.assertEquals("Max Mustermann", info.name);
|
||||||
Assert.assertEquals("this is a comment", info.comment);
|
|
||||||
Assert.assertEquals("max@example.com", info.email);
|
Assert.assertEquals("max@example.com", info.email);
|
||||||
|
Assert.assertEquals("this is a comment", info.comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitUserIdWithAllButCommentShouldReturnNameAndEmail() throws Exception {
|
public void splitUserIdWithAllButCommentShouldReturnNameAndEmail() throws Exception {
|
||||||
OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann <max@example.com>");
|
OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann <max@example.com>");
|
||||||
Assert.assertEquals("Max Mustermann", info.name);
|
Assert.assertEquals("Max Mustermann", info.name);
|
||||||
Assert.assertNull(info.comment);
|
|
||||||
Assert.assertEquals("max@example.com", info.email);
|
Assert.assertEquals("max@example.com", info.email);
|
||||||
|
Assert.assertNull(info.comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitUserIdWithAllButEmailShouldReturnNameAndComment() throws Exception {
|
public void splitUserIdWithAllButEmailShouldReturnNameAndComment() throws Exception {
|
||||||
OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann (this is a comment)");
|
OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann (this is a comment)");
|
||||||
Assert.assertEquals("Max Mustermann", info.name);
|
Assert.assertEquals("Max Mustermann", info.name);
|
||||||
Assert.assertEquals("this is a comment", info.comment);
|
|
||||||
Assert.assertNull(info.email);
|
Assert.assertNull(info.email);
|
||||||
|
Assert.assertEquals("this is a comment", info.comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitUserIdWithCommentAndEmailShouldReturnCommentAndEmail() throws Exception {
|
public void splitUserIdWithCommentAndEmailShouldReturnCommentAndEmail() throws Exception {
|
||||||
OpenPgpUtils.UserId info = KeyRing.splitUserId(" (this is a comment) <max@example.com>");
|
OpenPgpUtils.UserId info = KeyRing.splitUserId(" (this is a comment) <max@example.com>");
|
||||||
Assert.assertNull(info.name);
|
Assert.assertNull(info.name);
|
||||||
Assert.assertEquals("this is a comment", info.comment);
|
|
||||||
Assert.assertEquals("max@example.com", info.email);
|
Assert.assertEquals("max@example.com", info.email);
|
||||||
|
Assert.assertEquals("this is a comment", info.comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitUserIdWithEmailShouldReturnEmail() throws Exception {
|
public void splitUserIdWithEmailShouldReturnEmail() throws Exception {
|
||||||
OpenPgpUtils.UserId info = KeyRing.splitUserId("max@example.com");
|
OpenPgpUtils.UserId info = KeyRing.splitUserId("max@example.com");
|
||||||
Assert.assertNull(info.name);
|
Assert.assertNull(info.name);
|
||||||
Assert.assertNull(info.comment);
|
|
||||||
Assert.assertEquals("max@example.com", info.email);
|
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("<max@example.com>");
|
||||||
|
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 <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\" <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 <max@example.com>");
|
||||||
|
Assert.assertEquals("Name@LooksLike.Email", info.name);
|
||||||
|
Assert.assertEquals("max@example.com", info.email);
|
||||||
|
Assert.assertNull(info.comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitUserIdWithNameShouldReturnName() throws Exception {
|
public void splitUserIdWithNameShouldReturnName() throws Exception {
|
||||||
OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann");
|
OpenPgpUtils.UserId info = KeyRing.splitUserId("Max Mustermann");
|
||||||
Assert.assertEquals("Max Mustermann", info.name);
|
Assert.assertEquals("Max Mustermann", info.name);
|
||||||
Assert.assertNull(info.comment);
|
|
||||||
Assert.assertNull(info.email);
|
Assert.assertNull(info.email);
|
||||||
|
Assert.assertNull(info.comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void splitUserIdWithCommentShouldReturnComment() throws Exception {
|
public void splitUserIdWithCommentShouldReturnComment() throws Exception {
|
||||||
OpenPgpUtils.UserId info = KeyRing.splitUserId(" (this is a comment)");
|
OpenPgpUtils.UserId info = KeyRing.splitUserId(" (this is a comment)");
|
||||||
Assert.assertNull(info.name);
|
Assert.assertNull(info.name);
|
||||||
Assert.assertEquals("this is a comment", info.comment);
|
|
||||||
Assert.assertNull(info.email);
|
Assert.assertNull(info.email);
|
||||||
|
Assert.assertEquals("this is a comment", info.comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
2
extern/openpgp-api-lib
vendored
2
extern/openpgp-api-lib
vendored
Submodule extern/openpgp-api-lib updated: 4ae9313a4f...f953ca8cdb
Reference in New Issue
Block a user