Skip to content

Commit 6ab641c

Browse files
authored
Merge pull request #1 from watbe/fix/httpBearerAuth
Improve compatibility with TVDB OpenAPI 3 spec
2 parents e8b4a97 + 0597660 commit 6ab641c

16 files changed

Lines changed: 4529 additions & 73 deletions

File tree

.github/workflows/build.yaml

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,10 @@ jobs:
3939
with:
4040
distribution: 'temurin'
4141
java-version: '17'
42-
cache: gradle
43-
44-
- name: Restore Gradle Cache
45-
uses: actions/cache@v4
46-
with:
47-
path: |
48-
./gradle/wrapper
49-
.gradle/build-cache
50-
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
51-
restore-keys: |
52-
gradle-${{ runner.os }}-
53-
54-
- name: Grant Execute Permission to Gradle Wrapper
55-
run: chmod +x gradlew
56-
42+
- name: Setup Gradle
43+
uses: gradle/actions/setup-gradle@v4
5744
- name: Run Gradle Checks and Tests
58-
run: ./gradlew :gradle-plugin:processor:check --no-daemon --scan --stacktrace --build-cache
45+
run: ./gradlew check --no-daemon --scan --stacktrace --build-cache
5946
continue-on-error: true # Continue even if tests fail
6047

6148
- name: Upload Test Results
@@ -88,17 +75,8 @@ jobs:
8875
with:
8976
distribution: 'temurin'
9077
java-version: '17'
91-
cache: gradle
92-
93-
- name: Restore Gradle Cache
94-
uses: actions/cache@v4
95-
with:
96-
path: |
97-
./gradle/wrapper
98-
.gradle/build-cache
99-
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
100-
restore-keys: |
101-
gradle-${{ runner.os }}-
78+
- name: Setup Gradle
79+
uses: gradle/actions/setup-gradle@v4
10280
- id: get_version
10381
name: Get version
10482
uses: jannemattila/get-version-from-tag@v4

e2e/polymorphism/src/test/kotlin/ClientTest.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ import com.denisbrandi.netmock.NetMockRequest
33
import com.denisbrandi.netmock.NetMockResponseBuilder
44
import com.denisbrandi.netmock.engine.NetMockEngine
55
import kotlinx.coroutines.test.runTest
6+
import kotlinx.serialization.json.Json
67
import sample.client.Client
78
import sample.models.components.parameters.UserType
89
import sample.models.components.schemas.AdminUser.AdminUser
910
import sample.models.paths.users.get.response.GetUsersResponse200
11+
import sample.models.paths.users.post.requestBody.PostUsersRequest
1012
import kotlin.test.Test
1113
import kotlin.test.assertEquals
1214
import kotlin.test.assertIs
@@ -61,6 +63,20 @@ class ClientTest {
6163
runCatching { client.getOrders(UserType.ADMIN) } // Will fail because it's mocked.
6264
}
6365

66+
@Test
67+
fun `post request body`() = runTest {
68+
val request = PostUsersRequest()
69+
interceptRequest(
70+
"/users"
71+
) {
72+
assertEquals(
73+
Json.encodeToString(request),
74+
this.body
75+
)
76+
}
77+
runCatching { client.postUsers(request) } // Response is not mocked, we only check request here.
78+
}
79+
6480
private fun mockGet(relPath: String, response: String, status: Int = 200) {
6581
netMock.addMockWithCustomMatcher(
6682
requestMatcher = { interceptedRequest ->

e2e/tvdb/build.gradle.kts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
plugins {
2+
kotlin("jvm")
3+
kotlin("plugin.serialization")
4+
alias(libs.plugins.local.plugin)
5+
}
6+
7+
val input = "${project.projectDir}/src/test/resources/swagger.yml"
8+
9+
dependencies {
10+
implementation(libs.serial)
11+
implementation(libs.bundles.ktor)
12+
testImplementation(kotlin("test"))
13+
testImplementation(libs.coroutines.test)
14+
}
15+
16+
openapi3 {
17+
generators {
18+
create("tvdb") {
19+
inputSpec.set(layout.projectDirectory.file("src/test/resources/swagger.yml"))
20+
}
21+
}
22+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import io.ktor.client.engine.cio.CIO
2+
import kotlinx.coroutines.test.runTest
3+
import tvdb.client.Client
4+
import tvdb.client.Servers
5+
import tvdb.models.paths.login.post.requestBody.PostLoginRequest
6+
import tvdb.models.paths.login.post.response.PostLoginResponse401
7+
import kotlin.test.Test
8+
import kotlin.test.assertIs
9+
import kotlin.test.fail
10+
11+
class TestTvDb {
12+
13+
14+
@Test
15+
fun `try to make request`() = runTest {
16+
val client = Client(CIO)
17+
val response = client.postLogin(PostLoginRequest("weewewfweewf"))
18+
19+
try {
20+
response.dataOrThrow()
21+
fail("Request succeeded without apikey. Something is wrong.")
22+
} catch (e: PostLoginResponse401) {
23+
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)