Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
from django.contrib.gis import geos
import graphene
import graphql_geojson
from . import models, types
from .testcases import SchemaTestCase
class CreatePlace(graphene.Mutation):
place = graphene.Field(types.PlaceType)
class Arguments:
name = graphene.String(required=True)
location = graphql_geojson.Geometry(required=True)
@classmethod
def mutate(cls, root, info, **args):
place = models.Place.objects.create(**args)
return cls(place=place)
class MutationsTests(SchemaTestCase):
query = '''
mutation CreatePlace($name: String!, $location: Geometry!) {
createPlace(name: $name, location: $location) {
place {
id
type
geometry {
is_ok = graphene.Boolean()
@staticmethod
def publish(payload, info):
"""Send the subscription notification."""
del payload, info
return OnTrigger(is_ok=True)
class Subscription(graphene.ObjectType):
"""Root subscription."""
on_trigger = OnTrigger.Field()
class Mutation(graphene.ObjectType):
"""Root mutation."""
trigger = Trigger.Field()
def test_webhook_delete_by_service_account_wrong_webhook(
service_account_api_client, webhook
):
query = WEBHOOK_DELETE_BY_SERVICE_ACCOUNT
webhook_id = graphene.Node.to_global_id("Webhook", webhook.pk)
variables = {"id": webhook_id}
webhook.delete()
response = service_account_api_client.post_graphql(query, variables=variables)
content = get_graphql_content(response)
errors = content["data"]["webhookDelete"]["webhookErrors"]
assert errors[0]["code"] == "GRAPHQL_ERROR"
def test_delete_collections(
staff_api_client, collection_list, permission_manage_products
):
query = """
mutation collectionBulkDelete($ids: [ID]!) {
collectionBulkDelete(ids: $ids) {
count
}
}
"""
variables = {
"ids": [
graphene.Node.to_global_id("Collection", collection.id)
for collection in collection_list
]
}
response = staff_api_client.post_graphql(
query, variables, permissions=[permission_manage_products]
)
content = get_graphql_content(response)
assert content["data"]["collectionBulkDelete"]["count"] == 3
assert not Collection.objects.filter(
id__in=[collection.id for collection in collection_list]
).exists()
def test_draft_order_lines_create(
draft_order, permission_manage_orders, staff_api_client
):
query = DRAFT_ORDER_LINES_CREATE_MUTATION
order = draft_order
line = order.lines.first()
variant = line.variant
old_quantity = line.quantity
quantity = 1
order_id = graphene.Node.to_global_id("Order", order.id)
variant_id = graphene.Node.to_global_id("ProductVariant", variant.id)
variables = {"orderId": order_id, "variantId": variant_id, "quantity": quantity}
# mutation should fail without proper permissions
response = staff_api_client.post_graphql(query, variables)
assert_no_permission(response)
# assign permissions
staff_api_client.user.user_permissions.add(permission_manage_orders)
response = staff_api_client.post_graphql(query, variables)
content = get_graphql_content(response)
data = content["data"]["draftOrderLinesCreate"]
assert data["orderLines"][0]["productSku"] == variant.sku
assert data["orderLines"][0]["quantity"] == old_quantity + quantity
# mutation should fail when quantity is lower than 1
variables = {"orderId": order_id, "variantId": variant_id, "quantity": 0}
def test_payment_capture_with_invalid_argument(
staff_api_client, permission_manage_orders, payment_txn_preauth
):
payment = payment_txn_preauth
assert payment.charge_status == ChargeStatus.NOT_CHARGED
payment_id = graphene.Node.to_global_id("Payment", payment.pk)
variables = {"paymentId": payment_id, "amount": 0}
response = staff_api_client.post_graphql(
CAPTURE_QUERY, variables, permissions=[permission_manage_orders]
)
content = get_graphql_content(response)
data = content["data"]["paymentCapture"]
assert len(data["errors"]) == 1
assert data["errors"][0]["message"] == "Amount should be a positive number."
def test_checkout_remove_one_of_gift_cards(
api_client, checkout_with_gift_card, gift_card_created_by_staff
):
checkout_with_gift_card.gift_cards.add(gift_card_created_by_staff)
checkout_with_gift_card.save()
gift_card_first = checkout_with_gift_card.gift_cards.first()
gift_card_last = checkout_with_gift_card.gift_cards.last()
checkout_id = graphene.Node.to_global_id("Checkout", checkout_with_gift_card.pk)
variables = {"checkoutId": checkout_id, "promoCode": gift_card_first.code}
data = _mutate_checkout_remove_promo_code(api_client, variables)
checkout_gift_cards = checkout_with_gift_card.gift_cards
assert data["checkout"]["id"] == checkout_id
assert checkout_gift_cards.filter(code=gift_card_last.code).exists()
assert not checkout_gift_cards.filter(code=gift_card_first.code).exists()
def test_service_account_query(
staff_api_client,
permission_manage_service_accounts,
permission_manage_staff,
service_account,
):
service_account.permissions.add(permission_manage_staff)
id = graphene.Node.to_global_id("ServiceAccount", service_account.id)
variables = {"id": id}
response = staff_api_client.post_graphql(
QUERY_SERVICE_ACCOUNT,
variables,
permissions=[permission_manage_service_accounts],
)
content = get_graphql_content(response)
tokens = service_account.tokens.all()
service_account_data = content["data"]["serviceAccount"]
tokens_data = service_account_data["tokens"]
assert tokens.count() == 1
assert tokens_data[0]["authToken"] == tokens.first().auth_token[-4:]
assert service_account_data["isActive"] == service_account.is_active
assert service_account_data["permissions"] == [
query giftCards{
me {
giftCards(first: 10) {
edges {
node {
id
displayCode
code
}
}
totalCount
}
}
}
"""
gift_card_id = graphene.Node.to_global_id("GiftCard", gift_card.pk)
response = user_api_client.post_graphql(query)
content = get_graphql_content(response)
data = content["data"]["me"]["giftCards"]
assert data["edges"][0]["node"]["id"] == gift_card_id
assert data["edges"][0]["node"]["displayCode"] == gift_card.display_code
assert data["edges"][0]["node"]["code"] == gift_card.code
assert data["totalCount"] == 1
):
"""Set the parent of an item to None, to put it as to the root level."""
menu_item_list = list(menu_item_list)
menu_global_id = graphene.Node.to_global_id("Menu", menu_item_list[0].menu_id)
unchanged_item_global_id = graphene.Node.to_global_id(
"MenuItem", menu_item_list[2].pk
)
root_candidate = menu_item_list[0]
root_candidate_global_id = graphene.Node.to_global_id("MenuItem", root_candidate.pk)
# Give to the item menu a parent
previous_parent = menu_item_list[1]
previous_parent_global_id = graphene.Node.to_global_id(
"MenuItem", previous_parent.pk
)
root_candidate.move_to(previous_parent)
root_candidate.save()
assert root_candidate.parent
moves_input = [
{"itemId": root_candidate_global_id, "parentId": None, "sortOrder": None}
]
expected_data = {
"id": menu_global_id,
"items": [
{
"id": previous_parent_global_id,
"sortOrder": 1,