Skip to content

Commit

Permalink
Adding cucumber tests for GraphQL API creation
Browse files Browse the repository at this point in the history
  • Loading branch information
O-sura committed Mar 20, 2024
1 parent 52a981d commit 975e444
Show file tree
Hide file tree
Showing 11 changed files with 1,458 additions and 62 deletions.
258 changes: 258 additions & 0 deletions test/apim-apk-agent-test/cucumber-tests/CRs/artifacts.yaml
Original file line number Diff line number Diff line change
@@ -1,2 +1,260 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: graphql-faker-schema
namespace: apk
data:
schema.graphql: |
schema {
query: Query
mutation: Mutation
subscription: Subscription
}
# The query type, represents all of the entry points into our object graph
type Query {
hero(episode: Episode): Character
reviews(episode: Episode!): [Review]
search(text: String): [SearchResult]
character(id: ID!): Character
droid(id: ID!): Droid
human(id: ID!): Human
allHumans(first: Int): [Human]
allDroids(first: Int): [Droid]
allCharacters(first: Int): [Character]
starship(id: ID!): Starship
}
# The mutation type, represents all updates we can make to our data
type Mutation {
createReview(episode: Episode, review: ReviewInput!): Review
}
# The subscription type, represents all subscriptions we can make to our data
type Subscription {
reviewAdded(episode: Episode): Review
}
# The episodes in the Star Wars trilogy
enum Episode {
# Star Wars Episode IV: A New Hope, released in 1977.
NEWHOPE
# Star Wars Episode V: The Empire Strikes Back, released in 1980.
EMPIRE
# Star Wars Episode VI: Return of the Jedi, released in 1983.
JEDI
# Star Wars Episode III: Revenge of the Sith, released in 2005
SITH
}
# A character from the Star Wars universe
interface Character {
# The ID of the character
id: ID!
# The name of the character
name: String!
# The friends of the character, or an empty list if they have none
friends: [Character]
# The friends of the character exposed as a connection with edges
friendsConnection(first: Int, after: ID): FriendsConnection!
# The movies this character appears in
appearsIn: [Episode]!
}
# Units of height
enum LengthUnit {
# The standard unit around the world
METER
# Primarily used in the United States
FOOT
}
# A humanoid creature from the Star Wars universe
type Human implements Character {
# The ID of the human
id: ID!
# What this human calls themselves
name: String!
# The home planet of the human, or null if unknown
homePlanet: String
# Height in the preferred unit, default is meters
height(unit: LengthUnit = METER): Float
# Mass in kilograms, or null if unknown
mass: Float
# This human's friends, or an empty list if they have none
friends: [Character]
# The friends of the human exposed as a connection with edges
friendsConnection(first: Int, after: ID): FriendsConnection!
# The movies this human appears in
appearsIn: [Episode]!
# A list of starships this person has piloted, or an empty list if none
starships: [Starship]
}
# An autonomous mechanical character in the Star Wars universe
type Droid implements Character {
# The ID of the droid
id: ID!
# What others call this droid
name: String!
# This droid's friends, or an empty list if they have none
friends: [Character]
# The friends of the droid exposed as a connection with edges
friendsConnection(first: Int, after: ID): FriendsConnection!
# The movies this droid appears in
appearsIn: [Episode]!
# This droid's primary function
primaryFunction: String
}
# A connection object for a character's friends
type FriendsConnection {
# The total number of friends
totalCount: Int
# The edges for each of the character's friends.
edges: [FriendsEdge]
# A list of the friends, as a convenience when edges are not needed.
friends: [Character]
# Information for paginating this connection
pageInfo: PageInfo!
}
# An edge object for a character's friends
type FriendsEdge {
# A cursor used for pagination
cursor: ID!
# The character represented by this friendship edge
node: Character
}
# Information for paginating this connection
type PageInfo {
startCursor: ID
endCursor: ID
hasNextPage: Boolean!
}
# Represents a review for a movie
type Review {
# The movie
episode: Episode
# The number of stars this review gave, 1-5
stars: Int!
# Comment about the movie
commentary: String
}
# The input object sent when someone is creating a new review
input ReviewInput {
# 0-5 stars
stars: Int!
# Comment about the movie, optional
commentary: String
# Favorite color, optional
favorite_color: ColorInput
}
# The input object sent when passing in a color
input ColorInput {
red: Int!
green: Int!
blue: Int!
}
type Starship {
# The ID of the starship
id: ID!
# The name of the starship
name: String!
# Length of the starship, along the longest axis
length(unit: LengthUnit = METER): Float
coordinates: [[Float!]!]
}
union SearchResult = Human | Droid | Starship
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: graphql-faker
namespace: apk
labels:
app: graphql-faker
spec:
replicas: 1
selector:
matchLabels:
app: graphql-faker
template:
metadata:
labels:
app: graphql-faker
spec:
containers:
- name: graphql-faker
image: apisguru/graphql-faker
args: ["--open=false", "/etc/graphql-faker/schema.graphql"]
ports:
- containerPort: 9002
volumeMounts:
- name: schema-volume
mountPath: /etc/graphql-faker
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
volumes:
- name: schema-volume
configMap:
name: graphql-faker-schema
---
apiVersion: v1
kind: Service
metadata:
name: graphql-faker-service
namespace: apk
spec:
type: LoadBalancer
ports:
- port: 9002
targetPort: 9002
protocol: TCP
selector:
app: graphql-faker
Loading

0 comments on commit 975e444

Please sign in to comment.