diff --git a/samples/README.md b/samples/README.md new file mode 100644 index 00000000..5647e427 --- /dev/null +++ b/samples/README.md @@ -0,0 +1,11 @@ +This directory contains samples that we run to test different scenarios and features. + +All samples use the Boot starter and expose a GraphiQL page where you can run queries. Simply start the `main` application class and go to http://localhost:8080/graphiql. + +To run from the command line, use: +```shell script +$ ./gradlew :samples:{sample-directory-name}:bootRun +``` + +Samples have integration tests you can run with a debugger. + diff --git a/samples/webflux-security/README.md b/samples/webflux-security/README.md new file mode 100644 index 00000000..e05c5cbe --- /dev/null +++ b/samples/webflux-security/README.md @@ -0,0 +1,8 @@ +Sample with Spring Security in a WebFlux application. + +Main features: + + - Spring Security [config](src/main/java/io/spring/sample/graphql/SecurityConfig.java) secures GraphQL HTTP endpoint. + - Fine-grained, method-level security on [SalaryService](src/main/java/io/spring/sample/graphql/SalaryService.java). + - `AuthenticationException` and `AccessDeniedException` [resolved](src/main/java/io/spring/sample/graphql/SecurityDataFetcherExceptionResolver.java) to GraphQL errors. + - [Tests](src/test/java/io/spring/sample/graphql/SampleApplicationTests.java) with `WebGraphQlTester` and WebFlux without a server. \ No newline at end of file diff --git a/samples/webflux-websocket/README.md b/samples/webflux-websocket/README.md new file mode 100644 index 00000000..db07dd5f --- /dev/null +++ b/samples/webflux-websocket/README.md @@ -0,0 +1,7 @@ +Sample with GraphQL over WebSocket in a WebFlux application. + +Main features: + + - Reactive [DataFetcher's](src/main/java/io/spring/sample/graphql/SampleWiring.java), including subscription stream. + - [WebFilter](src/main/java/io/spring/sample/graphql/ContextWebFilter.java) that inserts Reactor `Context` that is then accessed in the [DataRepository](src/main/java/io/spring/sample/graphql/DataRepository.java). + - [Tests](src/test/java/io/spring/sample/graphql/SubscriptionTests.java) for subscription streams. \ No newline at end of file diff --git a/samples/webmvc-http-security/README.md b/samples/webmvc-http-security/README.md new file mode 100644 index 00000000..0b57f437 --- /dev/null +++ b/samples/webmvc-http-security/README.md @@ -0,0 +1,8 @@ +Sample with Spring Security in a Spring MVC application. + +Main features: + + - Spring Security [config](src/main/java/io/spring/sample/graphql/SecurityConfig.java) secures GraphQL HTTP endpoint. + - Fine-grained, method-level security on [SalaryService](src/main/java/io/spring/sample/graphql/SalaryService.java). + - `AuthenticationException` and `AccessDeniedException` [resolved](src/test/java/io/spring/sample/graphql/SampleApplicationTests.java) to GraphQL errors. + - [Tests](src/test/java/io/spring/sample/graphql/SampleApplicationTests.java) with `WebGraphQlTester` and WebFlux without a server. \ No newline at end of file diff --git a/samples/webmvc-http/README.md b/samples/webmvc-http/README.md new file mode 100644 index 00000000..69b3a608 --- /dev/null +++ b/samples/webmvc-http/README.md @@ -0,0 +1,9 @@ +Sample with a GraphQL HTTP endpoint in Spring MVC. + +Main features: + + - Spring HATEOAS [DataFetcher's](src/main/java/io/spring/sample/graphql/project/ProjectDataWiring.java) that call spring.io REST API. + - Querydsl [DataFetcher's](src/main/java/io/spring/sample/graphql/repository/ArtifactRepositoryDataWiring.java) making JPA queries. + - Use of [ThreadLocalAccessor](src/main/java/io/spring/sample/graphql/greeting/RequestAttributesAccessor.java) to propagate context to data fetchers. + - Schema printing enabled at "/graphql/schema". + - [Tests](src/test/java/io/spring/sample/graphql/project/MockMvcGraphQlTests.java) with `GraphQlTester` and MockMvc. \ No newline at end of file