This commit is contained in:
@@ -79,6 +79,13 @@ func TestGameOpenAPISpecFreezesResponseSchemas(t *testing.T) {
|
||||
status: http.StatusOK,
|
||||
wantRef: "#/components/schemas/HealthzResponse",
|
||||
},
|
||||
{
|
||||
name: "get battle",
|
||||
path: "/api/v1/battle/{turn}/{uuid}",
|
||||
method: http.MethodGet,
|
||||
status: http.StatusOK,
|
||||
wantRef: "#/components/schemas/BattleReport",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
@@ -271,6 +278,55 @@ func TestGameOpenAPISpecFreezesCommandRequest(t *testing.T) {
|
||||
require.Equal(t, uint64(1), cmdSchema.Value.MinItems, "CommandRequest.cmd minItems must be 1")
|
||||
}
|
||||
|
||||
func TestGameOpenAPISpecFreezesGetBattleOperation(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
doc := loadOpenAPISpec(t)
|
||||
operation := getOpenAPIOperation(t, doc, "/api/v1/battle/{turn}/{uuid}", http.MethodGet)
|
||||
|
||||
require.Equal(t, "getBattle", operation.OperationID, "GET /api/v1/battle/{turn}/{uuid} operation id")
|
||||
|
||||
paramRefs := make(map[string]bool)
|
||||
for _, p := range operation.Parameters {
|
||||
require.NotNil(t, p.Value, "parameter must have value")
|
||||
paramRefs[p.Ref] = true
|
||||
}
|
||||
require.True(t, paramRefs["#/components/parameters/BattleTurnParam"], "GET /api/v1/battle/{turn}/{uuid} must reference BattleTurnParam")
|
||||
require.True(t, paramRefs["#/components/parameters/BattleIDParam"], "GET /api/v1/battle/{turn}/{uuid} must reference BattleIDParam")
|
||||
|
||||
require.NotNil(t, operation.Responses, "operation must declare responses")
|
||||
notFound := operation.Responses.Status(http.StatusNotFound)
|
||||
require.NotNil(t, notFound, "operation must declare 404 response")
|
||||
require.NotNil(t, notFound.Value, "404 response must have a value")
|
||||
}
|
||||
|
||||
func TestGameOpenAPISpecFreezesBattleReport(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
doc := loadOpenAPISpec(t)
|
||||
|
||||
reportSchema := componentSchemaRef(t, doc, "BattleReport")
|
||||
assertRequiredFields(t, reportSchema, "id", "planet", "planetName", "races", "ships", "protocol")
|
||||
|
||||
groupSchema := componentSchemaRef(t, doc, "BattleReportGroup")
|
||||
assertRequiredFields(t, groupSchema, "race", "className", "tech", "num", "numLeft", "loadType", "loadQuantity", "inBattle")
|
||||
|
||||
actionSchema := componentSchemaRef(t, doc, "BattleActionReport")
|
||||
assertRequiredFields(t, actionSchema, "a", "sa", "d", "sd", "x")
|
||||
|
||||
protocolSchema := reportSchema.Value.Properties["protocol"]
|
||||
require.NotNil(t, protocolSchema, "BattleReport.protocol schema must exist")
|
||||
require.True(t, protocolSchema.Value.Type.Is("array"), "BattleReport.protocol must be array")
|
||||
require.NotNil(t, protocolSchema.Value.Items, "BattleReport.protocol items must be defined")
|
||||
assertSchemaRef(t, protocolSchema.Value.Items, "#/components/schemas/BattleActionReport", "BattleReport.protocol items schema")
|
||||
|
||||
shipsSchema := reportSchema.Value.Properties["ships"]
|
||||
require.NotNil(t, shipsSchema, "BattleReport.ships schema must exist")
|
||||
require.True(t, shipsSchema.Value.Type.Is("object"), "BattleReport.ships must be object")
|
||||
require.NotNil(t, shipsSchema.Value.AdditionalProperties.Schema, "BattleReport.ships additionalProperties must be a schema")
|
||||
assertSchemaRef(t, shipsSchema.Value.AdditionalProperties.Schema, "#/components/schemas/BattleReportGroup", "BattleReport.ships additionalProperties schema")
|
||||
}
|
||||
|
||||
func TestGameOpenAPISpecHealthzStatusEnum(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user