diff --git a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/APICustomShaclFunctions.scala b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/APICustomShaclFunctions.scala index 3e60de3458..5f2b0fd4a1 100644 --- a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/APICustomShaclFunctions.scala +++ b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/APICustomShaclFunctions.scala @@ -24,6 +24,7 @@ import amf.core.internal.metamodel.Field import amf.core.internal.metamodel.domain.ShapeModel import amf.core.internal.metamodel.domain.common.NameFieldSchema import amf.core.internal.metamodel.domain.extensions.{CustomDomainPropertyModel, PropertyShapeModel} +import amf.core.internal.parser.domain.Annotations import amf.shapes.client.scala.model.domain._ import amf.shapes.client.scala.model.domain.operations.AbstractParameter import amf.shapes.internal.domain.metamodel._ @@ -139,7 +140,7 @@ object APICustomShaclFunctions extends BaseCustomShaclFunctions { ValidationInfo( UnionShapeModel.AnyOf, Some(s"All union members must be Object type, ${elem.name.value()} it's not"), - Some(elem.annotations) + Some(union.annotations) ) } validationResults.foreach(info => validate(Some(info))) @@ -350,7 +351,8 @@ object APICustomShaclFunctions extends BaseCustomShaclFunctions { members, validate, UnionShapeModel.AnyOf, - { name: String => s"Union must have at most one member with name '$name'" } + { name: String => s"Union must have at most one member with name '$name'" }, + Some(union.annotations) ) case _ => // ignore } @@ -367,7 +369,8 @@ object APICustomShaclFunctions extends BaseCustomShaclFunctions { interfaces, validate, NodeShapeModel.Inherits, - { name: String => s"$typeName cannot implement interface '$name' more than once" } + { name: String => s"$typeName cannot implement interface '$name' more than once" }, + Some(shape.annotations) ) case _ => // ignore } @@ -383,7 +386,8 @@ object APICustomShaclFunctions extends BaseCustomShaclFunctions { enumValues, validate, ScalarShapeModel.Values, - { name: String => s"Each enum value must be unique, '$name' it's not" } + { name: String => s"Each enum value must be unique, '$name' it's not" }, + Some(s.annotations) ) case _ => // ignore } @@ -476,12 +480,13 @@ object APICustomShaclFunctions extends BaseCustomShaclFunctions { s: Seq[NamedDomainElement], validate: Option[ValidationInfo] => Unit, field: Field, - message: String => String + message: String => String, + annotations: Some[Annotations] ): Unit = { s.foreach({ elem => val elemName = elem.name.value() if (elemName != null && isDuplicated(elemName, s)) - validate(Some(ValidationInfo(field, Some(message(elemName)), Some(elem.annotations)))) + validate(Some(ValidationInfo(field, Some(message(elemName)), annotations))) }) } private def isDuplicated(elemName: String, s: Seq[NamedDomainElement]) = s.count(_.name.value() == elemName) > 1 diff --git a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/graphql/GraphQLArgumentValidator.scala b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/graphql/GraphQLArgumentValidator.scala index d42ddc411b..206f6c1fa7 100644 --- a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/graphql/GraphQLArgumentValidator.scala +++ b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/graphql/GraphQLArgumentValidator.scala @@ -1,25 +1,23 @@ package amf.apicontract.internal.validation.shacl.graphql -import amf.core.client.scala.model.domain.{DataNode, NamedDomainElement, ScalarNode} +import amf.core.client.scala.model.domain.{DataNode, NamedDomainElement, ScalarNode, Shape} import amf.core.internal.metamodel.Field import amf.core.internal.metamodel.domain.ScalarNodeModel import amf.core.internal.parser.domain.Annotations -import amf.shapes.client.scala.model.domain.UnionShape +import amf.shapes.client.scala.model.domain.{ArrayShape, UnionShape} import amf.shapes.client.scala.model.domain.operations.AbstractParameter import amf.shapes.internal.domain.metamodel.NodeShapeModel import amf.validation.internal.shacl.custom.CustomShaclValidator.ValidationInfo object GraphQLArgumentValidator { def validateInputTypes(obj: GraphQLObject): Seq[ValidationInfo] = { - val fields = obj.fields() - // fields arguments can't be output types - val operationValidations = fields.operations.flatMap { op => + val operationValidations = obj.operations.flatMap { op => op.parameters.flatMap { param => if (!param.isValidInputType) { validationInfo( NodeShapeModel.Properties, - s"Argument '${param.name}' must be an input type, ${param.schema.name.value()} it's not", + s"Argument '${param.name}' must be an input type, ${getShapeName(param.schema)} it's not", param.annotations ) } else { @@ -29,11 +27,11 @@ object GraphQLArgumentValidator { } // input type fields or directive arguments can't be output types - val propertiesValidations = fields.properties.flatMap { prop => + val propertiesValidations = obj.properties.flatMap { prop => if (!prop.isValidInputType) { validationInfo( NodeShapeModel.Properties, - s"${prop.name} must be an input type, ${getPropTypeName(prop)} it's not", + s"${prop.name} must be an input type, ${getShapeName(prop.range)} it's not", prop.annotations ) } else None @@ -116,9 +114,10 @@ object GraphQLArgumentValidator { } } - private def getPropTypeName(prop: GraphQLProperty): String = prop.range match { - case u: UnionShape => GraphQLNullable(u).name - case s => s.name.value() + private def getShapeName(shape: Shape): String = shape match { + case u: UnionShape => GraphQLNullable(u).name + case arr: ArrayShape => s"a list of ${getShapeName(arr.items)}" + case s => s.name.value() } private def validationInfo(field: Field, message: String, annotations: Annotations): Some[ValidationInfo] = { diff --git a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/graphql/GraphQLObjects.scala b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/graphql/GraphQLObjects.scala index 8d91057759..991432e354 100644 --- a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/graphql/GraphQLObjects.scala +++ b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/validation/shacl/graphql/GraphQLObjects.scala @@ -5,7 +5,7 @@ import amf.core.client.scala.model.domain.extensions.{CustomDomainProperty, Doma import amf.core.client.scala.model.domain.{DataNode, ObjectNode, ScalarNode, Shape} import amf.core.internal.parser.domain.Annotations import amf.shapes.client.scala.model.domain.operations.{AbstractOperation, AbstractParameter} -import amf.shapes.client.scala.model.domain.{NilShape, NodeShape, ScalarShape, UnionShape} +import amf.shapes.client.scala.model.domain._ case class GraphQLObject(node: NodeShape) { def name: String = node.name.value() @@ -119,9 +119,10 @@ object GraphQLUtils { def isValidInputType(schema: Shape): Boolean = { schema match { - case u: UnionShape => GraphQLNullable(u).isValid - case n: NodeShape => GraphQLObject(n).isInput - case _ => true + case u: UnionShape => GraphQLNullable(u).isValid + case n: NodeShape => GraphQLObject(n).isInput + case arr: ArrayShape => isValidInputType(arr.items) + case _ => true } } } diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/broken-interface-fields.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/broken-interface-fields.api.report index de96e9c4b2..8c834cd99d 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/broken-interface-fields.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/broken-interface-fields.api.report @@ -10,7 +10,7 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/broken-interface-fields.api.graphql#/declares/shape/Person Property: http://www.w3.org/ns/shacl#property - Range: [(10,4)-(10,19)] + Range: [(9,0)-(11,1)] Location: - Constraint: http://a.ml/vocabularies/amf/parser#required-fields @@ -18,5 +18,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/broken-interface-fields.api.graphql#/declares/shape/Person Property: http://www.w3.org/ns/shacl#property - Range: [(10,4)-(10,19)] + Range: [(9,0)-(11,1)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/directive-argument-wrong-value.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/directive-argument-wrong-value.api.report index 7a3311809e..bc7618386c 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/directive-argument-wrong-value.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/directive-argument-wrong-value.api.report @@ -10,5 +10,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/directive-argument-wrong-value.api.graphql#/web-api/customDomainProperties/MyDirective Property: http://www.w3.org/ns/shacl#datatype - Range: [(1,7)-(1,31)] + Range: [(1,26)-(1,30)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-interfaces-object.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-interfaces-object.api.report index 4e789c914b..50be0fc2f7 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-interfaces-object.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-interfaces-object.api.report @@ -10,5 +10,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-interfaces-object.api.graphql#/declares/shape/Person Property: http://a.ml/vocabularies/shapes#inherits - Range: [(14,0)-(16,1)] + Range: [(9,0)-(12,1)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-members-union-extension.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-members-union-extension.api.report index c197719e08..902143e076 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-members-union-extension.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-members-union-extension.api.report @@ -10,5 +10,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-members-union-extension.api.graphql#/declares/union/SearchResult/or/union/SearchResult_1 Property: http://a.ml/vocabularies/shapes#anyOf - Range: [(14,0)-(17,1)] + Range: [(21,0)-(21,37)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-members-union.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-members-union.api.report index 7d2ea93068..43c3c6eef0 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-members-union.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-members-union.api.report @@ -10,5 +10,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-members-union.api.graphql#/declares/union/SearchResult Property: http://a.ml/vocabularies/shapes#anyOf - Range: [(9,0)-(12,1)] + Range: [(19,0)-(19,39)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-values-enum-extension.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-values-enum-extension.api.report index 8441af3fd4..b87137805a 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-values-enum-extension.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-values-enum-extension.api.report @@ -10,5 +10,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-values-enum-extension.api.graphql#/declares/scalar/Planet/or/scalar/Planet_1 Property: http://www.w3.org/ns/shacl#in - Range: [(21,4)-(21,9)] + Range: [(20,0)-(23,1)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-values-enum.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-values-enum.api.report index 9d885a90fe..423337db66 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-values-enum.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-values-enum.api.report @@ -10,5 +10,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/duplicate-values-enum.api.graphql#/declares/scalar/Planet Property: http://www.w3.org/ns/shacl#in - Range: [(10,4)-(10,11)] + Range: [(9,0)-(14,1)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql index 0ee44acfe8..6d09ca71d9 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql @@ -10,6 +10,9 @@ type Query { input InputType { objectField: Object1 + objectFieldList: [Object1] + objectFieldListRequired: [Object1!] + objectFieldListUltraRequired: [Object1!]! interfaceField: Interface unionField: Union } diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.report index f2b4be486c..4d4ca9e85a 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.report @@ -1,12 +1,12 @@ ModelId: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql Profile: GraphQL Conforms: false -Number of results: 3 +Number of results: 6 Level: Violation - Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type - Message: interfaceField must be an input type, Interface it's not + Message: objectField must be an input type, Object1 it's not Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql#/declares/shape/InputType Property: http://www.w3.org/ns/shacl#property @@ -14,11 +14,35 @@ Level: Violation Location: - Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type - Message: objectField must be an input type, Object1 it's not + Message: objectFieldList must be an input type, a list of Object1 it's not Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql#/declares/shape/InputType Property: http://www.w3.org/ns/shacl#property - Range: [(12,4)-(12,24)] + Range: [(13,4)-(13,30)] + Location: + +- Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type + Message: objectFieldListRequired must be an input type, a list of Object1 it's not + Severity: Violation + Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql#/declares/shape/InputType + Property: http://www.w3.org/ns/shacl#property + Range: [(14,4)-(14,39)] + Location: + +- Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type + Message: objectFieldListUltraRequired must be an input type, a list of Object1 it's not + Severity: Violation + Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql#/declares/shape/InputType + Property: http://www.w3.org/ns/shacl#property + Range: [(15,4)-(15,45)] + Location: + +- Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type + Message: interfaceField must be an input type, Interface it's not + Severity: Violation + Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql#/declares/shape/InputType + Property: http://www.w3.org/ns/shacl#property + Range: [(16,4)-(16,29)] Location: - Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type @@ -26,5 +50,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-fields.api.graphql#/declares/shape/InputType Property: http://www.w3.org/ns/shacl#property - Range: [(12,4)-(12,24)] + Range: [(17,4)-(17,21)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-interface-arguments.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-interface-arguments.api.report index ad3b11f652..8700bbfc93 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-interface-arguments.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-interface-arguments.api.report @@ -6,19 +6,19 @@ Number of results: 3 Level: Violation - Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type - Message: Argument 'input_' must be an input type, Interface it's not + Message: Argument 'input_' must be an input type, Object1 it's not Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-interface-arguments.api.graphql#/declares/shape/Test Property: http://www.w3.org/ns/shacl#property - Range: [(10,0)-(14,1)] + Range: [(11,19)-(11,34)] Location: - Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type - Message: Argument 'input_' must be an input type, Object1 it's not + Message: Argument 'input_' must be an input type, Interface it's not Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-interface-arguments.api.graphql#/declares/shape/Test Property: http://www.w3.org/ns/shacl#property - Range: [(10,0)-(14,1)] + Range: [(12,22)-(12,39)] Location: - Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type @@ -26,5 +26,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-interface-arguments.api.graphql#/declares/shape/Test Property: http://www.w3.org/ns/shacl#property - Range: [(10,0)-(14,1)] + Range: [(13,18)-(13,31)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-object-arguments.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-object-arguments.api.report index 2b4e9b39e5..35109b87ab 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-object-arguments.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-object-arguments.api.report @@ -10,7 +10,7 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-object-arguments.api.graphql#/web-api/endpoint/%2Fquery%2FobjectArgument Property: http://www.w3.org/ns/shacl#property - Range: [(7,4)-(7,43)] + Range: [(7,19)-(7,34)] Location: - Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type-in-endpoint @@ -18,7 +18,7 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-object-arguments.api.graphql#/web-api/endpoint/%2Fquery%2FinterfaceArgument Property: http://www.w3.org/ns/shacl#property - Range: [(8,4)-(8,48)] + Range: [(8,22)-(8,39)] Location: - Constraint: http://a.ml/vocabularies/amf/parser#invalid-input-type-in-endpoint @@ -26,5 +26,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-input-type-object-arguments.api.graphql#/web-api/endpoint/%2Fquery%2FunionArgument Property: http://www.w3.org/ns/shacl#property - Range: [(9,4)-(9,40)] + Range: [(9,18)-(9,31)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-output-type-interface-fields.api.graphql b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-output-type-interface-fields.api.graphql index 003eeebe69..1bfd26db78 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-output-type-interface-fields.api.graphql +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/is-not-output-type-interface-fields.api.graphql @@ -8,8 +8,9 @@ type Query { interface Interface { inputReturnField: InputType + inputReturnFieldList: [InputType] } input InputType { randomText: String -} \ No newline at end of file +} diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members-extension.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members-extension.api.report index c39bd654e9..338188993c 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members-extension.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members-extension.api.report @@ -10,7 +10,7 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members-extension.api.graphql#/declares/union/SearchResult/or/union/SearchResult_1 Property: http://a.ml/vocabularies/shapes#anyOf - Range: [(23,0)-(23,13)] + Range: [(27,0)-(27,54)] Location: - Constraint: http://a.ml/vocabularies/amf/parser#invalid-union-members @@ -18,7 +18,7 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members-extension.api.graphql#/declares/union/SearchResult/or/union/SearchResult_1 Property: http://a.ml/vocabularies/shapes#anyOf - Range: [(23,0)-(23,13)] + Range: [(27,0)-(27,54)] Location: - Constraint: http://a.ml/vocabularies/amf/parser#invalid-union-members @@ -26,5 +26,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members-extension.api.graphql#/declares/union/SearchResult/or/union/SearchResult_1 Property: http://a.ml/vocabularies/shapes#anyOf - Range: [(23,0)-(23,13)] + Range: [(27,0)-(27,54)] Location: diff --git a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members.api.report b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members.api.report index 7584fdfbc9..d9e51f9077 100644 --- a/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members.api.report +++ b/amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members.api.report @@ -10,7 +10,7 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members.api.graphql#/declares/union/SearchResult Property: http://a.ml/vocabularies/shapes#anyOf - Range: [(23,0)-(23,13)] + Range: [(25,0)-(25,47)] Location: - Constraint: http://a.ml/vocabularies/amf/parser#invalid-union-members @@ -18,7 +18,7 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members.api.graphql#/declares/union/SearchResult Property: http://a.ml/vocabularies/shapes#anyOf - Range: [(23,0)-(23,13)] + Range: [(25,0)-(25,47)] Location: - Constraint: http://a.ml/vocabularies/amf/parser#invalid-union-members @@ -26,5 +26,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/graphql/tck/apis/invalid/union-invalid-members.api.graphql#/declares/union/SearchResult Property: http://a.ml/vocabularies/shapes#anyOf - Range: [(23,0)-(23,13)] + Range: [(25,0)-(25,47)] Location: diff --git a/amf-cli/shared/src/test/resources/graphs/recursive-api-full-uris.expanded.jsonld b/amf-cli/shared/src/test/resources/graphs/recursive-api-full-uris.expanded.jsonld index ffd09a61b2..6d324158c9 100644 --- a/amf-cli/shared/src/test/resources/graphs/recursive-api-full-uris.expanded.jsonld +++ b/amf-cli/shared/src/test/resources/graphs/recursive-api-full-uris.expanded.jsonld @@ -52,7 +52,7 @@ "@id": "amf://id#11", "@type": [ "http://a.ml/vocabularies/apiContract#Operation", - "http://a.ml/vocabularies/core#Operation ", + "http://a.ml/vocabularies/core#Operation", "http://a.ml/vocabularies/document#DomainElement" ], "http://a.ml/vocabularies/apiContract#method": [ @@ -154,7 +154,7 @@ "@id": "amf://id#16", "@type": [ "http://a.ml/vocabularies/apiContract#Operation", - "http://a.ml/vocabularies/core#Operation ", + "http://a.ml/vocabularies/core#Operation", "http://a.ml/vocabularies/document#DomainElement" ], "http://a.ml/vocabularies/apiContract#method": [ diff --git a/amf-cli/shared/src/test/resources/graphs/recursive-api.expanded.jsonld b/amf-cli/shared/src/test/resources/graphs/recursive-api.expanded.jsonld index 7be6e11ff1..17ef6b5d92 100644 --- a/amf-cli/shared/src/test/resources/graphs/recursive-api.expanded.jsonld +++ b/amf-cli/shared/src/test/resources/graphs/recursive-api.expanded.jsonld @@ -52,7 +52,7 @@ "@id": "#11", "@type": [ "apiContract:Operation", - "core:Operation ", + "core:Operation", "doc:DomainElement" ], "apiContract:method": [ @@ -154,7 +154,7 @@ "@id": "#16", "@type": [ "apiContract:Operation", - "core:Operation ", + "core:Operation", "doc:DomainElement" ], "apiContract:method": [ diff --git a/amf-cli/shared/src/test/resources/graphs/recursive-api.flattened.jsonld b/amf-cli/shared/src/test/resources/graphs/recursive-api.flattened.jsonld index a22b6a8343..5f623b4bbf 100644 --- a/amf-cli/shared/src/test/resources/graphs/recursive-api.flattened.jsonld +++ b/amf-cli/shared/src/test/resources/graphs/recursive-api.flattened.jsonld @@ -73,7 +73,7 @@ "@id": "#11", "@type": [ "apiContract:Operation", - "core:Operation ", + "core:Operation", "doc:DomainElement" ], "apiContract:method": "get", @@ -87,7 +87,7 @@ "@id": "#16", "@type": [ "apiContract:Operation", - "core:Operation ", + "core:Operation", "doc:DomainElement" ], "apiContract:method": "get", diff --git a/amf-cli/shared/src/test/resources/semantic-jsonschema/instances/long-datatype.cycle.json b/amf-cli/shared/src/test/resources/semantic-jsonschema/instances/long-datatype.cycle.json index f1770d0c4d..9b955c0a11 100644 --- a/amf-cli/shared/src/test/resources/semantic-jsonschema/instances/long-datatype.cycle.json +++ b/amf-cli/shared/src/test/resources/semantic-jsonschema/instances/long-datatype.cycle.json @@ -1,3 +1,3 @@ { "bigNumberProp": 294748364787978 -} \ No newline at end of file +} diff --git a/amf-cli/shared/src/test/resources/upanddown/types.raml.expanded.jsonld b/amf-cli/shared/src/test/resources/upanddown/types.raml.expanded.jsonld index c5956901d2..e75cdbae7e 100644 --- a/amf-cli/shared/src/test/resources/upanddown/types.raml.expanded.jsonld +++ b/amf-cli/shared/src/test/resources/upanddown/types.raml.expanded.jsonld @@ -113,7 +113,7 @@ "@id": "file://amf-cli/shared/src/test/resources/upanddown/types.raml.expanded.jsonld/#/web-api/endpoint/end-points/%2Flevel-zero/supportedOperation/get", "@type": [ "http://a.ml/vocabularies/apiContract#Operation", - "http://a.ml/vocabularies/core#Operation ", + "http://a.ml/vocabularies/core#Operation", "http://a.ml/vocabularies/document#DomainElement" ], "http://a.ml/vocabularies/apiContract#method": [ diff --git a/amf-cli/shared/src/test/resources/upanddown/types.raml.flattened.jsonld b/amf-cli/shared/src/test/resources/upanddown/types.raml.flattened.jsonld index a5e4ad971a..5b2e58c55b 100644 --- a/amf-cli/shared/src/test/resources/upanddown/types.raml.flattened.jsonld +++ b/amf-cli/shared/src/test/resources/upanddown/types.raml.flattened.jsonld @@ -115,7 +115,7 @@ "@id": "file://amf-cli/shared/src/test/resources/upanddown/types.raml#/web-api/end-points/%2Flevel-zero/get", "@type": [ "http://a.ml/vocabularies/apiContract#Operation", - "http://a.ml/vocabularies/core#Operation ", + "http://a.ml/vocabularies/core#Operation", "http://a.ml/vocabularies/document#DomainElement" ], "http://a.ml/vocabularies/apiContract#method": "get", diff --git a/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-components-resolved.yaml b/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-components-resolved.yaml index 8a81ef9e6e..1c414c7aea 100644 --- a/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-components-resolved.yaml +++ b/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-components-resolved.yaml @@ -2,7 +2,6 @@ openapi: 3.0.0 info: title: API version: 1.0.0 - paths: /path: get: @@ -15,4 +14,4 @@ paths: type: object components: x-extension: - prop: value \ No newline at end of file + prop: value diff --git a/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-flow-resolved.yaml b/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-flow-resolved.yaml index e9d6a2f298..ed6e259cbc 100644 --- a/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-flow-resolved.yaml +++ b/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-flow-resolved.yaml @@ -2,7 +2,6 @@ openapi: 3.0.0 info: title: API version: 1.0.0 - paths: /path: get: diff --git a/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-flows-resolved.yaml b/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-flows-resolved.yaml index 2f2e260b85..c4d1a779ad 100644 --- a/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-flows-resolved.yaml +++ b/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-flows-resolved.yaml @@ -2,7 +2,6 @@ openapi: 3.0.0 info: title: API version: 1.0.0 - paths: /path: get: @@ -13,7 +12,6 @@ paths: application/json: schema: type: object - components: securitySchemes: oauth2: @@ -26,4 +24,4 @@ components: write:pets: modify pets in your account read:pets: read your pets x-extension: - prop: value \ No newline at end of file + prop: value diff --git a/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-info-resolved.yaml b/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-info-resolved.yaml index 3ddb8bcd49..fd78bb7ff2 100644 --- a/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-info-resolved.yaml +++ b/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-info-resolved.yaml @@ -13,4 +13,4 @@ paths: content: application/json: schema: - type: object \ No newline at end of file + type: object diff --git a/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-xml-object-resolved.yaml b/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-xml-object-resolved.yaml index c04e3aa6be..0a4a588a3b 100644 --- a/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-xml-object-resolved.yaml +++ b/amf-cli/shared/src/test/resources/validations/oas3/spec-extensions/extension-in-xml-object-resolved.yaml @@ -2,7 +2,6 @@ openapi: 3.0.0 info: title: API version: 1.0.0 - paths: /path: get: diff --git a/amf-cli/shared/src/test/resources/validations/reports/graphql/invalid-default-value-directive.report b/amf-cli/shared/src/test/resources/validations/reports/graphql/invalid-default-value-directive.report index 6507d5b552..2cc1d0b85d 100644 --- a/amf-cli/shared/src/test/resources/validations/reports/graphql/invalid-default-value-directive.report +++ b/amf-cli/shared/src/test/resources/validations/reports/graphql/invalid-default-value-directive.report @@ -10,5 +10,5 @@ Level: Violation Severity: Violation Target: file://amf-cli/shared/src/test/resources/validations/graphql/invalid-default-value-directive.graphql#/declares/MyDirective/shape/default-node Property: http://www.w3.org/ns/shacl#datatype - Range: + Range: [(9,23)-(9,42)] Location: diff --git a/amf-cli/shared/src/test/resources/validations/reports/graphql/invalid-default-value-enum.report b/amf-cli/shared/src/test/resources/validations/reports/graphql/invalid-default-value-enum.report index a5c5f4ab09..10e601605a 100644 --- a/amf-cli/shared/src/test/resources/validations/reports/graphql/invalid-default-value-enum.report +++ b/amf-cli/shared/src/test/resources/validations/reports/graphql/invalid-default-value-enum.report @@ -5,14 +5,6 @@ Number of results: 4 Level: Violation -- Constraint: http://a.ml/vocabularies/amf/parser#invalid-default-value-in-directive - Message: Default value of argument must be one of [A,B] - Severity: Violation - Target: file://amf-cli/shared/src/test/resources/validations/graphql/invalid-default-value-enum.graphql#/declares/MyDirective/shape/default-node - Property: http://www.w3.org/ns/shacl#defaultValue - Range: - Location: - - Constraint: http://a.ml/vocabularies/amf/parser#invalid-default-value-in-parameter Message: Default value of argument must be one of [A,B] Severity: Violation @@ -36,3 +28,11 @@ Level: Violation Property: http://a.ml/vocabularies/core#defaultValue Range: [(15,35)-(15,36)] Location: + +- Constraint: http://a.ml/vocabularies/amf/parser#invalid-default-value-in-directive + Message: Default value of argument must be one of [A,B] + Severity: Violation + Target: file://amf-cli/shared/src/test/resources/validations/graphql/invalid-default-value-enum.graphql#/declares/MyDirective/shape/default-node + Property: http://www.w3.org/ns/shacl#defaultValue + Range: [(18,43)-(18,44)] + Location: diff --git a/amf-cli/shared/src/test/scala/amf/parser/GraphQLTCKValidationTest.scala b/amf-cli/shared/src/test/scala/amf/parser/GraphQLTCKValidationTest.scala index c02cbebb62..1525d27f67 100644 --- a/amf-cli/shared/src/test/scala/amf/parser/GraphQLTCKValidationTest.scala +++ b/amf-cli/shared/src/test/scala/amf/parser/GraphQLTCKValidationTest.scala @@ -38,7 +38,7 @@ class GraphQLTCKValidationTest extends AsyncFunSuite with PlatformSecrets with F } // Test singular API - test("GraphQL TCK > Apis > Invalid > wrong-directive-location") { + test("union-invalid-members.api.graphql") { assertReport(s"$apisPath/invalid/union-invalid-members.api.graphql") }