2023-03-15 16:00:52 +00:00
/ * *
* Copyright ( c ) HashiCorp , Inc .
* SPDX - License - Identifier : MPL - 2.0
* /
2022-02-24 20:04:40 +00:00
import { module , test } from 'qunit' ;
2023-03-22 18:19:11 +00:00
import sinon from 'sinon' ;
2022-06-01 18:42:05 +00:00
import { visit , currentURL , click , findAll , find , settled } from '@ember/test-helpers' ;
2022-02-24 20:04:40 +00:00
import { setupApplicationTest } from 'ember-qunit' ;
import authPage from 'vault/tests/pages/auth' ;
2023-03-22 18:19:11 +00:00
import { addMonths , formatRFC3339 , startOfMonth , subMonths } from 'date-fns' ;
2022-06-01 18:42:05 +00:00
import { setupMirage } from 'ember-cli-mirage/test-support' ;
import ENV from 'vault/config/environment' ;
import { SELECTORS , overrideResponse } from '../helpers/clients' ;
import { create } from 'ember-cli-page-object' ;
import ss from 'vault/tests/pages/components/search-select' ;
import { clickTrigger } from 'ember-power-select/test-support/helpers' ;
2022-06-03 22:47:19 +00:00
import { ARRAY _OF _MONTHS } from 'core/utils/date-formatters' ;
2023-01-27 02:21:12 +00:00
import { formatNumber } from 'core/helpers/format-number' ;
2023-03-22 18:19:11 +00:00
import timestamp from 'core/utils/timestamp' ;
2022-06-03 22:47:19 +00:00
2022-06-01 18:42:05 +00:00
const searchSelect = create ( ss ) ;
2023-03-22 18:19:11 +00:00
const STATIC _NOW = new Date ( '2023-01-13T14:15:00' ) ;
2022-06-01 18:42:05 +00:00
// for testing, we're in the middle of a license/billing period
2023-03-22 18:19:11 +00:00
const LICENSE _START = startOfMonth ( subMonths ( STATIC _NOW , 6 ) ) ; // 2022-07-01
2022-06-01 18:42:05 +00:00
// upgrade happened 1 month after license start
2023-03-22 18:19:11 +00:00
const UPGRADE _DATE = addMonths ( LICENSE _START , 1 ) ; // 2022-08-01
2022-02-24 20:04:40 +00:00
2023-01-27 02:21:12 +00:00
module ( 'Acceptance | client counts dashboard tab' , function ( hooks ) {
2022-02-24 20:04:40 +00:00
setupApplicationTest ( hooks ) ;
2022-06-01 18:42:05 +00:00
setupMirage ( hooks ) ;
2022-02-24 20:04:40 +00:00
2022-06-01 18:42:05 +00:00
hooks . before ( function ( ) {
2023-03-22 18:19:11 +00:00
sinon . stub ( timestamp , 'now' ) . callsFake ( ( ) => STATIC _NOW ) ;
2022-06-01 18:42:05 +00:00
ENV [ 'ember-cli-mirage' ] . handler = 'clients' ;
2022-02-24 20:04:40 +00:00
} ) ;
2023-01-27 02:21:12 +00:00
hooks . beforeEach ( function ( ) {
this . store = this . owner . lookup ( 'service:store' ) ;
} ) ;
2022-06-01 18:42:05 +00:00
hooks . after ( function ( ) {
2023-03-22 18:19:11 +00:00
timestamp . now . restore ( ) ;
2022-06-01 18:42:05 +00:00
ENV [ 'ember-cli-mirage' ] . handler = null ;
2022-02-24 20:04:40 +00:00
} ) ;
2022-06-01 18:42:05 +00:00
hooks . beforeEach ( function ( ) {
return authPage . login ( ) ;
} ) ;
2023-01-27 02:21:12 +00:00
test ( 'shows warning when config off, no data' , async function ( assert ) {
2022-06-01 18:42:05 +00:00
assert . expect ( 4 ) ;
this . server . get ( 'sys/internal/counters/activity' , ( ) => overrideResponse ( 204 ) ) ;
this . server . get ( 'sys/internal/counters/config' , ( ) => {
return {
request _id : 'some-config-id' ,
data : {
default _report _months : 12 ,
enabled : 'default-disable' ,
queries _available : false ,
retention _months : 24 ,
} ,
} ;
2022-02-24 20:04:40 +00:00
} ) ;
2023-01-27 02:21:12 +00:00
await visit ( '/vault/clients/dashboard' ) ;
assert . strictEqual ( currentURL ( ) , '/vault/clients/dashboard' ) ;
assert . dom ( SELECTORS . dashboardActiveTab ) . hasText ( 'Dashboard' , 'dashboard tab is active' ) ;
2022-02-24 20:04:40 +00:00
assert . dom ( SELECTORS . emptyStateTitle ) . hasText ( 'Data tracking is disabled' ) ;
assert . dom ( SELECTORS . filterBar ) . doesNotExist ( 'Filter bar is hidden when no data available' ) ;
} ) ;
2023-01-27 02:21:12 +00:00
test ( 'shows empty state when config enabled and no data' , async function ( assert ) {
2022-06-01 18:42:05 +00:00
assert . expect ( 4 ) ;
this . server . get ( 'sys/internal/counters/activity' , ( ) => overrideResponse ( 204 ) ) ;
this . server . get ( 'sys/internal/counters/config' , ( ) => {
return {
request _id : 'some-config-id' ,
data : {
default _report _months : 12 ,
enabled : 'default-enable' ,
retention _months : 24 ,
} ,
} ;
2022-02-24 20:04:40 +00:00
} ) ;
2023-01-27 02:21:12 +00:00
await visit ( '/vault/clients/dashboard' ) ;
assert . strictEqual ( currentURL ( ) , '/vault/clients/dashboard' ) ;
assert . dom ( SELECTORS . dashboardActiveTab ) . hasText ( 'Dashboard' , 'dashboard tab is active' ) ;
assert . dom ( SELECTORS . emptyStateTitle ) . hasTextContaining ( 'No data received' ) ;
2022-02-24 20:04:40 +00:00
assert . dom ( SELECTORS . filterBar ) . doesNotExist ( 'Does not show filter bar' ) ;
} ) ;
2023-01-27 02:21:12 +00:00
test ( 'visiting dashboard tab config on and data with mounts' , async function ( assert ) {
2022-06-01 18:42:05 +00:00
assert . expect ( 8 ) ;
2023-01-27 02:21:12 +00:00
await visit ( '/vault/clients/dashboard' ) ;
assert . strictEqual ( currentURL ( ) , '/vault/clients/dashboard' ) ;
2022-02-24 20:04:40 +00:00
assert
. dom ( SELECTORS . dateDisplay )
2023-03-22 18:19:11 +00:00
. hasText ( 'July 2022' , 'billing start month is correctly parsed from license' ) ;
2022-02-24 20:04:40 +00:00
assert
. dom ( SELECTORS . rangeDropdown )
2023-03-22 18:19:11 +00:00
. hasText ( ` Jul 2022 - Jan 2023 ` , 'Date range shows dates correctly parsed activity response' ) ;
2022-06-01 18:42:05 +00:00
assert . dom ( SELECTORS . attributionBlock ) . exists ( 'Shows attribution area' ) ;
assert . dom ( SELECTORS . monthlyUsageBlock ) . exists ( 'Shows monthly usage block' ) ;
assert
. dom ( SELECTORS . runningTotalMonthlyCharts )
. exists ( 'Shows running totals with monthly breakdown charts' ) ;
assert
. dom ( find ( '[data-test-line-chart="x-axis-labels"] g.tick text' ) )
2023-03-22 18:19:11 +00:00
. hasText ( ` 7/22 ` , 'x-axis labels start with billing start date' ) ;
2022-10-18 15:46:02 +00:00
assert . strictEqual (
2022-06-01 18:42:05 +00:00
findAll ( '[data-test-line-chart="plot-point"]' ) . length ,
2023-01-27 02:21:12 +00:00
6 ,
` line chart plots 6 points to match query `
2022-06-01 18:42:05 +00:00
) ;
} ) ;
test ( 'updates correctly when querying date ranges' , async function ( assert ) {
2023-03-22 18:19:11 +00:00
assert . expect ( 27 ) ;
2023-01-27 02:21:12 +00:00
await visit ( '/vault/clients/dashboard' ) ;
assert . strictEqual ( currentURL ( ) , '/vault/clients/dashboard' ) ;
2022-06-03 22:47:19 +00:00
// query for single, historical month with no new counts
await click ( SELECTORS . rangeDropdown ) ;
await click ( '[data-test-show-calendar]' ) ;
if ( parseInt ( find ( '[data-test-display-year]' ) . innerText ) > LICENSE _START . getFullYear ( ) ) {
await click ( '[data-test-previous-year]' ) ;
}
await click ( find ( ` [data-test-calendar-month= ${ ARRAY _OF _MONTHS [ LICENSE _START . getMonth ( ) ] } ] ` ) ) ;
assert . dom ( '[data-test-usage-stats]' ) . exists ( 'total usage stats show' ) ;
assert
. dom ( SELECTORS . runningTotalMonthStats )
. doesNotExist ( 'running total single month stat boxes do not show' ) ;
assert
. dom ( SELECTORS . runningTotalMonthlyCharts )
. doesNotExist ( 'running total month over month charts do not show' ) ;
assert . dom ( SELECTORS . monthlyUsageBlock ) . doesNotExist ( 'does not show monthly usage block' ) ;
assert . dom ( SELECTORS . attributionBlock ) . exists ( 'attribution area shows' ) ;
assert
. dom ( '[data-test-chart-container="new-clients"] [data-test-component="empty-state"]' )
. exists ( 'new client attribution has empty state' ) ;
assert
. dom ( '[data-test-empty-state-subtext]' )
. hasText ( 'There are no new clients for this namespace during this time period. ' ) ;
assert . dom ( '[data-test-chart-container="total-clients"]' ) . exists ( 'total client attribution chart shows' ) ;
// reset to billing period
await click ( '[data-test-popup-menu-trigger]' ) ;
await click ( '[data-test-current-billing-period]' ) ;
// change billing start to month/year of first upgrade
2022-06-01 18:42:05 +00:00
await click ( '[data-test-start-date-editor] button' ) ;
await click ( SELECTORS . monthDropdown ) ;
2023-01-27 02:21:12 +00:00
await click ( ` [data-test-dropdown-month=" ${ ARRAY _OF _MONTHS [ UPGRADE _DATE . getMonth ( ) ] } "] ` ) ;
2022-06-01 18:42:05 +00:00
await click ( SELECTORS . yearDropdown ) ;
2023-01-27 02:21:12 +00:00
await click ( ` [data-test-dropdown-year=" ${ UPGRADE _DATE . getFullYear ( ) } "] ` ) ;
await click ( '[data-test-date-dropdown-submit]' ) ;
2022-06-01 18:42:05 +00:00
assert . dom ( SELECTORS . attributionBlock ) . exists ( 'Shows attribution area' ) ;
assert . dom ( SELECTORS . monthlyUsageBlock ) . exists ( 'Shows monthly usage block' ) ;
2022-02-24 20:04:40 +00:00
assert
2022-06-01 18:42:05 +00:00
. dom ( SELECTORS . runningTotalMonthlyCharts )
. exists ( 'Shows running totals with monthly breakdown charts' ) ;
2022-02-24 20:04:40 +00:00
assert
2022-06-01 18:42:05 +00:00
. dom ( find ( '[data-test-line-chart="x-axis-labels"] g.tick text' ) )
2023-03-22 18:19:11 +00:00
. hasText ( ` 8/22 ` , 'x-axis labels start with updated billing start month' ) ;
2022-10-18 15:46:02 +00:00
assert . strictEqual (
2022-06-01 18:42:05 +00:00
findAll ( '[data-test-line-chart="plot-point"]' ) . length ,
2023-01-27 02:21:12 +00:00
6 ,
` line chart plots 6 points to match query `
2022-06-01 18:42:05 +00:00
) ;
2023-03-22 18:19:11 +00:00
// query three months ago (Oct 2022)
2022-06-01 18:42:05 +00:00
await click ( SELECTORS . rangeDropdown ) ;
await click ( '[data-test-show-calendar]' ) ;
2023-03-22 18:19:11 +00:00
await click ( '[data-test-previous-year]' ) ;
await click ( find ( ` [data-test-calendar-month="October"] ` ) ) ;
2022-06-01 18:42:05 +00:00
assert . dom ( SELECTORS . attributionBlock ) . exists ( 'Shows attribution area' ) ;
assert . dom ( SELECTORS . monthlyUsageBlock ) . exists ( 'Shows monthly usage block' ) ;
2022-02-24 20:04:40 +00:00
assert
2022-06-01 18:42:05 +00:00
. dom ( SELECTORS . runningTotalMonthlyCharts )
. exists ( 'Shows running totals with monthly breakdown charts' ) ;
2022-10-18 15:46:02 +00:00
assert . strictEqual (
2022-06-01 18:42:05 +00:00
findAll ( '[data-test-line-chart="plot-point"]' ) . length ,
2022-06-03 22:47:19 +00:00
3 ,
` line chart plots 3 points to match query `
2022-06-01 18:42:05 +00:00
) ;
2022-11-09 23:15:31 +00:00
const xAxisLabels = findAll ( '[data-test-line-chart="x-axis-labels"] g.tick text' ) ;
2022-06-01 18:42:05 +00:00
assert
2022-06-03 22:47:19 +00:00
. dom ( xAxisLabels [ xAxisLabels . length - 1 ] )
2023-03-22 18:19:11 +00:00
. hasText ( ` 10/22 ` , 'x-axis labels end with queried end month' ) ;
2022-03-16 18:36:41 +00:00
2023-01-27 02:21:12 +00:00
// query for single, historical month (upgrade month)
2022-06-01 18:42:05 +00:00
await click ( SELECTORS . rangeDropdown ) ;
await click ( '[data-test-show-calendar]' ) ;
2023-03-22 18:19:11 +00:00
assert . dom ( '[data-test-display-year]' ) . hasText ( '2022' ) ;
await click ( find ( ` [data-test-calendar-month="August"] ` ) ) ;
2022-06-03 22:47:19 +00:00
2022-06-01 18:42:05 +00:00
assert . dom ( SELECTORS . runningTotalMonthStats ) . exists ( 'running total single month stat boxes show' ) ;
assert
. dom ( SELECTORS . runningTotalMonthlyCharts )
. doesNotExist ( 'running total month over month charts do not show' ) ;
2022-06-03 22:47:19 +00:00
assert . dom ( SELECTORS . monthlyUsageBlock ) . doesNotExist ( 'Does not show monthly usage block' ) ;
2022-06-01 18:42:05 +00:00
assert . dom ( SELECTORS . attributionBlock ) . exists ( 'attribution area shows' ) ;
assert . dom ( '[data-test-chart-container="new-clients"]' ) . exists ( 'new client attribution chart shows' ) ;
assert . dom ( '[data-test-chart-container="total-clients"]' ) . exists ( 'total client attribution chart shows' ) ;
// reset to billing period
await click ( '[data-test-popup-menu-trigger]' ) ;
await click ( '[data-test-current-billing-period]' ) ;
// query month older than count start date
await click ( '[data-test-start-date-editor] button' ) ;
2023-01-27 02:21:12 +00:00
await click ( SELECTORS . monthDropdown ) ;
await click ( ` [data-test-dropdown-month=" ${ ARRAY _OF _MONTHS [ LICENSE _START . getMonth ( ) ] } "] ` ) ;
2022-06-01 18:42:05 +00:00
await click ( SELECTORS . yearDropdown ) ;
2023-01-27 02:21:12 +00:00
await click ( ` [data-test-dropdown-year=" ${ LICENSE _START . getFullYear ( ) - 3 } "] ` ) ;
await click ( '[data-test-date-dropdown-submit]' ) ;
2022-06-01 18:42:05 +00:00
assert
. dom ( '[data-test-alert-banner="alert"]' )
. hasTextContaining (
2023-03-22 18:19:11 +00:00
` We only have data from January 2022 ` ,
2022-06-01 18:42:05 +00:00
'warning banner displays that date queried was prior to count start date'
) ;
2022-02-24 20:04:40 +00:00
} ) ;
2023-01-27 02:21:12 +00:00
test ( 'dashboard filters correctly with full data' , async function ( assert ) {
assert . expect ( 21 ) ;
await visit ( '/vault/clients/dashboard' ) ;
assert . strictEqual ( currentURL ( ) , '/vault/clients/dashboard' , 'clients/dashboard URL is correct' ) ;
assert . dom ( SELECTORS . dashboardActiveTab ) . hasText ( 'Dashboard' , 'dashboard tab is active' ) ;
2022-06-01 18:42:05 +00:00
assert
. dom ( SELECTORS . runningTotalMonthlyCharts )
. exists ( 'Shows running totals with monthly breakdown charts' ) ;
assert . dom ( SELECTORS . attributionBlock ) . exists ( 'Shows attribution area' ) ;
assert . dom ( SELECTORS . monthlyUsageBlock ) . exists ( 'Shows monthly usage block' ) ;
2023-01-27 02:21:12 +00:00
const response = await this . store . peekRecord ( 'clients/activity' , 'some-activity-id' ) ;
2022-06-01 18:42:05 +00:00
// FILTER BY NAMESPACE
await clickTrigger ( ) ;
await searchSelect . options . objectAt ( 0 ) . click ( ) ;
await settled ( ) ;
2023-01-27 02:21:12 +00:00
const topNamespace = response . byNamespace [ 0 ] ;
const topMount = topNamespace . mounts [ 0 ] ;
2022-06-01 18:42:05 +00:00
assert . ok ( true , 'Filter by first namespace' ) ;
2023-01-27 02:21:12 +00:00
assert . strictEqual (
find ( SELECTORS . selectedNs ) . innerText . toLowerCase ( ) ,
topNamespace . label ,
'selects top namespace'
) ;
2022-06-01 18:42:05 +00:00
assert . dom ( '[data-test-top-attribution]' ) . includesText ( 'Top auth method' ) ;
assert
2023-01-27 02:21:12 +00:00
. dom ( '[data-test-running-total-entity] p' )
. includesText ( ` ${ formatNumber ( [ topNamespace . entity _clients ] ) } ` , 'total entity clients is accurate' ) ;
assert
. dom ( '[data-test-running-total-nonentity] p' )
. includesText (
` ${ formatNumber ( [ topNamespace . non _entity _clients ] ) } ` ,
'total non-entity clients is accurate'
) ;
assert
. dom ( '[data-test-attribution-clients] p' )
. includesText ( ` ${ formatNumber ( [ topMount . clients ] ) } ` , 'top attribution clients accurate' ) ;
2022-06-01 18:42:05 +00:00
// FILTER BY AUTH METHOD
await clickTrigger ( ) ;
await searchSelect . options . objectAt ( 0 ) . click ( ) ;
await settled ( ) ;
assert . ok ( true , 'Filter by first auth method' ) ;
2023-01-27 02:21:12 +00:00
assert . strictEqual (
find ( SELECTORS . selectedAuthMount ) . innerText . toLowerCase ( ) ,
topMount . label ,
'selects top mount'
) ;
2022-06-01 18:42:05 +00:00
assert
2023-01-27 02:21:12 +00:00
. dom ( '[data-test-running-total-entity] p' )
. includesText ( ` ${ formatNumber ( [ topMount . entity _clients ] ) } ` , 'total entity clients is accurate' ) ;
assert
. dom ( '[data-test-running-total-nonentity] p' )
. includesText ( ` ${ formatNumber ( [ topMount . non _entity _clients ] ) } ` , 'total non-entity clients is accurate' ) ;
2022-06-01 18:42:05 +00:00
assert . dom ( SELECTORS . attributionBlock ) . doesNotExist ( 'Does not show attribution block' ) ;
await click ( '#namespace-search-select [data-test-selected-list-button="delete"]' ) ;
assert . ok ( true , 'Remove namespace filter without first removing auth method filter' ) ;
assert . dom ( '[data-test-top-attribution]' ) . includesText ( 'Top namespace' ) ;
assert
. dom ( '[data-test-running-total-entity]' )
2023-01-27 02:21:12 +00:00
. hasTextContaining (
` ${ formatNumber ( [ response . total . entity _clients ] ) } ` ,
'total entity clients is back to unfiltered value'
) ;
2022-06-01 18:42:05 +00:00
assert
. dom ( '[data-test-running-total-nonentity]' )
2023-01-27 02:21:12 +00:00
. hasTextContaining (
` ${ formatNumber ( [ formatNumber ( [ response . total . non _entity _clients ] ) ] ) } ` ,
'total non-entity clients is back to unfiltered value'
) ;
assert
. dom ( '[data-test-attribution-clients]' )
. hasTextContaining (
` ${ formatNumber ( [ topNamespace . clients ] ) } ` ,
'top attribution clients back to unfiltered value'
) ;
2022-06-01 18:42:05 +00:00
} ) ;
2022-02-24 20:04:40 +00:00
test ( 'shows warning if upgrade happened within license period' , async function ( assert ) {
2022-06-01 18:42:05 +00:00
assert . expect ( 3 ) ;
this . server . get ( 'sys/version-history' , function ( ) {
return {
data : {
keys : [ '1.9.0' , '1.9.1' , '1.9.2' , '1.10.1' ] ,
key _info : {
'1.9.0' : {
previous _version : null ,
timestamp _installed : formatRFC3339 ( subMonths ( UPGRADE _DATE , 4 ) ) ,
} ,
'1.9.1' : {
previous _version : '1.9.0' ,
timestamp _installed : formatRFC3339 ( subMonths ( UPGRADE _DATE , 3 ) ) ,
} ,
'1.9.2' : {
previous _version : '1.9.1' ,
timestamp _installed : formatRFC3339 ( subMonths ( UPGRADE _DATE , 2 ) ) ,
} ,
'1.10.1' : {
previous _version : '1.9.2' ,
timestamp _installed : formatRFC3339 ( UPGRADE _DATE ) ,
2022-02-24 20:04:40 +00:00
} ,
} ,
2022-06-01 18:42:05 +00:00
} ,
} ;
2022-02-24 20:04:40 +00:00
} ) ;
2023-01-27 02:21:12 +00:00
await visit ( '/vault/clients/dashboard' ) ;
assert . strictEqual ( currentURL ( ) , '/vault/clients/dashboard' , 'clients/dashboard URL is correct' ) ;
assert . dom ( SELECTORS . dashboardActiveTab ) . hasText ( 'Dashboard' , 'dashboard tab is active' ) ;
2022-06-01 18:42:05 +00:00
assert
. dom ( '[data-test-alert-banner="alert"]' )
. hasTextContaining (
2023-03-22 18:19:11 +00:00
` Warning Vault was upgraded to 1.10.1 on Aug 1, 2022. We added monthly breakdowns and mount level attribution starting in 1.10, so keep that in mind when looking at the data. Learn more here. `
2022-06-01 18:42:05 +00:00
) ;
2022-02-24 20:04:40 +00:00
} ) ;
test ( 'Shows empty if license start date is current month' , async function ( assert ) {
2023-01-27 02:21:12 +00:00
// TODO cmb update to reflect new behavior
2023-03-22 18:19:11 +00:00
const licenseStart = STATIC _NOW ;
const licenseEnd = addMonths ( licenseStart , 12 ) ;
2022-06-01 18:42:05 +00:00
this . server . get ( 'sys/license/status' , function ( ) {
return {
request _id : 'my-license-request-id' ,
data : {
autoloaded : {
license _id : 'my-license-id' ,
start _time : formatRFC3339 ( licenseStart ) ,
expiration _time : formatRFC3339 ( licenseEnd ) ,
} ,
} ,
} ;
2022-02-24 20:04:40 +00:00
} ) ;
2023-01-27 02:21:12 +00:00
await visit ( '/vault/clients/dashboard' ) ;
assert . strictEqual ( currentURL ( ) , '/vault/clients/dashboard' , 'clients/dashboard URL is correct' ) ;
assert . dom ( SELECTORS . emptyStateTitle ) . doesNotExist ( 'No data for this billing period' ) ;
2022-02-24 20:04:40 +00:00
} ) ;
test ( 'shows correct interface if no permissions on license' , async function ( assert ) {
2022-06-01 18:42:05 +00:00
this . server . get ( '/sys/license/status' , ( ) => overrideResponse ( 403 ) ) ;
2023-01-27 02:21:12 +00:00
await visit ( '/vault/clients/dashboard' ) ;
assert . strictEqual ( currentURL ( ) , '/vault/clients/dashboard' , 'clients/dashboard URL is correct' ) ;
assert . dom ( SELECTORS . dashboardActiveTab ) . hasText ( 'Dashboard' , 'dashboard tab is active' ) ;
2022-02-24 20:04:40 +00:00
// Message changes depending on ent or OSS
assert . dom ( SELECTORS . emptyStateTitle ) . exists ( 'Empty state exists' ) ;
2022-03-02 18:44:41 +00:00
assert . dom ( SELECTORS . monthDropdown ) . exists ( 'Dropdown exists to select month' ) ;
assert . dom ( SELECTORS . yearDropdown ) . exists ( 'Dropdown exists to select year' ) ;
} ) ;
test ( 'shows error template if permissions denied querying activity response with no data' , async function ( assert ) {
2022-06-01 18:42:05 +00:00
this . server . get ( 'sys/license/status' , ( ) => overrideResponse ( 403 ) ) ;
this . server . get ( 'sys/version-history' , ( ) => overrideResponse ( 403 ) ) ;
this . server . get ( 'sys/internal/counters/config' , ( ) => overrideResponse ( 403 ) ) ;
this . server . get ( 'sys/internal/counters/activity' , ( ) => overrideResponse ( 403 ) ) ;
2023-01-27 02:21:12 +00:00
await visit ( '/vault/clients/dashboard' ) ;
assert . strictEqual ( currentURL ( ) , '/vault/clients/dashboard' , 'clients/dashboard URL is correct' ) ;
2022-03-02 18:44:41 +00:00
assert
. dom ( SELECTORS . emptyStateTitle )
2022-03-16 18:36:41 +00:00
. includesText ( 'start date found' , 'Empty state shows no billing start date' ) ;
2022-03-02 18:44:41 +00:00
await click ( SELECTORS . monthDropdown ) ;
await click ( this . element . querySelector ( '[data-test-month-list] button:not([disabled])' ) ) ;
await click ( SELECTORS . yearDropdown ) ;
await click ( this . element . querySelector ( '[data-test-year-list] button:not([disabled])' ) ) ;
await click ( SELECTORS . dateDropdownSubmit ) ;
assert
. dom ( SELECTORS . emptyStateTitle )
. hasText ( 'You are not authorized' , 'Empty state displays not authorized message' ) ;
2022-02-24 20:04:40 +00:00
} ) ;
} ) ;