@ -36,11 +36,6 @@ class TestAdminAPI(TestCase):
 | 
			
		||||
        body = loads(response.content)
 | 
			
		||||
        self.assertEqual(len(body), 0)
 | 
			
		||||
 | 
			
		||||
    def test_metrics(self):
 | 
			
		||||
        """Test metrics API"""
 | 
			
		||||
        response = self.client.get(reverse("authentik_api:admin_metrics"))
 | 
			
		||||
        self.assertEqual(response.status_code, 200)
 | 
			
		||||
 | 
			
		||||
    def test_apps(self):
 | 
			
		||||
        """Test apps API"""
 | 
			
		||||
        response = self.client.get(reverse("authentik_api:apps-list"))
 | 
			
		||||
 | 
			
		||||
@ -81,22 +81,6 @@ class TestUsersAPI(APITestCase):
 | 
			
		||||
        response = self.client.get(reverse("authentik_api:user-list"), {"include_groups": "true"})
 | 
			
		||||
        self.assertEqual(response.status_code, 200)
 | 
			
		||||
 | 
			
		||||
    def test_metrics(self):
 | 
			
		||||
        """Test user's metrics"""
 | 
			
		||||
        self.client.force_login(self.admin)
 | 
			
		||||
        response = self.client.get(
 | 
			
		||||
            reverse("authentik_api:user-metrics", kwargs={"pk": self.user.pk})
 | 
			
		||||
        )
 | 
			
		||||
        self.assertEqual(response.status_code, 200)
 | 
			
		||||
 | 
			
		||||
    def test_metrics_denied(self):
 | 
			
		||||
        """Test user's metrics (non-superuser)"""
 | 
			
		||||
        self.client.force_login(self.user)
 | 
			
		||||
        response = self.client.get(
 | 
			
		||||
            reverse("authentik_api:user-metrics", kwargs={"pk": self.user.pk})
 | 
			
		||||
        )
 | 
			
		||||
        self.assertEqual(response.status_code, 403)
 | 
			
		||||
 | 
			
		||||
    def test_recovery_no_flow(self):
 | 
			
		||||
        """Test user recovery link (no recovery flow set)"""
 | 
			
		||||
        self.client.force_login(self.admin)
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@ import django_filters
 | 
			
		||||
from django.db.models import Count, ExpressionWrapper, F, QuerySet
 | 
			
		||||
from django.db.models import DateTimeField as DjangoDateTimeField
 | 
			
		||||
from django.db.models.fields.json import KeyTextTransform, KeyTransform
 | 
			
		||||
from django.db.models.functions import Cast, TruncHour
 | 
			
		||||
from django.db.models.functions import TruncHour
 | 
			
		||||
from django.db.models.query_utils import Q
 | 
			
		||||
from django.utils.timezone import now
 | 
			
		||||
from drf_spectacular.types import OpenApiTypes
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@ export class EventVolumeChart extends AKChart<EventVolume[]> {
 | 
			
		||||
 | 
			
		||||
    @property({ attribute: false })
 | 
			
		||||
    set query(value: EventsEventsListRequest | undefined) {
 | 
			
		||||
        if (JSON.stringify(this._query) === JSON.stringify(value)) return;
 | 
			
		||||
        this._query = value;
 | 
			
		||||
        this.refreshHandler();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,7 @@ import {
 | 
			
		||||
import { Legend, Tooltip } from "chart.js";
 | 
			
		||||
import { BarController, DoughnutController, LineController } from "chart.js";
 | 
			
		||||
import { ArcElement, BarElement } from "chart.js";
 | 
			
		||||
import { LinearScale, TimeScale } from "chart.js";
 | 
			
		||||
import { LinearScale, TimeScale, TimeSeriesScale } from "chart.js";
 | 
			
		||||
import "chartjs-adapter-date-fns";
 | 
			
		||||
 | 
			
		||||
import { msg } from "@lit/localize";
 | 
			
		||||
@ -35,7 +35,7 @@ import { EventActions, EventVolume, UiThemeEnum } from "@goauthentik/api";
 | 
			
		||||
Chart.register(Legend, Tooltip);
 | 
			
		||||
Chart.register(LineController, BarController, DoughnutController);
 | 
			
		||||
Chart.register(ArcElement, BarElement, PointElement, LineElement);
 | 
			
		||||
Chart.register(TimeScale, LinearScale, Filler);
 | 
			
		||||
Chart.register(TimeScale, TimeSeriesScale, LinearScale, Filler);
 | 
			
		||||
 | 
			
		||||
export const FONT_COLOUR_DARK_MODE = "#fafafa";
 | 
			
		||||
export const FONT_COLOUR_LIGHT_MODE = "#151515";
 | 
			
		||||
@ -186,7 +186,7 @@ export abstract class AKChart<T> extends AKElement {
 | 
			
		||||
            responsive: true,
 | 
			
		||||
            scales: {
 | 
			
		||||
                x: {
 | 
			
		||||
                    type: "time",
 | 
			
		||||
                    type: "timeseries",
 | 
			
		||||
                    display: true,
 | 
			
		||||
                    ticks: {
 | 
			
		||||
                        callback: (tickValue: string | number, index: number, ticks: Tick[]) => {
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user