mirror of
https://github.com/revanced/revanced-api.git
synced 2025-04-30 06:34:36 +02:00
test: Add initial test for token
This commit is contained in:
parent
1dba4923c8
commit
673efc8038
@ -53,6 +53,7 @@ dependencies {
|
|||||||
implementation(libs.picocli)
|
implementation(libs.picocli)
|
||||||
implementation(libs.kotlinx.datetime)
|
implementation(libs.kotlinx.datetime)
|
||||||
|
|
||||||
|
testImplementation(libs.mockk)
|
||||||
testImplementation(libs.ktor.server.tests)
|
testImplementation(libs.ktor.server.tests)
|
||||||
testImplementation(libs.kotlin.test.junit)
|
testImplementation(libs.kotlin.test.junit)
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ ktor = "2.3.7"
|
|||||||
ktoml = "0.5.1"
|
ktoml = "0.5.1"
|
||||||
picocli = "4.7.3"
|
picocli = "4.7.3"
|
||||||
datetime = "0.5.0"
|
datetime = "0.5.0"
|
||||||
|
mockk = "1.13.9"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
ktor-client-core = { module = "io.ktor:ktor-client-core" }
|
ktor-client-core = { module = "io.ktor:ktor-client-core" }
|
||||||
@ -41,6 +42,7 @@ ktoml-core = { module = "com.akuleshov7:ktoml-core", version.ref = "ktoml" }
|
|||||||
ktoml-file = { module = "com.akuleshov7:ktoml-file", version.ref = "ktoml" }
|
ktoml-file = { module = "com.akuleshov7:ktoml-file", version.ref = "ktoml" }
|
||||||
picocli = { module = "info.picocli:picocli", version.ref = "picocli" }
|
picocli = { module = "info.picocli:picocli", version.ref = "picocli" }
|
||||||
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "datetime" }
|
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "datetime" }
|
||||||
|
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
|
||||||
|
|
||||||
[plugins]
|
[plugins]
|
||||||
serilization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
|
serilization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
|
||||||
|
@ -29,14 +29,14 @@ val globalModule = module {
|
|||||||
Dotenv.load()
|
Dotenv.load()
|
||||||
}
|
}
|
||||||
single {
|
single {
|
||||||
val configFilePath = get<Dotenv>().get("CONFIG_FILE_PATH")!!
|
val configFilePath = get<Dotenv>()["CONFIG_FILE_PATH"]
|
||||||
Toml.decodeFromStream<APIConfiguration>(File(configFilePath).inputStream())
|
Toml.decodeFromStream<APIConfiguration>(File(configFilePath).inputStream())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val gitHubBackendModule = module {
|
val gitHubBackendModule = module {
|
||||||
single {
|
single {
|
||||||
val token = get<Dotenv>().get("GITHUB_TOKEN")
|
val token = get<Dotenv>()["GITHUB_TOKEN"]
|
||||||
GitHubBackend(token)
|
GitHubBackend(token)
|
||||||
} bind Backend::class
|
} bind Backend::class
|
||||||
}
|
}
|
||||||
@ -46,9 +46,9 @@ val databaseModule = module {
|
|||||||
val dotenv = get<Dotenv>()
|
val dotenv = get<Dotenv>()
|
||||||
|
|
||||||
Database.connect(
|
Database.connect(
|
||||||
url = dotenv.get("DB_URL"),
|
url = dotenv["DB_URL"],
|
||||||
user = dotenv.get("DB_USER"),
|
user = dotenv["DB_USER"],
|
||||||
password = dotenv.get("DB_PASSWORD"),
|
password = dotenv["DB_PASSWORD"],
|
||||||
driver = "org.h2.Driver"
|
driver = "org.h2.Driver"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -61,12 +61,12 @@ val authModule = module {
|
|||||||
single {
|
single {
|
||||||
val dotenv = get<Dotenv>()
|
val dotenv = get<Dotenv>()
|
||||||
|
|
||||||
val jwtSecret = dotenv.get("JWT_SECRET")!!
|
val jwtSecret = dotenv["JWT_SECRET"]
|
||||||
val issuer = dotenv.get("JWT_ISSUER")!!
|
val issuer = dotenv["JWT_ISSUER"]
|
||||||
val validityInMin = dotenv.get("JWT_VALIDITY_IN_MIN")!!.toInt()
|
val validityInMin = dotenv["JWT_VALIDITY_IN_MIN"].toInt()
|
||||||
|
|
||||||
val basicUsername = dotenv.get("BASIC_USERNAME")!!
|
val basicUsername = dotenv["BASIC_USERNAME"]
|
||||||
val basicPassword = dotenv.get("BASIC_PASSWORD")!!
|
val basicPassword = dotenv["BASIC_PASSWORD"]
|
||||||
|
|
||||||
AuthService(issuer, validityInMin, jwtSecret, basicUsername, basicPassword)
|
AuthService(issuer, validityInMin, jwtSecret, basicUsername, basicPassword)
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,57 @@
|
|||||||
package app.revanced
|
package app.revanced
|
||||||
|
|
||||||
import app.revanced.api.modules.configureRouting
|
import app.revanced.api.modules.*
|
||||||
|
import app.revanced.api.schema.APIConfiguration
|
||||||
|
import com.akuleshov7.ktoml.Toml
|
||||||
|
import io.github.cdimascio.dotenv.Dotenv
|
||||||
import io.ktor.client.request.*
|
import io.ktor.client.request.*
|
||||||
import io.ktor.client.statement.*
|
import io.ktor.client.statement.*
|
||||||
import io.ktor.http.*
|
import io.ktor.http.*
|
||||||
import io.ktor.server.testing.*
|
import io.ktor.server.testing.*
|
||||||
|
import io.ktor.util.*
|
||||||
|
import io.mockk.every
|
||||||
|
import io.mockk.mockk
|
||||||
|
import kotlinx.serialization.encodeToString
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
class ApplicationTest {
|
class ApplicationTest {
|
||||||
@Test
|
@Test
|
||||||
fun testRoot() = testApplication {
|
fun `successfully create a token`() = testApplication {
|
||||||
|
val apiConfigurationFile = kotlin.io.path.createTempFile().toFile().apply {
|
||||||
|
Toml.encodeToString(
|
||||||
|
APIConfiguration(
|
||||||
|
organization = "ReVanced",
|
||||||
|
patchesRepository = "",
|
||||||
|
integrationsRepositoryNames = setOf(),
|
||||||
|
contributorsRepositoryNames = setOf()
|
||||||
|
)
|
||||||
|
).let(::writeText)
|
||||||
|
|
||||||
|
deleteOnExit()
|
||||||
|
}
|
||||||
|
|
||||||
|
val dotenv = mockk<Dotenv>()
|
||||||
|
every { dotenv[any()] } returns "ReVanced"
|
||||||
|
every { dotenv["JWT_VALIDITY_IN_MIN"] } returns "5"
|
||||||
|
every { dotenv["CONFIG_FILE_PATH"] } returns apiConfigurationFile.absolutePath
|
||||||
|
|
||||||
application {
|
application {
|
||||||
|
configureDependencies()
|
||||||
|
configureHTTP()
|
||||||
|
configureSerialization()
|
||||||
|
configureSecurity()
|
||||||
configureRouting()
|
configureRouting()
|
||||||
}
|
}
|
||||||
client.get("/").apply {
|
|
||||||
assertEquals(HttpStatusCode.OK, status)
|
val token = client.get("/v1/token") {
|
||||||
assertEquals("Hello World!", bodyAsText())
|
headers {
|
||||||
|
append(
|
||||||
|
HttpHeaders.Authorization,
|
||||||
|
"Basic ${"${dotenv["BASIC_USERNAME"]}:${dotenv["BASIC_PASSWORD"]}".encodeBase64()}"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
}.bodyAsText()
|
||||||
|
|
||||||
|
assert(token.isNotEmpty())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user