Skip to content

Commit a7f2378

Browse files
committed
fix double witness bug
1 parent 86651cd commit a7f2378

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed

sdk/src/androidTest/java/network/xyo/client/witness/LocationWitnessTest.kt

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,17 @@ import androidx.test.ext.junit.rules.ActivityScenarioRule
77
import androidx.test.rule.GrantPermissionRule
88
import kotlinx.coroutines.CoroutineScope
99
import kotlinx.coroutines.Dispatchers
10+
import kotlinx.coroutines.ExperimentalCoroutinesApi
1011
import kotlinx.coroutines.launch
12+
import kotlinx.coroutines.runBlocking
13+
import network.xyo.client.account.Account
14+
import network.xyo.client.lib.TestConstants
15+
import network.xyo.client.lib.XyoSerializable
1116
import network.xyo.client.witness.location.info.LocationActivity
1217
import network.xyo.client.witness.location.info.XyoLocationPayload
1318
import network.xyo.client.witness.location.info.XyoLocationPayloadRaw
1419
import network.xyo.client.witness.location.info.XyoLocationWitness
20+
import org.junit.Before
1521
import org.junit.Rule
1622
import org.junit.Test
1723
import org.junit.jupiter.api.assertInstanceOf
@@ -25,24 +31,41 @@ class LocationWitnessTest {
2531
@get:Rule
2632
val activityRule = ActivityScenarioRule(LocationActivity::class.java)
2733

34+
lateinit var appContext: Context
35+
36+
@Before
37+
fun useContext() {
38+
this.appContext = ApplicationProvider.getApplicationContext()
39+
}
40+
2841
@Test
2942
fun testObserve() {
30-
// Get the application context
31-
val context = ApplicationProvider.getApplicationContext<Context>()
32-
3343
CoroutineScope(Dispatchers.Main).launch {
3444
val witness = XyoLocationWitness()
35-
val locationPayload = witness.observe(context)?.first()
45+
val locationPayload = witness.observe(appContext)?.first()
3646

3747
assertInstanceOf<XyoLocationPayload>(locationPayload)
3848
assert(locationPayload.schema == XyoLocationPayload.schema)
3949
assert(locationPayload.currentLocation !== null)
4050
assert(locationPayload.currentLocation?.coords?.latitude !== null)
4151
assert(locationPayload.currentLocation?.coords?.longitude !== null)
4252

43-
val locationRawPayload = witness.observe(context)?.get(1)
53+
val locationRawPayload = witness.observe(appContext)?.get(1)
4454
assertInstanceOf<XyoLocationPayloadRaw>(locationRawPayload)
4555
assert(locationRawPayload.schema == XyoLocationPayloadRaw.schema)
4656
}
4757
}
58+
59+
@OptIn(ExperimentalCoroutinesApi::class)
60+
@Test
61+
fun testInsidePanel() {
62+
runBlocking {
63+
val panel = XyoPanel(appContext, Account.random(), arrayListOf(Pair("${TestConstants.nodeUrlBeta}/Archivist", null)), listOf(XyoLocationWitness()))
64+
val result = panel.reportAsyncQuery()
65+
result.payloads?.forEach{ payload ->
66+
val hash = XyoSerializable.sha256String(payload)
67+
assert(result.bw.payload_hashes.contains(hash))
68+
}
69+
}
70+
}
4871
}

sdk/src/main/java/network/xyo/client/witness/XyoPanel.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import network.xyo.client.account.model.AccountInstance
88
import network.xyo.client.archivist.wrapper.ArchivistWrapper
99
import network.xyo.client.boundwitness.XyoBoundWitnessBuilder
1010
import network.xyo.client.boundwitness.XyoBoundWitnessJson
11+
import network.xyo.client.lib.XyoSerializable
1112
import network.xyo.client.node.client.NodeClient
1213
import network.xyo.client.node.client.PostQueryResult
1314
import network.xyo.client.payload.XyoPayload
@@ -60,8 +61,7 @@ class XyoPanel(
6061
}
6162
}
6263

63-
private suspend fun generateBoundWitnessJson(): XyoBoundWitnessJson {
64-
val payloads = generatePayloads()
64+
private suspend fun generateBoundWitnessJson(payloads: List<XyoPayload>): XyoBoundWitnessJson {
6565
return XyoBoundWitnessBuilder(context)
6666
.payloads(payloads)
6767
.signer(account)
@@ -81,8 +81,8 @@ class XyoPanel(
8181
@kotlinx.coroutines.ExperimentalCoroutinesApi
8282
suspend fun reportAsyncQuery(adhocWitnesses: List<XyoWitness<XyoPayload>> = emptyList()): XyoPanelReportQueryResult {
8383
if (nodes == null) resolveNodes()
84-
val bw = generateBoundWitnessJson()
8584
val payloads = generatePayloads(adhocWitnesses)
85+
val bw = generateBoundWitnessJson(payloads)
8686
val results = mutableListOf<PostQueryResult>()
8787

8888
if (nodes.isNullOrEmpty()) {

0 commit comments

Comments
 (0)