getFormattedDateList() {
+ return formattedDateList;
+ }
+}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicEnum.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicEnum.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicEnum.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicEnum.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInput.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInput.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInput.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInput.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInterface.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInterface.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInterface.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInterface.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicType.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicType.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicType.java
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicUnion.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicUnion.java
new file mode 100644
index 00000000..d4c781ec
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicUnion.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import org.eclipse.microprofile.graphql.Union;
+
+/**
+ * To test the generation of Types even if it's not used (directly) as a return type.
+ * This is the union that is used directly.
+ */
+@Union
+public interface BasicUnion {
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/CharApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/CharApi.java
new file mode 100644
index 00000000..9cdc33fb
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/CharApi.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import org.eclipse.microprofile.graphql.GraphQLApi;
+import org.eclipse.microprofile.graphql.Query;
+import org.eclipse.microprofile.graphql.Source;
+
+@GraphQLApi
+public class CharApi {
+
+ @Query
+ public CharHolder charHolder() {
+ return new CharHolder();
+ }
+
+ public char charPrimitiveInput(@Source CharHolder charHolder, char c) {
+ return c;
+ }
+
+ public char[] charArrayInput(@Source CharHolder charHolder, char[] cs) {
+ return cs;
+ }
+
+ public Character charObjectInput(@Source CharHolder charHolder, Character c) {
+ return c;
+ }
+
+ /*
+ * Used to have a "namespace".
+ */
+ public static class CharHolder {
+
+ }
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java
new file mode 100644
index 00000000..8059fe1e
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import org.eclipse.microprofile.graphql.Description;
+
+public class GrandParentType {
+
+ @Description("Field from grand-parent")
+ private String grandParentTypeField;
+
+ public String getGrandParentTypeField() {
+ return grandParentTypeField;
+ }
+
+ public void setGrandParentTypeField(final String grandParentTypeField) {
+ this.grandParentTypeField = grandParentTypeField;
+ }
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java
new file mode 100644
index 00000000..dc6e6930
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import java.time.LocalDate;
+
+import javax.json.bind.annotation.JsonbProperty;
+
+/**
+ * Type to test {@code @JsonbProperty} on field, getter and setter.
+ */
+public class JsonbPerson {
+
+ @JsonbProperty("lastName")
+ private String surname;
+
+ private String forename;
+
+ private LocalDate birth;
+
+
+ public JsonbPerson() {
+ }
+
+ public JsonbPerson(final String surname, final String forename, final LocalDate birth) {
+ this.surname = surname;
+ this.forename = forename;
+ this.birth = birth;
+ }
+
+ public String getSurname() {
+ return surname;
+ }
+
+ public void setSurname(final String surname) {
+ this.surname = surname;
+ }
+
+
+ @JsonbProperty("firstName")
+ public String getForename() {
+ return forename;
+ }
+
+ public void setForename(final String forename) {
+ this.forename = forename;
+ }
+
+
+ public LocalDate getBirth() {
+ return birth;
+ }
+
+ @JsonbProperty("birthDay")
+ public void setBirth(final LocalDate birth) {
+ this.birth = birth;
+ }
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java
new file mode 100644
index 00000000..7f40b07b
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+
+import org.eclipse.microprofile.graphql.Description;
+import org.eclipse.microprofile.graphql.Name;
+import org.eclipse.microprofile.graphql.NonNull;
+
+public class ParentType extends GrandParentType {
+
+ @Description("Field from parent")
+ private String parentTypeField;
+
+ @NonNull
+ @Name("nonNullParentField")
+ private String nonNullParentTypeField;
+
+ public String getParentTypeField() {
+ return parentTypeField;
+ }
+
+ public void setParentTypeField(final String parentTypeField) {
+ this.parentTypeField = parentTypeField;
+ }
+
+ public String getNonNullParentTypeField() {
+ return nonNullParentTypeField;
+ }
+
+ public void setNonNullParentTypeField(final String nonNullParentTypeField) {
+ this.nonNullParentTypeField = nonNullParentTypeField;
+ }
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java
new file mode 100644
index 00000000..92f877bd
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import java.time.LocalDate;
+
+import org.eclipse.microprofile.graphql.Name;
+
+/**
+ * Type to test {@code @Name} on field, getter and setter.
+ */
+public class Person {
+
+ @Name("lastName")
+ private String surname;
+
+ private String forename;
+
+ private LocalDate birth;
+
+
+ public Person() {
+ }
+
+ public Person(final String surname, final String forename, final LocalDate birth) {
+ this.surname = surname;
+ this.forename = forename;
+ this.birth = birth;
+ }
+
+ public String getSurname() {
+ return surname;
+ }
+
+ public void setSurname(final String surname) {
+ this.surname = surname;
+ }
+
+
+ @Name("firstName")
+ public String getForename() {
+ return forename;
+ }
+
+ public void setForename(final String forename) {
+ this.forename = forename;
+ }
+
+
+ public LocalDate getBirth() {
+ return birth;
+ }
+
+ @Name("birthDay")
+ public void setBirth(final LocalDate birth) {
+ this.birth = birth;
+ }
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedType.java
new file mode 100644
index 00000000..5270d5e2
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedType.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+/**
+ * Used to test creation of referenced Types.
+ *
+ * Should not be used directly as input or output type.
+ */
+public class ReferencedType {
+
+ private String value;
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(final String value) {
+ this.value = value;
+ }
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java
new file mode 100644
index 00000000..b8a5d6cf
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import org.eclipse.microprofile.graphql.GraphQLApi;
+import org.eclipse.microprofile.graphql.Mutation;
+import org.eclipse.microprofile.graphql.Query;
+
+@GraphQLApi
+public class ReferencedTypeTestApi {
+
+ @Query
+ public ReferencingType referencingType() {
+ ReferencedType referencedType = new ReferencedType();
+ referencedType.setValue("value");
+ ReferencingType referencingType = new ReferencingType();
+ referencingType.setReferencedType(referencedType);
+ referencingType.setNonNullReferencedType(referencedType);
+ return referencingType;
+ }
+
+ @Mutation
+ public ReferencingType addReferencingType(ReferencingType referencingType) {
+ return referencingType;
+ }
+
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencingType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencingType.java
new file mode 100644
index 00000000..2b8ecb9b
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencingType.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import org.eclipse.microprofile.graphql.NonNull;
+
+/**
+ * Used to test the creation of {@link ReferencedType}.
+ */
+public class ReferencingType {
+
+ private ReferencedType referencedType;
+
+ @NonNull
+ private ReferencedType nonNullReferencedType;
+
+
+ public ReferencedType getReferencedType() {
+ return referencedType;
+ }
+
+ public void setReferencedType(final ReferencedType referencedType) {
+ this.referencedType = referencedType;
+ }
+
+ public ReferencedType getNonNullReferencedType() {
+ return nonNullReferencedType;
+ }
+
+ public void setNonNullReferencedType(final ReferencedType nonNullReferencedType) {
+ this.nonNullReferencedType = nonNullReferencedType;
+ }
+}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarHolder.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarHolder.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarHolder.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarHolder.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
similarity index 91%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
index dff3ce58..879f7697 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
@@ -20,13 +20,16 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
+
import javax.json.bind.annotation.JsonbProperty;
+
import org.eclipse.microprofile.graphql.DateFormat;
import org.eclipse.microprofile.graphql.Description;
import org.eclipse.microprofile.graphql.GraphQLApi;
import org.eclipse.microprofile.graphql.Id;
import org.eclipse.microprofile.graphql.Mutation;
import org.eclipse.microprofile.graphql.Name;
+import org.eclipse.microprofile.graphql.NonNull;
import org.eclipse.microprofile.graphql.NumberFormat;
import org.eclipse.microprofile.graphql.Query;
@@ -40,94 +43,94 @@ public class ScalarTestApi {
@Query("testScalarsInPojo")
public ScalarHolder getScalarHolder() {
ScalarHolder sh = new ScalarHolder();
-
+
// Short
short s = 123;
sh.setShortObject(new Short(s));
sh.setFormattedShortObject(new Short(s));
sh.setShortPrimitive(s);
-
+
// Integer
int i = 123456789;
sh.setIntObject(new Integer(i));
sh.setFormattedIntObject(new Integer(i));
sh.setIntPrimitive(i);
-
+
// Long
long l = 123456789L;
sh.setLongObject(new Long(l));
sh.setFormattedLongObject(new Long(l));
sh.setLongPrimitive(l);
sh.setFormattedLongPrimitive(l);
-
+
// Float
float f = 123456.789F;
sh.setFloatObject(new Float(f));
sh.setFormattedFloatObject(new Float(f));
sh.setFloatPrimitive(f);
-
+
// Double
double d = 123456.789;
sh.setDoubleObject(new Double(d));
sh.setFormattedDoubleObject(new Double(d));
sh.setDoublePrimitive(d);
-
+
// Byte
byte b = 123;
sh.setByteObject(new Byte("123"));
sh.setFormattedByteObject(new Byte("123"));
sh.setBytePrimitive(b);
-
+
// BigInteger
sh.setBigIntegerObject(BigInteger.valueOf(123456789));
sh.setFormattedBigIntegerObject(BigInteger.valueOf(123456789));
-
+
// BigDecimal
sh.setBigDecimalObject(BigDecimal.valueOf(123456.789));
sh.setFormattedBigDecimalObject(BigDecimal.valueOf(123456.789));
-
+
// Boolean
sh.setBooleanObject(Boolean.valueOf(false));
sh.setBooleanPrimitive(false);
-
+
// Character
char c = "c".charAt(0);
sh.setCharObject(new Character(c));
sh.setCharPrimitive(c);
-
+
// String
sh.setStringObject("123456789");
sh.setCharArray("123456789".toCharArray());
-
+
// LocalDate
LocalDate localDate = LocalDate.parse("2019-10-23");
sh.setDateObject(localDate);
sh.setAnotherDateObject(localDate);
sh.setFormattedDateObject(localDate);
-
+
// LocalTime
LocalTime localTime = LocalTime.parse("11:46:34.263");
sh.setTimeObject(localTime);
sh.setAnotherTimeObject(localTime);
sh.setFormattedTimeObject(localTime);
-
+
// LocalDateTime
LocalDateTime localDateTime = LocalDateTime.parse("2019-10-23T11:46:34.263");
sh.setDateTimeObject(localDateTime);
sh.setAnotherDateTimeObject(localDateTime);
sh.setFormattedDateTimeObject(localDateTime);
-
+
// ID
sh.setId("123456789");
-
+
return sh;
}
-
+
@Mutation
public ScalarHolder setScalarHolder(ScalarHolder scalarHolder) {
return scalarHolder;
}
-
+
@Query
public short getShortPrimitive(){
return getScalarHolder().getShortPrimitive();
@@ -142,7 +145,7 @@ public Short getShortObject(){
public int intPrimitive(){
return getScalarHolder().getIntPrimitive();
}
-
+
@Query
@Name("testIntObject")
public Integer intObject(){
@@ -154,7 +157,7 @@ public Integer intObject(){
public long longPrimitive(){
return getScalarHolder().getLongPrimitive();
}
-
+
@Query
@Name("testLongObject")
public Long longObject(){
@@ -166,7 +169,7 @@ public Long longObject(){
public float floatPrimitive(){
return getScalarHolder().getFloatPrimitive();
}
-
+
@Query
@Name("testFloatObject")
public Float floatObject(){
@@ -178,7 +181,7 @@ public Float floatObject(){
public double doublePrimitive(){
return getScalarHolder().getDoublePrimitive();
}
-
+
@Query
@Name("testDoubleObject")
public Double doubleObject(){
@@ -199,7 +202,7 @@ public Boolean isBooleanObject(){
public char charPrimitive(){
return getScalarHolder().getCharPrimitive();
}
-
+
@Query
@Name("testCharObject")
public Character charObject(){
@@ -233,7 +236,7 @@ public Byte byteObject(){
public BigInteger bigIntegerObject(){
return getScalarHolder().getBigIntegerObject();
}
-
+
@Query
@Name("testBigDecimalObject")
public BigDecimal bigDecimalObject(){
@@ -245,13 +248,13 @@ public BigDecimal bigDecimalObject(){
public LocalDate dateObject(){
return getScalarHolder().getDateObject();
}
-
+
@Query
@Name("testTimeObject")
public LocalTime timeObject(){
return getScalarHolder().getTimeObject();
}
-
+
@Query
@JsonbProperty("testDateTimeObject")
public LocalDateTime dateTimeObject(){
@@ -262,35 +265,59 @@ public LocalDateTime dateTimeObject(){
@Name("testId")
public String id(){
return getScalarHolder().getId();
- }
+ }
@Query
public BasicInterface basicMessageEcho(@Name("input") BasicInput input) {
return new BasicType(input.getMessage());
}
-
+
@Query
public String getaway(){
return "Just testing a name that starts with get but is not a getter";
}
-
+
@Mutation
public String settlement(){
return "Just testing a name that starts with set but is not a setter";
}
-
+
+ @Query
+ public String testNonNullParameter(@Name("param") @NonNull String param) {
+ return param;
+ }
+
@Query
@Description("Testing transformed date as a response")
- @DateFormat(value = "dd MMM yyyy")
+ @DateFormat(value = "dd MMM yyyy", locale = "en-GB")
public LocalDate transformedDate(){
String date = "2016-08-16";
return LocalDate.parse(date);
}
-
+
@Mutation
@Description("Testing transformed number as a response")
@NumberFormat(value = "number #", locale = "en-GB")
public Integer transformedNumber(Integer input){
return input;
}
-}
\ No newline at end of file
+
+ @Mutation
+ public Person addPerson(Person person) {
+ return person;
+ }
+
+ @Mutation
+ public JsonbPerson addJsonbPerson(JsonbPerson person) {
+ return person;
+ }
+
+ @Query
+ public BasicUnion basicUnionSelection(@Name("name") String name, @Name("count") Integer count) {
+ if (name != null) {
+ return new UnionMember(name);
+ }
+ return new AnotherUnionMember(count == null ? 0 : count);
+ }
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java
new file mode 100644
index 00000000..e8e6dbcf
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
+import org.eclipse.microprofile.graphql.DateFormat;
+import org.eclipse.microprofile.graphql.DefaultValue;
+import org.eclipse.microprofile.graphql.GraphQLApi;
+import org.eclipse.microprofile.graphql.Name;
+import org.eclipse.microprofile.graphql.NonNull;
+import org.eclipse.microprofile.graphql.Query;
+import org.eclipse.microprofile.graphql.Source;
+
+/**
+ * {@code @Source} testing.
+ */
+@GraphQLApi
+public class SourceTestApi {
+
+ @Query
+ public SourceType getSource() {
+ return new SourceType();
+ }
+
+ public String stringInput(@Source SourceType source, String input) {
+ return "Input was: " + input;
+ }
+
+ public String nonNullStringInput(@Source SourceType source, @NonNull String input) {
+ return "Input was: " + input;
+ }
+
+ public String namedStringInput(@Source SourceType source, @Name("in") String input) {
+ return "Input was: " + input;
+ }
+
+ public String defaultStringInput(@Source SourceType source, @DefaultValue("Default value") String input) {
+ return "Input was: " + input;
+ }
+
+ public String dateInput(@Source SourceType source, @DateFormat(value = "yyyy-MM-dd") LocalDate input) {
+ return "Input was: " + (input != null ? input.format(DateTimeFormatter.ISO_DATE) : null);
+ }
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java
new file mode 100644
index 00000000..09556360
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+/**
+ * Just used as {@code @Source}-object.
+ */
+public class SourceType {
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubType.java
new file mode 100644
index 00000000..3824e798
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubType.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+/**
+ * To Test the generation of a Type with supertypes.
+ */
+public class SubType extends ParentType {
+
+ private String subTypeField;
+
+ public String getSubTypeField() {
+ return subTypeField;
+ }
+
+ public void setSubTypeField(final String subTypeField) {
+ this.subTypeField = subTypeField;
+ }
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubTypeTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubTypeTestApi.java
new file mode 100644
index 00000000..80ccacd2
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubTypeTestApi.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import org.eclipse.microprofile.graphql.GraphQLApi;
+import org.eclipse.microprofile.graphql.Mutation;
+import org.eclipse.microprofile.graphql.Query;
+
+@GraphQLApi
+public class SubTypeTestApi {
+
+ @Query
+ public SubType subType() {
+ final SubType subType = new SubType();
+ subType.setSubTypeField("subTypeField");
+ subType.setParentTypeField("parentTypeField");
+ subType.setGrandParentTypeField("grandParentTypeField");
+ return subType;
+ }
+
+ @Mutation
+ public SubType subType(SubType subType) {
+ return subType;
+ }
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/UnionMember.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/UnionMember.java
new file mode 100644
index 00000000..360416af
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/UnionMember.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+/**
+ * To test the generation of a type, even if it's not used (directly) as a return type.
+ */
+public class UnionMember implements BasicUnion {
+
+ private String name;
+
+ public UnionMember() {
+ }
+
+ public UnionMember(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java
similarity index 93%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java
index 65de2726..435eea73 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java
@@ -18,7 +18,8 @@
import java.io.IOException;
/**
- * Extending a IOException to test transitive blacklist
+ * Extending a IOException to test transitive hideErrorMessage list
+ *
* @author Phillip Kruger (phillip.kruger@redhat.com)
*/
public class CsvIOException extends IOException {
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java
similarity index 95%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java
index 8d1a0bfb..8db6932b 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java
@@ -16,7 +16,8 @@
package org.eclipse.microprofile.graphql.tck.apps.superhero.api;
/**
- * To test transitive white list exceptions
+ * To test transitive showErrorMessage list exceptions
+ *
* @author Phillip Kruger (phillip.kruger@redhat.com)
*/
public class FlawNotFoundException extends WeaknessNotFoundException {
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java
similarity index 98%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java
index 77f381d3..c9571442 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java
@@ -98,31 +98,31 @@ public SuperHero superHero(@Name("name") @Description("Super hero name, not real
return Optional.ofNullable(heroDB.getHero(name)).orElseThrow(() -> new UnknownHeroException(name));
}
- @Query @Description("Testing the blacklist of Checked Exceptions")
+ @Query @Description("Testing the hideErrorMessage list of Checked Exceptions")
public SuperHero exportToFile(@Name("name") @Description("Super hero name, not real name") String name) throws IOException {
LOG.log(Level.INFO, "exportToFile invoked [{0}]", name);
throw new IOException("No you can not do this.");
}
- @Query @Description("Testing the blacklist of transitive Checked Exceptions")
+ @Query @Description("Testing the hideErrorMessage list of transitive Checked Exceptions")
public SuperHero exportToCSVFile(@Name("name") @Description("Super hero name, not real name") String name) throws CsvIOException {
LOG.log(Level.INFO, "exportToCSVFile invoked [{0}]", name);
throw new CsvIOException("No you can not do this.");
}
- @Query @Description("Testing the default blacklist for Runtime Exceptions")
+ @Query @Description("Testing the default hideErrorMessage list for Runtime Exceptions")
public SuperHero villian(@Name("name") @Description("Super hero name, not real name") String name) {
LOG.log(Level.INFO, "villian invoked [{0}]", name);
throw new RuntimeException("SuperHero can not be a villian");
}
- @Query @Description("Testing the whitelist for Runtime Exceptions")
+ @Query @Description("Testing the showErrorMessage list for Runtime Exceptions")
public SuperHero weakness(@Name("name") @Description("Super hero name, not real name") String name) {
LOG.log(Level.INFO, "weakness invoked [{0}]", name);
throw new WeaknessNotFoundException("Superhero has no weakness");
}
- @Query @Description("Testing the whitelist for transitive Runtime Exceptions")
+ @Query @Description("Testing the showErrorMessage list for transitive Runtime Exceptions")
public SuperHero findFlaw(@Name("name") @Description("Super hero name, not real name") String name) {
LOG.log(Level.INFO, "findFlaw invoked [{0}]", name);
throw new FlawNotFoundException("Superhero has no flaw");
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/SuperHeroLookupException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/SuperHeroLookupException.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/SuperHeroLookupException.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/SuperHeroLookupException.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/WeaknessNotFoundException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/WeaknessNotFoundException.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/WeaknessNotFoundException.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/WeaknessNotFoundException.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSidekickException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSidekickException.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSidekickException.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSidekickException.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSuperHeroException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSuperHeroException.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSuperHeroException.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSuperHeroException.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java
similarity index 97%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java
index 4162dabb..1d6aa4f3 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java
@@ -162,9 +162,10 @@ private static String getInitalJson() {
"\"realName\":\"Tony Stark\"," +
"\"primaryLocation\":\"Los Angeles, CA\"," +
"\"superPowers\":[\"wealth\",\"engineering\"]," +
+ "\"powerSource\":{\"netWorth\":12400000000.00," +
"\"teamAffiliations\":[{\"name\":\"Avengers\"}]," +
"\"equipment\":[{\"id\": 1001, \"name\": \"Iron Man Suit\", \"powerLevel\": 18, " +
- "\"height\": 1.8, \"weight\": 120.7, \"supernatural\": false, \"dateCreated\": \"12 February 1967 at 11:45 in Africa/Johannesburg\"," +
+ "\"height\": 1.8, \"weight\": 120.7, \"supernatural\": false, \"dateCreated\": \"12 February 1967 at 11:45 in Africa/Johannesburg\"," +
"\"dateLastUsed\": \"30 Jan 2020 at 17:55 in zone +0200\" }]," +
"\"colorOfCostume\":\"Red\"," +
"\"idNumber\":\"ID-12345678\"," +
@@ -177,6 +178,7 @@ private static String getInitalJson() {
"\"realName\":\"Peter Parker\"," +
"\"primaryLocation\":\"New York, NY\"," +
"\"superPowers\":[\"Spidey Sense\",\"Wall-Crawling\",\"Super Strength\",\"Web-shooting\"]," +
+ "\"powerSource\":{\"dateOfEvent\":\"06/18/2016\",\"medicalNotes\":\"Bit by a radioactive spider\"}," +
"\"teamAffiliations\":[{\"name\":\"Avengers\"}]," +
"\"colorOfCostume\":\"Red\"," +
"\"idNumber\":\"ID-78904321\"," +
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroLocator.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroLocator.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroLocator.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroLocator.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/SidekickDatabase.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/SidekickDatabase.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/SidekickDatabase.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/SidekickDatabase.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownHeroException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownHeroException.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownHeroException.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownHeroException.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownSidekickException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownSidekickException.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownSidekickException.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownSidekickException.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownTeamException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownTeamException.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownTeamException.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownTeamException.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Character.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Character.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Character.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Character.java
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/ExtremeWealth.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/ExtremeWealth.java
new file mode 100644
index 00000000..45aaadf3
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/ExtremeWealth.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.superhero.model;
+
+import org.eclipse.microprofile.graphql.Description;
+import org.eclipse.microprofile.graphql.NonNull;
+
+@Description("Extreme amounts of wealth allowing someone to behave like a hero")
+public class ExtremeWealth implements PowerSource {
+
+ @NonNull
+ @Description("The net worth granting this character powers")
+ private Float netWorth;
+
+ public Float getNetWorth() {
+ return netWorth;
+ }
+
+ public void setNetWorth(Float netWorth) {
+ this.netWorth = netWorth;
+ }
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/GeneticMutation.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/GeneticMutation.java
new file mode 100644
index 00000000..d94fbb43
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/GeneticMutation.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.superhero.model;
+
+import java.time.LocalDate;
+import javax.json.bind.annotation.JsonbDateFormat;
+import org.eclipse.microprofile.graphql.Description;
+import org.eclipse.microprofile.graphql.NonNull;
+
+@Description("Something that modifies the DNA of a character to give them powers")
+public class GeneticMutation {
+
+ @NonNull
+ @Description("Was this mutation present at birth")
+ private boolean isPresentAtBirth = false;
+
+ @Description("The date of the event changing the characters DNA")
+ @JsonbDateFormat("MM/dd/yyyy")
+ private LocalDate dateOfMutation;
+
+ public LocalDate getDateOfMutation() {
+ return dateOfMutation;
+ }
+
+ public boolean getIsPresentAtBirth() {
+ return isPresentAtBirth;
+ }
+
+ public void setDateOfMutation(LocalDate dateOfMutation) {
+ this.dateOfMutation = dateOfMutation;
+ }
+
+ public void setIsPresentAtBirth(boolean isPresentAtBirth) {
+ this.isPresentAtBirth = isPresentAtBirth;
+ }
+}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Item.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Item.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Item.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Item.java
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Magic.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Magic.java
new file mode 100644
index 00000000..d4fdce71
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Magic.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.superhero.model;
+
+import org.eclipse.microprofile.graphql.Description;
+import org.eclipse.microprofile.graphql.NonNull;
+
+@Description("A magic source that provides a super hero with powers")
+public class Magic implements PowerSource {
+
+ private boolean canBeLearned = false;
+
+ @NonNull
+ @Description("Can this magic be learned, or must it be given or obtained innately")
+ public boolean canBeLearned() {
+ return canBeLearned;
+ }
+
+ public void setCanBeLearned(boolean canBeLearned) {
+ this.canBeLearned = canBeLearned;
+ }
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/PowerSource.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/PowerSource.java
new file mode 100644
index 00000000..872ef3e5
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/PowerSource.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.superhero.model;
+
+import org.eclipse.microprofile.graphql.Description;
+import org.eclipse.microprofile.graphql.Union;
+
+@Union
+@Description("Anything that created or provides a super hero's power")
+public interface PowerSource {
+
+}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Sidekick.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Sidekick.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Sidekick.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Sidekick.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java
similarity index 89%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java
index bc35542b..33284c20 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java
@@ -39,6 +39,7 @@
public class SuperHero implements Character {
private List teamAffiliations;
private List<@NonNull String> superPowers;
+ private PowerSource powerSource;
private String primaryLocation;
@Description("Super hero name/nickname")
private String name;
@@ -64,39 +65,41 @@ public class SuperHero implements Character {
@JsonbNumberFormat(value = "¤ ###,###.##",locale = "en-US")
private Double bankBalance;
-
+
@JsonbNumberFormat(value = "¤ 000.00",locale = "en-US")
private BigDecimal netWorth;
-
+
@JsonbNumberFormat(value = "###.## 'ml'", locale = "en-GB")
private Float favouriteDrinkSize;
-
+
private List lastKnownCoordinates;
-
+
private List> track;
private Set beenThere;
-
+
private ShirtSize sizeOfTShirt;
private List importantDates;
-
+
private List kidsAges;
-
+
@DateFormat("dd MMMM yyyy")
private LocalDate birthday;
-
+
public SuperHero(){
}
-
- public SuperHero(List teamAffiliations,
- List superPowers,
- String primaryLocation,
- String name,
+
+ public SuperHero(List teamAffiliations,
+ List superPowers,
+ PowerSource powerSource,
+ String primaryLocation,
+ String name,
String realName) {
this.teamAffiliations = teamAffiliations;
this.superPowers = superPowers;
+ this.powerSource = powerSource;
this.primaryLocation = primaryLocation;
this.name = name;
this.realName = realName;
@@ -110,6 +113,10 @@ public List getSuperPowers() {
return superPowers;
}
+ public PowerSource getPowerSource() {
+ return powerSource;
+ }
+
@Description("Location where you are most likely to find this hero")
public String getPrimaryLocation() {
return primaryLocation;
@@ -261,7 +268,7 @@ public Set getBeenThere() {
public void setBeenThere(Set beenThere) {
this.beenThere = beenThere;
}
-
+
public List<@DateFormat("dd/MM") LocalDate> getImportantDates() {
return importantDates;
}
@@ -287,8 +294,8 @@ public LocalDate getBirthday() {
@Name("dateOfBirth")
public void setBirthday(LocalDate birthday) {
this.birthday = birthday;
- }
-
+ }
+
public enum ShirtSize {
S,
M,
@@ -300,17 +307,18 @@ public enum ShirtSize {
@Override
public String toString() {
- return "SuperHero{"
- + ", superPowers=" + superPowers
- + ", primaryLocation=" + primaryLocation
- + ", name=" + name
- + ", realName=" + realName
- + ", dateOfLastCheckin=" + dateOfLastCheckin
- + ", patrolStartTime=" + patrolStartTime
- + ", timeOfLastBattle=" + timeOfLastBattle
- + ", costumeColor=" + costumeColor
- + ", namesOfKnownEnemies=" + namesOfKnownEnemies
- + ", idNumber=" + idNumber
+ return "SuperHero{"
+ + ", superPowers=" + superPowers
+ + ", powerSource=" + powerSource
+ + ", primaryLocation=" + primaryLocation
+ + ", name=" + name
+ + ", realName=" + realName
+ + ", dateOfLastCheckin=" + dateOfLastCheckin
+ + ", patrolStartTime=" + patrolStartTime
+ + ", timeOfLastBattle=" + timeOfLastBattle
+ + ", costumeColor=" + costumeColor
+ + ", namesOfKnownEnemies=" + namesOfKnownEnemies
+ + ", idNumber=" + idNumber
+ ", sizeOfTShirt=" + sizeOfTShirt + '}';
}
}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Team.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Team.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Team.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Team.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Token.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Token.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Token.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Token.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/UnknownCharacterException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/UnknownCharacterException.java
similarity index 100%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/UnknownCharacterException.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/UnknownCharacterException.java
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java
similarity index 89%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java
index 5d7215d3..ce620399 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java
@@ -58,8 +58,9 @@ private static String getPropertyAsString() throws IOException {
private static final Properties PROPERTIES = new Properties();
static {
PROPERTIES.put(ConfigKey.DEFAULT_ERROR_MESSAGE, "Unexpected failure in the system. Jarvis is working to fix it.");
- PROPERTIES.put(ConfigKey.EXCEPTION_BLACK_LIST, "java.io.IOException,java.util.concurrent.TimeoutException");
- PROPERTIES.put(ConfigKey.EXCEPTION_WHITE_LIST, "org.eclipse.microprofile.graphql.tck.apps.superhero.api.WeaknessNotFoundException");
+ PROPERTIES.put(ConfigKey.EXCEPTION_HIDE_ERROR_MESSAGE_LIST, "java.io.IOException,java.util.concurrent.TimeoutException");
+ PROPERTIES.put(ConfigKey.EXCEPTION_SHOW_ERROR_MESSAGE_LIST,
+ "org.eclipse.microprofile.graphql.tck.apps.superhero.api.WeaknessNotFoundException");
}
}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java
similarity index 95%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java
index 3902b04d..48c237fa 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java
@@ -43,7 +43,7 @@ public static DirectoryStream getDataForImplementation() throws IOExceptio
public static DirectoryStream getDataForSpecification() throws IOException, URISyntaxException {
URL jar = DynamicPaths.class.getProtectionDomain().getCodeSource().getLocation();
Path jarFile = Paths.get(jar.toURI());
- FileSystem fs = FileSystems.newFileSystem(jarFile, null);
+ FileSystem fs = FileSystems.newFileSystem(jarFile, (ClassLoader)null);
return Files.newDirectoryStream(fs.getPath(SPEC));
}
}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
similarity index 56%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
index 5634e3f1..98a35ab7 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
@@ -26,17 +26,24 @@
import java.io.OutputStream;
import java.io.Reader;
import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
import javax.json.JsonPatchBuilder;
import javax.json.JsonReader;
import org.jboss.shrinkwrap.api.Archive;
@@ -52,6 +59,8 @@
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
+import static java.nio.charset.StandardCharsets.UTF_8;
+
/**
* This test runs all test defined in the implementation 'src/test/resources' folder
* and all test included here in the archive's /tests folder
@@ -62,15 +71,17 @@ public class ExecutionDynamicTest extends Arquillian {
private static final String PATH = "graphql"; // Default. TODO: Test when configured
- private static final String UTF8 = "utf-8";
private static final String MEDIATYPE_JSON = "application/json";
private static final String HEADER_CONTENT_TYPE = "Content-Type";
private static final String HEADER_ACCEPT = "Accept";
private static final String QUERY = "query";
private static final String VARIABLES = "variables";
+ private static final String EQUALS = "=";
+ private static final String AND = "&";
private static final int CONNECT_TIMEOUT = Integer.getInteger("mp.tck.connect.timeout", 5000);
private static final int READ_TIMEOUT = Integer.getInteger("mp.tck.read.timeout", 5000);
+ private HttpMethod currentHttpMethod = null;
private TestData currentTestData = null;
private String currentOutput = null;
@@ -84,66 +95,118 @@ public static Archive> getDeployment() throws Exception {
@RunAsClient
@Test(dataProvider="specification", dataProviderClass = GraphQLTestDataProvider.class)
- public void testSpecification(TestData testData){
- runTest(testData);
+ public void testSpecificationPOST(TestData testData){
+ runTest(testData, HttpMethod.POST);
}
@RunAsClient
@Test(dataProvider="implementation", dataProviderClass = GraphQLTestDataProvider.class)
- public void testImplementationSpecific(TestData testData) throws IOException {
- runTest(testData);
+ public void testImplementationSpecificPOST(TestData testData) {
+ runTest(testData, HttpMethod.POST);
}
- private void runTest(TestData testData){
+ @RunAsClient
+ @Test(dataProvider="specification", dataProviderClass = GraphQLTestDataProvider.class)
+ public void testSpecificationGET(TestData testData){
+ runTest(testData, HttpMethod.GET);
+ }
+
+ @RunAsClient
+ @Test(dataProvider="implementation", dataProviderClass = GraphQLTestDataProvider.class)
+ public void testImplementationSpecificGET(TestData testData) {
+ runTest(testData,HttpMethod.GET);
+ }
+
+ private void runTest(TestData testData, HttpMethod httpMethod){
if(testData!=null && isValidInput(testData.getInput())) {
- LOG.info("Running test [" + testData.getName() + "]");
+ LOG.info("Running test [" + httpMethod + " :: " + testData.getName() + "]");
this.currentTestData = testData;
+ this.currentHttpMethod = httpMethod;
Map httpHeaders = new HashMap<>();
if(testData.getHttpHeaders()!=null && !testData.getHttpHeaders().isEmpty()){
- for(Map.Entry header:httpHeaders.entrySet()){
- httpHeaders.put(header.getKey(), header.getValue());
+ for(String headerName:testData.getHttpHeaders().stringPropertyNames()){
+ String value = testData.getHttpHeaders().getProperty(headerName);
+ LOG.info("setting header " + headerName + " to " + value);
+ httpHeaders.put(headerName, value);
}
}
- // Prepare if needed
- if(isValidInput(testData.getPrepare())){
- postHTTPRequest(testData.getPrepare(),testData.getVariables(),httpHeaders);
- }
+ // loop through each of the input content and pass if at least one passes
+ boolean success = false;
+ ArrayList listExceptions = new ArrayList<>();
+ for (String input : testData.getInput()) {
+ try {
+ // Prepare if needed
+ if(isValidInput(testData.getPrepare())){
+ executeHttpRequest(HttpMethod.POST, testData.getPrepare(),testData.getVariables(),httpHeaders);
+ }
- // Run the actual test and get the response
- HttpResponse httpResponse = postHTTPRequest(testData.getInput(),testData.getVariables(),httpHeaders);
- if(httpResponse.isSuccessful()){
- this.currentOutput = httpResponse.getContent();
-
- // Validate the output structure
- validateResponseStructure();
-
- // Cleanup if needed
- if(isValidInput(testData.getCleanup())){
- postHTTPRequest(testData.getCleanup(),testData.getVariables(),httpHeaders);
- }
-
- // Compare to expected output
- try{
- JSONAssert.assertEquals(testData.getFailMessage(),testData.getOutput(), this.currentOutput, testData.beStrict());
- } catch (JSONException ex) {
- clearGlobals();
- Assert.fail(ex.getMessage());
+ assertTest(input, testData, httpHeaders, httpMethod);
+ success = true;
+ break;
+ } catch (AssertionError ae) {
+ // don't raise assertion failure as this is checked below
+ listExceptions.add(ae);
}
- } else {
- Assert.assertEquals(httpResponse.status, testData.getExpectedHttpStatusCode(),httpResponse.getContent());
}
-
+ if (!success){
+ Assert.fail(getErrorMessages(listExceptions));
+ }
}else{
clearGlobals();
LOG.warning("Could not find any tests to run...");
}
}
+ private void assertTest(String input, TestData testData, Map httpHeaders, HttpMethod httpMethod){
+ // We can only do Queries over GET
+ if(testData.isMutation()){
+ httpMethod = HttpMethod.POST;
+ }
+
+ // Run the actual test and get the response
+ HttpResponse httpResponse = executeHttpRequest(httpMethod, input,testData.getVariables(),httpHeaders);
+ if(httpResponse.isSuccessful()){
+ this.currentOutput = httpResponse.getContent();
+
+ // Validate the output structure
+ validateResponseStructure();
+
+ // Cleanup if needed
+ if(isValidInput(testData.getCleanup())){
+ executeHttpRequest(HttpMethod.POST, testData.getCleanup(),testData.getVariables(),httpHeaders);
+ }
+
+ boolean success = false;
+ ArrayList listExceptions = new ArrayList<>();
+
+ // Compare to expected output and pass if at least one of the output files match
+ for (String output : testData.getOutput()) {
+ try {
+ JSONAssert.assertEquals(testData.getFailMessage(), output, this.currentOutput, testData.beStrict());
+ success = true;
+ break;
+ } catch (AssertionError ex) {
+ // don't raise assertion failure as this is checked below
+ listExceptions.add(ex);
+ } catch (JSONException je) {
+ // indicates some sort of JSON formatting exception
+ Assert.fail(je.getMessage());
+ }
+ }
+ if (!success) {
+ Assert.fail(getErrorMessages(listExceptions));
+ }
+ } else {
+ Assert.assertEquals(httpResponse.status, testData.getExpectedHttpStatusCode(),httpResponse.getContent());
+ }
+ }
+
@AfterMethod
public void tearDown(ITestResult result) {
if (result!=null && result.getStatus() == ITestResult.FAILURE) {
- PrintUtil.toDisk(this.currentTestData,
+ PrintUtil.toDisk(this.currentHttpMethod.toString(),
+ this.currentTestData,
this.currentOutput,
result.getThrowable());
}
@@ -200,21 +263,41 @@ private boolean isValidInput(String input){
return input!=null && !input.isEmpty();
}
- private HttpResponse postHTTPRequest(String graphQL, JsonObject variables, Map httpHeaders){
+ private boolean isValidInput(Set setInput){
+ for (String input : setInput) {
+ if (!isValidInput(input)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private String getErrorMessages(ArrayList listExceptions){
+ StringBuilder sb = new StringBuilder();
+ listExceptions.forEach(ex -> sb.append(ex.getMessage()).append('\n'));
+ return sb.toString();
+ }
+
+
+ private HttpResponse executeHttpRequest(HttpMethod httpMethod,
+ String graphQL,
+ JsonObject variables,
+ Map httpHeaders){
try {
- URL url = new URL(this.uri + PATH);
+
+ URL url = getURL(httpMethod,graphQL, variables);
+
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- connection.setRequestMethod("POST"); // TODO: Also test with GET and query string ? Are we allowing it ?
-
+ connection.setRequestMethod(httpMethod.toString());
setTimeouts(connection);
addHeaders(connection,httpHeaders);
-
connection.setDoOutput(true);
- JsonObject body = createRequestBody(graphQL, variables);
-
- postRequest(connection,body);
-
+ if(httpMethod.POST.equals(httpMethod)){
+ JsonObject body = createRequestBody(graphQL, variables);
+ postRequest(connection,body);
+ }
+
int status = connection.getResponseCode();
if(status == 200) {
@@ -224,15 +307,15 @@ private HttpResponse postHTTPRequest(String graphQL, JsonObject variables, Map httpHeaders){
// Default headers
connection.setRequestProperty(HEADER_CONTENT_TYPE, MEDIATYPE_JSON); // default header.
@@ -252,17 +335,38 @@ private void setTimeouts(HttpURLConnection connection){
connection.setReadTimeout(READ_TIMEOUT);
}
+ private URL getURL(HttpMethod httpMethod,
+ String graphQL,
+ JsonObject variables) throws MalformedURLException, URISyntaxException, UnsupportedEncodingException{
+ URL url = new URL(this.uri + PATH);
+
+ if(HttpMethod.GET.equals(httpMethod)){
+ String query = QUERY + EQUALS + URLEncoder.encode(graphQL,"UTF8");
+ if(variables!=null && !variables.isEmpty()) {
+ query = query + AND + VARIABLES + EQUALS + URLEncoder.encode(variables.toString(),"UTF8");
+ }
+
+ URI uri = new URI(url.getProtocol(), null, url.getHost(), url.getPort(), url.getPath(), query, null);
+ url = uri.toURL();
+ }
+
+ return url;
+ }
+
private JsonObject createRequestBody(String graphQL, JsonObject variables){
- // Create the request
- if(variables==null || variables.isEmpty()) {
- variables = Json.createObjectBuilder().build();
+ JsonObjectBuilder builder = Json.createObjectBuilder();
+ if(graphQL!=null && !graphQL.isEmpty()) {
+ builder.add(QUERY, graphQL);
}
- return Json.createObjectBuilder().add(QUERY, graphQL).add(VARIABLES, variables).build();
+ if(variables!=null && !variables.isEmpty()) {
+ builder.add(VARIABLES, variables);
+ }
+ return builder.build();
}
private void postRequest(HttpURLConnection connection,JsonObject body) throws IOException{
try(OutputStream os = connection.getOutputStream()) {
- byte[] input = body.toString().getBytes(UTF8);
+ byte[] input = body.toString().getBytes(UTF_8);
os.write(input, 0, input.length);
}
}
@@ -271,7 +375,7 @@ private String getResponse(HttpURLConnection connection) throws IOException{
int status = connection.getResponseCode();
if(status == 200) {
// Read the response
- try(BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), UTF8))) {
+ try(BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), UTF_8))) {
StringBuilder response = new StringBuilder();
String responseLine;
while ((responseLine = br.readLine()) != null) {
@@ -308,4 +412,8 @@ public boolean isSuccessful(){
return status==200;
}
}
+
+ enum HttpMethod{
+ GET,POST
+ }
}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java
similarity index 82%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java
index 400d9fc8..1a9eba13 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java
@@ -29,7 +29,6 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.eclipse.microprofile.graphql.tck.dynamic.schema.SchemaTestDataProvider;
@@ -84,24 +83,39 @@ public void testPartsOfSchema(TestData input) {
snippet = getSchemaSnippet(schema, input.getSnippetSearchTerm());
}
- Assert.assertTrue(matchAtLeastOneOfTheSnippets(input,snippet), "[" + input.getHeader() + "] " + input.getErrorMessage());
+ Assert.assertTrue(matchCondition(input,snippet), "[" + input.getHeader() + "] " + input.getErrorMessage());
}
- private boolean matchAtLeastOneOfTheSnippets(TestData input,String snippet){
- List containsAnyOfString = input.getContainsAnyOfString();
- for(String contains:containsAnyOfString){
- if(contains.startsWith("!")){
- contains = contains.substring(1);
- if(!snippet.contains(contains)){
- return true;
+ private boolean matchCondition(TestData input,String snippet){
+
+ if(input.hasCondition()){
+ if(input.getCondition().equals(TestData.Condition.OR)){
+ for(String contains:input.getContainsString()){
+ if(matchSingle(contains,snippet)){
+ return true;
+ }
}
- }else{
- if(snippet.contains(contains)){
- return true;
+ return false;
+ } else if (input.getCondition().equals(TestData.Condition.AND)){
+ for(String contains:input.getContainsString()){
+ if(!matchSingle(contains,snippet)){
+ return false;
+ }
}
+ return true;
}
+ }
+
+ return matchSingle(input.getContainsString().get(0), snippet);
+ }
+
+ private boolean matchSingle(String single,String snippet){
+ if(single.startsWith("!")){
+ single = single.substring(1);
+ return !snippet.contains(single);
+ }else{
+ return snippet.contains(single);
}
- return false;
}
private void saveSchemaFile(){
@@ -124,7 +138,7 @@ private String getSchemaContent() throws MalformedURLException, ProtocolExceptio
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
- connection.setRequestProperty("Content-Type", "plain/text");
+ connection.setRequestProperty("Content-Type", "text/plain");
// Check the response code
int responseCode = connection.getResponseCode();
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
similarity index 68%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
index 8a9571f8..fed03862 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
@@ -59,7 +59,10 @@ private GraphQLTestDataProvider(){
@DataProvider(name="specification")
public static Object[][] getSpecificationTestData(){
- return getTestData(DataFrom.specification);
+ if(!disableSpecificationTests()){
+ return getTestData(DataFrom.specification);
+ }
+ return toObjectArray(Collections.EMPTY_LIST);
}
@DataProvider(name="implementation")
@@ -92,7 +95,7 @@ private static List toListOfTestData(Set testFolders){
if(!testFolder.getFileName().toString().startsWith("META-INF")){// Ignore META-INF
try {
TestData testData = toTestData(testFolder);
- if(!testData.shouldIgnore()){
+ if(!testData.shouldIgnore() && testData.getInput().size() > 0){
testDataList.add(testData);
}
} catch (IOException ioe) {
@@ -136,54 +139,56 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
if(!Files.isDirectory(file)){
String filename = file.getFileName().toString();
- switch (filename) {
- case "input.graphql":
- {
- String content = getFileContent(file);
- testData.setInput(content);
- break;
- }
- case "httpHeader.properties":
- {
- Properties properties = new Properties();
- properties.load(Files.newInputStream(file));
- testData.setHttpHeaders(properties);
- break;
- }
- case "output.json":
- {
- String content = getFileContent(file);
- testData.setOutput(content);
- break;
- }
- case "variables.json":
- {
- String content = getFileContent(file);
- testData.setVariables(toJsonObject(content));
- break;
- }
- case "test.properties":
- {
- Properties properties = new Properties();
- properties.load(Files.newInputStream(file));
- testData.setProperties(properties);
+ if (filename.matches("output.*\\.json")){
+ // Special case to cater for multiple output*.json files where the
+ // test will pass on the first file content that matches.
+ // If no content matches, then the test will fail.
+ String content = getFileContent(file);
+ testData.addOutput(content);
+ } else if (filename.matches("input.*\\.graphql")){
+ // Special case to cater for multiple input*.graphql files where the
+ // test will pass on the first file input content which is successful.
+ // If no content matches, then the test will fail.
+ String content = getFileContent(file);
+ testData.addInput(content);
+ } else {
+ switch (filename) {
+ case "httpHeader.properties":
+ {
+ Properties properties = new Properties();
+ properties.load(Files.newInputStream(file));
+ testData.setHttpHeaders(properties);
+ break;
+ }
+ case "variables.json":
+ {
+ String content = getFileContent(file);
+ testData.setVariables(toJsonObject(content));
+ break;
+ }
+ case "test.properties":
+ {
+ Properties properties = new Properties();
+ properties.load(Files.newInputStream(file));
+ testData.setProperties(properties);
+ break;
+ }
+ case "cleanup.graphql":
+ {
+ String content = getFileContent(file);
+ testData.setCleanup(content);
+ break;
+ }
+ case "prepare.graphql":
+ {
+ String content = getFileContent(file);
+ testData.setPrepare(content);
+ break;
+ }
+ default:
+ LOG.log(Level.WARNING, "Ignoring unknown file {0}", filename);
break;
- }
- case "cleanup.graphql":
- {
- String content = getFileContent(file);
- testData.setCleanup(content);
- break;
- }
- case "prepare.graphql":
- {
- String content = getFileContent(file);
- testData.setPrepare(content);
- break;
- }
- default:
- LOG.log(Level.WARNING, "Ignoring unknown file {0}", filename);
- break;
+ }
}
}
return FileVisitResult.CONTINUE;
@@ -236,4 +241,8 @@ private static JsonObject toJsonObject(String jsonString){
return jsonReader.readObject();
}
}
+
+ private static boolean disableSpecificationTests(){
+ return Boolean.valueOf(System.getProperty("disableSpecificationTests", "false"));
+ }
}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
similarity index 65%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
index c41f593e..51ca8d8d 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
@@ -21,7 +21,6 @@
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
-import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -36,6 +35,8 @@
import javax.json.JsonWriterFactory;
import javax.json.stream.JsonGenerator;
+import static java.nio.charset.StandardCharsets.UTF_8;
+
/**
* Print the Test data to output
* @author Phillip Kruger (phillip.kruger@redhat.com)
@@ -46,18 +47,18 @@ public class PrintUtil {
private PrintUtil(){
}
- public static void toDisk(TestData testData, String output, Throwable throwable){
+ public static void toDisk(String httpMethod, TestData testData, String output, Throwable throwable){
try{
- String log = toString(testData, output, throwable);
- writeTestFile(testData.getName(),log);
+ String log = toString(httpMethod, testData, output, throwable);
+ writeTestFile(httpMethod + "_" + testData.getName(),log);
} catch (IOException ex) {
- LOG.log(Level.SEVERE, "Could not save data to target folder - {0}", ex.getMessage());
+ LOG.log(Level.SEVERE, "Could not save " + httpMethod + " data to target folder " + testData.getName(), ex);
}
}
- private static String toString(TestData testData,String output, Throwable throwable){
+ private static String toString(String httpMethod, TestData testData, String output, Throwable throwable){
try(StringWriter sw = new StringWriter()){
- sw.write("============= " + testData.getName() + " =============");
+ sw.write("============= " + httpMethod + " :: " + testData.getName() + " =============");
sw.write("\n\n");
if(throwable!=null){
sw.write("errorMessage = " + throwable.getMessage());
@@ -65,13 +66,24 @@ private static String toString(TestData testData,String output, Throwable throwa
sw.write("errorMessage = ");
}
sw.write("\n\n");
- sw.write("given input = " + testData.getInput());
+ if (testData.getInput().size() == 1) {
+ sw.write("given input = " + testData.getInput().iterator().next());
+ } else {
+ sw.write("given multiple inputs = \n");
+ testData.getInput().stream().forEach(i -> sw.write(i + "\n"));
+ }
sw.write("\n\n");
sw.write("variables input = " + prettyJson(testData.getVariables()));
sw.write("\n\n");
sw.write("http headers input = " + testData.getHttpHeaders());
sw.write("\n\n");
- sw.write("expected output = " + prettyJson(testData.getOutput()));
+
+ if (testData.getOutput().size() == 1) {
+ sw.write("expected output = " + prettyJson(testData.getOutput().iterator().next()));
+ } else {
+ sw.write("expected output was either of the following = " + String.join("\nOR\n", testData.getOutput()));
+ }
+
sw.write("\n\n");
sw.write("received output = " + prettyJson(output));
sw.write("\n\n");
@@ -81,25 +93,33 @@ private static String toString(TestData testData,String output, Throwable throwa
}
}
- private static void writeTestFile(String testName, String data) throws IOException{
+ private static void writeTestFile(String fileName, String data) throws IOException{
if(data!=null && !data.isEmpty()){
- Path file = Paths.get("target" + FS + testName + ".log");
+ Path file = Paths.get("target" + FS + fileName + ".log");
Path createFile = Files.createFile(file);
- try(BufferedWriter writer = Files.newBufferedWriter(createFile, Charset.forName("UTF-8"))){
+ try(BufferedWriter writer = Files.newBufferedWriter(createFile, UTF_8)){
writer.write(data);
}
}
}
- private static String prettyJson(String json) {
- if(json!=null){
- JsonReader jr = Json.createReader(new StringReader(json));
+ private static String prettyJson(String text) {
+ if (text == null) {
+ return null;
+ }
+ if(isJson(text)) {
+ JsonReader jr = Json.createReader(new StringReader(text));
JsonObject jobj = jr.readObject();
return prettyJson(jobj);
+ } else {
+ return text;
}
- return null;
}
-
+
+ private static boolean isJson(String text) {
+ return text.startsWith("{") || text.startsWith("[");
+ }
+
private static String prettyJson(JsonObject jsonObject) {
if(jsonObject!=null){
StringWriter sw = new StringWriter();
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
similarity index 89%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
index ce71bc83..3c3b7e90 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
@@ -17,8 +17,10 @@
*/
package org.eclipse.microprofile.graphql.tck.dynamic.execution;
+import java.util.HashSet;
import java.util.Objects;
import java.util.Properties;
+import java.util.Set;
import javax.json.JsonObject;
/**
@@ -27,9 +29,9 @@
*/
public class TestData {
private String name;
- private String input;
+ private Set input;
private Properties httpHeaders;
- private String output;
+ private Set output;
private JsonObject variables;
private String prepare;
private String cleanup;
@@ -41,12 +43,14 @@ public TestData(){
public TestData(String name){
this.name = name;
+ this.output = new HashSet<>();
+ this.input = new HashSet<>();
}
public TestData(String name,
- String input,
+ Set input,
Properties httpHeaders,
- String output,
+ Set output,
JsonObject variables,
String prepare,
String cleanup,
@@ -62,11 +66,15 @@ public TestData(String name,
this.properties = properties;
}
+ public boolean isMutation(){
+ return input.contains("mutation") || input.contains("Mutation");
+ }
+
public String getName() {
return name;
}
- public String getInput() {
+ public Set getInput() {
return input;
}
@@ -74,10 +82,14 @@ public Properties getHttpHeaders() {
return httpHeaders;
}
- public String getOutput() {
+ public Set getOutput() {
return output;
}
+ public void addOutput(String output) {
+ this.output.add(output);
+ }
+
public JsonObject getVariables() {
return variables;
}
@@ -98,15 +110,19 @@ public void setName(String name) {
this.name = name;
}
- public void setInput(String input) {
+ public void setInput(Set input) {
this.input = input;
}
+ public void addInput(String input) {
+ this.input.add(input);
+ }
+
public void setHttpHeaders(Properties httpHeaders) {
this.httpHeaders = httpHeaders;
}
- public void setOutput(String output) {
+ public void setOutput(Set output) {
this.output = output;
}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
new file mode 100644
index 00000000..bab0d063
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.dynamic.schema;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Parses the csv-files used for schema validity tests.
+ *
+ * Uses {@code |} as separator and {@code ´} as escape character.
+ *
+ * @author Yannick Bröker (ybroeker@techfak.uni-bielefeld.de)
+ */
+public class CsvParser {
+
+ private CsvParser() {
+ }
+
+ public static List parse(Path testFile) throws IOException {
+ Reader reader = Files.newBufferedReader(testFile);
+
+ try {
+ return parse(testFile.getFileName().toString(), reader);
+ } catch (RuntimeException e) {
+ throw new RuntimeException("Failed parsing '" + testFile + "'", e);
+ }
+ }
+
+ public static List parse(String fileName, Reader reader) throws IOException {
+ List testData = new ArrayList<>();
+
+ String currentHeader = "";
+
+ int partIdx = 0;
+ String[] parts = new String[4];
+
+ boolean isHeader = false;
+ boolean escaped = false;
+ int last = '\n';
+
+ StringBuilder stringBuilder = new StringBuilder();
+ for (int c = reader.read(); c != -1; c = reader.read()) {
+ if (c == ESCAPE) {
+ //start/end of escaping
+ escaped = !escaped;
+ if (last == ESCAPE) {
+ //double-escape
+ stringBuilder.appendCodePoint(ESCAPE);
+ last = -1;
+ continue;
+ }
+ } else if (c == HEADER && last == '\n' && !escaped) {
+ //start of header, can only happen on new line
+ isHeader = true;
+ } else {
+ if ((c == NEWLINE) && !escaped) {
+ String token = stringBuilder.toString();
+ stringBuilder = new StringBuilder();
+ //end of header or
+ if (isHeader) {
+ //end of header
+ currentHeader = token;
+ isHeader = false;
+ } else if (partIdx == 3) {
+ parts[partIdx] = token;
+ testData.add(createTestData(fileName, currentHeader, parts));
+ partIdx = 0;
+ }
+ } else if (c == SEPARATOR && !escaped && !isHeader) {
+ parts[partIdx] = stringBuilder.toString();
+ stringBuilder = new StringBuilder();
+ partIdx++;
+ } else {
+ stringBuilder.appendCodePoint(c);
+ }
+ }
+ last = c;
+ }
+
+ if (partIdx == 3) {
+ //clean up remaining
+ parts[partIdx] = stringBuilder.toString();
+ testData.add(createTestData(fileName, currentHeader, parts));
+ }
+
+ return testData;
+ }
+
+ private static TestData createTestData(String filename, String header, String[] parts) {
+ int count = Integer.parseInt(parts[0].trim());
+ TestData testData = new TestData();
+ testData.setName(filename);
+ testData.setHeader(header.trim());
+ testData.setCount(count);
+ String snippet = parts[1].trim();
+ if (snippet.isEmpty()) {
+ snippet = null;
+ }
+ testData.setSnippetSearchTerm(snippet);
+
+ String containsString = parts[2].trim();
+ if (containsString.contains(OR) && containsString.contains(AND)){
+ throw new RuntimeException("Test string can not contain both 'OR' and 'AND'");
+ }
+ if (containsString.contains(OR)) {
+ String[] containsStrings = containsString.split(OR);
+ for (String oneOf : containsStrings) {
+ testData.addContainsString(oneOf.trim());
+ }
+ testData.setCondition(TestData.Condition.OR);
+ } else if (containsString.contains(AND)) {
+ String[] containsStrings = containsString.split(AND);
+ for (String oneOf : containsStrings) {
+ testData.addContainsString(oneOf.trim());
+ }
+ testData.setCondition(TestData.Condition.AND);
+ } else {
+ testData.addContainsString(containsString);
+ }
+ testData.setErrorMessage("(" + count + ") - " + parts[3].trim());
+
+ return testData;
+ }
+
+ private static final char ESCAPE = '´';
+ private static final char HEADER = '#';
+ private static final char SEPARATOR = '|';
+ private static final char NEWLINE = '\n';
+ private static final String OR = "'OR'";
+ private static final String AND = "'AND'";
+}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
similarity index 57%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
index 44478c5e..5f3120b1 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
@@ -58,15 +58,21 @@ public static Object[][] getSnippetTestData(){
private static List getDataFiles() {
List f = new ArrayList<>();
+
+ // Implementation specific tests
try {
f.addAll(toListOfPaths(DynamicPaths.getDataForImplementation()));
} catch (IOException ex) {
LOG.log(Level.INFO, "No implementation specific tests found [{0}]", ex.getMessage());
}
- try {
- f.addAll(toListOfPaths(DynamicPaths.getDataForSpecification()));
- } catch (Exception ex) {
- LOG.log(Level.WARNING, "No specification tests found [{0}]", ex.getMessage());
+
+ // Specification test
+ if(!disableSpecificationTests()){
+ try {
+ f.addAll(toListOfPaths(DynamicPaths.getDataForSpecification()));
+ } catch (Exception ex) {
+ LOG.log(Level.WARNING, "No specification tests found [{0}]", ex.getMessage());
+ }
}
return f;
@@ -96,63 +102,12 @@ private static List toListOfTestData(List testFolders){
}
private static List toTestData(Path testFile) throws IOException{
- List testDataList = new LinkedList<>();
- List content = Files.readAllLines(testFile);
- String currentHeader = "";
- for(String line:content){
- if(validLine(line)){
- String[] parts = line.split(DELIMITER);
- if(parts.length==4){
- TestData testData = createTestData(currentHeader,testFile.getFileName().toString(),parts);
- testDataList.add(testData);
- }else{
- LOG.log(Level.SEVERE, "Could not add test case {0} - {1}",
- new Object[]{testFile.getFileName().toString(), "Does not contain 3 parts [" + parts.length +"]"});
- }
- }else if (isHeader(line)){
- currentHeader = line.substring(line.indexOf(COMMENT)+1).trim();
- }
- }
- return testDataList;
+ return CsvParser.parse(testFile);
}
- private static TestData createTestData(String header, String filename,String[] parts){
- TestData testData = new TestData();
- testData.setCount(Integer.valueOf(parts[0]));
- testData.setHeader(header);
- testData.setName(filename);
- String count = parts[0].trim();
- String snippet = parts[1].trim();
- if(snippet == null || snippet.isEmpty()){
- snippet = null;
- }
- testData.setSnippetSearchTerm(snippet);
-
- String containsString = parts[2].trim();
- if(containsString.contains(OR)){
- String[] containsStrings = containsString.split(OR);
- for(String oneOf:containsStrings){
- testData.addContainsString(oneOf.trim());
- }
- }else{
- testData.addContainsString(containsString);
- }
- testData.setErrorMessage("(" + count + ") - " + parts[3].trim());
-
- return testData;
- }
-
- private static boolean validLine(String line){
- return !line.isEmpty() && line.trim().contains(PIPE) && !isHeader(line);
+ private static boolean disableSpecificationTests(){
+ return Boolean.valueOf(System.getProperty("disableSpecificationTests", "false"));
}
-
- private static boolean isHeader(String line){
- return line.trim().startsWith(COMMENT);
- }
-
- private static final String PIPE = "|";
- private static final String DELIMITER = "\\" + PIPE;
- private static final String COMMENT = "#";
+
private static final String FILE_TYPE = ".csv";
- private static final String OR = "'OR'";
-}
\ No newline at end of file
+}
diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java
similarity index 77%
rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java
rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java
index 8ff66fbb..071faf1b 100644
--- a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java
@@ -27,7 +27,8 @@ public class TestData {
private String header;
private String name;
private String snippetSearchTerm;
- private List containsAnyOfString = new ArrayList<>();
+ private List containsString = new ArrayList<>();
+ private Condition condition = null;
private String errorMessage;
public TestData() {
@@ -65,16 +66,12 @@ public void setSnippetSearchTerm(String snippetSearchTerm) {
this.snippetSearchTerm = snippetSearchTerm;
}
- public List getContainsAnyOfString() {
- return containsAnyOfString;
- }
-
- public void setContainsAnyOfString(List containsAnyOfString) {
- this.containsAnyOfString = containsAnyOfString;
+ public List getContainsString() {
+ return containsString;
}
public void addContainsString(String containsString) {
- this.containsAnyOfString.add(containsString);
+ this.containsString.add(containsString);
}
public String getErrorMessage() {
@@ -85,4 +82,21 @@ public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
+ public boolean hasCondition(){
+ return this.condition!=null;
+ }
+
+ public void setCondition(Condition condition){
+ this.condition = condition;
+ }
+
+ public Condition getCondition(){
+ return this.condition;
+ }
+
+ public enum Condition {
+ AND,
+ OR
+ }
+
}
diff --git a/server/tck/src/main/licenses/Draft/LICENSE b/server/tck/src/main/licenses/Draft/LICENSE
new file mode 100644
index 00000000..5c304d1a
--- /dev/null
+++ b/server/tck/src/main/licenses/Draft/LICENSE
@@ -0,0 +1,201 @@
+Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/server/tck/src/main/licenses/Final/LICENSE b/server/tck/src/main/licenses/Final/LICENSE
new file mode 100644
index 00000000..c858c0ad
--- /dev/null
+++ b/server/tck/src/main/licenses/Final/LICENSE
@@ -0,0 +1,83 @@
+Eclipse Foundation Technology Compatibility Kit License - v 1.0
+
+Copyright (c) 2018, Eclipse Foundation, Inc. and its licensors.
+
+Redistribution and use in binary form is permitted provided that the
+following conditions are met:
+
+1. Use of the Technology Compatibility Kit accompanying this license
+ (the "TCK") and its documentation is permitted solely for the
+ purpose of testing compatibility of an implementation (the
+ "Product") of a specification (the "Specification") made available
+ by the Eclipse Foundation, Inc. ("Eclipse").
+
+2. Only those modifications expressly permitted by the TCK and its
+ documentation are permitted. Except in these limited circumstances,
+ no modifications to the TCK are permitted under this license.
+
+3. A Product will be deemed to be "compatible" with the Specification
+ if it fully and completely meets and satisfies all requirements of
+ the TCK.
+
+4. Before any claim of compatibility (or any similar claim suggesting
+ compatibility) is made based on the TCK, the testing party must:
+
+ a. use the TCK to demonstrate that the Product fully and
+ completely meets and satisfies all requirements of the TCK;
+
+ b. make TCK test results showing full and complete satisfaction of
+ all requirements of the TCK publicly available on the testing
+ party's website and send a link to such test results to Eclipse
+ at [tck@eclipse.org](mailto:tck@eclipse.org); and
+
+ c. comply with any requirements stated in the Specification with
+ regard to subsetting, supersetting, modifying or extending the
+ Specification in any Product claimed to be compatible with the
+ Specification.
+
+5. The test results must be continuously available and the link must
+ be live for at least as long as the Product is available in the
+ marketplace.
+
+6. The TCK may not be used as a basis for any statements of partial
+ compatibility. The TCK may only be used as a basis for true,
+ factual statements of full compatibility of Products that fully
+ meet and satisfy all requirements of the TCK.
+
+7. A determination that a Product is compatible with the TCK does not,
+ in itself, give rise to the right to use any name, mark, logo
+ associated with the TCK, Eclipse, or Eclipse's contributors or
+ licensors.
+
+8. Upon the request of Eclipse, a tester will retract any statements
+ of compatibility (or any similar claim suggesting compatibility)
+ which Eclipse reasonably determines to be false or misleading or in
+ violation of the terms of this license.
+
+9. Redistribution of the TCK must be under this Eclipse Foundation
+ Technology Compatibility Kit License and must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+10. Neither the name, trademarks or logos of Eclipse, nor the names,
+ trademarks or logos of its contributors or licensors may be used to
+ endorse or promote products tested with this software without
+ specific prior written permission.
+
+11. The source code for the TCK accompanying this license is available
+ from Eclipse.
+
+TO THE EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED ON
+AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
+EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR
+CONDITIONS OF TITLE, NON- INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR
+A PARTICULAR PURPOSE. TO THE EXTENT PERMITTED BY APPLICABLE LAW,
+NEITHER THE COPYRIGHT OWNER OR ANY CONTRIBUTORS SHALL HAVE ANY
+LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
diff --git a/tck/src/main/resources/META-INF/microprofile-config.properties b/server/tck/src/main/resources/META-INF/microprofile-config.properties
similarity index 100%
rename from tck/src/main/resources/META-INF/microprofile-config.properties
rename to server/tck/src/main/resources/META-INF/microprofile-config.properties
diff --git a/tck/src/main/resources/tests/addHeroToTeam/cleanup.graphql b/server/tck/src/main/resources/tests/addHeroToTeam/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/addHeroToTeam/cleanup.graphql
rename to server/tck/src/main/resources/tests/addHeroToTeam/cleanup.graphql
diff --git a/tck/src/main/resources/tests/addHeroToTeam/input.graphql b/server/tck/src/main/resources/tests/addHeroToTeam/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/addHeroToTeam/input.graphql
rename to server/tck/src/main/resources/tests/addHeroToTeam/input.graphql
diff --git a/tck/src/main/resources/tests/addHeroToTeam/output.json b/server/tck/src/main/resources/tests/addHeroToTeam/output.json
similarity index 100%
rename from tck/src/main/resources/tests/addHeroToTeam/output.json
rename to server/tck/src/main/resources/tests/addHeroToTeam/output.json
diff --git a/tck/src/main/resources/tests/addHeroToTeam/test.properties b/server/tck/src/main/resources/tests/addHeroToTeam/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/addHeroToTeam/test.properties
rename to server/tck/src/main/resources/tests/addHeroToTeam/test.properties
diff --git a/tck/src/main/resources/tests/addHeroToTeamWithVariables/cleanup.graphql b/server/tck/src/main/resources/tests/addHeroToTeamWithVariables/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/addHeroToTeamWithVariables/cleanup.graphql
rename to server/tck/src/main/resources/tests/addHeroToTeamWithVariables/cleanup.graphql
diff --git a/tck/src/main/resources/tests/addHeroToTeamWithVariables/input.graphql b/server/tck/src/main/resources/tests/addHeroToTeamWithVariables/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/addHeroToTeamWithVariables/input.graphql
rename to server/tck/src/main/resources/tests/addHeroToTeamWithVariables/input.graphql
diff --git a/tck/src/main/resources/tests/addHeroToTeamWithVariables/output.json b/server/tck/src/main/resources/tests/addHeroToTeamWithVariables/output.json
similarity index 100%
rename from tck/src/main/resources/tests/addHeroToTeamWithVariables/output.json
rename to server/tck/src/main/resources/tests/addHeroToTeamWithVariables/output.json
diff --git a/tck/src/main/resources/tests/addHeroToTeamWithVariables/test.properties b/server/tck/src/main/resources/tests/addHeroToTeamWithVariables/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/addHeroToTeamWithVariables/test.properties
rename to server/tck/src/main/resources/tests/addHeroToTeamWithVariables/test.properties
diff --git a/tck/src/main/resources/tests/addHeroToTeamWithVariables/variables.json b/server/tck/src/main/resources/tests/addHeroToTeamWithVariables/variables.json
similarity index 100%
rename from tck/src/main/resources/tests/addHeroToTeamWithVariables/variables.json
rename to server/tck/src/main/resources/tests/addHeroToTeamWithVariables/variables.json
diff --git a/tck/src/main/resources/tests/addItemToHero/cleanup.graphql b/server/tck/src/main/resources/tests/addItemToHero/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/addItemToHero/cleanup.graphql
rename to server/tck/src/main/resources/tests/addItemToHero/cleanup.graphql
diff --git a/tck/src/main/resources/tests/addItemToHero/input.graphql b/server/tck/src/main/resources/tests/addItemToHero/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/addItemToHero/input.graphql
rename to server/tck/src/main/resources/tests/addItemToHero/input.graphql
diff --git a/tck/src/main/resources/tests/addItemToHero/output.json b/server/tck/src/main/resources/tests/addItemToHero/output.json
similarity index 100%
rename from tck/src/main/resources/tests/addItemToHero/output.json
rename to server/tck/src/main/resources/tests/addItemToHero/output.json
diff --git a/tck/src/main/resources/tests/addItemToHero/test.properties b/server/tck/src/main/resources/tests/addItemToHero/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/addItemToHero/test.properties
rename to server/tck/src/main/resources/tests/addItemToHero/test.properties
diff --git a/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/cleanup.graphql b/server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/cleanup.graphql
rename to server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/cleanup.graphql
diff --git a/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/input.graphql b/server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/input.graphql
rename to server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/input.graphql
diff --git a/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/output.json b/server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/output.json
similarity index 100%
rename from tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/output.json
rename to server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/output.json
diff --git a/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/test.properties b/server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/test.properties
rename to server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/test.properties
diff --git a/tck/src/main/resources/tests/allAvengers/httpHeader.properties b/server/tck/src/main/resources/tests/allAvengers/httpHeader.properties
similarity index 100%
rename from tck/src/main/resources/tests/allAvengers/httpHeader.properties
rename to server/tck/src/main/resources/tests/allAvengers/httpHeader.properties
diff --git a/tck/src/main/resources/tests/allAvengers/input.graphql b/server/tck/src/main/resources/tests/allAvengers/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/allAvengers/input.graphql
rename to server/tck/src/main/resources/tests/allAvengers/input.graphql
diff --git a/tck/src/main/resources/tests/allAvengers/output.json b/server/tck/src/main/resources/tests/allAvengers/output.json
similarity index 100%
rename from tck/src/main/resources/tests/allAvengers/output.json
rename to server/tck/src/main/resources/tests/allAvengers/output.json
diff --git a/tck/src/main/resources/tests/allAvengers/test.properties b/server/tck/src/main/resources/tests/allAvengers/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/allAvengers/test.properties
rename to server/tck/src/main/resources/tests/allAvengers/test.properties
diff --git a/tck/src/main/resources/tests/allAvengersWithVariables/input.graphql b/server/tck/src/main/resources/tests/allAvengersWithVariables/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/allAvengersWithVariables/input.graphql
rename to server/tck/src/main/resources/tests/allAvengersWithVariables/input.graphql
diff --git a/tck/src/main/resources/tests/allAvengersWithVariables/output.json b/server/tck/src/main/resources/tests/allAvengersWithVariables/output.json
similarity index 100%
rename from tck/src/main/resources/tests/allAvengersWithVariables/output.json
rename to server/tck/src/main/resources/tests/allAvengersWithVariables/output.json
diff --git a/tck/src/main/resources/tests/allAvengersWithVariables/test.properties b/server/tck/src/main/resources/tests/allAvengersWithVariables/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/allAvengersWithVariables/test.properties
rename to server/tck/src/main/resources/tests/allAvengersWithVariables/test.properties
diff --git a/tck/src/main/resources/tests/allAvengersWithVariables/variables.json b/server/tck/src/main/resources/tests/allAvengersWithVariables/variables.json
similarity index 100%
rename from tck/src/main/resources/tests/allAvengersWithVariables/variables.json
rename to server/tck/src/main/resources/tests/allAvengersWithVariables/variables.json
diff --git a/tck/src/main/resources/tests/allHeroes/input.graphql b/server/tck/src/main/resources/tests/allHeroes/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/allHeroes/input.graphql
rename to server/tck/src/main/resources/tests/allHeroes/input.graphql
diff --git a/tck/src/main/resources/tests/allHeroes/output.json b/server/tck/src/main/resources/tests/allHeroes/output.json
similarity index 100%
rename from tck/src/main/resources/tests/allHeroes/output.json
rename to server/tck/src/main/resources/tests/allHeroes/output.json
diff --git a/tck/src/main/resources/tests/allHeroes/test.properties b/server/tck/src/main/resources/tests/allHeroes/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/allHeroes/test.properties
rename to server/tck/src/main/resources/tests/allHeroes/test.properties
diff --git a/tck/src/main/resources/tests/allHeroesInDefaultLocation/input.graphql b/server/tck/src/main/resources/tests/allHeroesInDefaultLocation/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/allHeroesInDefaultLocation/input.graphql
rename to server/tck/src/main/resources/tests/allHeroesInDefaultLocation/input.graphql
diff --git a/tck/src/main/resources/tests/allHeroesInDefaultLocation/output.json b/server/tck/src/main/resources/tests/allHeroesInDefaultLocation/output.json
similarity index 100%
rename from tck/src/main/resources/tests/allHeroesInDefaultLocation/output.json
rename to server/tck/src/main/resources/tests/allHeroesInDefaultLocation/output.json
diff --git a/tck/src/main/resources/tests/allHeroesInDefaultLocation/test.properties b/server/tck/src/main/resources/tests/allHeroesInDefaultLocation/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/allHeroesInDefaultLocation/test.properties
rename to server/tck/src/main/resources/tests/allHeroesInDefaultLocation/test.properties
diff --git a/tck/src/main/resources/tests/allHeroesWithCurrentLocation/input.graphql b/server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/allHeroesWithCurrentLocation/input.graphql
rename to server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/input.graphql
diff --git a/tck/src/main/resources/tests/allHeroesWithCurrentLocation/output.json b/server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/output.json
similarity index 100%
rename from tck/src/main/resources/tests/allHeroesWithCurrentLocation/output.json
rename to server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/output.json
diff --git a/tck/src/main/resources/tests/allHeroesWithCurrentLocation/test.properties b/server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/allHeroesWithCurrentLocation/test.properties
rename to server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/test.properties
diff --git a/server/tck/src/main/resources/tests/arrayTypes/input.graphql b/server/tck/src/main/resources/tests/arrayTypes/input.graphql
new file mode 100644
index 00000000..f6440842
--- /dev/null
+++ b/server/tck/src/main/resources/tests/arrayTypes/input.graphql
@@ -0,0 +1,16 @@
+{
+ arraysHolder {
+ intObject
+ intPrimitive
+ intObjectList
+
+ formattedIntObject
+ formattedIntPrimitive
+ formattedIntObjectList
+
+ date
+ dateList
+ formattedDate
+ formattedDateList
+ }
+}
diff --git a/server/tck/src/main/resources/tests/arrayTypes/output.json b/server/tck/src/main/resources/tests/arrayTypes/output.json
new file mode 100644
index 00000000..871cab48
--- /dev/null
+++ b/server/tck/src/main/resources/tests/arrayTypes/output.json
@@ -0,0 +1,40 @@
+{
+ "data": {
+ "arraysHolder": {
+ "intObject": [
+ 1,
+ 2,
+ 3
+ ],
+ "intPrimitive": [
+ 1,
+ 2,
+ 3
+ ],
+ "intObjectList": [
+ 1,
+ 2,
+ 3
+ ],
+ "formattedIntObject": [
+ "R01",
+ "R02",
+ "R03"
+ ],
+ "formattedIntPrimitive": [
+ "R01",
+ "R02",
+ "R03"
+ ],
+ "formattedIntObjectList": [
+ "R01",
+ "R02",
+ "R03"
+ ],
+ "date": ["2006-02-01", "2007-03-02"],
+ "dateList": ["2006-02-01", "2007-03-02"],
+ "formattedDate": ["01.02.2006", "02.03.2007"],
+ "formattedDateList": ["01.02.2006", "02.03.2007"]
+ }
+ }
+}
diff --git a/server/tck/src/main/resources/tests/arrayTypes/test.properties b/server/tck/src/main/resources/tests/arrayTypes/test.properties
new file mode 100644
index 00000000..db74c7f9
--- /dev/null
+++ b/server/tck/src/main/resources/tests/arrayTypes/test.properties
@@ -0,0 +1,2 @@
+ignore=false
+priority=100
diff --git a/tck/src/main/resources/tests/bankbalance/input.graphql b/server/tck/src/main/resources/tests/bankbalance/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/bankbalance/input.graphql
rename to server/tck/src/main/resources/tests/bankbalance/input.graphql
diff --git a/tck/src/main/resources/tests/bankbalance/output.json b/server/tck/src/main/resources/tests/bankbalance/output.json
similarity index 100%
rename from tck/src/main/resources/tests/bankbalance/output.json
rename to server/tck/src/main/resources/tests/bankbalance/output.json
diff --git a/tck/src/main/resources/tests/bankbalance/test.properties b/server/tck/src/main/resources/tests/bankbalance/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/bankbalance/test.properties
rename to server/tck/src/main/resources/tests/bankbalance/test.properties
diff --git a/tck/src/main/resources/tests/bankbalanceUS/input.graphql b/server/tck/src/main/resources/tests/bankbalanceUS/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/bankbalanceUS/input.graphql
rename to server/tck/src/main/resources/tests/bankbalanceUS/input.graphql
diff --git a/tck/src/main/resources/tests/bankbalanceUS/output.json b/server/tck/src/main/resources/tests/bankbalanceUS/output.json
similarity index 100%
rename from tck/src/main/resources/tests/bankbalanceUS/output.json
rename to server/tck/src/main/resources/tests/bankbalanceUS/output.json
diff --git a/tck/src/main/resources/tests/bankbalanceUS/test.properties b/server/tck/src/main/resources/tests/bankbalanceUS/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/bankbalanceUS/test.properties
rename to server/tck/src/main/resources/tests/bankbalanceUS/test.properties
diff --git a/tck/src/main/resources/tests/basicScalar/input.graphql b/server/tck/src/main/resources/tests/basicScalar/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/basicScalar/input.graphql
rename to server/tck/src/main/resources/tests/basicScalar/input.graphql
diff --git a/tck/src/main/resources/tests/basicScalar/output.json b/server/tck/src/main/resources/tests/basicScalar/output.json
similarity index 97%
rename from tck/src/main/resources/tests/basicScalar/output.json
rename to server/tck/src/main/resources/tests/basicScalar/output.json
index 14534844..1a64790d 100644
--- a/tck/src/main/resources/tests/basicScalar/output.json
+++ b/server/tck/src/main/resources/tests/basicScalar/output.json
@@ -47,7 +47,6 @@
"anotherTimeObject": "11:46:34.263",
"formattedTimeObject": "11:46:34",
"dateTimeObject": "2019-10-23T11:46:34.263",
- "dateTimeObject": "2019-10-23T11:46:34.263",
"anotherDateTimeObject": "2019-10-23T11:46:34.263",
"formattedDateTimeObject": "10 23 2019 at 11:46:34",
"id": "123456789"
diff --git a/server/tck/src/main/resources/tests/basicScalar/output2.json b/server/tck/src/main/resources/tests/basicScalar/output2.json
new file mode 100644
index 00000000..d6801bdf
--- /dev/null
+++ b/server/tck/src/main/resources/tests/basicScalar/output2.json
@@ -0,0 +1,55 @@
+{
+ "data": {
+ "testScalarsInPojo": {
+ "shortPrimitive": 123,
+ "shortObject": 123,
+ "formattedShortObject": "R123",
+ "intPrimitive": 123456789,
+ "intObject": 123456789,
+ "formattedIntObject": "123,456,789",
+ "longPrimitive": 123456789,
+ "longObject": 123456789,
+ "formattedLongObject": "123.456.789",
+ "formattedLongPrimitive": "123.456.789",
+ "floatPrimitive": 123456.79,
+ "floatObject": 123456.79,
+ "formattedFloatObject": "123456.8",
+ "doublePrimitive": 123456.789,
+ "doubleObject": 123456.789,
+ "formattedDoubleObject": "123456.8",
+ "bytePrimitive": 123,
+ "byteObject": 123,
+ "formattedByteObject": "R123",
+ "bigIntegerObject": 123456789,
+ "formattedBigIntegerObject": "$123456789",
+ "bigDecimalObject": 123456.789,
+ "formattedBigDecimalObject": "123,456.79",
+ "booleanObject": false,
+ "booleanPrimitive": false,
+ "charObject": "c",
+ "charPrimitive": "c",
+ "stringObject": "123456789",
+ "charArray": [
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9"
+ ],
+ "dateObject": "2019-10-23",
+ "anotherDateObject": "2019-10-23",
+ "formattedDateObject": "10 23 2019",
+ "timeObject": "11:46:34",
+ "anotherTimeObject": "11:46:34",
+ "formattedTimeObject": "11:46:34",
+ "dateTimeObject": "2019-10-23T11:46:34",
+ "anotherDateTimeObject": "2019-10-23T11:46:34",
+ "formattedDateTimeObject": "10 23 2019 at 11:46:34",
+ "id": "123456789"
+ }
+ }
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/basicScalarDateTransformation/input.graphql b/server/tck/src/main/resources/tests/basicScalarDateTransformation/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/basicScalarDateTransformation/input.graphql
rename to server/tck/src/main/resources/tests/basicScalarDateTransformation/input.graphql
diff --git a/tck/src/main/resources/tests/basicScalarDateTransformation/output.json b/server/tck/src/main/resources/tests/basicScalarDateTransformation/output.json
similarity index 100%
rename from tck/src/main/resources/tests/basicScalarDateTransformation/output.json
rename to server/tck/src/main/resources/tests/basicScalarDateTransformation/output.json
diff --git a/tck/src/main/resources/tests/basicScalarMutation/input.graphql b/server/tck/src/main/resources/tests/basicScalarMutation/input.graphql
similarity index 93%
rename from tck/src/main/resources/tests/basicScalarMutation/input.graphql
rename to server/tck/src/main/resources/tests/basicScalarMutation/input.graphql
index 624eaf47..c64e06a1 100644
--- a/tck/src/main/resources/tests/basicScalarMutation/input.graphql
+++ b/server/tck/src/main/resources/tests/basicScalarMutation/input.graphql
@@ -19,8 +19,8 @@ mutation scalarHolderMutation {
longObject:12
longPrimitiveId:13
longObjectId:14
- formattedLongPrimitive:15
- formattedLongObject:16
+ formattedLongPrimitive:"15"
+ formattedLongObject:"16"
doublePrimitive:17
doubleObject:18
}) {
diff --git a/server/tck/src/main/resources/tests/basicScalarMutation/input2.graphql b/server/tck/src/main/resources/tests/basicScalarMutation/input2.graphql
new file mode 100644
index 00000000..eac16686
--- /dev/null
+++ b/server/tck/src/main/resources/tests/basicScalarMutation/input2.graphql
@@ -0,0 +1,51 @@
+mutation scalarHolderMutation {
+ scalarHolder (arg0:{
+ intPrimitive:1
+ intObject:2
+ shortPrimitive:3
+ shortObject:4
+ bytePrimitive:5
+ byteObject:6
+ booleanPrimitive:true
+ booleanObject:false
+ intPrimitiveId:7
+ integerObjectId:8
+ floatPrimitive:9
+ floatObject:10
+ charPrimitive:"h"
+ charObject:"e"
+ charArray:["h","e","l","l","o"]
+ longPrimitive:11
+ longObject:12
+ longPrimitiveId:13
+ longObjectId:14
+ formattedLongPrimitive:"15"
+ formattedLongObject:"16"
+ doublePrimitive:17
+ doubleObject:18
+ }) {
+ intPrimitive
+ intObject
+ shortPrimitive
+ shortObject
+ bytePrimitive
+ byteObject
+ booleanPrimitive
+ booleanObject
+ intPrimitiveId
+ integerObjectId
+ floatPrimitive
+ floatObject
+ charPrimitive
+ charObject
+ charArray
+ longPrimitive
+ longObject
+ longPrimitiveId
+ longObjectId
+ formattedLongPrimitive
+ formattedLongObject
+ doublePrimitive
+ doubleObject
+ }
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/basicScalarMutation/output.json b/server/tck/src/main/resources/tests/basicScalarMutation/output.json
similarity index 100%
rename from tck/src/main/resources/tests/basicScalarMutation/output.json
rename to server/tck/src/main/resources/tests/basicScalarMutation/output.json
diff --git a/tck/src/main/resources/tests/basicScalarNumberTransformation/input.graphql b/server/tck/src/main/resources/tests/basicScalarNumberTransformation/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/basicScalarNumberTransformation/input.graphql
rename to server/tck/src/main/resources/tests/basicScalarNumberTransformation/input.graphql
diff --git a/server/tck/src/main/resources/tests/basicScalarNumberTransformation/input2.graphql b/server/tck/src/main/resources/tests/basicScalarNumberTransformation/input2.graphql
new file mode 100644
index 00000000..29991894
--- /dev/null
+++ b/server/tck/src/main/resources/tests/basicScalarNumberTransformation/input2.graphql
@@ -0,0 +1,3 @@
+mutation testTransformedNumber{
+ transformedNumber(arg0:345)
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/basicScalarNumberTransformation/output.json b/server/tck/src/main/resources/tests/basicScalarNumberTransformation/output.json
similarity index 100%
rename from tck/src/main/resources/tests/basicScalarNumberTransformation/output.json
rename to server/tck/src/main/resources/tests/basicScalarNumberTransformation/output.json
diff --git a/tck/src/main/resources/tests/basicScalarShort/input.graphql b/server/tck/src/main/resources/tests/basicScalarShort/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/basicScalarShort/input.graphql
rename to server/tck/src/main/resources/tests/basicScalarShort/input.graphql
diff --git a/tck/src/main/resources/tests/basicScalarShort/output.json b/server/tck/src/main/resources/tests/basicScalarShort/output.json
similarity index 100%
rename from tck/src/main/resources/tests/basicScalarShort/output.json
rename to server/tck/src/main/resources/tests/basicScalarShort/output.json
diff --git a/tck/src/main/resources/tests/basicScalarShortObject/input.graphql b/server/tck/src/main/resources/tests/basicScalarShortObject/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/basicScalarShortObject/input.graphql
rename to server/tck/src/main/resources/tests/basicScalarShortObject/input.graphql
diff --git a/tck/src/main/resources/tests/basicScalarShortObject/output.json b/server/tck/src/main/resources/tests/basicScalarShortObject/output.json
similarity index 100%
rename from tck/src/main/resources/tests/basicScalarShortObject/output.json
rename to server/tck/src/main/resources/tests/basicScalarShortObject/output.json
diff --git a/tck/src/main/resources/tests/basicScalarTests.csv b/server/tck/src/main/resources/tests/basicScalarTests.csv
similarity index 64%
rename from tck/src/main/resources/tests/basicScalarTests.csv
rename to server/tck/src/main/resources/tests/basicScalarTests.csv
index 92e645c3..3de14394 100644
--- a/tck/src/main/resources/tests/basicScalarTests.csv
+++ b/server/tck/src/main/resources/tests/basicScalarTests.csv
@@ -1,71 +1,72 @@
# Basic Scalar Types
-1| type ScalarHolder | bigDecimalObject: BigDecimal | Expecting a BigDecimal Scalar Type in type ScalarHolder
-2| type ScalarHolder | bigIntegerObject: BigInteger | Expecting a BigInteger Scalar Type in type ScalarHolder
-3| type ScalarHolder | booleanObject: Boolean | Expecting a Boolean Scalar Type in type ScalarHolder
-4| type ScalarHolder | booleanPrimitive: Boolean! | Expecting a non null Boolean Scalar Type in type ScalarHolder
-5| type ScalarHolder | byteObject: Int | Expecting a Int Scalar Type (for Byte Java Type) in type ScalarHolder
-6| type ScalarHolder | bytePrimitive: Int! | Expecting a non null Int Scalar Type (for byte Java Type) in type ScalarHolder
-7| type ScalarHolder | charObject: String | Expecting a String Scalar (for Java Char) Type in type ScalarHolder
-8| type ScalarHolder | charPrimitive: String! | Expecting a non null String Scalar (for Java char) Type in type ScalarHolder
-9| type ScalarHolder | dateObject: Date | Expecting a Date Scalar Type in type ScalarHolder
-10| type ScalarHolder | dateTimeObject: DateTime | Expecting a DateTime Scalar Type in type ScalarHolder
-11| type ScalarHolder | doubleObject: Float | Expecting a Float Scalar Type in type ScalarHolder
-12| type ScalarHolder | doublePrimitive: Float! | Expecting a non null Float Scalar Type in type ScalarHolder
-13| type ScalarHolder | floatObject: Float | Expecting a Float Scalar Type in type ScalarHolder
-14| type ScalarHolder | floatPrimitive: Float! | Expecting a non null Float Scalar Type in type ScalarHolder
-15| type ScalarHolder | id: ID | Expecting a ID Scalar Type in type ScalarHolder
-16| type ScalarHolder | intObject: Int | Expecting a Int Scalar Type in type ScalarHolder
-17| type ScalarHolder | intPrimitive: Int! | Expecting a non null Int Scalar Type in type ScalarHolder
-18| type ScalarHolder | longObject: BigInteger | Expecting a BigInteger Scalar (for Java Long) Type in type ScalarHolder
-19| type ScalarHolder | longPrimitive: BigInteger! | Expecting a non null BigInteger (for Java long) Scalar Type in type ScalarHolder
-20| type ScalarHolder | shortObject: Int | Expecting a Int Scalar Type (for Short Java Type) in type ScalarHolder
-21| type ScalarHolder | shortPrimitive: Int! | Expecting a non null Int Scalar Type (for short Java Type) in type ScalarHolder
-22| type ScalarHolder | stringObject: String | Expecting a String Scalar Type in type ScalarHolder
-23| type ScalarHolder | charArray: [String] | Expecting a String Array Scalar (for Java Char[]) Type in type ScalarHolder
-24| type ScalarHolder | timeObject: Time | Expecting a Time Scalar Type in type ScalarHolder
-25| type Query | testBigDecimalObject: BigDecimal | Expecting a BigDecimal Scalar Type in type Query
-26| type Query | testBigIntegerObject: BigInteger | Expecting a BigInteger Scalar Type in type Query
-27| type Query | booleanObject: Boolean | Expecting a Boolean Scalar Type in type Query, with the is removed from the name
-28| type Query | booleanPrimitive: Boolean! | Expecting a non null Boolean Scalar Type in type Query, with the is removed from the name
-29| type Query | testByteObject: Int | Expecting a Int Scalar Type (for Byte Java Type) in type Query
-30| type Query | testBytePrimitive: Int! | Expecting a non null Int Scalar Type (for byte Java Type) in type Query
-31| type Query | testCharObject: String | Expecting a String Scalar (for Java Char) Type in type Query
-32| type Query | testCharPrimitive: String! | Expecting a non null String Scalar (for Java char) Type in type Query
-33| type Query | testDateObject: Date | Expecting a Date Scalar Type in type Query
-34| type Query | testDateTimeObject: DateTime | Expecting a DateTime Scalar Type in type Query
-35| type Query | testDoubleObject: Float | Expecting a Float Scalar Type in type Query
-36| type Query | testDoublePrimitive: Float! | Expecting a non null Float Scalar Type in type Query
-37| type Query | testFloatObject: Float | Expecting a Float Scalar Type in type Query
-38| type Query | testFloatPrimitive: Float! | Expecting a non null Float Scalar Type in type Query
-39| type Query | testId: ID | Expecting a ID Scalar Type in type Query
-40| type Query | testIntObject: Int | Expecting a Int Scalar Type in type Query
-41| type Query | testIntPrimitive: Int! | Expecting a non null Int Scalar Type in type Query
-42| type Query | testLongObject: BigInteger | Expecting a BigInteger Scalar (for Java Long) Type in type Query
-43| type Query | testLongPrimitive: BigInteger! | Expecting a non null BigInteger Scalar (for Java long) Type in type Query
-44| type Query | shortObject: Int | Expecting a Int Scalar Type (for Short Java type) in type Query, with the get removed from the name
-45| type Query | shortPrimitive: Int! | Expecting a non null Int Scalar Type (for short Java type) in type Query, with the get removed from the name
-46| type Query | testStringObject: String | Expecting a String Scalar Type in type Query
-47| type Query | testCharArray: [String] | Expecting a non null Stirng Array (for Java Char[]) Scalar Type in type Query
-48| type Query | testTimeObject: Time | Expecting a Time Scalar Type in type Query
-49| type Mutation | scalarHolder(arg0: ScalarHolderInput): ScalarHolder 'OR' scalarHolder(scalarHolder: ScalarHolderInput): ScalarHolder | Expecting a Mutation with the set removed from the name, scalarHolder.
-50| type ScalarHolder | "HH:mm:ss" | Missing Default Time Format description on Output Type
-51| type ScalarHolder | "yyyy-MM-dd" | Missing Default Date Format description on Output Type
-52| type ScalarHolder | "yyyy-MM-dd'T'HH:mm:ss" | Missing Default DateTime Format description on Output Type
-53| type ScalarHolder | "This is another time (HH:mm:ss)" | Missing Default Time Format description (appended) on Output Type
-54| type ScalarHolder | "This is another date (yyyy-MM-dd)" | Missing Default Date Format description (appended) on Output Type
-55| type ScalarHolder | "This is another datetime (yyyy-MM-dd'T'HH:mm:ss)" | Missing Default DateTime Format description (appended) on Output Type
-56| type ScalarHolder | "This is a formatted time (hh:mm:ss)" | Missing Formatted Time Format description (appended) on Output Type
-57| type ScalarHolder | "This is a formatted date (MM dd yyyy)" | Missing Formatted Date Format description (appended) on Output Type
-58| type ScalarHolder | "This is a formatted datetime (MM dd yyyy 'at' hh:mm:ss)"| Missing Formatted DateTime Format description (appended) on Output Type
-59| type ScalarHolder | "#0.0 en-GB" | Missing Number Format description on Output Type
-60| type ScalarHolder | "This is a formatted number (#0.0 en-GB)" | Missing Number Format description (appended) on Output Type
-61| type ScalarHolder | longPrimitiveId: ID | Expecting a ID Scalar Type in type ScalarHolder, long
-62| type ScalarHolder | intPrimitiveId: ID | Expecting a ID Scalar Type in type ScalarHolder, int
-63| type ScalarHolder | longObjectId: ID | Expecting a ID Scalar Type in type ScalarHolder, long
-64| type ScalarHolder | integerObjectId: ID | Expecting a ID Scalar Type in type ScalarHolder, Integer
-65| type ScalarHolder | uuidId: ID | Expecting a ID Scalar Type in type ScalarHolder, UUID
-66| input BasicMessageInput | message: String | Expecting a BasicMessageInput from @Input
-67| input BasicMessageInput | countdownPlace: CountDown | Expecting a BasicMessageInput from @Input
-68| type BasicMessage | message: String | Expecting a BasicMessage from @Type
-69| enum CountDown | THREE | Expecting a CountDown from @Enum
-70| interface Basic | message: String | Expecting a String argument called "message" in @Interface("MyInterface") BasicInterface
+1| type ScalarHolder | bigDecimalObject: BigDecimal | Expecting a BigDecimal Scalar Type in type ScalarHolder
+2| type ScalarHolder | bigIntegerObject: BigInteger | Expecting a BigInteger Scalar Type in type ScalarHolder
+3| type ScalarHolder | booleanObject: Boolean | Expecting a Boolean Scalar Type in type ScalarHolder
+4| type ScalarHolder | booleanPrimitive: Boolean! | Expecting a non null Boolean Scalar Type in type ScalarHolder
+5| type ScalarHolder | byteObject: Int | Expecting a Int Scalar Type (for Byte Java Type) in type ScalarHolder
+6| type ScalarHolder | bytePrimitive: Int! | Expecting a non null Int Scalar Type (for byte Java Type) in type ScalarHolder
+7| type ScalarHolder | charObject: String | Expecting a String Scalar (for Java Char) Type in type ScalarHolder
+8| type ScalarHolder | charPrimitive: String! | Expecting a non null String Scalar (for Java char) Type in type ScalarHolder
+9| type ScalarHolder | dateObject: Date | Expecting a Date Scalar Type in type ScalarHolder
+10| type ScalarHolder | dateTimeObject: DateTime | Expecting a DateTime Scalar Type in type ScalarHolder
+11| type ScalarHolder | doubleObject: Float | Expecting a Float Scalar Type in type ScalarHolder
+12| type ScalarHolder | doublePrimitive: Float! | Expecting a non null Float Scalar Type in type ScalarHolder
+13| type ScalarHolder | floatObject: Float | Expecting a Float Scalar Type in type ScalarHolder
+14| type ScalarHolder | floatPrimitive: Float! | Expecting a non null Float Scalar Type in type ScalarHolder
+15| type ScalarHolder | id: ID | Expecting a ID Scalar Type in type ScalarHolder
+16| type ScalarHolder | intObject: Int | Expecting a Int Scalar Type in type ScalarHolder
+17| type ScalarHolder | intPrimitive: Int! | Expecting a non null Int Scalar Type in type ScalarHolder
+18| type ScalarHolder | longObject: BigInteger | Expecting a BigInteger Scalar (for Java Long) Type in type ScalarHolder
+19| type ScalarHolder | longPrimitive: BigInteger! | Expecting a non null BigInteger (for Java long) Scalar Type in type ScalarHolder
+20| type ScalarHolder | shortObject: Int | Expecting a Int Scalar Type (for Short Java Type) in type ScalarHolder
+21| type ScalarHolder | shortPrimitive: Int! | Expecting a non null Int Scalar Type (for short Java Type) in type ScalarHolder
+22| type ScalarHolder | stringObject: String | Expecting a String Scalar Type in type ScalarHolder
+23| type ScalarHolder | charArray: [String] | Expecting a String Array Scalar (for Java Char[]) Type in type ScalarHolder
+24| type ScalarHolder | timeObject: Time | Expecting a Time Scalar Type in type ScalarHolder
+25| type Query | testBigDecimalObject: BigDecimal | Expecting a BigDecimal Scalar Type in type Query
+26| type Query | testBigIntegerObject: BigInteger | Expecting a BigInteger Scalar Type in type Query
+27| type Query | booleanObject: Boolean | Expecting a Boolean Scalar Type in type Query, with the is removed from the name
+28| type Query | booleanPrimitive: Boolean! | Expecting a non null Boolean Scalar Type in type Query, with the is removed from the name
+29| type Query | testByteObject: Int | Expecting a Int Scalar Type (for Byte Java Type) in type Query
+30| type Query | testBytePrimitive: Int! | Expecting a non null Int Scalar Type (for byte Java Type) in type Query
+31| type Query | testCharObject: String | Expecting a String Scalar (for Java Char) Type in type Query
+32| type Query | testCharPrimitive: String! | Expecting a non null String Scalar (for Java char) Type in type Query
+33| type Query | testDateObject: Date | Expecting a Date Scalar Type in type Query
+34| type Query | testDateTimeObject: DateTime | Expecting a DateTime Scalar Type in type Query
+35| type Query | testDoubleObject: Float | Expecting a Float Scalar Type in type Query
+36| type Query | testDoublePrimitive: Float! | Expecting a non null Float Scalar Type in type Query
+37| type Query | testFloatObject: Float | Expecting a Float Scalar Type in type Query
+38| type Query | testFloatPrimitive: Float! | Expecting a non null Float Scalar Type in type Query
+39| type Query | testId: ID | Expecting a ID Scalar Type in type Query
+40| type Query | testIntObject: Int | Expecting a Int Scalar Type in type Query
+41| type Query | testIntPrimitive: Int! | Expecting a non null Int Scalar Type in type Query
+42| type Query | testLongObject: BigInteger | Expecting a BigInteger Scalar (for Java Long) Type in type Query
+43| type Query | testLongPrimitive: BigInteger! | Expecting a non null BigInteger Scalar (for Java long) Type in type Query
+44| type Query | shortObject: Int | Expecting a Int Scalar Type (for Short Java type) in type Query, with the get removed from the name
+45| type Query | shortPrimitive: Int! | Expecting a non null Int Scalar Type (for short Java type) in type Query, with the get removed from the name
+46| type Query | testStringObject: String | Expecting a String Scalar Type in type Query
+47| type Query | testCharArray: [String] | Expecting a non null Stirng Array (for Java Char[]) Scalar Type in type Query
+48| type Query | testTimeObject: Time | Expecting a Time Scalar Type in type Query
+49| type Mutation | scalarHolder(arg0: ScalarHolderInput): ScalarHolder 'OR' scalarHolder(scalarHolder: ScalarHolderInput): ScalarHolder | Expecting a Mutation with the set removed from the name, scalarHolder.
+50| type ScalarHolder | "HH:mm:ss" 'OR' "ISO-8601" | Missing Default Time Format description on Output Type
+51| type ScalarHolder | "yyyy-MM-dd" 'OR' "ISO-8601" | Missing Default Date Format description on Output Type
+52| type ScalarHolder | "yyyy-MM-dd'T'HH:mm:ss" 'OR' "ISO-8601" | Missing Default DateTime Format description on Output Type
+53| type ScalarHolder | "This is another time (HH:mm:ss)" 'OR' "This is another time (ISO-8601)" | Missing Default Time Format description (appended) on Output Type
+54| type ScalarHolder | "This is another date (yyyy-MM-dd)" 'OR' "This is another date (ISO-8601)" | Missing Default Date Format description (appended) on Output Type
+55| type ScalarHolder | "This is another datetime (yyyy-MM-dd'T'HH:mm:ss)" 'OR' "This is another datetime (ISO-8601)" | Missing Default DateTime Format description (appended) on Output Type
+56| type ScalarHolder | "This is a formatted time (hh:mm:ss)" | Missing Formatted Time Format description (appended) on Output Type
+57| type ScalarHolder | "This is a formatted date (MM dd yyyy)" | Missing Formatted Date Format description (appended) on Output Type
+58| type ScalarHolder | "This is a formatted datetime (MM dd yyyy 'at' hh:mm:ss)" | Missing Formatted DateTime Format description (appended) on Output Type
+59| type ScalarHolder | "#0.0 en-GB" | Missing Number Format description on Output Type
+60| type ScalarHolder | "This is a formatted number (#0.0 en-GB)" | Missing Number Format description (appended) on Output Type
+61| type ScalarHolder | longPrimitiveId: ID | Expecting a ID Scalar Type in type ScalarHolder, long
+62| type ScalarHolder | intPrimitiveId: ID | Expecting a ID Scalar Type in type ScalarHolder, int
+63| type ScalarHolder | longObjectId: ID | Expecting a ID Scalar Type in type ScalarHolder, long
+64| type ScalarHolder | integerObjectId: ID | Expecting a ID Scalar Type in type ScalarHolder, Integer
+65| type ScalarHolder | uuidId: ID | Expecting a ID Scalar Type in type ScalarHolder, UUID
+66| input BasicMessageInput | message: String | Expecting a BasicMessageInput from @Input
+67| input BasicMessageInput | countdownPlace: CountDown | Expecting a BasicMessageInput from @Input
+68| type BasicMessage | message: String | Expecting a BasicMessage from @Type
+69| enum CountDown | THREE | Expecting a CountDown from @Enum
+70| interface Basic | message: String | Expecting a String argument called "message" in @Interface("MyInterface") BasicInterface
+71| type Query | testNonNullParameter(param: String!) | Expecting a non null String parameter
diff --git a/tck/src/main/resources/tests/battle/cleanup.graphql b/server/tck/src/main/resources/tests/battle/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/battle/cleanup.graphql
rename to server/tck/src/main/resources/tests/battle/cleanup.graphql
diff --git a/tck/src/main/resources/tests/battle/input.graphql b/server/tck/src/main/resources/tests/battle/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/battle/input.graphql
rename to server/tck/src/main/resources/tests/battle/input.graphql
diff --git a/tck/src/main/resources/tests/battle/output.json b/server/tck/src/main/resources/tests/battle/output.json
similarity index 100%
rename from tck/src/main/resources/tests/battle/output.json
rename to server/tck/src/main/resources/tests/battle/output.json
diff --git a/tck/src/main/resources/tests/battle/test.properties b/server/tck/src/main/resources/tests/battle/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/battle/test.properties
rename to server/tck/src/main/resources/tests/battle/test.properties
diff --git a/tck/src/main/resources/tests/battleWithFormat/cleanup.graphql b/server/tck/src/main/resources/tests/battleWithFormat/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/battleWithFormat/cleanup.graphql
rename to server/tck/src/main/resources/tests/battleWithFormat/cleanup.graphql
diff --git a/tck/src/main/resources/tests/battleWithFormat/input.graphql b/server/tck/src/main/resources/tests/battleWithFormat/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/battleWithFormat/input.graphql
rename to server/tck/src/main/resources/tests/battleWithFormat/input.graphql
diff --git a/tck/src/main/resources/tests/battleWithFormat/output.json b/server/tck/src/main/resources/tests/battleWithFormat/output.json
similarity index 100%
rename from tck/src/main/resources/tests/battleWithFormat/output.json
rename to server/tck/src/main/resources/tests/battleWithFormat/output.json
diff --git a/tck/src/main/resources/tests/battleWithFormat/test.properties b/server/tck/src/main/resources/tests/battleWithFormat/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/battleWithFormat/test.properties
rename to server/tck/src/main/resources/tests/battleWithFormat/test.properties
diff --git a/tck/src/main/resources/tests/beenThere/cleanup.graphql b/server/tck/src/main/resources/tests/beenThere/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/beenThere/cleanup.graphql
rename to server/tck/src/main/resources/tests/beenThere/cleanup.graphql
diff --git a/tck/src/main/resources/tests/beenThere/input.graphql b/server/tck/src/main/resources/tests/beenThere/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/beenThere/input.graphql
rename to server/tck/src/main/resources/tests/beenThere/input.graphql
diff --git a/tck/src/main/resources/tests/beenThere/output.json b/server/tck/src/main/resources/tests/beenThere/output.json
similarity index 100%
rename from tck/src/main/resources/tests/beenThere/output.json
rename to server/tck/src/main/resources/tests/beenThere/output.json
diff --git a/tck/src/main/resources/tests/beenThere/test.properties b/server/tck/src/main/resources/tests/beenThere/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/beenThere/test.properties
rename to server/tck/src/main/resources/tests/beenThere/test.properties
diff --git a/tck/src/main/resources/tests/birthday/cleanup.graphql b/server/tck/src/main/resources/tests/birthday/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/birthday/cleanup.graphql
rename to server/tck/src/main/resources/tests/birthday/cleanup.graphql
diff --git a/tck/src/main/resources/tests/birthday/input.graphql b/server/tck/src/main/resources/tests/birthday/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/birthday/input.graphql
rename to server/tck/src/main/resources/tests/birthday/input.graphql
diff --git a/tck/src/main/resources/tests/birthday/output.json b/server/tck/src/main/resources/tests/birthday/output.json
similarity index 100%
rename from tck/src/main/resources/tests/birthday/output.json
rename to server/tck/src/main/resources/tests/birthday/output.json
diff --git a/tck/src/main/resources/tests/birthday/test.properties b/server/tck/src/main/resources/tests/birthday/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/birthday/test.properties
rename to server/tck/src/main/resources/tests/birthday/test.properties
diff --git a/tck/src/main/resources/tests/calendarEntries/cleanup.graphql b/server/tck/src/main/resources/tests/calendarEntries/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/calendarEntries/cleanup.graphql
rename to server/tck/src/main/resources/tests/calendarEntries/cleanup.graphql
diff --git a/tck/src/main/resources/tests/calendarEntries/input.graphql b/server/tck/src/main/resources/tests/calendarEntries/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/calendarEntries/input.graphql
rename to server/tck/src/main/resources/tests/calendarEntries/input.graphql
diff --git a/tck/src/main/resources/tests/calendarEntries/output.json b/server/tck/src/main/resources/tests/calendarEntries/output.json
similarity index 100%
rename from tck/src/main/resources/tests/calendarEntries/output.json
rename to server/tck/src/main/resources/tests/calendarEntries/output.json
diff --git a/tck/src/main/resources/tests/calendarEntries/test.properties b/server/tck/src/main/resources/tests/calendarEntries/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/calendarEntries/test.properties
rename to server/tck/src/main/resources/tests/calendarEntries/test.properties
diff --git a/server/tck/src/main/resources/tests/charScalars/input.graphql b/server/tck/src/main/resources/tests/charScalars/input.graphql
new file mode 100644
index 00000000..5868c183
--- /dev/null
+++ b/server/tck/src/main/resources/tests/charScalars/input.graphql
@@ -0,0 +1,7 @@
+{
+ charHolder {
+ charPrimitiveInput(c: "a")
+ charObjectInput(c: "ab")
+ charArrayInput(cs: ["a", "b"])
+ }
+}
diff --git a/server/tck/src/main/resources/tests/charScalars/output.json b/server/tck/src/main/resources/tests/charScalars/output.json
new file mode 100644
index 00000000..d02ba018
--- /dev/null
+++ b/server/tck/src/main/resources/tests/charScalars/output.json
@@ -0,0 +1,12 @@
+{
+ "data": {
+ "charHolder": {
+ "charPrimitiveInput": "a",
+ "charObjectInput": "a",
+ "charArrayInput": [
+ "a",
+ "b"
+ ]
+ }
+ }
+}
diff --git a/server/tck/src/main/resources/tests/charScalars/test.properties b/server/tck/src/main/resources/tests/charScalars/test.properties
new file mode 100644
index 00000000..db74c7f9
--- /dev/null
+++ b/server/tck/src/main/resources/tests/charScalars/test.properties
@@ -0,0 +1,2 @@
+ignore=false
+priority=100
diff --git a/tck/src/main/resources/tests/checkin/cleanup.graphql b/server/tck/src/main/resources/tests/checkin/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/checkin/cleanup.graphql
rename to server/tck/src/main/resources/tests/checkin/cleanup.graphql
diff --git a/tck/src/main/resources/tests/checkin/input.graphql b/server/tck/src/main/resources/tests/checkin/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/checkin/input.graphql
rename to server/tck/src/main/resources/tests/checkin/input.graphql
diff --git a/tck/src/main/resources/tests/checkin/output.json b/server/tck/src/main/resources/tests/checkin/output.json
similarity index 100%
rename from tck/src/main/resources/tests/checkin/output.json
rename to server/tck/src/main/resources/tests/checkin/output.json
diff --git a/tck/src/main/resources/tests/checkin/test.properties b/server/tck/src/main/resources/tests/checkin/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/checkin/test.properties
rename to server/tck/src/main/resources/tests/checkin/test.properties
diff --git a/tck/src/main/resources/tests/checkinWithFormat/cleanup.graphql b/server/tck/src/main/resources/tests/checkinWithFormat/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/checkinWithFormat/cleanup.graphql
rename to server/tck/src/main/resources/tests/checkinWithFormat/cleanup.graphql
diff --git a/tck/src/main/resources/tests/checkinWithFormat/input.graphql b/server/tck/src/main/resources/tests/checkinWithFormat/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/checkinWithFormat/input.graphql
rename to server/tck/src/main/resources/tests/checkinWithFormat/input.graphql
diff --git a/tck/src/main/resources/tests/checkinWithFormat/output.json b/server/tck/src/main/resources/tests/checkinWithFormat/output.json
similarity index 100%
rename from tck/src/main/resources/tests/checkinWithFormat/output.json
rename to server/tck/src/main/resources/tests/checkinWithFormat/output.json
diff --git a/tck/src/main/resources/tests/checkinWithFormat/test.properties b/server/tck/src/main/resources/tests/checkinWithFormat/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/checkinWithFormat/test.properties
rename to server/tck/src/main/resources/tests/checkinWithFormat/test.properties
diff --git a/tck/src/main/resources/tests/createNewHero/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHero/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/createNewHero/cleanup.graphql
rename to server/tck/src/main/resources/tests/createNewHero/cleanup.graphql
diff --git a/tck/src/main/resources/tests/createNewHero/input.graphql b/server/tck/src/main/resources/tests/createNewHero/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/createNewHero/input.graphql
rename to server/tck/src/main/resources/tests/createNewHero/input.graphql
diff --git a/tck/src/main/resources/tests/createNewHero/output.json b/server/tck/src/main/resources/tests/createNewHero/output.json
similarity index 100%
rename from tck/src/main/resources/tests/createNewHero/output.json
rename to server/tck/src/main/resources/tests/createNewHero/output.json
diff --git a/tck/src/main/resources/tests/createNewHero/test.properties b/server/tck/src/main/resources/tests/createNewHero/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/createNewHero/test.properties
rename to server/tck/src/main/resources/tests/createNewHero/test.properties
diff --git a/tck/src/main/resources/tests/createNewHeroWithVariables/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHeroWithVariables/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/createNewHeroWithVariables/cleanup.graphql
rename to server/tck/src/main/resources/tests/createNewHeroWithVariables/cleanup.graphql
diff --git a/tck/src/main/resources/tests/createNewHeroWithVariables/input.graphql b/server/tck/src/main/resources/tests/createNewHeroWithVariables/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/createNewHeroWithVariables/input.graphql
rename to server/tck/src/main/resources/tests/createNewHeroWithVariables/input.graphql
diff --git a/tck/src/main/resources/tests/createNewHeroWithVariables/output.json b/server/tck/src/main/resources/tests/createNewHeroWithVariables/output.json
similarity index 100%
rename from tck/src/main/resources/tests/createNewHeroWithVariables/output.json
rename to server/tck/src/main/resources/tests/createNewHeroWithVariables/output.json
diff --git a/tck/src/main/resources/tests/createNewHeroWithVariables/test.properties b/server/tck/src/main/resources/tests/createNewHeroWithVariables/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/createNewHeroWithVariables/test.properties
rename to server/tck/src/main/resources/tests/createNewHeroWithVariables/test.properties
diff --git a/tck/src/main/resources/tests/createNewHeroWithVariables/variables.json b/server/tck/src/main/resources/tests/createNewHeroWithVariables/variables.json
similarity index 100%
rename from tck/src/main/resources/tests/createNewHeroWithVariables/variables.json
rename to server/tck/src/main/resources/tests/createNewHeroWithVariables/variables.json
diff --git a/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/cleanup.graphql
new file mode 100644
index 00000000..ede6546f
--- /dev/null
+++ b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/cleanup.graphql
@@ -0,0 +1,5 @@
+mutation removeHero {
+ removeHero(hero: "Batman") {
+ name
+ }
+}
diff --git a/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/input.graphql b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/input.graphql
new file mode 100644
index 00000000..9543a8d4
--- /dev/null
+++ b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/input.graphql
@@ -0,0 +1,8 @@
+mutation createNewHeroWithVariables($hero: SuperHeroInput){
+ createNewHero(hero: $hero){
+ name
+ primaryLocation
+ superPowers
+ realName
+ }
+}
\ No newline at end of file
diff --git a/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/output.json b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/output.json
new file mode 100644
index 00000000..74439046
--- /dev/null
+++ b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/output.json
@@ -0,0 +1,12 @@
+{
+ "data": {
+ "createNewHero": {
+ "name": "Batman",
+ "primaryLocation": "Gotham City",
+ "superPowers": [
+ "Genius-level intellect"
+ ],
+ "realName": "Bruce Wayne"
+ }
+ }
+}
\ No newline at end of file
diff --git a/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/test.properties b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/test.properties
new file mode 100644
index 00000000..cac12be9
--- /dev/null
+++ b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/test.properties
@@ -0,0 +1,3 @@
+# Tests that variables can contain full "complex" objects
+ignore=false
+priority=200
diff --git a/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/variables.json b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/variables.json
new file mode 100644
index 00000000..b613802f
--- /dev/null
+++ b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/variables.json
@@ -0,0 +1,8 @@
+{
+ "hero": {
+ "name": "Batman",
+ "realName": "Bruce Wayne",
+ "primaryLocation": "Gotham City",
+ "superPowers": ["Genius-level intellect"]
+ }
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/cleanup.graphql
rename to server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/cleanup.graphql
diff --git a/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/input.graphql b/server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/input.graphql
rename to server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/input.graphql
diff --git a/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/output.json b/server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/output.json
similarity index 100%
rename from tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/output.json
rename to server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/output.json
diff --git a/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/test.properties b/server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/test.properties
rename to server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/test.properties
diff --git a/tck/src/main/resources/tests/createNewHeros/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHeros/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/createNewHeros/cleanup.graphql
rename to server/tck/src/main/resources/tests/createNewHeros/cleanup.graphql
diff --git a/tck/src/main/resources/tests/createNewHeros/input.graphql b/server/tck/src/main/resources/tests/createNewHeros/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/createNewHeros/input.graphql
rename to server/tck/src/main/resources/tests/createNewHeros/input.graphql
diff --git a/tck/src/main/resources/tests/createNewHeros/output.json b/server/tck/src/main/resources/tests/createNewHeros/output.json
similarity index 100%
rename from tck/src/main/resources/tests/createNewHeros/output.json
rename to server/tck/src/main/resources/tests/createNewHeros/output.json
diff --git a/tck/src/main/resources/tests/createNewHeros/test.properties b/server/tck/src/main/resources/tests/createNewHeros/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/createNewHeros/test.properties
rename to server/tck/src/main/resources/tests/createNewHeros/test.properties
diff --git a/tck/src/main/resources/tests/createNewHerosArray/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHerosArray/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/createNewHerosArray/cleanup.graphql
rename to server/tck/src/main/resources/tests/createNewHerosArray/cleanup.graphql
diff --git a/tck/src/main/resources/tests/createNewHerosArray/input.graphql b/server/tck/src/main/resources/tests/createNewHerosArray/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/createNewHerosArray/input.graphql
rename to server/tck/src/main/resources/tests/createNewHerosArray/input.graphql
diff --git a/tck/src/main/resources/tests/createNewHerosArray/output.json b/server/tck/src/main/resources/tests/createNewHerosArray/output.json
similarity index 100%
rename from tck/src/main/resources/tests/createNewHerosArray/output.json
rename to server/tck/src/main/resources/tests/createNewHerosArray/output.json
diff --git a/tck/src/main/resources/tests/createNewHerosArray/test.properties b/server/tck/src/main/resources/tests/createNewHerosArray/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/createNewHerosArray/test.properties
rename to server/tck/src/main/resources/tests/createNewHerosArray/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/input.graphql b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/output.json b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/output.json
rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/test.properties b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/cleanup.graphql b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/cleanup.graphql
rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/cleanup.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/input.graphql b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output.json b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output.json
rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output2.json b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output2.json
new file mode 100644
index 00000000..de8415dc
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output2.json
@@ -0,0 +1,17 @@
+{
+ "errors": [
+ {
+ "message": "The field at path '/team/name' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value. The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'String' within parent type 'Team'",
+ "path": [
+ "team",
+ "name"
+ ],
+ "extensions": {
+ "classification": "NullValueInNonNullableField"
+ }
+ }
+ ],
+ "data": {
+ "team": null
+ }
+}
diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/prepare.graphql b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/prepare.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/prepare.graphql
rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/prepare.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/test.properties b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/input.graphql b/server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/output.json b/server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/output.json
rename to server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/test.properties b/server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/blacklist/input.graphql b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/blacklist/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/blacklist/output.json b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/blacklist/output.json
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/blacklist/test.properties b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/blacklist/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/blacklistTransitive/input.graphql b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/blacklistTransitive/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/blacklistTransitive/output.json b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/blacklistTransitive/output.json
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/blacklistTransitive/test.properties b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/blacklistTransitive/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output.json
rename to server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output2.json
new file mode 100644
index 00000000..e8dbd5f1
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output2.json
@@ -0,0 +1,14 @@
+{
+ "data": null,
+ "errors": [
+ {
+ "message": "Validation error of type WrongType: argument 'powerLevel' with value 'StringValue{value='Unlimited'}' is not a valid 'Int' - Expected AST type 'IntValue' but was 'StringValue'. @ 'updateItemPowerLevel'",
+ "locations": [
+ {
+ "line": 2,
+ "column": 37
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/invalidEnumValue/cleanup.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidEnumValue/cleanup.graphql
rename to server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/cleanup.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/invalidEnumValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidEnumValue/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/invalidEnumValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidEnumValue/output.json
rename to server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/invalidEnumValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidEnumValue/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output.json
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output2.json
new file mode 100644
index 00000000..fd8651bb
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output2.json
@@ -0,0 +1,19 @@
+{
+ "data": {
+ "checkInWithCorrectDateFormat": null
+ },
+ "errors": [
+ {
+ "path": [
+ "checkInWithCorrectDateFormat"
+ ],
+ "locations": [
+ {
+ "column": 3,
+ "line": 2
+ }
+ ],
+ "message": "Exception while fetching data (/checkInWithCorrectDateFormat) : Text 'Today' could not be parsed at index 0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output.json
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output2.json
new file mode 100644
index 00000000..ec0efd45
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output2.json
@@ -0,0 +1,19 @@
+{
+ "data": {
+ "battleWithCorrectDateFormat": null
+ },
+ "errors": [
+ {
+ "path": [
+ "battleWithCorrectDateFormat"
+ ],
+ "locations": [
+ {
+ "line": 2,
+ "column": 3
+ }
+ ],
+ "message": "Exception while fetching data (/battleWithCorrectDateFormat) : Text 'Today' could not be parsed at index 0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output.json
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output2.json
new file mode 100644
index 00000000..02058e73
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output2.json
@@ -0,0 +1,19 @@
+{
+ "data": {
+ "battle": null
+ },
+ "errors": [
+ {
+ "path": [
+ "battle"
+ ],
+ "locations": [
+ {
+ "line": 2,
+ "column": 3
+ }
+ ],
+ "message": "Exception while fetching data (/battle) : Text 'Today' could not be parsed at index 0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output.json
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output2.json
new file mode 100644
index 00000000..47c7161f
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output2.json
@@ -0,0 +1,19 @@
+{
+ "data": {
+ "checkIn": null
+ },
+ "errors": [
+ {
+ "path": [
+ "checkIn"
+ ],
+ "locations": [
+ {
+ "line": 2,
+ "column": 3
+ }
+ ],
+ "message": "Exception while fetching data (/checkIn) : Text 'Today' could not be parsed at index 0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output.json
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output2.json
new file mode 100644
index 00000000..830c264a
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output2.json
@@ -0,0 +1,19 @@
+{
+ "data": {
+ "startPatrollingWithCorrectDateFormat": null
+ },
+ "errors": [
+ {
+ "path": [
+ "startPatrollingWithCorrectDateFormat"
+ ],
+ "locations": [
+ {
+ "line": 2,
+ "column": 3
+ }
+ ],
+ "message": "Exception while fetching data (/startPatrollingWithCorrectDateFormat) : Text 'Today' could not be parsed at index 0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output.json
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output2.json
new file mode 100644
index 00000000..cc0d08ef
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output2.json
@@ -0,0 +1,19 @@
+{
+ "data": {
+ "startPatrolling": null
+ },
+ "errors": [
+ {
+ "path": [
+ "startPatrolling"
+ ],
+ "locations": [
+ {
+ "line": 2,
+ "column": 3
+ }
+ ],
+ "message": "Exception while fetching data (/startPatrolling) : Text 'Today' could not be parsed at index 0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/javaError/input.graphql b/server/tck/src/main/resources/tests/errorHandling/javaError/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/javaError/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/javaError/input.graphql
diff --git a/server/tck/src/main/resources/tests/errorHandling/javaError/output.json b/server/tck/src/main/resources/tests/errorHandling/javaError/output.json
new file mode 100644
index 00000000..e69de29b
diff --git a/tck/src/main/resources/tests/errorHandling/javaError/test.properties b/server/tck/src/main/resources/tests/errorHandling/javaError/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/javaError/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/javaError/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/cleanup.graphql b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/cleanup.graphql
rename to server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/cleanup.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/input.graphql b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output.json
rename to server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json
new file mode 100644
index 00000000..2ca6b86b
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json
@@ -0,0 +1,43 @@
+{
+ "data": {
+ "createNewHero": {
+ "name": "Captain America",
+ "teamAffiliations": [
+ {
+ "members": [
+ {
+ "name": "Iron Man",
+ "currentLocation": "Wachovia"
+ },
+ {
+ "name": "Spider Man",
+ "currentLocation": "Brooklyn"
+ },
+ {
+ "name": "Wolverine",
+ "currentLocation": "New Orleans"
+ },
+ {
+ "name": "Captain America",
+ "currentLocation": null
+ }
+ ]
+ }
+ ],
+ "primaryLocation": "New York, NY",
+ "superPowers": [
+ "Super strength",
+ "Vibranium Shield"
+ ],
+ "realName": "Steven Rogers"
+ }
+ },
+ "errors": [
+ {
+ "path": [
+ "createNewHero"
+ ],
+ "message": "Cannot find location for Captain America"
+ }
+ ]
+}
diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/test.properties b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/input.graphql b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output.json
rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output2.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output2.json
new file mode 100644
index 00000000..106baedd
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output2.json
@@ -0,0 +1,27 @@
+{
+ "data": {
+ "allHeroesWithError": [
+ {
+ "name": "Iron Man",
+ "primaryLocation": "Los Angeles, CA"
+ },
+ {
+ "name": "Wolverine",
+ "primaryLocation": "Unknown"
+ },
+ null,
+ {
+ "name": "Spider Man",
+ "primaryLocation": "New York, NY"
+ }
+ ]
+ },
+ "errors": [
+ {
+ "path": [
+ "allHeroesWithError"
+ ],
+ "message": "Failed to find one or more heroes"
+ }
+ ]
+}
diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/test.properties b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/input.graphql b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output.json
rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output2.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output2.json
new file mode 100644
index 00000000..45925793
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output2.json
@@ -0,0 +1,27 @@
+{
+ "data": {
+ "allHeroesWithSpecificError": [
+ {
+ "name": "Iron Man",
+ "primaryLocation": "Los Angeles, CA"
+ },
+ {
+ "name": "Wolverine",
+ "primaryLocation": "Unknown"
+ },
+ {
+ "name": "Starlord",
+ "primaryLocation": "Outer Space"
+ }
+ ]
+ },
+ "errors": [
+ {
+ "path": [
+ "allHeroesWithSpecificError"
+ ],
+ "message": "Failed to find one or more heroes"
+ }
+ ]
+}
+
diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/test.properties b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/runtimeException/input.graphql b/server/tck/src/main/resources/tests/errorHandling/runtimeException/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/runtimeException/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/runtimeException/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/runtimeException/output.json b/server/tck/src/main/resources/tests/errorHandling/runtimeException/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/runtimeException/output.json
rename to server/tck/src/main/resources/tests/errorHandling/runtimeException/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/runtimeException/test.properties b/server/tck/src/main/resources/tests/errorHandling/runtimeException/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/runtimeException/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/runtimeException/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/whitelist/input.graphql b/server/tck/src/main/resources/tests/errorHandling/showErrorMessage/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/whitelist/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessage/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/whitelist/output.json b/server/tck/src/main/resources/tests/errorHandling/showErrorMessage/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/whitelist/output.json
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessage/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/whitelist/test.properties b/server/tck/src/main/resources/tests/errorHandling/showErrorMessage/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/whitelist/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessage/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/whitelistTransitive/input.graphql b/server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/whitelistTransitive/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/whitelistTransitive/output.json b/server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/whitelistTransitive/output.json
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/whitelistTransitive/test.properties b/server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/whitelistTransitive/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/unknownField/input.graphql b/server/tck/src/main/resources/tests/errorHandling/unknownField/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownField/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/unknownField/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/unknownField/output.json b/server/tck/src/main/resources/tests/errorHandling/unknownField/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownField/output.json
rename to server/tck/src/main/resources/tests/errorHandling/unknownField/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/unknownField/test.properties b/server/tck/src/main/resources/tests/errorHandling/unknownField/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownField/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/unknownField/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/input.graphql b/server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/output.json b/server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/output.json
rename to server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/test.properties b/server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/unknownMutation/input.graphql b/server/tck/src/main/resources/tests/errorHandling/unknownMutation/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownMutation/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/unknownMutation/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/unknownMutation/output.json b/server/tck/src/main/resources/tests/errorHandling/unknownMutation/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownMutation/output.json
rename to server/tck/src/main/resources/tests/errorHandling/unknownMutation/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/unknownMutation/test.properties b/server/tck/src/main/resources/tests/errorHandling/unknownMutation/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownMutation/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/unknownMutation/test.properties
diff --git a/tck/src/main/resources/tests/errorHandling/unknownQuery/input.graphql b/server/tck/src/main/resources/tests/errorHandling/unknownQuery/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownQuery/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/unknownQuery/input.graphql
diff --git a/tck/src/main/resources/tests/errorHandling/unknownQuery/output.json b/server/tck/src/main/resources/tests/errorHandling/unknownQuery/output.json
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownQuery/output.json
rename to server/tck/src/main/resources/tests/errorHandling/unknownQuery/output.json
diff --git a/tck/src/main/resources/tests/errorHandling/unknownQuery/test.properties b/server/tck/src/main/resources/tests/errorHandling/unknownQuery/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/errorHandling/unknownQuery/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/unknownQuery/test.properties
diff --git a/tck/src/main/resources/tests/favouriteDrinkSize/cleanup.graphql b/server/tck/src/main/resources/tests/favouriteDrinkSize/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/favouriteDrinkSize/cleanup.graphql
rename to server/tck/src/main/resources/tests/favouriteDrinkSize/cleanup.graphql
diff --git a/tck/src/main/resources/tests/favouriteDrinkSize/input.graphql b/server/tck/src/main/resources/tests/favouriteDrinkSize/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/favouriteDrinkSize/input.graphql
rename to server/tck/src/main/resources/tests/favouriteDrinkSize/input.graphql
diff --git a/tck/src/main/resources/tests/favouriteDrinkSize/output.json b/server/tck/src/main/resources/tests/favouriteDrinkSize/output.json
similarity index 100%
rename from tck/src/main/resources/tests/favouriteDrinkSize/output.json
rename to server/tck/src/main/resources/tests/favouriteDrinkSize/output.json
diff --git a/tck/src/main/resources/tests/favouriteDrinkSize/test.properties b/server/tck/src/main/resources/tests/favouriteDrinkSize/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/favouriteDrinkSize/test.properties
rename to server/tck/src/main/resources/tests/favouriteDrinkSize/test.properties
diff --git a/tck/src/main/resources/tests/favouriteDrinkSizeML/cleanup.graphql b/server/tck/src/main/resources/tests/favouriteDrinkSizeML/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/favouriteDrinkSizeML/cleanup.graphql
rename to server/tck/src/main/resources/tests/favouriteDrinkSizeML/cleanup.graphql
diff --git a/tck/src/main/resources/tests/favouriteDrinkSizeML/input.graphql b/server/tck/src/main/resources/tests/favouriteDrinkSizeML/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/favouriteDrinkSizeML/input.graphql
rename to server/tck/src/main/resources/tests/favouriteDrinkSizeML/input.graphql
diff --git a/tck/src/main/resources/tests/favouriteDrinkSizeML/output.json b/server/tck/src/main/resources/tests/favouriteDrinkSizeML/output.json
similarity index 100%
rename from tck/src/main/resources/tests/favouriteDrinkSizeML/output.json
rename to server/tck/src/main/resources/tests/favouriteDrinkSizeML/output.json
diff --git a/tck/src/main/resources/tests/favouriteDrinkSizeML/test.properties b/server/tck/src/main/resources/tests/favouriteDrinkSizeML/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/favouriteDrinkSizeML/test.properties
rename to server/tck/src/main/resources/tests/favouriteDrinkSizeML/test.properties
diff --git a/tck/src/main/resources/tests/getCharacter/input.graphql b/server/tck/src/main/resources/tests/getCharacter/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/getCharacter/input.graphql
rename to server/tck/src/main/resources/tests/getCharacter/input.graphql
diff --git a/tck/src/main/resources/tests/getCharacter/output.json b/server/tck/src/main/resources/tests/getCharacter/output.json
similarity index 100%
rename from tck/src/main/resources/tests/getCharacter/output.json
rename to server/tck/src/main/resources/tests/getCharacter/output.json
diff --git a/tck/src/main/resources/tests/getCharacter/test.properties b/server/tck/src/main/resources/tests/getCharacter/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/getCharacter/test.properties
rename to server/tck/src/main/resources/tests/getCharacter/test.properties
diff --git a/server/tck/src/main/resources/tests/getHero/input.graphql b/server/tck/src/main/resources/tests/getHero/input.graphql
new file mode 100644
index 00000000..e64ec815
--- /dev/null
+++ b/server/tck/src/main/resources/tests/getHero/input.graphql
@@ -0,0 +1,27 @@
+{
+ superHero(name:"Iron Man") {
+
+ name
+ primaryLocation
+ realName
+ superPowers
+ powerSource {
+ ... on Magic {
+ canBeLearned
+ }
+ ... on GeneticMutation {
+ isPresentAtBirth
+ dateOfMutation
+ }
+ ... on ExtremeWealth {
+ netWorth
+ }
+ }
+ teamAffiliations {
+ name
+ members{
+ name
+ }
+ }
+ }
+}
diff --git a/tck/src/main/resources/tests/getHero/output.json b/server/tck/src/main/resources/tests/getHero/output.json
similarity index 88%
rename from tck/src/main/resources/tests/getHero/output.json
rename to server/tck/src/main/resources/tests/getHero/output.json
index adb089f9..0b72bdda 100644
--- a/tck/src/main/resources/tests/getHero/output.json
+++ b/server/tck/src/main/resources/tests/getHero/output.json
@@ -8,6 +8,9 @@
"wealth",
"engineering"
],
+ "powerSource": {
+ "netWorth": 12400000000.00
+ },
"teamAffiliations": [
{
"name": "Avengers",
@@ -26,4 +29,4 @@
]
}
}
-}
\ No newline at end of file
+}
diff --git a/tck/src/main/resources/tests/getHero/test.properties b/server/tck/src/main/resources/tests/getHero/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/getHero/test.properties
rename to server/tck/src/main/resources/tests/getHero/test.properties
diff --git a/tck/src/main/resources/tests/getHeroWithItems/input.graphql b/server/tck/src/main/resources/tests/getHeroWithItems/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/getHeroWithItems/input.graphql
rename to server/tck/src/main/resources/tests/getHeroWithItems/input.graphql
diff --git a/tck/src/main/resources/tests/getHeroWithItems/output.json b/server/tck/src/main/resources/tests/getHeroWithItems/output.json
similarity index 100%
rename from tck/src/main/resources/tests/getHeroWithItems/output.json
rename to server/tck/src/main/resources/tests/getHeroWithItems/output.json
diff --git a/tck/src/main/resources/tests/getHeroWithItems/test.properties b/server/tck/src/main/resources/tests/getHeroWithItems/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/getHeroWithItems/test.properties
rename to server/tck/src/main/resources/tests/getHeroWithItems/test.properties
diff --git a/tck/src/main/resources/tests/importantDates/cleanup.graphql b/server/tck/src/main/resources/tests/importantDates/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/importantDates/cleanup.graphql
rename to server/tck/src/main/resources/tests/importantDates/cleanup.graphql
diff --git a/tck/src/main/resources/tests/importantDates/input.graphql b/server/tck/src/main/resources/tests/importantDates/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/importantDates/input.graphql
rename to server/tck/src/main/resources/tests/importantDates/input.graphql
diff --git a/tck/src/main/resources/tests/importantDates/output.json b/server/tck/src/main/resources/tests/importantDates/output.json
similarity index 100%
rename from tck/src/main/resources/tests/importantDates/output.json
rename to server/tck/src/main/resources/tests/importantDates/output.json
diff --git a/tck/src/main/resources/tests/importantDates/test.properties b/server/tck/src/main/resources/tests/importantDates/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/importantDates/test.properties
rename to server/tck/src/main/resources/tests/importantDates/test.properties
diff --git a/tck/src/main/resources/tests/importantDatesUS/cleanup.graphql b/server/tck/src/main/resources/tests/importantDatesUS/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/importantDatesUS/cleanup.graphql
rename to server/tck/src/main/resources/tests/importantDatesUS/cleanup.graphql
diff --git a/tck/src/main/resources/tests/importantDatesUS/input.graphql b/server/tck/src/main/resources/tests/importantDatesUS/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/importantDatesUS/input.graphql
rename to server/tck/src/main/resources/tests/importantDatesUS/input.graphql
diff --git a/tck/src/main/resources/tests/importantDatesUS/output.json b/server/tck/src/main/resources/tests/importantDatesUS/output.json
similarity index 100%
rename from tck/src/main/resources/tests/importantDatesUS/output.json
rename to server/tck/src/main/resources/tests/importantDatesUS/output.json
diff --git a/tck/src/main/resources/tests/importantDatesUS/test.properties b/server/tck/src/main/resources/tests/importantDatesUS/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/importantDatesUS/test.properties
rename to server/tck/src/main/resources/tests/importantDatesUS/test.properties
diff --git a/tck/src/main/resources/tests/jsonbProps/input.graphql b/server/tck/src/main/resources/tests/jsonbProps/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/jsonbProps/input.graphql
rename to server/tck/src/main/resources/tests/jsonbProps/input.graphql
diff --git a/tck/src/main/resources/tests/jsonbProps/output.json b/server/tck/src/main/resources/tests/jsonbProps/output.json
similarity index 100%
rename from tck/src/main/resources/tests/jsonbProps/output.json
rename to server/tck/src/main/resources/tests/jsonbProps/output.json
diff --git a/tck/src/main/resources/tests/jsonbProps/test.properties b/server/tck/src/main/resources/tests/jsonbProps/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/jsonbProps/test.properties
rename to server/tck/src/main/resources/tests/jsonbProps/test.properties
diff --git a/tck/src/main/resources/tests/kidsAges/cleanup.graphql b/server/tck/src/main/resources/tests/kidsAges/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/kidsAges/cleanup.graphql
rename to server/tck/src/main/resources/tests/kidsAges/cleanup.graphql
diff --git a/tck/src/main/resources/tests/kidsAges/input.graphql b/server/tck/src/main/resources/tests/kidsAges/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/kidsAges/input.graphql
rename to server/tck/src/main/resources/tests/kidsAges/input.graphql
diff --git a/tck/src/main/resources/tests/kidsAges/output.json b/server/tck/src/main/resources/tests/kidsAges/output.json
similarity index 100%
rename from tck/src/main/resources/tests/kidsAges/output.json
rename to server/tck/src/main/resources/tests/kidsAges/output.json
diff --git a/tck/src/main/resources/tests/kidsAges/test.properties b/server/tck/src/main/resources/tests/kidsAges/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/kidsAges/test.properties
rename to server/tck/src/main/resources/tests/kidsAges/test.properties
diff --git a/tck/src/main/resources/tests/location/cleanup.graphql b/server/tck/src/main/resources/tests/location/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/location/cleanup.graphql
rename to server/tck/src/main/resources/tests/location/cleanup.graphql
diff --git a/tck/src/main/resources/tests/location/input.graphql b/server/tck/src/main/resources/tests/location/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/location/input.graphql
rename to server/tck/src/main/resources/tests/location/input.graphql
diff --git a/tck/src/main/resources/tests/location/output.json b/server/tck/src/main/resources/tests/location/output.json
similarity index 100%
rename from tck/src/main/resources/tests/location/output.json
rename to server/tck/src/main/resources/tests/location/output.json
diff --git a/tck/src/main/resources/tests/location/test.properties b/server/tck/src/main/resources/tests/location/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/location/test.properties
rename to server/tck/src/main/resources/tests/location/test.properties
diff --git a/tck/src/main/resources/tests/locationArray/cleanup.graphql b/server/tck/src/main/resources/tests/locationArray/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/locationArray/cleanup.graphql
rename to server/tck/src/main/resources/tests/locationArray/cleanup.graphql
diff --git a/tck/src/main/resources/tests/locationArray/input.graphql b/server/tck/src/main/resources/tests/locationArray/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/locationArray/input.graphql
rename to server/tck/src/main/resources/tests/locationArray/input.graphql
diff --git a/tck/src/main/resources/tests/locationArray/output.json b/server/tck/src/main/resources/tests/locationArray/output.json
similarity index 100%
rename from tck/src/main/resources/tests/locationArray/output.json
rename to server/tck/src/main/resources/tests/locationArray/output.json
diff --git a/tck/src/main/resources/tests/locationArray/test.properties b/server/tck/src/main/resources/tests/locationArray/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/locationArray/test.properties
rename to server/tck/src/main/resources/tests/locationArray/test.properties
diff --git a/tck/src/main/resources/tests/locationLongLat/cleanup.graphql b/server/tck/src/main/resources/tests/locationLongLat/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/locationLongLat/cleanup.graphql
rename to server/tck/src/main/resources/tests/locationLongLat/cleanup.graphql
diff --git a/tck/src/main/resources/tests/locationLongLat/input.graphql b/server/tck/src/main/resources/tests/locationLongLat/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/locationLongLat/input.graphql
rename to server/tck/src/main/resources/tests/locationLongLat/input.graphql
diff --git a/tck/src/main/resources/tests/locationLongLat/output.json b/server/tck/src/main/resources/tests/locationLongLat/output.json
similarity index 100%
rename from tck/src/main/resources/tests/locationLongLat/output.json
rename to server/tck/src/main/resources/tests/locationLongLat/output.json
diff --git a/tck/src/main/resources/tests/locationLongLat/test.properties b/server/tck/src/main/resources/tests/locationLongLat/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/locationLongLat/test.properties
rename to server/tck/src/main/resources/tests/locationLongLat/test.properties
diff --git a/tck/src/main/resources/tests/locationLongLatArray/cleanup.graphql b/server/tck/src/main/resources/tests/locationLongLatArray/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/locationLongLatArray/cleanup.graphql
rename to server/tck/src/main/resources/tests/locationLongLatArray/cleanup.graphql
diff --git a/tck/src/main/resources/tests/locationLongLatArray/input.graphql b/server/tck/src/main/resources/tests/locationLongLatArray/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/locationLongLatArray/input.graphql
rename to server/tck/src/main/resources/tests/locationLongLatArray/input.graphql
diff --git a/tck/src/main/resources/tests/locationLongLatArray/output.json b/server/tck/src/main/resources/tests/locationLongLatArray/output.json
similarity index 100%
rename from tck/src/main/resources/tests/locationLongLatArray/output.json
rename to server/tck/src/main/resources/tests/locationLongLatArray/output.json
diff --git a/tck/src/main/resources/tests/locationLongLatArray/test.properties b/server/tck/src/main/resources/tests/locationLongLatArray/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/locationLongLatArray/test.properties
rename to server/tck/src/main/resources/tests/locationLongLatArray/test.properties
diff --git a/server/tck/src/main/resources/tests/nameTests.csv b/server/tck/src/main/resources/tests/nameTests.csv
new file mode 100644
index 00000000..e98d69b2
--- /dev/null
+++ b/server/tck/src/main/resources/tests/nameTests.csv
@@ -0,0 +1,14 @@
+# Tests for @Name & @JsonbProperty
+1| type Person | lastName: String | Expecting field lastName on type Person
+2| input Person | lastName: String | Expecting field lastName on input PersonInput
+3| type Person | firstName: String | Expecting field firstName on type Person
+4| input Person | forename: String | Expecting field forename on input PersonInput
+5| type Person | birth: Date | Expecting field birth on type Person
+6| input Person | birthDay: Date | Expecting field birthDay on input PersonInput
+
+7| type JsonbPerson | lastName: String | Expecting field lastName on type JsonbPerson
+8| input JsonbPerson | lastName: String | Expecting field lastName on input JsonbPersonInput
+9| type JsonbPerson | firstName: String | Expecting field firstName on type JsonbPerson
+10| input JsonbPerson | forename: String | Expecting field forename on input JsonbPersonInput
+11| type JsonbPerson | birth: Date | Expecting field birth on type JsonbPerson
+12| input JsonbPerson | birthDay: Date | Expecting field birthDay on input JsonbPersonInput
diff --git a/tck/src/main/resources/tests/networth/cleanup.graphql b/server/tck/src/main/resources/tests/networth/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/networth/cleanup.graphql
rename to server/tck/src/main/resources/tests/networth/cleanup.graphql
diff --git a/tck/src/main/resources/tests/networth/input.graphql b/server/tck/src/main/resources/tests/networth/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/networth/input.graphql
rename to server/tck/src/main/resources/tests/networth/input.graphql
diff --git a/tck/src/main/resources/tests/networth/output.json b/server/tck/src/main/resources/tests/networth/output.json
similarity index 100%
rename from tck/src/main/resources/tests/networth/output.json
rename to server/tck/src/main/resources/tests/networth/output.json
diff --git a/tck/src/main/resources/tests/networth/test.properties b/server/tck/src/main/resources/tests/networth/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/networth/test.properties
rename to server/tck/src/main/resources/tests/networth/test.properties
diff --git a/tck/src/main/resources/tests/networthUSD/cleanup.graphql b/server/tck/src/main/resources/tests/networthUSD/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/networthUSD/cleanup.graphql
rename to server/tck/src/main/resources/tests/networthUSD/cleanup.graphql
diff --git a/tck/src/main/resources/tests/networthUSD/input.graphql b/server/tck/src/main/resources/tests/networthUSD/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/networthUSD/input.graphql
rename to server/tck/src/main/resources/tests/networthUSD/input.graphql
diff --git a/tck/src/main/resources/tests/networthUSD/output.json b/server/tck/src/main/resources/tests/networthUSD/output.json
similarity index 100%
rename from tck/src/main/resources/tests/networthUSD/output.json
rename to server/tck/src/main/resources/tests/networthUSD/output.json
diff --git a/tck/src/main/resources/tests/networthUSD/test.properties b/server/tck/src/main/resources/tests/networthUSD/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/networthUSD/test.properties
rename to server/tck/src/main/resources/tests/networthUSD/test.properties
diff --git a/tck/src/main/resources/tests/nonNullTests.csv b/server/tck/src/main/resources/tests/nonNullTests.csv
similarity index 100%
rename from tck/src/main/resources/tests/nonNullTests.csv
rename to server/tck/src/main/resources/tests/nonNullTests.csv
diff --git a/tck/src/main/resources/tests/nullField/cleanup.graphql b/server/tck/src/main/resources/tests/nullField/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/nullField/cleanup.graphql
rename to server/tck/src/main/resources/tests/nullField/cleanup.graphql
diff --git a/tck/src/main/resources/tests/nullField/input.graphql b/server/tck/src/main/resources/tests/nullField/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/nullField/input.graphql
rename to server/tck/src/main/resources/tests/nullField/input.graphql
diff --git a/tck/src/main/resources/tests/nullField/output.json b/server/tck/src/main/resources/tests/nullField/output.json
similarity index 100%
rename from tck/src/main/resources/tests/nullField/output.json
rename to server/tck/src/main/resources/tests/nullField/output.json
diff --git a/tck/src/main/resources/tests/nullField/prepare.graphql b/server/tck/src/main/resources/tests/nullField/prepare.graphql
similarity index 100%
rename from tck/src/main/resources/tests/nullField/prepare.graphql
rename to server/tck/src/main/resources/tests/nullField/prepare.graphql
diff --git a/tck/src/main/resources/tests/nullField/test.properties b/server/tck/src/main/resources/tests/nullField/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/nullField/test.properties
rename to server/tck/src/main/resources/tests/nullField/test.properties
diff --git a/server/tck/src/main/resources/tests/referencedTypeTests.csv b/server/tck/src/main/resources/tests/referencedTypeTests.csv
new file mode 100644
index 00000000..57e06e03
--- /dev/null
+++ b/server/tck/src/main/resources/tests/referencedTypeTests.csv
@@ -0,0 +1,7 @@
+# Referenced Type Tests
+1| type ReferencingType | referencedType: ReferencedType | Expecting field referencedType in type ReferencingType
+2| type ReferencingType | nonNullReferencedType: ReferencedType! | Expecting field nonNullReferencedType in type ReferencingType
+3| type ReferencedType | value: String | Expecting field value in type ReferencedType
+4| input ReferencingTypeInput | referencedType: ReferencedTypeInput | Expecting field referencedType in input ReferencingTypeInput
+5| input ReferencingTypeInput | nonNullReferencedType: ReferencedTypeInput! | Expecting field nonNullReferencedType in input ReferencingTypeInput
+6| input ReferencedTypeInput | value: String | Expecting field value in input ReferencingTypeInput
diff --git a/tck/src/main/resources/tests/removeHero/cleanup.graphql b/server/tck/src/main/resources/tests/removeHero/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/removeHero/cleanup.graphql
rename to server/tck/src/main/resources/tests/removeHero/cleanup.graphql
diff --git a/tck/src/main/resources/tests/removeHero/input.graphql b/server/tck/src/main/resources/tests/removeHero/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/removeHero/input.graphql
rename to server/tck/src/main/resources/tests/removeHero/input.graphql
diff --git a/tck/src/main/resources/tests/removeHero/output.json b/server/tck/src/main/resources/tests/removeHero/output.json
similarity index 100%
rename from tck/src/main/resources/tests/removeHero/output.json
rename to server/tck/src/main/resources/tests/removeHero/output.json
diff --git a/tck/src/main/resources/tests/removeHero/test.properties b/server/tck/src/main/resources/tests/removeHero/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/removeHero/test.properties
rename to server/tck/src/main/resources/tests/removeHero/test.properties
diff --git a/tck/src/main/resources/tests/removeHeroFromTeam/cleanup.graphql b/server/tck/src/main/resources/tests/removeHeroFromTeam/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/removeHeroFromTeam/cleanup.graphql
rename to server/tck/src/main/resources/tests/removeHeroFromTeam/cleanup.graphql
diff --git a/tck/src/main/resources/tests/removeHeroFromTeam/input.graphql b/server/tck/src/main/resources/tests/removeHeroFromTeam/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/removeHeroFromTeam/input.graphql
rename to server/tck/src/main/resources/tests/removeHeroFromTeam/input.graphql
diff --git a/tck/src/main/resources/tests/removeHeroFromTeam/output.json b/server/tck/src/main/resources/tests/removeHeroFromTeam/output.json
similarity index 100%
rename from tck/src/main/resources/tests/removeHeroFromTeam/output.json
rename to server/tck/src/main/resources/tests/removeHeroFromTeam/output.json
diff --git a/tck/src/main/resources/tests/removeHeroFromTeam/test.properties b/server/tck/src/main/resources/tests/removeHeroFromTeam/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/removeHeroFromTeam/test.properties
rename to server/tck/src/main/resources/tests/removeHeroFromTeam/test.properties
diff --git a/tck/src/main/resources/tests/schemaTests.csv b/server/tck/src/main/resources/tests/schemaTests.csv
similarity index 52%
rename from tck/src/main/resources/tests/schemaTests.csv
rename to server/tck/src/main/resources/tests/schemaTests.csv
index a698c710..b58b74f9 100644
--- a/tck/src/main/resources/tests/schemaTests.csv
+++ b/server/tck/src/main/resources/tests/schemaTests.csv
@@ -30,70 +30,87 @@
19| enum ShirtSize | HULK | Missing expected enum value, "HULK"
# testDateScalarUsedForLocalDate
-20|input SuperHeroInput| dateOfLastCheckin: Date | Missing or incorrect Scalar type in "SuperHeroInput" field "dateOfLastCheckin"
-21|type SuperHero | dateOfLastCheckin: Date | Missing or incorrect Scalar type in "SuperHero" field "dateOfLastCheckin"
+20|input SuperHeroInput| !dateOfLastCheckin: Date | Transformed Date Scalar type in "SuperHeroInput" field "dateOfLastCheckin" should not be Date
+21|type SuperHero | !dateOfLastCheckin: Date | Transformed Date Scalar type in "SuperHero" field "dateOfLastCheckin" should not be Date
+22|input SuperHeroInput| dateOfLastCheckin: String 'OR' dateOfLastCheckin: | Missing or incorrect Scalar type in "SuperHeroInput" field "dateOfLastCheckin"
+23|type SuperHero | dateOfLastCheckin: String 'OR' dateOfLastCheckin: | Missing or incorrect Scalar type in "SuperHero" field "dateOfLastCheckin"
# testTimeScalarUsedForLocalTime
-22|input SuperHeroInput| patrolStartTime: Time | Missing or incorrect Scalar type in "SuperHeroInput" field "patrolStartTime"
-23|type SuperHero | patrolStartTime: Time | Missing or incorrect Scalar type in "SuperHero" field "patrolStartTime"
+24|input SuperHeroInput| !patrolStartTime: Time | Transformed Time Scalar type in "SuperHeroInput" field "patrolStartTime" should not be Time
+25|type SuperHero | !patrolStartTime: Time | Transformed Time Scalar type in "SuperHero" field "patrolStartTime" should not be Time
+26|input SuperHeroInput| patrolStartTime: String 'OR' patrolStartTime: | Missing or incorrect Scalar type in "SuperHeroInput" field "patrolStartTime"
+27|type SuperHero | patrolStartTime: String 'OR' patrolStartTime: | Missing or incorrect Scalar type in "SuperHero" field "patrolStartTime"
# testDateTimeScalarUsedForLocalDateTime
-24|input SuperHeroInput| timeOfLastBattle: DateTime | Missing or incorrect Scalar type in "SuperHeroInput" field "timeOfLastBattle"
-25|type SuperHero | timeOfLastBattle: DateTime | Missing or incorrect Scalar type in "SuperHero" field "timeOfLastBattle"
+28|input SuperHeroInput| !timeOfLastBattle: DateTime | Transformed DateTime Scalar type in "SuperHeroInput" field "timeOfLastBattle" should not be DateTime
+29|type SuperHero | !timeOfLastBattle: DateTime | Transformed DateTime Scalar type in "SuperHero" field "timeOfLastBattle" should not be DateTime
+30|input SuperHeroInput| timeOfLastBattle: String 'OR' timeOfLastBattle: | Missing or incorrect Scalar type in "SuperHeroInput" field "timeOfLastBattle"
+31|type SuperHero | timeOfLastBattle: String 'OR' timeOfLastBattle: | Missing or incorrect Scalar type in "SuperHero" field "timeOfLastBattle"
# testSchemaContainsDescriptionForQueryMethods
-26|type Query | "List all super heroes in the database" | Missing description on Query Method
+32|type Query | "List all super heroes in the database" | Missing description on Query Method
# testSchemaContainsDescriptionForMutationMethods
-27|type Mutation | "Removes a hero... permanently..." | Missing description on Mutation Method
+33|type Mutation | "Removes a hero... permanently..." | Missing description on Mutation Method
# testSchemaContainsDescriptionForEntityTypes
-28| | "Something of use to a super hero" | Missing description on Entity type
+34| | "Something of use to a super hero" | Missing description on Entity type
# testSchemaContainsDescriptionForInputTypes
# testSchemaContainsDescriptionForArguments
-29|type Query | "Super hero name, not real name" | Missing description on Query Argument
+35|type Query | "Super hero name, not real name" | Missing description on Query Argument
# testSchemaContainsDescriptionForOutputTypeFields
-30|type SuperHero | "Super hero name/nickname" | Missing description on Output Type
-31|type SuperHero | "Location where you are most likely to find this hero" | Missing description on Output Type
+36|type SuperHero | "Super hero name/nickname" | Missing description on Output Type
+37|type SuperHero | "Location where you are most likely to find this hero" | Missing description on Output Type
# testSchemaContainsDescriptionForInputTypeFields
-32|input SuperHeroInput| "Super hero name/nickname" | Missing description on Input Type
-33|input SuperHeroInput| "Powers that make this hero super" | Missing description on Input Type
+38|input SuperHeroInput| "Super hero name/nickname" | Missing description on Input Type
+39|input SuperHeroInput| "Powers that make this hero super" | Missing description on Input Type
# testSchemaOutputTypeFieldsContainsDescriptionFromJsonbDateFormat
-34|type SuperHero | "MM/dd/yyyy" | Missing Date Format description on Output Type
-35|type SuperHero | "HH:mm" | Missing Time Format description on Output Type
-36|type SuperHero | "HH:mm:ss dd-MM-yyyy" | Missing DateTime Format description on Output Type
+40|type SuperHero | "MM/dd/yyyy" | Missing Date Format description on Output Type
+41|type SuperHero | "HH:mm" | Missing Time Format description on Output Type
+42|type SuperHero | "HH:mm:ss dd-MM-yyyy" | Missing DateTime Format description on Output Type
# testSchemaInputTypeFieldsContainsDescriptionFromJsonbDateFormat
-37|input SuperHeroInput| "MM/dd/yyyy" | Missing Date Format description on Input Type
-38|input SuperHeroInput| "HH:mm" | Missing Time Format description on Input Type
-39|input SuperHeroInput| "HH:mm:ss dd-MM-yyyy" | Missing DateTime Format description on Input Type
+43|input SuperHeroInput| "MM/dd/yyyy" | Missing Date Format description on Input Type
+44|input SuperHeroInput| "HH:mm" | Missing Time Format description on Input Type
+45|input SuperHeroInput| "HH:mm:ss dd-MM-yyyy" | Missing DateTime Format description on Input Type
# testSchemaContainsDefaultValueOnEntityField
-40|input ItemInput | supernatural: Boolean = false | Missing default value in Input boolean field
+46|input ItemInput | supernatural: Boolean = false | Missing default value in Input boolean field
# testSchemaContainsDefaultValueOnEntitySetter
-41|input ItemInput | description: String = "An unidentified item" | Missing default value in Input String field
+47|input ItemInput | description: String = "An unidentified item" | Missing default value in Input String field
# testWithArgumentNameAndDefaultValue
-42|type Query | allHeroesIn(city: String = "New York, NY"): [SuperHero] | Missing default value on argument
-43|type Query | allHeroesInTeam(team: String): [SuperHero] | Missing argument on Query
+48|type Query | allHeroesIn(city: String = "New York, NY"): [SuperHero] | Missing default value on argument
+49|type Query | allHeroesInTeam(team: String): [SuperHero] | Missing argument on Query
# testSourceFieldInType
-44|type SuperHero | currentLocation: String | Expecting a currentLocation field in SuperHero due to Source annotation
-45|type Query | currentLocation(superHero: SuperHeroInput): String | Expecting a currentLocation query in Query to Source annotation
-46|type SuperHero | secretToken(maskFirstPart: Boolean = true): TopSecretToken | Expecting a secretToken field with a boolean argument in SuperHero due to Source annotation
-47|type Query | !secretToken(maskFirstPart: Boolean = true): TopSecretToken | Not expecting a secretToken query in Query
-48|type TopSecretToken | value: String | Expecting a TopSecretToken type, with a String value field
+50|type SuperHero | currentLocation: String | Expecting a currentLocation field in SuperHero due to Source annotation
+51|type Query | currentLocation(superHero: SuperHeroInput): String | Expecting a currentLocation query in Query to Source annotation
+52|type SuperHero | secretToken(maskFirstPart: Boolean = true): TopSecretToken | Expecting a secretToken field with a boolean argument in SuperHero due to Source annotation
+53|type Query | !secretToken(maskFirstPart: Boolean = true): TopSecretToken | Not expecting a secretToken query in Query
+54|type TopSecretToken | value: String | Expecting a TopSecretToken type, with a String value field
# testGetAndSetNotGetterAndSetter
-49|type Query | getaway: String | Expecting a getaway query where the get is not removed
-50|type Mutation | settlement: String | Expecting a settlement mutation where the set is not removed
+55|type Query | getaway: String | Expecting a getaway query where the get is not removed
+56|type Mutation | settlement: String | Expecting a settlement mutation where the set is not removed
# testDescription
-51|type Query | "Testing the blacklist of Checked Exceptions" | Expecting a description for the exportToFile query
-52|type Query | "Super hero name, not real name" | Expecting a description for the name parameter on the exportToFile query
\ No newline at end of file
+57|type Query | "Testing the hideErrorMessage list of Checked Exceptions" | Expecting a description for the exportToFile query
+58|type Query | "Super hero name, not real name" | Expecting a description for the name parameter on the exportToFile query
+
+# testJsonDefault
+59|type Mutation | provisionHero(hero: String, item: ItemInput = { | Expecting a default value for item for provisionHero
+60|type Mutation | id : 1000 | Expecting an id in the default value for item for provisionHero
+61|type Mutation | name : "Cape" | Expecting a name in the default value for item for provisionHero
+62|type Mutation | powerLevel : 3 | Expecting a powerLevel in the default value for item for provisionHero
+63|type Mutation | height : 1.2 | Expecting a height in the default value for item for provisionHero
+64|type Mutation | weight : 0.3 | Expecting a weight in the default value for item for provisionHero
+65|type Mutation | supernatural : false | Expecting a supernatural in the default value for item for provisionHero
+66|type Mutation | dateCreated : "19 February 1900 at 12:00 in Africa/Johannesburg" | Expecting a dateCreated in the default value for item for provisionHero
+67|type Mutation | dateLastUsed : "29 Jan 2020 at 09:45 in zone +0200" | Expecting a dateLastUsed in the default value for item for provisionHero
diff --git a/tck/src/main/resources/tests/setIdNumber/cleanup.graphql b/server/tck/src/main/resources/tests/setIdNumber/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/setIdNumber/cleanup.graphql
rename to server/tck/src/main/resources/tests/setIdNumber/cleanup.graphql
diff --git a/tck/src/main/resources/tests/setIdNumber/input.graphql b/server/tck/src/main/resources/tests/setIdNumber/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/setIdNumber/input.graphql
rename to server/tck/src/main/resources/tests/setIdNumber/input.graphql
diff --git a/tck/src/main/resources/tests/setIdNumber/output.json b/server/tck/src/main/resources/tests/setIdNumber/output.json
similarity index 100%
rename from tck/src/main/resources/tests/setIdNumber/output.json
rename to server/tck/src/main/resources/tests/setIdNumber/output.json
diff --git a/tck/src/main/resources/tests/setIdNumber/test.properties b/server/tck/src/main/resources/tests/setIdNumber/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/setIdNumber/test.properties
rename to server/tck/src/main/resources/tests/setIdNumber/test.properties
diff --git a/tck/src/main/resources/tests/setIdNumberWithFormat/cleanup.graphql b/server/tck/src/main/resources/tests/setIdNumberWithFormat/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/setIdNumberWithFormat/cleanup.graphql
rename to server/tck/src/main/resources/tests/setIdNumberWithFormat/cleanup.graphql
diff --git a/tck/src/main/resources/tests/setIdNumberWithFormat/input.graphql b/server/tck/src/main/resources/tests/setIdNumberWithFormat/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/setIdNumberWithFormat/input.graphql
rename to server/tck/src/main/resources/tests/setIdNumberWithFormat/input.graphql
diff --git a/tck/src/main/resources/tests/setIdNumberWithFormat/output.json b/server/tck/src/main/resources/tests/setIdNumberWithFormat/output.json
similarity index 100%
rename from tck/src/main/resources/tests/setIdNumberWithFormat/output.json
rename to server/tck/src/main/resources/tests/setIdNumberWithFormat/output.json
diff --git a/tck/src/main/resources/tests/setIdNumberWithFormat/test.properties b/server/tck/src/main/resources/tests/setIdNumberWithFormat/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/setIdNumberWithFormat/test.properties
rename to server/tck/src/main/resources/tests/setIdNumberWithFormat/test.properties
diff --git a/tck/src/main/resources/tests/setRivalTeam/cleanup.graphql b/server/tck/src/main/resources/tests/setRivalTeam/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/setRivalTeam/cleanup.graphql
rename to server/tck/src/main/resources/tests/setRivalTeam/cleanup.graphql
diff --git a/tck/src/main/resources/tests/setRivalTeam/input.graphql b/server/tck/src/main/resources/tests/setRivalTeam/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/setRivalTeam/input.graphql
rename to server/tck/src/main/resources/tests/setRivalTeam/input.graphql
diff --git a/tck/src/main/resources/tests/setRivalTeam/output.json b/server/tck/src/main/resources/tests/setRivalTeam/output.json
similarity index 100%
rename from tck/src/main/resources/tests/setRivalTeam/output.json
rename to server/tck/src/main/resources/tests/setRivalTeam/output.json
diff --git a/tck/src/main/resources/tests/setRivalTeam/test.properties b/server/tck/src/main/resources/tests/setRivalTeam/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/setRivalTeam/test.properties
rename to server/tck/src/main/resources/tests/setRivalTeam/test.properties
diff --git a/server/tck/src/main/resources/tests/sourceSchemaTests.csv b/server/tck/src/main/resources/tests/sourceSchemaTests.csv
new file mode 100644
index 00000000..a7385b61
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceSchemaTests.csv
@@ -0,0 +1,10 @@
+# SourceTypes
+1| type Query | source: SourceType | Expecting field source in Query
+2| type SourceType | stringInput(input: String): String | Expecting field stringInput with parameter input in SourceType
+3| type SourceType | nonNullStringInput(input: String!): String | Expecting field nonNullStringInput with non-null parameter input in SourceType
+4| type SourceType | defaultStringInput(input: String = "Default value"): String | Expecting field defaultStringInput with parameter input in SourceType
+5| type SourceType | ´dateInput(
+ "yyyy-MM-dd"
+ input: String
+ ): String´ | Expecting field dateInput with parameter input in SourceType
+6| type SourceType | namedStringInput(in: String): String | Expecting field defaultStringInput with parameter `in` in SourceType
diff --git a/server/tck/src/main/resources/tests/sourceWithDateInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithDateInput/input.graphql
new file mode 100644
index 00000000..4e485b7b
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithDateInput/input.graphql
@@ -0,0 +1,5 @@
+query testSourceWithDateInput {
+ source {
+ dateInput(input: "2011-12-03")
+ }
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithDateInput/output.json b/server/tck/src/main/resources/tests/sourceWithDateInput/output.json
new file mode 100644
index 00000000..85fbd641
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithDateInput/output.json
@@ -0,0 +1,7 @@
+{
+ "data": {
+ "source": {
+ "dateInput": "Input was: 2011-12-03"
+ }
+ }
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/input.graphql
new file mode 100644
index 00000000..6c49f12b
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/input.graphql
@@ -0,0 +1,5 @@
+query testSourceWithDefaultStringInput {
+ source {
+ defaultStringInput
+ }
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/output.json b/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/output.json
new file mode 100644
index 00000000..e8e6bb2f
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/output.json
@@ -0,0 +1,7 @@
+{
+ "data": {
+ "source": {
+ "defaultStringInput": "Input was: Default value"
+ }
+ }
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithNullDateInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithNullDateInput/input.graphql
new file mode 100644
index 00000000..c734c490
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithNullDateInput/input.graphql
@@ -0,0 +1,5 @@
+query testSourceWithNullDateInput {
+ source {
+ dateInput
+ }
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithNullDateInput/output.json b/server/tck/src/main/resources/tests/sourceWithNullDateInput/output.json
new file mode 100644
index 00000000..8a3cd095
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithNullDateInput/output.json
@@ -0,0 +1,7 @@
+{
+ "data": {
+ "source": {
+ "dateInput": "Input was: null"
+ }
+ }
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/input.graphql
new file mode 100644
index 00000000..7b0c97b2
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/input.graphql
@@ -0,0 +1,5 @@
+query testSourceWithNullOnNonNullStringInput {
+ source {
+ nonNullStringInput
+ }
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json b/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json
new file mode 100644
index 00000000..7a47c1ea
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json
@@ -0,0 +1,23 @@
+{
+ "data": null,
+ "errors": [
+ {
+ "message": "Validation error of type MissingFieldArgument: Missing field argument input @ 'source/nonNullStringInput'",
+ "locations": [
+ {
+ "line": 3,
+ "column": 3
+ }
+ ],
+ "extensions": {
+ "description": "Missing field argument input",
+ "validationErrorType": "MissingFieldArgument",
+ "queryPath": [
+ "source",
+ "nonNullStringInput"
+ ],
+ "classification": "ValidationError"
+ }
+ }
+ ]
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithNullStringInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithNullStringInput/input.graphql
new file mode 100644
index 00000000..b5129944
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithNullStringInput/input.graphql
@@ -0,0 +1,5 @@
+query testSourceWithNullStringInput {
+ source {
+ stringInput
+ }
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithNullStringInput/output.json b/server/tck/src/main/resources/tests/sourceWithNullStringInput/output.json
new file mode 100644
index 00000000..f67e094e
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithNullStringInput/output.json
@@ -0,0 +1,7 @@
+{
+ "data": {
+ "source": {
+ "stringInput": "Input was: null"
+ }
+ }
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithStringInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithStringInput/input.graphql
new file mode 100644
index 00000000..a1d209f3
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithStringInput/input.graphql
@@ -0,0 +1,5 @@
+query testSourceWithStringInput {
+ source {
+ stringInput(input: "Hello World!")
+ }
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithStringInput/output.json b/server/tck/src/main/resources/tests/sourceWithStringInput/output.json
new file mode 100644
index 00000000..0f9f0eaa
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithStringInput/output.json
@@ -0,0 +1,7 @@
+{
+ "data": {
+ "source": {
+ "stringInput": "Input was: Hello World!"
+ }
+ }
+}
diff --git a/tck/src/main/resources/tests/startPatrolling/cleanup.graphql b/server/tck/src/main/resources/tests/startPatrolling/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/startPatrolling/cleanup.graphql
rename to server/tck/src/main/resources/tests/startPatrolling/cleanup.graphql
diff --git a/tck/src/main/resources/tests/startPatrolling/input.graphql b/server/tck/src/main/resources/tests/startPatrolling/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/startPatrolling/input.graphql
rename to server/tck/src/main/resources/tests/startPatrolling/input.graphql
diff --git a/tck/src/main/resources/tests/startPatrolling/output.json b/server/tck/src/main/resources/tests/startPatrolling/output.json
similarity index 100%
rename from tck/src/main/resources/tests/startPatrolling/output.json
rename to server/tck/src/main/resources/tests/startPatrolling/output.json
diff --git a/tck/src/main/resources/tests/startPatrolling/test.properties b/server/tck/src/main/resources/tests/startPatrolling/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/startPatrolling/test.properties
rename to server/tck/src/main/resources/tests/startPatrolling/test.properties
diff --git a/tck/src/main/resources/tests/startPatrollingWithFormat/cleanup.graphql b/server/tck/src/main/resources/tests/startPatrollingWithFormat/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/startPatrollingWithFormat/cleanup.graphql
rename to server/tck/src/main/resources/tests/startPatrollingWithFormat/cleanup.graphql
diff --git a/tck/src/main/resources/tests/startPatrollingWithFormat/input.graphql b/server/tck/src/main/resources/tests/startPatrollingWithFormat/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/startPatrollingWithFormat/input.graphql
rename to server/tck/src/main/resources/tests/startPatrollingWithFormat/input.graphql
diff --git a/tck/src/main/resources/tests/startPatrollingWithFormat/output.json b/server/tck/src/main/resources/tests/startPatrollingWithFormat/output.json
similarity index 100%
rename from tck/src/main/resources/tests/startPatrollingWithFormat/output.json
rename to server/tck/src/main/resources/tests/startPatrollingWithFormat/output.json
diff --git a/tck/src/main/resources/tests/startPatrollingWithFormat/test.properties b/server/tck/src/main/resources/tests/startPatrollingWithFormat/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/startPatrollingWithFormat/test.properties
rename to server/tck/src/main/resources/tests/startPatrollingWithFormat/test.properties
diff --git a/server/tck/src/main/resources/tests/subtypeTests.csv b/server/tck/src/main/resources/tests/subtypeTests.csv
new file mode 100644
index 00000000..7446ec61
--- /dev/null
+++ b/server/tck/src/main/resources/tests/subtypeTests.csv
@@ -0,0 +1,11 @@
+# SubTypes
+1| type SubType | subTypeField: String | Expecting fields from type in OutputType
+2| type SubType | parentTypeField: String | Expecting fields from parent in OutputType
+3| type SubType | grandParentTypeField: String | Expecting fields from grand-parent in OutputType
+4| input SubTypeInput | subTypeField: String | Expecting fields from type in InputType
+5| input SubTypeInput | parentTypeField: String | Expecting fields from parent in InputType
+6| input SubTypeInput | grandParentTypeField: String | Expecting fields from grand-parent in InputType
+7| type SubType | "Field from parent" | Missing description on field from parent
+8| type SubType | "Field from grand-parent" | Missing description on field from grand-parent
+9| type SubType | nonNullParentField: String! | Expecting non-null field from parent in OutputType
+10| input SubTypeInput | nonNullParentField: String! | Expecting non-null field from parent in InputType
diff --git a/tck/src/main/resources/tests/track/cleanup.graphql b/server/tck/src/main/resources/tests/track/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/track/cleanup.graphql
rename to server/tck/src/main/resources/tests/track/cleanup.graphql
diff --git a/tck/src/main/resources/tests/track/input.graphql b/server/tck/src/main/resources/tests/track/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/track/input.graphql
rename to server/tck/src/main/resources/tests/track/input.graphql
diff --git a/tck/src/main/resources/tests/track/output.json b/server/tck/src/main/resources/tests/track/output.json
similarity index 100%
rename from tck/src/main/resources/tests/track/output.json
rename to server/tck/src/main/resources/tests/track/output.json
diff --git a/tck/src/main/resources/tests/track/test.properties b/server/tck/src/main/resources/tests/track/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/track/test.properties
rename to server/tck/src/main/resources/tests/track/test.properties
diff --git a/tck/src/main/resources/tests/trackLongLat/cleanup.graphql b/server/tck/src/main/resources/tests/trackLongLat/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/trackLongLat/cleanup.graphql
rename to server/tck/src/main/resources/tests/trackLongLat/cleanup.graphql
diff --git a/tck/src/main/resources/tests/trackLongLat/input.graphql b/server/tck/src/main/resources/tests/trackLongLat/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/trackLongLat/input.graphql
rename to server/tck/src/main/resources/tests/trackLongLat/input.graphql
diff --git a/tck/src/main/resources/tests/trackLongLat/output.json b/server/tck/src/main/resources/tests/trackLongLat/output.json
similarity index 100%
rename from tck/src/main/resources/tests/trackLongLat/output.json
rename to server/tck/src/main/resources/tests/trackLongLat/output.json
diff --git a/tck/src/main/resources/tests/trackLongLat/test.properties b/server/tck/src/main/resources/tests/trackLongLat/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/trackLongLat/test.properties
rename to server/tck/src/main/resources/tests/trackLongLat/test.properties
diff --git a/tck/src/main/resources/tests/updateItemPowerLevel/cleanup.graphql b/server/tck/src/main/resources/tests/updateItemPowerLevel/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/updateItemPowerLevel/cleanup.graphql
rename to server/tck/src/main/resources/tests/updateItemPowerLevel/cleanup.graphql
diff --git a/tck/src/main/resources/tests/updateItemPowerLevel/input.graphql b/server/tck/src/main/resources/tests/updateItemPowerLevel/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/updateItemPowerLevel/input.graphql
rename to server/tck/src/main/resources/tests/updateItemPowerLevel/input.graphql
diff --git a/tck/src/main/resources/tests/updateItemPowerLevel/output.json b/server/tck/src/main/resources/tests/updateItemPowerLevel/output.json
similarity index 100%
rename from tck/src/main/resources/tests/updateItemPowerLevel/output.json
rename to server/tck/src/main/resources/tests/updateItemPowerLevel/output.json
diff --git a/tck/src/main/resources/tests/updateItemPowerLevel/test.properties b/server/tck/src/main/resources/tests/updateItemPowerLevel/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/updateItemPowerLevel/test.properties
rename to server/tck/src/main/resources/tests/updateItemPowerLevel/test.properties
diff --git a/tck/src/main/resources/tests/updateItemPowerLevelPercentage/cleanup.graphql b/server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/cleanup.graphql
similarity index 100%
rename from tck/src/main/resources/tests/updateItemPowerLevelPercentage/cleanup.graphql
rename to server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/cleanup.graphql
diff --git a/tck/src/main/resources/tests/updateItemPowerLevelPercentage/input.graphql b/server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/input.graphql
similarity index 100%
rename from tck/src/main/resources/tests/updateItemPowerLevelPercentage/input.graphql
rename to server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/input.graphql
diff --git a/tck/src/main/resources/tests/updateItemPowerLevelPercentage/output.json b/server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/output.json
similarity index 100%
rename from tck/src/main/resources/tests/updateItemPowerLevelPercentage/output.json
rename to server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/output.json
diff --git a/tck/src/main/resources/tests/updateItemPowerLevelPercentage/test.properties b/server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/test.properties
similarity index 100%
rename from tck/src/main/resources/tests/updateItemPowerLevelPercentage/test.properties
rename to server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/test.properties
diff --git a/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/cleanup.graphql b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/cleanup.graphql
new file mode 100644
index 00000000..14b22d82
--- /dev/null
+++ b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/cleanup.graphql
@@ -0,0 +1,5 @@
+mutation removeHero {
+ removeHero(hero: "Black Panther") {
+ name
+ }
+}
diff --git a/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/input.graphql b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/input.graphql
new file mode 100644
index 00000000..afc01baa
--- /dev/null
+++ b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/input.graphql
@@ -0,0 +1,18 @@
+mutation createNewHero {
+ createNewHero(hero:{
+ name: "Black Panther"
+ realName: "T'Challa"
+ superPowers: ["Top intellect"]
+ primaryLocation: "Wakanda, Africa"
+ teamAffiliations: [{name: "Avengers"}]
+ idNumber: "ID-98701234",
+ dateOfBirth: "An unparseable date"
+ }) {
+ name
+ primaryLocation
+ superPowers
+ realName
+ idNumber
+ birthday
+ }
+}
diff --git a/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/output.json b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/output.json
new file mode 100644
index 00000000..dbf15830
--- /dev/null
+++ b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/output.json
@@ -0,0 +1,24 @@
+{
+ "errors": [
+ {
+ "message": "Validation error of type WrongType: argument 'dateOfBirth' with value 'StringValue{value='An unparseable date'}' is not a valid 'Date' @ 'createNewHero'",
+ "locations": [
+ {
+ "line": 2,
+ "column": 5
+ }
+ ],
+ "extensions": {
+ "description": "argument 'dateOfBirth' with value 'StringValue{value='An unparseable date'}' is not a valid 'Date'",
+ "validationErrorType": "WrongType",
+ "queryPath": [
+ "createNewHero"
+ ],
+ "classification": "ValidationError"
+ }
+ }
+ ],
+ "data": {
+ "createNewHero": null
+ }
+}
diff --git a/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/test.properties b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/test.properties
new file mode 100644
index 00000000..b25bcef6
--- /dev/null
+++ b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/test.properties
@@ -0,0 +1,2 @@
+ignore=false
+priority=200
\ No newline at end of file
diff --git a/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java b/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java
new file mode 100644
index 00000000..8cd3e145
--- /dev/null
+++ b/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.dynamic.schema;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.List;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class CsvParserTest {
+
+ @Test
+ public void shouldHandleDoubleEscape() throws IOException {
+ String content = "1| union X | ´´ | Should Handle DoubleEscape\n";
+
+ final List testDate = CsvParser.parse("shouldHandleDoubleEscape", new StringReader(content));
+
+ Assert.assertEquals(testDate.size(), 1);
+ Assert.assertEquals(testDate.get(0).getContainsString().get(0), "´");
+
+ }
+ @Test
+ public void shouldHandleTripleEscape() throws IOException {
+ String content = "1| union X | ´Test ´´´ | Should Handle TripleEscape\n";
+
+ final List testDate = CsvParser.parse("shouldHandleTripleEscape", new StringReader(content));
+
+ Assert.assertEquals(testDate.size(), 1);
+ Assert.assertEquals(testDate.get(0).getContainsString().get(0), "Test ´");
+
+ }
+
+ @Test
+ public void shouldHandleEscaping() throws IOException {
+ String content = "1| union X | ´Y | Z´ | Should Handle Escaping\n";
+
+ final List testDate = CsvParser.parse("shouldHandleEscaping", new StringReader(content));
+
+ Assert.assertEquals(testDate.size(), 1);
+ Assert.assertEquals(testDate.get(0).getContainsString().get(0), "Y | Z");
+ Assert.assertEquals(testDate.get(0).getErrorMessage(), "(1) - Should Handle Escaping");
+ }
+
+ @Test
+ public void shouldHandleOr() throws IOException {
+ String content = "49| type Mutation | "
+ + "scalarHolder(arg0: ScalarHolderInput): ScalarHolder 'OR' scalarHolder(scalarHolder: ScalarHolderInput): ScalarHolder "
+ + "| Expecting a Mutation with the set removed from the name, scalarHolder.\n";
+
+ final List testDate = CsvParser.parse("shouldHandleEscaping", new StringReader(content));
+
+ Assert.assertEquals(testDate.size(), 1);
+ Assert.assertEquals(testDate.get(0).getContainsString().size(), 2);
+ Assert.assertEquals(testDate.get(0).getContainsString().get(0), "scalarHolder(arg0: ScalarHolderInput): ScalarHolder");
+ Assert.assertEquals(testDate.get(0).getContainsString().get(1), "scalarHolder(scalarHolder: ScalarHolderInput): ScalarHolder");
+ }
+
+ @Test
+ public void shouldHandleMultilineEscaping() throws IOException {
+ String content = "5| type SourceType | ´dateInput(\n"
+ + " \"yyyy-MM-dd\"\n"
+ + " input: Date\n"
+ + " ): String´ | Expecting field dateInput with parameter input in SourceType\n";
+
+ final List testDate = CsvParser.parse("shouldHandleEscaping", new StringReader(content));
+
+ Assert.assertEquals(testDate.size(), 1);
+ Assert.assertEquals(testDate.get(0).getContainsString().get(0), "dateInput(\n"
+ + " \"yyyy-MM-dd\"\n"
+ + " input: Date\n"
+ + " ): String");
+ }
+
+ @Test
+ public void shouldIgnoreCommentsInLine() throws IOException {
+ String content = "59| type ScalarHolder | \"#0.0 en-GB\" | Missing Number Format description on Output Type\n";
+
+ final List testDate = CsvParser.parse("shouldIgnoreCommentsInLine", new StringReader(content));
+
+ Assert.assertEquals(testDate.size(), 1);
+ Assert.assertEquals(testDate.get(0).getContainsString().get(0), "\"#0.0 en-GB\"");
+ }
+
+ @Test
+ public void shouldHandleComments() throws IOException {
+ String content = "# Basic Scalar Types\n"
+ + "1| type ScalarHolder | bigDecimalObject: BigDecimal | Expecting a BigDecimal Scalar Type in type ScalarHolder\n";
+
+ final List testDate = CsvParser.parse("shouldHandleComments", new StringReader(content));
+
+ Assert.assertEquals(testDate.size(), 1);
+ Assert.assertEquals(testDate.get(0).getHeader(), "Basic Scalar Types");
+ Assert.assertEquals(testDate.get(0).getCount(), 1);
+ }
+}
diff --git a/tck/src/main/resources/META-INF/beans.xml b/tck/src/main/resources/META-INF/beans.xml
deleted file mode 100644
index ce21305d..00000000
--- a/tck/src/main/resources/META-INF/beans.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
diff --git a/tck/src/main/resources/tests/getHero/input.graphql b/tck/src/main/resources/tests/getHero/input.graphql
deleted file mode 100644
index 1089f711..00000000
--- a/tck/src/main/resources/tests/getHero/input.graphql
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- superHero(name:"Iron Man") {
-
- name
- primaryLocation
- realName
- superPowers
- teamAffiliations {
- name
- members{
- name
- }
- }
- }
-}