Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
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,
def test_sort_products_within_collection_invalid_product_id(
staff_api_client, collection, product, permission_manage_products
):
# Remove the products from the collection to make the product invalid
collection.products.clear()
collection_id = graphene.Node.to_global_id("Collection", collection.pk)
# The move should be targeting an invalid product
product_id = graphene.Node.to_global_id("Product", product.pk)
moves = [{"productId": product_id, "sortOrder": 1}]
content = get_graphql_content(
staff_api_client.post_graphql(
COLLECTION_RESORT_QUERY,
{"collectionId": collection_id, "moves": moves},
permissions=[permission_manage_products],
)
)["data"]["collectionReorderProducts"]
assert content["errors"] == [
{"field": "moves", "message": f"Couldn't resolve to a product: {product_id}"}
]
def test_checkout_create_default_email_for_logged_in_customer(user_api_client, variant):
variant_id = graphene.Node.to_global_id("ProductVariant", variant.id)
variables = {"checkoutInput": {"lines": [{"quantity": 1, "variantId": variant_id}]}}
response = user_api_client.post_graphql(MUTATION_CHECKOUT_CREATE, variables)
customer = user_api_client.user
content = get_graphql_content(response)
new_checkout = Checkout.objects.first()
assert new_checkout is not None
checkout_data = content["data"]["checkoutCreate"]["checkout"]
assert checkout_data["email"] == str(customer.email)
assert new_checkout.user.id == customer.id
assert new_checkout.email == customer.email