mirror of
https://github.com/ansible/awx.git
synced 2026-01-15 20:00:43 -03:30
add prom permissions test
This commit is contained in:
parent
7f6659f767
commit
f49532090b
@ -1,4 +1,3 @@
|
||||
from datetime import datetime
|
||||
from django.conf import settings
|
||||
from prometheus_client import (
|
||||
REGISTRY,
|
||||
@ -62,7 +61,7 @@ def metrics():
|
||||
'external_logger_type': getattr(settings, 'LOG_AGGREGATOR_TYPE', 'None')
|
||||
})
|
||||
|
||||
current_counts = counts(datetime.now())
|
||||
current_counts = counts(None)
|
||||
|
||||
ORG_COUNT.set(current_counts['organization'])
|
||||
USER_COUNT.set(current_counts['user'])
|
||||
@ -86,7 +85,7 @@ def metrics():
|
||||
RUNNING_JOBS.set(current_counts['running_jobs'])
|
||||
|
||||
|
||||
instance_data = instance_info(datetime.now())
|
||||
instance_data = instance_info(None)
|
||||
for uuid in instance_data:
|
||||
INSTANCE_CAPACITY.labels(type=uuid).set(instance_data[uuid]['capacity'])
|
||||
INSTANCE_CPU.labels(type=uuid).set(instance_data[uuid]['cpu'])
|
||||
@ -98,7 +97,7 @@ def metrics():
|
||||
'version': instance_data[uuid]['version']
|
||||
})
|
||||
|
||||
instance_data = job_instance_counts(datetime.now())
|
||||
instance_data = job_instance_counts(None)
|
||||
for node in instance_data:
|
||||
# skipping internal execution node (for system jobs)
|
||||
# TODO: determine if we should exclude execution_node from instance count
|
||||
|
||||
@ -3,6 +3,8 @@ import pytest
|
||||
from prometheus_client.parser import text_string_to_metric_families
|
||||
from awx.main import models
|
||||
from awx.main.analytics.metrics import metrics
|
||||
from awx.api.versioning import reverse
|
||||
from awx.main.models.rbac import Role
|
||||
|
||||
EXPECTED_VALUES = {
|
||||
'awx_system_info':1.0,
|
||||
@ -54,3 +56,30 @@ def test_metrics_counts(organization_factory, job_template_factory, workflow_job
|
||||
# name, label, value, timestamp, exemplar
|
||||
name, _, value, _, _ = sample
|
||||
assert EXPECTED_VALUES[name] == value
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_metrics_permissions(get, admin, org_admin, alice, bob, organization):
|
||||
|
||||
assert get(reverse('api:metrics_view'), user=admin).status_code == 200
|
||||
assert get(reverse('api:metrics_view'), user=org_admin).status_code == 403
|
||||
assert get(reverse('api:metrics_view'), user=alice).status_code == 403
|
||||
assert get(reverse('api:metrics_view'), user=bob).status_code == 403
|
||||
organization.auditor_role.members.add(bob)
|
||||
assert get(reverse('api:metrics_view'), user=bob).status_code == 403
|
||||
|
||||
Role.singleton('system_auditor').members.add(bob)
|
||||
bob.is_system_auditor = True
|
||||
assert get(reverse('api:metrics_view'), user=bob).status_code == 200
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_metrics_http_methods(get, post, patch, put, options, admin):
|
||||
|
||||
assert get(reverse('api:metrics_view'), user=admin).status_code == 200
|
||||
assert put(reverse('api:metrics_view'), user=admin).status_code == 405
|
||||
assert patch(reverse('api:metrics_view'), user=admin).status_code == 405
|
||||
assert post(reverse('api:metrics_view'), user=admin).status_code == 405
|
||||
assert options(reverse('api:metrics_view'), user=admin).status_code == 200
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user