Skip to content

Commit 537327d

Browse files
committed
junit
1 parent fe9e407 commit 537327d

File tree

3 files changed

+110
-7
lines changed

3 files changed

+110
-7
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: GraaLVM Integration Tests
2+
3+
on:
4+
workflow_call:
5+
pull_request:
6+
branches:
7+
- master
8+
paths:
9+
- 'generator/**'
10+
- 'servers/**'
11+
- 'plugins/**'
12+
- 'integration/graalvm/**'
13+
14+
jobs:
15+
graalvm-integration:
16+
timeout-minutes: 20
17+
runs-on: ubuntu-latest
18+
defaults:
19+
run:
20+
working-directory: integration/graalvm
21+
strategy:
22+
matrix:
23+
server: ['ktor-server']
24+
25+
steps:
26+
- name: Checkout Repository
27+
uses: actions/checkout@v3
28+
29+
- name: Validate Gradle wrapper
30+
uses: gradle/wrapper-validation-action@v1
31+
32+
- name: Setup GraalVM
33+
uses: graalvm/setup-graalvm@v1
34+
with:
35+
version: '22.3.1'
36+
java-version: '17'
37+
components: 'native-image'
38+
native-image-job-reports: 'true'
39+
40+
- name: Set up Gradle cache
41+
uses: gradle/gradle-build-action@v2
42+
43+
- name: Build server
44+
run: ./gradlew :${server}:build
45+
env:
46+
server: ${{ matrix.server }}
47+
48+
- name: Build and test native image
49+
run: ./gradlew :${server}:nativeCompile :${server}:nativeTest
50+
env:
51+
server: ${{ matrix.server }}

integration/graalvm/ktor-graalvm-server/build.gradle.kts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
1-
import com.expediagroup.graphql.plugin.gradle.graphql
1+
//import com.expediagroup.graphql.plugin.gradle.graphql
22
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
33

44
@Suppress("DSL_SCOPE_VIOLATION") // TODO: remove once KTIJ-19369 / Gradle#22797 is fixed
55
plugins {
66
alias(libs.plugins.kotlin.jvm)
77
application
88
alias(libs.plugins.graalvm.native)
9-
id("com.expediagroup.graphql")
9+
// id("com.expediagroup.graphql")
1010
}
1111

1212
dependencies {
1313
implementation("com.expediagroup", "graphql-kotlin-ktor-server")
1414
implementation("com.expediagroup", "graphql-kotlin-hooks-provider")
1515
implementation(libs.logback)
1616
implementation(libs.ktor.server.cio)
17+
testImplementation(libs.junit.api)
1718
testImplementation(libs.kotlin.test)
19+
testImplementation(libs.ktor.client.content)
20+
testImplementation(libs.ktor.server.test.host)
1821
}
1922

2023
tasks.test {
@@ -43,8 +46,8 @@ graalvmNative {
4346
}
4447
}
4548

46-
graphql {
47-
graalVm {
48-
packages = listOf("com.expediagroup.graalvm.ktor")
49-
}
50-
}
49+
//graphql {
50+
// graalVm {
51+
// packages = listOf("com.expediagroup.graalvm.ktor")
52+
// }
53+
//}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.expediagroup.graalvm.ktor.schema
2+
3+
import com.expediagroup.graalvm.ktor.schema.model.InputOnly
4+
import com.expediagroup.graphql.server.ktor.GraphQL
5+
import com.expediagroup.graphql.server.ktor.graphQLPostRoute
6+
import com.expediagroup.graphql.server.types.GraphQLRequest
7+
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
8+
import io.ktor.client.request.post
9+
import io.ktor.client.request.setBody
10+
import io.ktor.client.statement.bodyAsText
11+
import io.ktor.http.ContentType
12+
import io.ktor.http.HttpStatusCode
13+
import io.ktor.http.contentType
14+
import io.ktor.serialization.jackson.jackson
15+
import io.ktor.server.application.install
16+
import io.ktor.server.routing.routing
17+
import io.ktor.server.testing.testApplication
18+
import org.junit.jupiter.api.Test
19+
import kotlin.test.assertEquals
20+
21+
class TypesQueryTest {
22+
23+
@Test
24+
fun `verify input only query`() = testApplication {
25+
application {
26+
install(GraphQL) {
27+
schema {
28+
packages = listOf("com.expediagroup.graalvm.ktor.schema")
29+
queries = listOf(TypesQuery())
30+
}
31+
}
32+
routing {
33+
graphQLPostRoute()
34+
}
35+
}
36+
37+
val client = createClient {
38+
install(ContentNegotiation) {
39+
jackson()
40+
}
41+
}
42+
val response = client.post("/graphql") {
43+
contentType(ContentType.Application.Json)
44+
setBody(GraphQLRequest(query = "query InputOnlyQuery(\$inputArg: InputOnlyInput){ inputTypeQuery(arg: \$inputArg) }", operationName = "InputOnlyQuery", variables = mapOf("inputArg" to InputOnly(id = 123))))
45+
}
46+
assertEquals(HttpStatusCode.OK, response.status)
47+
assertEquals("""{"data":{"inputTypeQuery":"InputOnly(id=123)"}}""", response.bodyAsText().trim())
48+
}
49+
}

0 commit comments

Comments
 (0)