mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-11 18:29:05 +01:00
Replace khttp test library with a fork that is available on maven central
This commit is contained in:
@@ -37,9 +37,9 @@ dependencies {
|
|||||||
testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion"
|
testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion"
|
||||||
testImplementation "org.junit.jupiter:junit-jupiter-params:$junitVersion"
|
testImplementation "org.junit.jupiter:junit-jupiter-params:$junitVersion"
|
||||||
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion"
|
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion"
|
||||||
testImplementation 'io.mockk:mockk:1.10.4'
|
testImplementation 'io.mockk:mockk:1.12.4'
|
||||||
testImplementation 'org.skyscreamer:jsonassert:1.5.0'
|
testImplementation 'org.skyscreamer:jsonassert:1.5.0'
|
||||||
testImplementation 'khttp:khttp:0.1.0'
|
testImplementation "com.squareup.okhttp3:okhttp:4.10.0"
|
||||||
|
|
||||||
kaptTest "com.google.dagger:dagger-compiler:$daggerVersion"
|
kaptTest "com.google.dagger:dagger-compiler:$daggerVersion"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,11 @@ package org.briarproject.briar.headless
|
|||||||
|
|
||||||
import io.javalin.Javalin
|
import io.javalin.Javalin
|
||||||
import io.javalin.core.util.Header.AUTHORIZATION
|
import io.javalin.core.util.Header.AUTHORIZATION
|
||||||
import khttp.responses.Response
|
import okhttp3.MediaType.Companion.toMediaType
|
||||||
|
import okhttp3.OkHttpClient
|
||||||
|
import okhttp3.Request
|
||||||
|
import okhttp3.RequestBody.Companion.toRequestBody
|
||||||
|
import okhttp3.Response
|
||||||
import org.briarproject.bramble.BrambleCoreEagerSingletons
|
import org.briarproject.bramble.BrambleCoreEagerSingletons
|
||||||
import org.briarproject.bramble.api.crypto.CryptoComponent
|
import org.briarproject.bramble.api.crypto.CryptoComponent
|
||||||
import org.briarproject.briar.BriarCoreEagerSingletons
|
import org.briarproject.briar.BriarCoreEagerSingletons
|
||||||
@@ -22,6 +26,7 @@ abstract class IntegrationTest {
|
|||||||
|
|
||||||
private val dataDir = File("tmp")
|
private val dataDir = File("tmp")
|
||||||
|
|
||||||
|
private val client: OkHttpClient = OkHttpClient()
|
||||||
protected lateinit var api: Javalin
|
protected lateinit var api: Javalin
|
||||||
protected lateinit var crypto: CryptoComponent
|
protected lateinit var crypto: CryptoComponent
|
||||||
protected lateinit var testDataCreator: TestDataCreator
|
protected lateinit var testDataCreator: TestDataCreator
|
||||||
@@ -48,34 +53,55 @@ abstract class IntegrationTest {
|
|||||||
dataDir.deleteRecursively()
|
dataDir.deleteRecursively()
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun get(url: String): Response {
|
protected fun get(url: String, authToken: String = token): Response {
|
||||||
return khttp.get(url, getAuthTokenHeader(token))
|
val request: Request = Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.header(AUTHORIZATION, "Bearer $authToken")
|
||||||
|
.build()
|
||||||
|
return client.newCall(request).execute()
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun getWithWrongToken(url: String): Response {
|
protected fun getWithWrongToken(url: String): Response {
|
||||||
return khttp.get(url, getAuthTokenHeader("wrongToken"))
|
return get(url, "wrongToken")
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun post(url: String, data: String): Response {
|
protected fun post(url: String, data: String, authToken: String = token): Response {
|
||||||
return khttp.post(url, getAuthTokenHeader(token), data = data)
|
val json = "application/json; charset=utf-8".toMediaType()
|
||||||
|
val body = data.toRequestBody(json)
|
||||||
|
val request: Request = Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.header(AUTHORIZATION, "Bearer $authToken")
|
||||||
|
.post(body)
|
||||||
|
.build()
|
||||||
|
return client.newCall(request).execute()
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun postWithWrongToken(url: String): Response {
|
protected fun postWithWrongToken(url: String): Response {
|
||||||
return khttp.post(url, getAuthTokenHeader("wrongToken"), data = "")
|
return post(url, data = "", authToken = "wrongToken")
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun delete(url: String): Response {
|
protected fun delete(url: String, authToken: String = token): Response {
|
||||||
return khttp.delete(url, getAuthTokenHeader(token))
|
val request: Request = Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.header(AUTHORIZATION, "Bearer $authToken")
|
||||||
|
.delete()
|
||||||
|
.build()
|
||||||
|
return client.newCall(request).execute()
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun delete(url: String, data: String): Response {
|
protected fun delete(url: String, data: String, authToken: String = token): Response {
|
||||||
return khttp.delete(url, getAuthTokenHeader(token), data = data)
|
val json = "application/json; charset=utf-8".toMediaType()
|
||||||
|
val body = data.toRequestBody(json)
|
||||||
|
val request: Request = Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.header(AUTHORIZATION, "Bearer $authToken")
|
||||||
|
.delete(body)
|
||||||
|
.build()
|
||||||
|
return client.newCall(request).execute()
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun deleteWithWrongToken(url: String): Response {
|
protected fun deleteWithWrongToken(url: String): Response {
|
||||||
return khttp.delete(url, getAuthTokenHeader("wrongToken"))
|
return delete(url, authToken = "wrongToken")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getAuthTokenHeader(token: String) = mapOf(Pair(AUTHORIZATION, "Bearer $token"))
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,26 +1,39 @@
|
|||||||
package org.briarproject.briar.headless.contact
|
package org.briarproject.briar.headless.contact
|
||||||
|
|
||||||
|
import okhttp3.Response
|
||||||
import org.briarproject.bramble.api.contact.HandshakeLinkConstants.BASE32_LINK_BYTES
|
import org.briarproject.bramble.api.contact.HandshakeLinkConstants.BASE32_LINK_BYTES
|
||||||
import org.briarproject.briar.headless.IntegrationTest
|
import org.briarproject.briar.headless.IntegrationTest
|
||||||
import org.briarproject.briar.headless.url
|
import org.briarproject.briar.headless.url
|
||||||
import org.briarproject.briar.test.BriarTestUtils.getRealHandshakeLink
|
import org.briarproject.briar.test.BriarTestUtils.getRealHandshakeLink
|
||||||
|
import org.json.JSONArray
|
||||||
|
import org.json.JSONObject
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
import org.junit.jupiter.api.Assertions.assertTrue
|
import org.junit.jupiter.api.Assertions.assertTrue
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
class ContactControllerIntegrationTest : IntegrationTest() {
|
class ContactControllerIntegrationTest : IntegrationTest() {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can only be called once.
|
||||||
|
*/
|
||||||
|
private val Response.jsonArray: JSONArray get() = JSONArray(body?.use { it.string() })
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can only be called once.
|
||||||
|
*/
|
||||||
|
private val Response.jsonObject: JSONObject get() = JSONObject(body?.use { it.string() })
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `returning list of contacts needs authentication token`() {
|
fun `returning list of contacts needs authentication token`() {
|
||||||
val response = getWithWrongToken("$url/contacts")
|
val response = getWithWrongToken("$url/contacts")
|
||||||
assertEquals(401, response.statusCode)
|
assertEquals(401, response.code)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `returns list of contacts`() {
|
fun `returns list of contacts`() {
|
||||||
// retrieve empty list of contacts
|
// retrieve empty list of contacts
|
||||||
var response = get("$url/contacts")
|
var response = get("$url/contacts")
|
||||||
assertEquals(200, response.statusCode)
|
assertEquals(200, response.code)
|
||||||
assertEquals(0, response.jsonArray.length())
|
assertEquals(0, response.jsonArray.length())
|
||||||
|
|
||||||
// add one test contact
|
// add one test contact
|
||||||
@@ -29,9 +42,10 @@ class ContactControllerIntegrationTest : IntegrationTest() {
|
|||||||
|
|
||||||
// retrieve list with one test contact
|
// retrieve list with one test contact
|
||||||
response = get("$url/contacts")
|
response = get("$url/contacts")
|
||||||
assertEquals(200, response.statusCode)
|
assertEquals(200, response.code)
|
||||||
assertEquals(1, response.jsonArray.length())
|
val jsonArray = response.jsonArray
|
||||||
val contact = response.jsonArray.getJSONObject(0)
|
assertEquals(1, jsonArray.length())
|
||||||
|
val contact = jsonArray.getJSONObject(0)
|
||||||
val author = contact.getJSONObject("author")
|
val author = contact.getJSONObject("author")
|
||||||
assertEquals(testContactName, author.getString("name"))
|
assertEquals(testContactName, author.getString("name"))
|
||||||
}
|
}
|
||||||
@@ -39,7 +53,7 @@ class ContactControllerIntegrationTest : IntegrationTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `returns own handshake link`() {
|
fun `returns own handshake link`() {
|
||||||
val response = get("$url/contacts/add/link")
|
val response = get("$url/contacts/add/link")
|
||||||
assertEquals(200, response.statusCode)
|
assertEquals(200, response.code)
|
||||||
val link = response.jsonObject.getString("link")
|
val link = response.jsonObject.getString("link")
|
||||||
assertTrue(link.startsWith("briar://"))
|
assertTrue(link.startsWith("briar://"))
|
||||||
assertEquals(BASE32_LINK_BYTES + 8, link.length)
|
assertEquals(BASE32_LINK_BYTES + 8, link.length)
|
||||||
@@ -48,14 +62,14 @@ class ContactControllerIntegrationTest : IntegrationTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `returning own handshake link needs authentication token`() {
|
fun `returning own handshake link needs authentication token`() {
|
||||||
val response = getWithWrongToken("$url/contacts/add/link")
|
val response = getWithWrongToken("$url/contacts/add/link")
|
||||||
assertEquals(401, response.statusCode)
|
assertEquals(401, response.code)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `returns list of pending contacts`() {
|
fun `returns list of pending contacts`() {
|
||||||
// retrieve empty list of pending contacts
|
// retrieve empty list of pending contacts
|
||||||
var response = get("$url/contacts/add/pending")
|
var response = get("$url/contacts/add/pending")
|
||||||
assertEquals(200, response.statusCode)
|
assertEquals(200, response.code)
|
||||||
assertEquals(0, response.jsonArray.length())
|
assertEquals(0, response.jsonArray.length())
|
||||||
|
|
||||||
// add one pending contact
|
// add one pending contact
|
||||||
@@ -65,37 +79,38 @@ class ContactControllerIntegrationTest : IntegrationTest() {
|
|||||||
"alias": "$alias"
|
"alias": "$alias"
|
||||||
}"""
|
}"""
|
||||||
response = post("$url/contacts/add/pending", json)
|
response = post("$url/contacts/add/pending", json)
|
||||||
assertEquals(200, response.statusCode)
|
assertEquals(200, response.code)
|
||||||
|
|
||||||
// get added contact as only list item
|
// get added contact as only list item
|
||||||
response = get("$url/contacts/add/pending")
|
response = get("$url/contacts/add/pending")
|
||||||
assertEquals(200, response.statusCode)
|
assertEquals(200, response.code)
|
||||||
assertEquals(1, response.jsonArray.length())
|
val jsonArray = response.jsonArray
|
||||||
val jsonObject = response.jsonArray.getJSONObject(0)
|
assertEquals(1, jsonArray.length())
|
||||||
|
val jsonObject = jsonArray.getJSONObject(0)
|
||||||
assertEquals(alias, jsonObject.getJSONObject("pendingContact").getString("alias"))
|
assertEquals(alias, jsonObject.getJSONObject("pendingContact").getString("alias"))
|
||||||
|
|
||||||
// remove pending contact again
|
// remove pending contact again
|
||||||
val idString = jsonObject.getJSONObject("pendingContact").getString("pendingContactId")
|
val idString = jsonObject.getJSONObject("pendingContact").getString("pendingContactId")
|
||||||
val deleteJson = """{"pendingContactId": "$idString"}"""
|
val deleteJson = """{"pendingContactId": "$idString"}"""
|
||||||
response = delete("$url/contacts/add/pending", deleteJson)
|
response = delete("$url/contacts/add/pending", data = deleteJson)
|
||||||
assertEquals(200, response.statusCode)
|
assertEquals(200, response.code)
|
||||||
|
|
||||||
// list of pending contacts should be empty now
|
// list of pending contacts should be empty now
|
||||||
response = get("$url/contacts/add/pending")
|
response = get("$url/contacts/add/pending")
|
||||||
assertEquals(200, response.statusCode)
|
assertEquals(200, response.code)
|
||||||
assertEquals(0, response.jsonArray.length())
|
assertEquals(0, response.jsonArray.length())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `returning list of pending contacts needs authentication token`() {
|
fun `returning list of pending contacts needs authentication token`() {
|
||||||
val response = getWithWrongToken("$url/contacts/add/pending")
|
val response = getWithWrongToken("$url/contacts/add/pending")
|
||||||
assertEquals(401, response.statusCode)
|
assertEquals(401, response.code)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `adding a pending contact needs authentication token`() {
|
fun `adding a pending contact needs authentication token`() {
|
||||||
val response = postWithWrongToken("$url/contacts/add/pending")
|
val response = postWithWrongToken("$url/contacts/add/pending")
|
||||||
assertEquals(401, response.statusCode)
|
assertEquals(401, response.code)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -106,7 +121,7 @@ class ContactControllerIntegrationTest : IntegrationTest() {
|
|||||||
"alias": "$alias"
|
"alias": "$alias"
|
||||||
}"""
|
}"""
|
||||||
val response = post("$url/contacts/add/pending", json)
|
val response = post("$url/contacts/add/pending", json)
|
||||||
assertEquals(400, response.statusCode)
|
assertEquals(400, response.code)
|
||||||
assertEquals("INVALID_LINK", response.jsonObject.getString("error"))
|
assertEquals("INVALID_LINK", response.jsonObject.getString("error"))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,7 +133,7 @@ class ContactControllerIntegrationTest : IntegrationTest() {
|
|||||||
"alias": "$alias"
|
"alias": "$alias"
|
||||||
}"""
|
}"""
|
||||||
val response = post("$url/contacts/add/pending", json)
|
val response = post("$url/contacts/add/pending", json)
|
||||||
assertEquals(400, response.statusCode)
|
assertEquals(400, response.code)
|
||||||
assertEquals("INVALID_PUBLIC_KEY", response.jsonObject.getString("error"))
|
assertEquals("INVALID_PUBLIC_KEY", response.jsonObject.getString("error"))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,36 +145,37 @@ class ContactControllerIntegrationTest : IntegrationTest() {
|
|||||||
"alias": "$alias"
|
"alias": "$alias"
|
||||||
}"""
|
}"""
|
||||||
var response = post("$url/contacts/add/pending", json)
|
var response = post("$url/contacts/add/pending", json)
|
||||||
assertEquals(200, response.statusCode)
|
assertEquals(200, response.code)
|
||||||
|
|
||||||
val pendingContactId = response.jsonObject.getString("pendingContactId")
|
val pendingContactId = response.jsonObject.getString("pendingContactId")
|
||||||
|
|
||||||
response = post("$url/contacts/add/pending", json)
|
response = post("$url/contacts/add/pending", json)
|
||||||
assertEquals(403, response.statusCode)
|
assertEquals(403, response.code)
|
||||||
assertEquals("PENDING_EXISTS", response.jsonObject.getString("error"))
|
val jsonObject = response.jsonObject
|
||||||
assertEquals(pendingContactId, response.jsonObject.getString("pendingContactId"))
|
assertEquals("PENDING_EXISTS", jsonObject.getString("error"))
|
||||||
assertEquals(alias, response.jsonObject.getString("pendingContactAlias"))
|
assertEquals(pendingContactId, jsonObject.getString("pendingContactId"))
|
||||||
|
assertEquals(alias, jsonObject.getString("pendingContactAlias"))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `removing a pending contact needs authentication token`() {
|
fun `removing a pending contact needs authentication token`() {
|
||||||
val response = deleteWithWrongToken("$url/contacts/add/pending")
|
val response = deleteWithWrongToken("$url/contacts/add/pending")
|
||||||
assertEquals(401, response.statusCode)
|
assertEquals(401, response.code)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `deleting a contact needs authentication token`() {
|
fun `deleting a contact needs authentication token`() {
|
||||||
val response = deleteWithWrongToken("$url/contacts/1")
|
val response = deleteWithWrongToken("$url/contacts/1")
|
||||||
assertEquals(401, response.statusCode)
|
assertEquals(401, response.code)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `deleting real and non-existing contact`() {
|
fun `deleting real and non-existing contact`() {
|
||||||
var response = delete("$url/contacts/1")
|
var response = delete("$url/contacts/1")
|
||||||
assertEquals(200, response.statusCode)
|
assertEquals(200, response.code)
|
||||||
|
|
||||||
response = delete("$url/contacts/1")
|
response = delete("$url/contacts/1")
|
||||||
assertEquals(404, response.statusCode)
|
assertEquals(404, response.code)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,22 +16,24 @@ dependencyVerification {
|
|||||||
'com.google.guava:guava:27.1-jre:guava-27.1-jre.jar:4a5aa70cc968a4d137e599ad37553e5cfeed2265e8c193476d7119036c536fe7',
|
'com.google.guava:guava:27.1-jre:guava-27.1-jre.jar:4a5aa70cc968a4d137e599ad37553e5cfeed2265e8c193476d7119036c536fe7',
|
||||||
'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava:listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99',
|
'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava:listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99',
|
||||||
'com.google.j2objc:j2objc-annotations:1.1:j2objc-annotations-1.1.jar:2994a7eb78f2710bd3d3bfb639b2c94e219cedac0d4d084d516e78c16dddecf6',
|
'com.google.j2objc:j2objc-annotations:1.1:j2objc-annotations-1.1.jar:2994a7eb78f2710bd3d3bfb639b2c94e219cedac0d4d084d516e78c16dddecf6',
|
||||||
|
'com.squareup.okhttp3:okhttp:4.10.0:okhttp-4.10.0.jar:7580f14fa1691206e37081ad3f92063b1603b328da0bb316f2fef02e0562e7ec',
|
||||||
|
'com.squareup.okio:okio-jvm:3.0.0:okio-jvm-3.0.0.jar:be64a0cc1f28ea9cd5c970dd7e7557af72c808d738c495b397bf897c9921e907',
|
||||||
|
'com.squareup.okio:okio:3.0.0:okio-metadata-3.0.0.jar:dcbe63ed43b2c90c325e9e6a0863e2e7605980bff5e728c6de1088be5574979e',
|
||||||
'com.squareup:javapoet:1.11.1:javapoet-1.11.1.jar:9cbf2107be499ec6e95afd36b58e3ca122a24166cdd375732e51267d64058e90',
|
'com.squareup:javapoet:1.11.1:javapoet-1.11.1.jar:9cbf2107be499ec6e95afd36b58e3ca122a24166cdd375732e51267d64058e90',
|
||||||
'com.vaadin.external.google:android-json:0.0.20131108.vaadin1:android-json-0.0.20131108.vaadin1.jar:dfb7bae2f404cfe0b72b4d23944698cb716b7665171812a0a4d0f5926c0fac79',
|
'com.vaadin.external.google:android-json:0.0.20131108.vaadin1:android-json-0.0.20131108.vaadin1.jar:dfb7bae2f404cfe0b72b4d23944698cb716b7665171812a0a4d0f5926c0fac79',
|
||||||
'io.javalin:javalin:3.5.0:javalin-3.5.0.jar:6618f99ad4c241eefcaf3a02c85adc52ec346c9710e8eb5a3f1a916e3d7acec4',
|
'io.javalin:javalin:3.5.0:javalin-3.5.0.jar:6618f99ad4c241eefcaf3a02c85adc52ec346c9710e8eb5a3f1a916e3d7acec4',
|
||||||
'io.mockk:mockk-agent-api:1.10.4:mockk-agent-api-1.10.4.jar:8deb59189b48d5870a746f954ca681424040544812c7ae295f3bef87a9499cfe',
|
'io.mockk:mockk-agent-api:1.12.4:mockk-agent-api-1.12.4.jar:6eb3407b1f88c0c0ced9636f82874100786b74b3b06c4354c4d85229779fdec8',
|
||||||
'io.mockk:mockk-agent-common:1.10.4:mockk-agent-common-1.10.4.jar:13b81a3297a3c15ed9f62b838aaede20347018f07c30cad2ca74a4dd99786f8f',
|
'io.mockk:mockk-agent-common:1.12.4:mockk-agent-common-1.12.4.jar:427d071ec7a85f105c152a51a89738d8ee52954130e5c09500837dfbe3549329',
|
||||||
'io.mockk:mockk-agent-jvm:1.10.4:mockk-agent-jvm-1.10.4.jar:51eb22de58c44f140384e61878e8c0da0fcf80c60a139d28ef7b027ea4bc2042',
|
'io.mockk:mockk-agent-jvm:1.12.4:mockk-agent-jvm-1.12.4.jar:840c11f2e0a14d35e229c2b6018273f4623c7f619ebf9701164bb9c2db99c098',
|
||||||
'io.mockk:mockk-common:1.10.4:mockk-common-1.10.4.jar:aaf3cc99442100767dc72776f250113f992facfb43bf6ba9a5282d1c8aaecd00',
|
'io.mockk:mockk-common:1.12.4:mockk-common-1.12.4.jar:16f1ba4738535458cb91fa1a759794f6618a6f9f1ae1d149e79b48cc06ea5e7b',
|
||||||
'io.mockk:mockk-dsl-jvm:1.10.4:mockk-dsl-jvm-1.10.4.jar:2432e2d0dfd31c3cb33e12137b8c712358cb0c4cddbd27b5bd6c55db2068e1a1',
|
'io.mockk:mockk-dsl-jvm:1.12.4:mockk-dsl-jvm-1.12.4.jar:faee4b52def68fa182f89d23c2a45f2246ef88b6b1ba98346aa85f57e5ed630f',
|
||||||
'io.mockk:mockk-dsl:1.10.4:mockk-dsl-1.10.4.jar:b97d750bebfd7da92a020f5417deface710c58802a78a8fff68661f77eaa3037',
|
'io.mockk:mockk-dsl:1.12.4:mockk-dsl-1.12.4.jar:7fc96f9ed5118c915a3890ba2e4090c9b283ae7bdc37ab83885415bdf77650e4',
|
||||||
'io.mockk:mockk:1.10.4:mockk-1.10.4.jar:e26d4eb8c9c0c5ac00acb9bfeedfe0feb10055bf7e80db57539936413ea38f7c',
|
'io.mockk:mockk:1.12.4:mockk-1.12.4.jar:2c34a3690b958a3cf38b82d0f4910dc9992fb078dce6f56d71498293557bf805',
|
||||||
'javax.annotation:jsr250-api:1.0:jsr250-api-1.0.jar:a1a922d0d9b6d183ed3800dfac01d1e1eb159f0e8c6f94736931c1def54a941f',
|
'javax.annotation:jsr250-api:1.0:jsr250-api-1.0.jar:a1a922d0d9b6d183ed3800dfac01d1e1eb159f0e8c6f94736931c1def54a941f',
|
||||||
'javax.inject:javax.inject:1:javax.inject-1.jar:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff',
|
'javax.inject:javax.inject:1:javax.inject-1.jar:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff',
|
||||||
'javax.servlet:javax.servlet-api:3.1.0:javax.servlet-api-3.1.0.jar:af456b2dd41c4e82cf54f3e743bc678973d9fe35bd4d3071fa05c7e5333b8482',
|
'javax.servlet:javax.servlet-api:3.1.0:javax.servlet-api-3.1.0.jar:af456b2dd41c4e82cf54f3e743bc678973d9fe35bd4d3071fa05c7e5333b8482',
|
||||||
'khttp:khttp:0.1.0:khttp-0.1.0.jar:48ab3bd22e461f2c2e74e3446d8f9568e24aab157f61fdc85ded6c0bfbe9a926',
|
'net.bytebuddy:byte-buddy-agent:1.12.6:byte-buddy-agent-1.12.6.jar:9b29421fe4650b75fc3ed53590f914c54f932e334b3506cc00296dff73024183',
|
||||||
'net.bytebuddy:byte-buddy-agent:1.10.14:byte-buddy-agent-1.10.14.jar:30272167eceb1cb68fa84730a12d1abfd1daed6ae0c19fdefee47a9a9a0cfd33',
|
'net.bytebuddy:byte-buddy:1.12.6:byte-buddy-1.12.6.jar:211918dc24f0fdef4335ce8af40ef5616e15e818b962a21146397c7701eb75a7',
|
||||||
'net.bytebuddy:byte-buddy:1.10.14:byte-buddy-1.10.14.jar:0e6b935bfcb3e451d525956acad53ec86ff916d714abdbd32b3d2039771896f8',
|
|
||||||
'net.java.dev.jna:jna:5.6.0:jna-5.6.0.jar:5557e235a8aa2f9766d5dc609d67948f2a8832c2d796cea9ef1d6cbe0b3b7eaf',
|
'net.java.dev.jna:jna:5.6.0:jna-5.6.0.jar:5557e235a8aa2f9766d5dc609d67948f2a8832c2d796cea9ef1d6cbe0b3b7eaf',
|
||||||
'net.ltgt.gradle.incap:incap:0.2:incap-0.2.jar:b625b9806b0f1e4bc7a2e3457119488de3cd57ea20feedd513db070a573a4ffd',
|
'net.ltgt.gradle.incap:incap:0.2:incap-0.2.jar:b625b9806b0f1e4bc7a2e3457119488de3cd57ea20feedd513db070a573a4ffd',
|
||||||
'org.apiguardian:apiguardian-api:1.1.0:apiguardian-api-1.1.0.jar:a9aae9ff8ae3e17a2a18f79175e82b16267c246fbbd3ca9dfbbb290b08dcfdd4',
|
'org.apiguardian:apiguardian-api:1.1.0:apiguardian-api-1.1.0.jar:a9aae9ff8ae3e17a2a18f79175e82b16267c246fbbd3ca9dfbbb290b08dcfdd4',
|
||||||
@@ -57,7 +59,7 @@ dependencyVerification {
|
|||||||
'org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.10:kotlin-compiler-embeddable-1.7.10.jar:470ba8941794f818a34b0a8f387ee27e44268e95a108322d18d9749ae345e22b',
|
'org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.10:kotlin-compiler-embeddable-1.7.10.jar:470ba8941794f818a34b0a8f387ee27e44268e95a108322d18d9749ae345e22b',
|
||||||
'org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.10:kotlin-daemon-embeddable-1.7.10.jar:77c5f3ab1ed653a899e96835937a9daf3a46e496fdfa6915ff6d20b2953619a4',
|
'org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.10:kotlin-daemon-embeddable-1.7.10.jar:77c5f3ab1ed653a899e96835937a9daf3a46e496fdfa6915ff6d20b2953619a4',
|
||||||
'org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.10:kotlin-klib-commonizer-embeddable-1.7.10.jar:1c2550f1e7ec4d1590aacddd7852b90a4cf05de6e66cee31ad747c8dc0834e33',
|
'org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.10:kotlin-klib-commonizer-embeddable-1.7.10.jar:1c2550f1e7ec4d1590aacddd7852b90a4cf05de6e66cee31ad747c8dc0834e33',
|
||||||
'org.jetbrains.kotlin:kotlin-reflect:1.4.20:kotlin-reflect-1.4.20.jar:3b7c82def79fb96c4579d40a47e37dec872f9f8209ee0da3ce828c39dba612e1',
|
'org.jetbrains.kotlin:kotlin-reflect:1.6.0:kotlin-reflect-1.6.0.jar:c6161884209221db7f5ddb031bb480a3c46bb90d5b65d7cc0167b149aaa9c494',
|
||||||
'org.jetbrains.kotlin:kotlin-reflect:1.7.10:kotlin-reflect-1.7.10.jar:187c5e5a588a6ed18c3a41b54df138a5944121bdb396be1c3fa4abee67397955',
|
'org.jetbrains.kotlin:kotlin-reflect:1.7.10:kotlin-reflect-1.7.10.jar:187c5e5a588a6ed18c3a41b54df138a5944121bdb396be1c3fa4abee67397955',
|
||||||
'org.jetbrains.kotlin:kotlin-script-runtime:1.7.10:kotlin-script-runtime-1.7.10.jar:84bfc2aa4eec6768113930cdaef8b5b9f59ac4138fbca3b11300fff4d076950c',
|
'org.jetbrains.kotlin:kotlin-script-runtime:1.7.10:kotlin-script-runtime-1.7.10.jar:84bfc2aa4eec6768113930cdaef8b5b9f59ac4138fbca3b11300fff4d076950c',
|
||||||
'org.jetbrains.kotlin:kotlin-scripting-common:1.7.10:kotlin-scripting-common-1.7.10.jar:c3a346f38a3d6e242f2316c5a7a4a6b526f2cc42b44ebd40654a0f885cbc4940',
|
'org.jetbrains.kotlin:kotlin-scripting-common:1.7.10:kotlin-scripting-common-1.7.10.jar:c3a346f38a3d6e242f2316c5a7a4a6b526f2cc42b44ebd40654a0f885cbc4940',
|
||||||
@@ -69,13 +71,12 @@ dependencyVerification {
|
|||||||
'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10:kotlin-stdlib-jdk8-1.7.10.jar:8aafdd60c94f454c92e5066d266a5ed53ecc63c78f623b3fd9db56fea4032873',
|
'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10:kotlin-stdlib-jdk8-1.7.10.jar:8aafdd60c94f454c92e5066d266a5ed53ecc63c78f623b3fd9db56fea4032873',
|
||||||
'org.jetbrains.kotlin:kotlin-stdlib:1.7.10:kotlin-stdlib-1.7.10.jar:e771fe74250a943e8f6346713201ff1d8cb95c3a5d1a91a22b65a9e04f6a8901',
|
'org.jetbrains.kotlin:kotlin-stdlib:1.7.10:kotlin-stdlib-1.7.10.jar:e771fe74250a943e8f6346713201ff1d8cb95c3a5d1a91a22b65a9e04f6a8901',
|
||||||
'org.jetbrains:annotations:13.0:annotations-13.0.jar:ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478',
|
'org.jetbrains:annotations:13.0:annotations-13.0.jar:ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478',
|
||||||
'org.json:json:20150729:json-20150729.jar:38c21b9c3d6d24919cd15d027d20afab0a019ac9205f7ed9083b32bdd42a2353',
|
|
||||||
'org.junit.jupiter:junit-jupiter-api:5.5.2:junit-jupiter-api-5.5.2.jar:249a2fdbd3931987c0298d00ca08ed248496e0fc11e0463c08c4f82e0cc79b1c',
|
'org.junit.jupiter:junit-jupiter-api:5.5.2:junit-jupiter-api-5.5.2.jar:249a2fdbd3931987c0298d00ca08ed248496e0fc11e0463c08c4f82e0cc79b1c',
|
||||||
'org.junit.jupiter:junit-jupiter-engine:5.5.2:junit-jupiter-engine-5.5.2.jar:6d777da9876e2ef7a0336e8f098f8d74a5a64f810aa3a4a2f5f3b766ce97837b',
|
'org.junit.jupiter:junit-jupiter-engine:5.5.2:junit-jupiter-engine-5.5.2.jar:6d777da9876e2ef7a0336e8f098f8d74a5a64f810aa3a4a2f5f3b766ce97837b',
|
||||||
'org.junit.jupiter:junit-jupiter-params:5.5.2:junit-jupiter-params-5.5.2.jar:fd49c7fd9d0f7f1e5b5f6982254cee79177fa2e76a37fdee0466e64f975567b5',
|
'org.junit.jupiter:junit-jupiter-params:5.5.2:junit-jupiter-params-5.5.2.jar:fd49c7fd9d0f7f1e5b5f6982254cee79177fa2e76a37fdee0466e64f975567b5',
|
||||||
'org.junit.platform:junit-platform-commons:1.5.2:junit-platform-commons-1.5.2.jar:fc44afdfc0f20c85e71a66e7943281aef3bc1e0fd62d2d69a36cb6901e682c10',
|
'org.junit.platform:junit-platform-commons:1.5.2:junit-platform-commons-1.5.2.jar:fc44afdfc0f20c85e71a66e7943281aef3bc1e0fd62d2d69a36cb6901e682c10',
|
||||||
'org.junit.platform:junit-platform-engine:1.5.2:junit-platform-engine-1.5.2.jar:ff20ba4ad8c00ef17baef9c55512f9c02d9a68740f7f1ac01a9a6aa0239931f8',
|
'org.junit.platform:junit-platform-engine:1.5.2:junit-platform-engine-1.5.2.jar:ff20ba4ad8c00ef17baef9c55512f9c02d9a68740f7f1ac01a9a6aa0239931f8',
|
||||||
'org.objenesis:objenesis:3.1:objenesis-3.1.jar:cdb3d038c188de6f46ffd5cd930be2d5e5dba59c53b26437995d534e3db2fb80',
|
'org.objenesis:objenesis:3.2:objenesis-3.2.jar:03d960bd5aef03c653eb000413ada15eb77cdd2b8e4448886edf5692805e35f3',
|
||||||
'org.opentest4j:opentest4j:1.2.0:opentest4j-1.2.0.jar:58812de60898d976fb81ef3b62da05c6604c18fd4a249f5044282479fc286af2',
|
'org.opentest4j:opentest4j:1.2.0:opentest4j-1.2.0.jar:58812de60898d976fb81ef3b62da05c6604c18fd4a249f5044282479fc286af2',
|
||||||
'org.skyscreamer:jsonassert:1.5.0:jsonassert-1.5.0.jar:a310bc79c3f4744e2b2e993702fcebaf3696fec0063643ffdc6b49a8fb03ef39',
|
'org.skyscreamer:jsonassert:1.5.0:jsonassert-1.5.0.jar:a310bc79c3f4744e2b2e993702fcebaf3696fec0063643ffdc6b49a8fb03ef39',
|
||||||
'org.slf4j:slf4j-api:1.7.30:slf4j-api-1.7.30.jar:cdba07964d1bb40a0761485c6b1e8c2f8fd9eb1d19c53928ac0d7f9510105c57',
|
'org.slf4j:slf4j-api:1.7.30:slf4j-api-1.7.30.jar:cdba07964d1bb40a0761485c6b1e8c2f8fd9eb1d19c53928ac0d7f9510105c57',
|
||||||
|
|||||||
Reference in New Issue
Block a user