| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import { Response } from 'miragejs'; |
| |
| /** Scenarios |
| Config off, no data |
| Config on, no data |
| Config on, with data |
| Filtering (data with mounts) |
| Filtering (data without mounts) |
| Filtering (data without mounts) |
| * -- HISTORY ONLY -- |
| Filtering different date ranges (hist only) |
| Upgrade warning |
| No permissions for license |
| Version |
| queries available |
| queries unavailable |
| License start date this month |
| */ |
| export const SELECTORS = { |
| dashboardActiveTab: '.active[data-test-dashboard]', |
| emptyStateTitle: '[data-test-empty-state-title]', |
| usageStats: '[data-test-usage-stats]', |
| dateDisplay: '[data-test-date-display]', |
| attributionBlock: '[data-test-clients-attribution]', |
| filterBar: '[data-test-clients-filter-bar]', |
| rangeDropdown: '[data-test-calendar-widget-trigger]', |
| monthDropdown: '[data-test-popup-menu-trigger="month"]', |
| yearDropdown: '[data-test-popup-menu-trigger="year"]', |
| dateDropdownSubmit: '[data-test-date-dropdown-submit]', |
| runningTotalMonthStats: '[data-test-running-total="single-month-stats"]', |
| runningTotalMonthlyCharts: '[data-test-running-total="monthly-charts"]', |
| monthlyUsageBlock: '[data-test-monthly-usage]', |
| selectedAuthMount: 'div#auth-method-search-select [data-test-selected-option] div', |
| selectedNs: 'div#namespace-search-select [data-test-selected-option] div', |
| }; |
| |
| export const CHART_ELEMENTS = { |
| entityClientDataBars: '[data-test-group="entity_clients"]', |
| nonEntityDataBars: '[data-test-group="non_entity_clients"]', |
| yLabels: '[data-test-group="y-labels"]', |
| actionBars: '[data-test-group="action-bars"]', |
| labelActionBars: '[data-test-group="label-action-bars"]', |
| totalValues: '[data-test-group="total-values"]', |
| }; |
| |
| export function sendResponse(data, httpStatus = 200) { |
| if (httpStatus === 403) { |
| return [ |
| httpStatus, |
| { 'Content-Type': 'application/json' }, |
| JSON.stringify({ errors: ['permission denied'] }), |
| ]; |
| } |
| if (httpStatus === 204) { |
| // /activity endpoint returns 204 when no data, while |
| // /activity/monthly returns 200 with zero values on data |
| return [httpStatus, { 'Content-Type': 'application/json' }]; |
| } |
| return [httpStatus, { 'Content-Type': 'application/json' }, JSON.stringify(data)]; |
| } |
| |
| export function overrideResponse(httpStatus, data) { |
| if (httpStatus === 403) { |
| return new Response( |
| 403, |
| { 'Content-Type': 'application/json' }, |
| JSON.stringify({ errors: ['permission denied'] }) |
| ); |
| } |
| // /activity endpoint returns 204 when no data, while |
| // /activity/monthly returns 200 with zero values on data |
| if (httpStatus === 204) { |
| return new Response(204, { 'Content-Type': 'application/json' }); |
| } |
| return new Response(200, { 'Content-Type': 'application/json' }, JSON.stringify(data)); |
| } |