Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding cucumber tests for GraphQL API creation #2146

Merged
merged 1 commit into from
Mar 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading