Skip to content

Commit

Permalink
Fixed tests
Browse files Browse the repository at this point in the history
  • Loading branch information
stefankoppier committed Apr 18, 2023
1 parent 59c98fa commit 50ea04c
Show file tree
Hide file tree
Showing 3 changed files with 637 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
/*
* This Kotlin source file was generated by the Gradle 'init' task.
*/
package io.github.stefankoppier.oasdiff

import org.gradle.testkit.runner.GradleRunner
import org.junit.Rule
import org.junit.rules.TemporaryFolder
import java.io.File
import java.io.File.separator
import kotlin.test.BeforeTest
import kotlin.test.Test
Expand All @@ -14,7 +12,7 @@ import kotlin.test.assertTrue
class OasdiffPluginFunctionalTest {
@get:Rule val tempFolder = TemporaryFolder()

lateinit var runner: GradleRunner
private lateinit var runner: GradleRunner

private val projectDir
get() = tempFolder.root
Expand Down Expand Up @@ -53,4 +51,25 @@ class OasdiffPluginFunctionalTest {
}
}
}

@Test
fun `can run oasDiffBreaking task`() {
val base = projectDir.resolve("base-api.yml")
File("./src/functionalTest/resources/base-api.yml").copyTo(base)
val revision = projectDir.resolve("revision-api.yml")
File("./src/functionalTest/resources/revision-api.yml").copyTo(revision)

buildFile.appendText(
"""
oasdiff {
base.set("${base.toPath().toString().replace("\\", "/")}")
revision.set("${revision.toPath().toString().replace("\\", "/")}")
failOnDiff.set(true)
}
""".trimIndent()
)
runner.withArguments("oasdiffCheckBreaking")
runner.buildAndFail()
}
}
312 changes: 312 additions & 0 deletions plugin/src/functionalTest/resources/base-api.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,312 @@
info:
title: Tufin
version: 1.0.0
openapi: 3.0.3
x-extension-test:
x-extension-test2: go
externalDocs:
url: https://tufin.com
tags:
- name: security
description: control security
x-extension-test:
- name: reuven
description: Harrison
servers:
- url: tufin.com
x-extension-test:
security:
- bearerAuth: []
paths:
/api/{domain}/{project}/badges/security-score:
x-extension-test:
parameters:
- in: path
name: domain
required: true
schema:
description: Hyphen-separated list of lowercase string
example: generic-bank
format: hyphen-separated list
pattern: ^(?:([a-z]+-)*([a-z]+)?)$
type: string
get:
operationId: GetSecurityScores
x-extension-test:
x-beta: true
tags:
- security
parameters:
- in: query
name: filter
x-extension-test:
content:
application/json:
x-extension-test:
schema:
type: object
properties:
type:
type: string
color:
type: string
- in: header
name: user
content:
application/json:
schema:
type: object
properties:
name:
type: string
- in: cookie
name: test
content:
application/json:
schema:
type: object
- in: query
name: image
examples:
0:
value: 'reuven'
schema:
x-extension-test:
description: alphanumeric
example: tufinim/generic-bank:cia-latest
format: general string
pattern: ^(?:[\w-./:]+)$
type: string
- in: query
name: token
schema:
description: RFC 4122 UUID
example: 26734565-dbcc-449a-a370-0beaaf04b0e8
format: uuid
pattern: ^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12})$
type: string
maxLength: 29
- in: header
name: X-Auth-Name
required: true
schema:
description: empty string
format: empty string
pattern: ^(?:)$
type: string
- in: path
name: domain
required: true
schema:
description: Hyphen-separated list of lowercase string
example: generic-bank
format: hyphen-separated list
pattern: ^(?:([a-z]+-)*([a-z]+)?)$
type: string
- in: path
name: project
required: true
schema:
description: Lowercase string
example: retail
format: lowercase string
pattern: ^(?:[a-z]+)$
type: string
responses:
'200':
description: OK
'201':
description: none
content:
application/xml:
schema:
type: string
'400':
description: "bad request"
content:
application/json:
schema:
type: string
servers: []
/api/{domain}/{project}/install-command:
get:
parameters:
- in: header
name: X-Auth-Name
required: true
schema:
description: any string
example: Joe
format: any string
pattern: ^(?:.*)$
type: string
- in: path
name: domain
required: true
schema:
enum:
- generic-bank
- tufin
type: string
- in: path
name: project
required: true
schema:
enum:
- retail
- my-project
- test
- eks
type: string
- in: header
name: network-policies
schema:
$ref: '#/components/schemas/network-policies'
responses:
default:
description: Tufin1
headers:
X-RateLimit-Limit:
schema:
type: integer
description: Request limit per hour.
servers: []
/subscribe:
post:
summary: Subscribe to a webhook
callbacks: # Callback definition
myEvent: # Event name
'hi':
post:
requestBody: # Contents of the callback message
required: true
content:
application/json:
schema:
type: object
properties:
message:
type: number
example: Some event happened
required:
- message
encoding:
historyMetadata:
# require XML Content-Type in utf-8 encoding
contentType: application/xml; charset=utf-8
style: spaceDelimited
profileImage:
# only accept png/jpeg
contentType: image/png, image/jpeg
headers:
i:
schema:
type: integer
description: integer
responses: # Expected responses to the callback message
'200':
description: Your server returns this code if it accepts the callback
links:
"test":
operationId: "reuven"
description: "test"
"test1":
operationId: "reuven"
description: "test"
"test2":
operationId: "GetSecurityScores"

'bye':
post:
requestBody: # Contents of the callback message
required: true
content:
application/json:
schema:
type: object
responses: # Expected responses to the callback message
'200':
description: Your server returns this code if it accepts the callback
responses:
default:
description: Tufin
/register:
post:
security:
- bearerAuth: []
- OAuth: []
summary: Subscribe to a webhook
responses:
default:
description: Tufin
components:
schemas:
network-policies:
additionalProperties: true
properties:
netpols:
type: string
type: object
rules:
properties:
netpols:
type: string
type: object
parameters:
network-policies:
name: network-policies
in: header
schema:
$ref: '#/components/schemas/network-policies'
headers:
test:
schema:
$ref: '#/components/schemas/network-policies'
new:
schema:
$ref: '#/components/schemas/network-policies'
testc:
content:
application/json:
schema:
type: object
requestBodies:
reuven:
content:
application/json:
schema:
type: object
discriminator:
propertyName: meter_name
properties:
meter_name:
type: string
tenant:
type: string
meter_value:
type: number
time:
type: integer
dimensions:
type: object
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
AccessToken:
type: http
scheme: bearer
OAuth:
x-extension-test:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://tufin.io/auth
tokenUrl: https://tufin.io/token
scopes:
accountRead: Allows account data to be read
accountWrite: Allows account data to be written
responses:
OK:
description: 200 OK
Loading

0 comments on commit 50ea04c

Please sign in to comment.