mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-25 11:05:25 +00:00
fix: fix the contact tests
This commit is contained in:
parent
39c532240c
commit
e159e4ad52
@ -129,12 +129,12 @@ object ConfigurationMessageUtilities {
|
|||||||
}
|
}
|
||||||
val contactInfo = Contact(
|
val contactInfo = Contact(
|
||||||
id = contact.sessionID,
|
id = contact.sessionID,
|
||||||
name = contact.name,
|
name = contact.name.orEmpty(),
|
||||||
nickname = contact.nickname,
|
nickname = contact.nickname.orEmpty(),
|
||||||
blocked = settings.isBlocked,
|
blocked = settings.isBlocked,
|
||||||
approved = settings.isApproved,
|
approved = settings.isApproved,
|
||||||
approvedMe = settings.hasApprovedMe(),
|
approvedMe = settings.hasApprovedMe(),
|
||||||
profilePicture = userPic
|
profilePicture = userPic ?: UserPic.DEFAULT
|
||||||
)
|
)
|
||||||
contactConfig.set(contactInfo)
|
contactConfig.set(contactInfo)
|
||||||
}
|
}
|
||||||
|
@ -60,12 +60,12 @@ class InstrumentedTests {
|
|||||||
// Should be an uninitialized contact apart from ID
|
// Should be an uninitialized contact apart from ID
|
||||||
val c = contacts.getOrConstruct(definitelyRealId)
|
val c = contacts.getOrConstruct(definitelyRealId)
|
||||||
assertEquals(definitelyRealId, c.id)
|
assertEquals(definitelyRealId, c.id)
|
||||||
assertNull(c.name)
|
assertTrue(c.name.isEmpty())
|
||||||
assertNull(c.nickname)
|
assertTrue(c.nickname.isEmpty())
|
||||||
assertFalse(c.approved)
|
assertFalse(c.approved)
|
||||||
assertFalse(c.approvedMe)
|
assertFalse(c.approvedMe)
|
||||||
assertFalse(c.blocked)
|
assertFalse(c.blocked)
|
||||||
assertNull(c.profilePicture)
|
assertEquals(UserPic.DEFAULT, c.profilePicture)
|
||||||
|
|
||||||
assertFalse(contacts.needsPush())
|
assertFalse(contacts.needsPush())
|
||||||
assertFalse(contacts.needsDump())
|
assertFalse(contacts.needsDump())
|
||||||
@ -84,7 +84,7 @@ class InstrumentedTests {
|
|||||||
assertTrue(cSaved.approved)
|
assertTrue(cSaved.approved)
|
||||||
assertTrue(cSaved.approvedMe)
|
assertTrue(cSaved.approvedMe)
|
||||||
assertFalse(cSaved.blocked)
|
assertFalse(cSaved.blocked)
|
||||||
assertNull(cSaved.profilePicture)
|
assertEquals(UserPic.DEFAULT, cSaved.profilePicture)
|
||||||
|
|
||||||
val push1 = contacts.push()
|
val push1 = contacts.push()
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ class InstrumentedTests {
|
|||||||
assertEquals(definitelyRealId, contactList[0].id)
|
assertEquals(definitelyRealId, contactList[0].id)
|
||||||
assertEquals(anotherId, contactList[1].id)
|
assertEquals(anotherId, contactList[1].id)
|
||||||
assertEquals("Joey", contactList[0].nickname)
|
assertEquals("Joey", contactList[0].nickname)
|
||||||
assertNull(contactList[1].nickname)
|
assertEquals("", contactList[1].nickname)
|
||||||
|
|
||||||
contacts.erase(definitelyRealId)
|
contacts.erase(definitelyRealId)
|
||||||
|
|
||||||
@ -126,7 +126,7 @@ class InstrumentedTests {
|
|||||||
nickname = "Nickname 3",
|
nickname = "Nickname 3",
|
||||||
approved = true,
|
approved = true,
|
||||||
blocked = true,
|
blocked = true,
|
||||||
profilePicture = UserPic("http://example.com/huge.bmp", "qwerty".encodeToByteArray())
|
profilePicture = UserPic("http://example.com/huge.bmp", "qwertyuio01234567890123456789012".encodeToByteArray())
|
||||||
)
|
)
|
||||||
contacts2.set(third)
|
contacts2.set(third)
|
||||||
assertTrue(contacts.needsPush())
|
assertTrue(contacts.needsPush())
|
||||||
@ -177,19 +177,19 @@ class InstrumentedTests {
|
|||||||
assertEquals(0, seqNo)
|
assertEquals(0, seqNo)
|
||||||
|
|
||||||
// This should also be unset:
|
// This should also be unset:
|
||||||
assertNull(userProfile.getPic())
|
assertEquals(UserPic.DEFAULT, userProfile.getPic())
|
||||||
|
|
||||||
// Now let's go set a profile name and picture:
|
// Now let's go set a profile name and picture:
|
||||||
// not sending keylen like c api so cutting off the NOTSECRET in key for testing purposes
|
// not sending keylen like c api so cutting off the NOTSECRET in key for testing purposes
|
||||||
userProfile.setName("Kallie")
|
userProfile.setName("Kallie")
|
||||||
val newUserPic = UserPic("http://example.org/omg-pic-123.bmp", "secret".encodeToByteArray())
|
val newUserPic = UserPic("http://example.org/omg-pic-123.bmp", "secret78901234567890123456789012".encodeToByteArray())
|
||||||
userProfile.setPic(newUserPic)
|
userProfile.setPic(newUserPic)
|
||||||
|
|
||||||
// Retrieve them just to make sure they set properly:
|
// Retrieve them just to make sure they set properly:
|
||||||
assertEquals("Kallie", userProfile.getName())
|
assertEquals("Kallie", userProfile.getName())
|
||||||
val pic = userProfile.getPic()
|
val pic = userProfile.getPic()
|
||||||
assertEquals("http://example.org/omg-pic-123.bmp", pic?.url)
|
assertEquals("http://example.org/omg-pic-123.bmp", pic.url)
|
||||||
assertEquals("secret", pic?.key?.decodeToString())
|
assertEquals("secret78901234567890123456789012", pic.key.decodeToString())
|
||||||
|
|
||||||
// Since we've made changes, we should need to push new config to the swarm, *and* should need
|
// Since we've made changes, we should need to push new config to the swarm, *and* should need
|
||||||
// to dump the updated state:
|
// to dump the updated state:
|
||||||
@ -205,7 +205,7 @@ class InstrumentedTests {
|
|||||||
"1:&" + "d"+
|
"1:&" + "d"+
|
||||||
"1:n" + "6:Kallie"+
|
"1:n" + "6:Kallie"+
|
||||||
"1:p" + "34:http://example.org/omg-pic-123.bmp"+
|
"1:p" + "34:http://example.org/omg-pic-123.bmp"+
|
||||||
"1:q" + "6:secret"+
|
"1:q" + "32:secret78901234567890123456789012"+
|
||||||
"e"+
|
"e"+
|
||||||
"1:<" + "l"+
|
"1:<" + "l"+
|
||||||
"l" + "i0e" + "32:").encodeToByteArray() + expHash0 + ("de" + "e" +
|
"l" + "i0e" + "32:").encodeToByteArray() + expHash0 + ("de" + "e" +
|
||||||
@ -218,12 +218,13 @@ class InstrumentedTests {
|
|||||||
"e").encodeToByteArray()
|
"e").encodeToByteArray()
|
||||||
|
|
||||||
val expectedPush1Encrypted = Hex.fromStringCondensed(
|
val expectedPush1Encrypted = Hex.fromStringCondensed(
|
||||||
"a2952190dcb9797bc48e48f6dc7b3254d004bde9091cfc9ec3433cbc5939a3726deb04f58a546d7d79e6f8" +
|
"877c8e0f5d33f5fffa5a4e162785a9a89918e95de1c4b925201f1f5c29d9ee4f8c36e2b278fce1e6" +
|
||||||
"0ea185d43bf93278398556304998ae882304075c77f15c67f9914c4d10005a661f29ff7a79e0a9de7f2172" +
|
"b9d999689dd86ff8e79e0a04004fa54d24da89bc2604cb1df8c1356da8f14710543ecec44f2d57fc" +
|
||||||
"5ba3b5a6c19eaa3797671b8fa4008d62e9af2744629cbb46664c4d8048e2867f66ed9254120371bdb24e95" +
|
"56ea8b7e73d119c69d755f4d513d5d069f02396b8ec0cbed894169836f57ca4b782ce705895c593b" +
|
||||||
"b2d92341fa3b1f695046113a768ceb7522269f937ead5591bfa8a5eeee3010474002f2db9de043f0f0d1cf" +
|
"4230d50c175d44a08045388d3f4160bacb617b9ae8de3ebc8d9024245cd09ce102627cab2acf1b91" +
|
||||||
"b1066a03e7b5d6cfb70a8f84a20cd2df5a510cd3d175708015a52dd4a105886d916db0005dbea5706e5a5d" +
|
"26159211359606611ca5814de320d1a7099a65c99b0eebbefb92a115f5efa6b9132809300ac010c6" +
|
||||||
"c37ffd0a0ca2824b524da2e2ad181a48bb38e21ed9abe136014a4ee1e472cb2f53102db2a46afa9d68"
|
"857cfbd62af71b0fa97eccec75cb95e67edf40b35fdb9cad125a6976693ab085c6bba96a2e51826e" +
|
||||||
|
"81e16b9ec1232af5680f2ced55310486"
|
||||||
)
|
)
|
||||||
|
|
||||||
assertEquals(1, newSeqNo)
|
assertEquals(1, newSeqNo)
|
||||||
@ -257,7 +258,7 @@ class InstrumentedTests {
|
|||||||
|
|
||||||
userProfile.setName("Raz")
|
userProfile.setName("Raz")
|
||||||
newConf.setName("Nibbler")
|
newConf.setName("Nibbler")
|
||||||
newConf.setPic(UserPic("http://new.example.com/pic", "qwertyuio".encodeToByteArray()))
|
newConf.setPic(UserPic("http://new.example.com/pic", "qwertyuio01234567890123456789012".encodeToByteArray()))
|
||||||
|
|
||||||
val conf = userProfile.push()
|
val conf = userProfile.push()
|
||||||
val conf2 = newConf.push()
|
val conf2 = newConf.push()
|
||||||
@ -283,7 +284,7 @@ class InstrumentedTests {
|
|||||||
val newSeqMerge = newConf.push()
|
val newSeqMerge = newConf.push()
|
||||||
|
|
||||||
assertEquals("Nibbler", newConf.getName())
|
assertEquals("Nibbler", newConf.getName())
|
||||||
assertEquals(3, newSeqMerge.seqNo)
|
assertEquals(4, newSeqMerge.seqNo)
|
||||||
|
|
||||||
// userProfile device polls and merges
|
// userProfile device polls and merges
|
||||||
userProfile.merge(arrayOf(newSeqMerge.config))
|
userProfile.merge(arrayOf(newSeqMerge.config))
|
||||||
@ -291,7 +292,7 @@ class InstrumentedTests {
|
|||||||
|
|
||||||
val userConfigMerge = userProfile.push()
|
val userConfigMerge = userProfile.push()
|
||||||
|
|
||||||
assertEquals(3, userConfigMerge.seqNo)
|
assertEquals(4, userConfigMerge.seqNo)
|
||||||
|
|
||||||
assertEquals("Nibbler", newConf.getName())
|
assertEquals("Nibbler", newConf.getName())
|
||||||
assertEquals("Nibbler", userProfile.getName())
|
assertEquals("Nibbler", userProfile.getName())
|
||||||
@ -357,12 +358,12 @@ class InstrumentedTests {
|
|||||||
fun test_open_group_urls() {
|
fun test_open_group_urls() {
|
||||||
val (base1, room1, pk1) = Conversation.Community.parseFullUrl(
|
val (base1, room1, pk1) = Conversation.Community.parseFullUrl(
|
||||||
"https://example.com/" +
|
"https://example.com/" +
|
||||||
"SomeRoom?public_key=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
|
"someroom?public_key=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
|
||||||
)!!
|
)!!
|
||||||
|
|
||||||
val (base2, room2, pk2) = Conversation.Community.parseFullUrl(
|
val (base2, room2, pk2) = Conversation.Community.parseFullUrl(
|
||||||
"HTTPS://EXAMPLE.COM/" +
|
"HTTPS://EXAMPLE.COM/" +
|
||||||
"sOMErOOM?public_key=0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
|
"someroom?public_key=0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
|
||||||
)!!
|
)!!
|
||||||
|
|
||||||
val (base3, room3, pk3) = Conversation.Community.parseFullUrl(
|
val (base3, room3, pk3) = Conversation.Community.parseFullUrl(
|
||||||
@ -395,22 +396,22 @@ class InstrumentedTests {
|
|||||||
)!!
|
)!!
|
||||||
|
|
||||||
assertEquals("https://example.com", base1)
|
assertEquals("https://example.com", base1)
|
||||||
|
assertEquals("http://example.com", base4)
|
||||||
assertEquals(base1, base2)
|
assertEquals(base1, base2)
|
||||||
assertEquals(base1, base3)
|
assertEquals(base1, base3)
|
||||||
assertNotEquals(base1, base4)
|
assertNotEquals(base1, base4)
|
||||||
assertEquals(base4, "http://example.com")
|
|
||||||
assertEquals(base1, base5)
|
assertEquals(base1, base5)
|
||||||
assertEquals(base4, base6)
|
assertEquals(base4, base6)
|
||||||
assertEquals(base4, base7)
|
assertEquals(base4, base7)
|
||||||
assertEquals(base4, base8)
|
assertEquals(base4, base8)
|
||||||
assertEquals(room1, "someroom")
|
assertEquals("someroom", room1)
|
||||||
assertEquals(room2, "someroom")
|
assertEquals("someroom", room2)
|
||||||
assertEquals(room3, "someroom")
|
assertEquals("someroom", room3)
|
||||||
assertEquals(room4, "someroom")
|
assertEquals("someroom", room4)
|
||||||
assertEquals(room5, "someroom")
|
assertEquals("someroom", room5)
|
||||||
assertEquals(room6, "someroom")
|
assertEquals("someroom", room6)
|
||||||
assertEquals(room7, "someroom")
|
assertEquals("someroom", room7)
|
||||||
assertEquals(room8, "someroom")
|
assertEquals("someroom", room8)
|
||||||
assertEquals(Hex.toStringCondensed(pk1), "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
|
assertEquals(Hex.toStringCondensed(pk1), "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
|
||||||
assertEquals(Hex.toStringCondensed(pk2), "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
|
assertEquals(Hex.toStringCondensed(pk2), "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
|
||||||
assertEquals(Hex.toStringCondensed(pk3), "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
|
assertEquals(Hex.toStringCondensed(pk3), "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
|
||||||
@ -454,7 +455,7 @@ class InstrumentedTests {
|
|||||||
|
|
||||||
val openGroupPubKey = Hex.fromStringCondensed("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
|
val openGroupPubKey = Hex.fromStringCondensed("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
|
||||||
|
|
||||||
val og = convos.getOrConstructOpenGroup("http://Example.ORG:5678", "SudokuRoom", openGroupPubKey)
|
val og = convos.getOrConstructCommunity("http://Example.ORG:5678", "SudokuRoom", openGroupPubKey)
|
||||||
|
|
||||||
assertEquals("http://example.org:5678", og.baseUrl) // Note: lower-case
|
assertEquals("http://example.org:5678", og.baseUrl) // Note: lower-case
|
||||||
assertEquals("sudokuroom", og.room) // Note: lower-case
|
assertEquals("sudokuroom", og.room) // Note: lower-case
|
||||||
@ -485,7 +486,7 @@ class InstrumentedTests {
|
|||||||
assertEquals(definitelyRealId, x1.sessionId)
|
assertEquals(definitelyRealId, x1.sessionId)
|
||||||
assertEquals(false, x1.unread)
|
assertEquals(false, x1.unread)
|
||||||
|
|
||||||
val x2 = convos2.getOpenGroup("http://EXAMPLE.org:5678", "sudokuRoom", openGroupPubKey)!!
|
val x2 = convos2.getCommunity("http://EXAMPLE.org:5678", "sudokuRoom")!!
|
||||||
assertEquals("http://example.org:5678", x2.baseUrl)
|
assertEquals("http://example.org:5678", x2.baseUrl)
|
||||||
assertEquals("sudokuroom", x2.room)
|
assertEquals("sudokuroom", x2.room)
|
||||||
assertEquals(x2.pubKeyHex, Hex.toStringCondensed(openGroupPubKey))
|
assertEquals(x2.pubKeyHex, Hex.toStringCondensed(openGroupPubKey))
|
||||||
@ -519,7 +520,7 @@ class InstrumentedTests {
|
|||||||
seen.clear()
|
seen.clear()
|
||||||
assertEquals(4, conv.size())
|
assertEquals(4, conv.size())
|
||||||
assertEquals(2, conv.sizeOneToOnes())
|
assertEquals(2, conv.sizeOneToOnes())
|
||||||
assertEquals(1, conv.sizeOpenGroups())
|
assertEquals(1, conv.sizeCommunities())
|
||||||
assertEquals(1, conv.sizeLegacyClosedGroups())
|
assertEquals(1, conv.sizeLegacyClosedGroups())
|
||||||
assertFalse(conv.empty())
|
assertFalse(conv.empty())
|
||||||
val allConvos = conv.all()
|
val allConvos = conv.all()
|
||||||
@ -548,9 +549,9 @@ class InstrumentedTests {
|
|||||||
assertEquals("051111111111111111111111111111111111111111111111111111111111111111",
|
assertEquals("051111111111111111111111111111111111111111111111111111111111111111",
|
||||||
convos.allOneToOnes().map(Conversation.OneToOne::sessionId).first()
|
convos.allOneToOnes().map(Conversation.OneToOne::sessionId).first()
|
||||||
)
|
)
|
||||||
assertEquals(1, convos.allOpenGroups().size)
|
assertEquals(1, convos.allCommunities().size)
|
||||||
assertEquals("http://example.org:5678",
|
assertEquals("http://example.org:5678",
|
||||||
convos.allOpenGroups().map(Conversation.Community::baseUrl).first()
|
convos.allCommunities().map(Conversation.Community::baseUrl).first()
|
||||||
)
|
)
|
||||||
assertEquals(1, convos.allLegacyClosedGroups().size)
|
assertEquals(1, convos.allLegacyClosedGroups().size)
|
||||||
assertEquals("05cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
assertEquals("05cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
||||||
|
@ -20,13 +20,11 @@ namespace util {
|
|||||||
return st;
|
return st;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject serialize_user_pic(JNIEnv *env, std::optional<session::config::profile_pic> pic) {
|
jobject serialize_user_pic(JNIEnv *env, session::config::profile_pic pic) {
|
||||||
if (!pic) return nullptr;
|
|
||||||
|
|
||||||
jclass returnObjectClass = env->FindClass("network/loki/messenger/libsession_util/util/UserPic");
|
jclass returnObjectClass = env->FindClass("network/loki/messenger/libsession_util/util/UserPic");
|
||||||
jmethodID constructor = env->GetMethodID(returnObjectClass, "<init>", "(Ljava/lang/String;[B)V");
|
jmethodID constructor = env->GetMethodID(returnObjectClass, "<init>", "(Ljava/lang/String;[B)V");
|
||||||
jstring url = env->NewStringUTF(pic->url.data());
|
jstring url = env->NewStringUTF(pic.url.data());
|
||||||
jbyteArray byteArray = util::bytes_from_ustring(env, pic->key);
|
jbyteArray byteArray = util::bytes_from_ustring(env, pic.key);
|
||||||
return env->NewObject(returnObjectClass, constructor, url, byteArray);
|
return env->NewObject(returnObjectClass, constructor, url, byteArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
namespace util {
|
namespace util {
|
||||||
jbyteArray bytes_from_ustring(JNIEnv* env, session::ustring_view from_str);
|
jbyteArray bytes_from_ustring(JNIEnv* env, session::ustring_view from_str);
|
||||||
session::ustring ustring_from_bytes(JNIEnv* env, jbyteArray byteArray);
|
session::ustring ustring_from_bytes(JNIEnv* env, jbyteArray byteArray);
|
||||||
jobject serialize_user_pic(JNIEnv *env, std::optional<session::config::profile_pic> pic);
|
jobject serialize_user_pic(JNIEnv *env, session::config::profile_pic pic);
|
||||||
std::pair<jstring, jbyteArray> deserialize_user_pic(JNIEnv *env, jobject user_pic);
|
std::pair<jstring, jbyteArray> deserialize_user_pic(JNIEnv *env, jobject user_pic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ class UserProfile(pointer: Long) : ConfigBase(pointer) {
|
|||||||
|
|
||||||
external fun setName(newName: String)
|
external fun setName(newName: String)
|
||||||
external fun getName(): String?
|
external fun getName(): String?
|
||||||
external fun getPic(): UserPic?
|
external fun getPic(): UserPic
|
||||||
external fun setPic(userPic: UserPic)
|
external fun setPic(userPic: UserPic)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,10 +2,10 @@ package network.loki.messenger.libsession_util.util
|
|||||||
|
|
||||||
data class Contact(
|
data class Contact(
|
||||||
val id: String,
|
val id: String,
|
||||||
var name: String? = null,
|
var name: String = "",
|
||||||
var nickname: String? = null,
|
var nickname: String = "",
|
||||||
var approved: Boolean = false,
|
var approved: Boolean = false,
|
||||||
var approvedMe: Boolean = false,
|
var approvedMe: Boolean = false,
|
||||||
var blocked: Boolean = false,
|
var blocked: Boolean = false,
|
||||||
var profilePicture: UserPic? = null
|
var profilePicture: UserPic = UserPic.DEFAULT
|
||||||
)
|
)
|
@ -22,6 +22,9 @@ data class ConfigWithSeqNo(val config: ByteArray, val seqNo: Long) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
data class UserPic(val url: String, val key: ByteArray) {
|
data class UserPic(val url: String, val key: ByteArray) {
|
||||||
|
companion object {
|
||||||
|
val DEFAULT = UserPic("", byteArrayOf())
|
||||||
|
}
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
if (javaClass != other?.javaClass) return false
|
if (javaClass != other?.javaClass) return false
|
||||||
|
Loading…
Reference in New Issue
Block a user