Initial commit
This commit is contained in:
commit
4ff9eac274
45 files changed
+2911
No files matched your search
@@ -0,0 +1,111 @@
|
||||
import pytest
|
||||
|
||||
from netbox_services.models import Service, ServiceTemplate
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestServiceTemplateAPI:
|
||||
def test_list(self, api_client):
|
||||
ServiceTemplate.objects.create(name="api-tmpl")
|
||||
resp = api_client.get("/api/plugins/services/service-templates/")
|
||||
assert resp.status_code == 200
|
||||
assert resp.data["count"] >= 1
|
||||
|
||||
def test_create_with_tree(self, api_client):
|
||||
resp = api_client.post("/api/plugins/services/service-templates/", {
|
||||
"name": "api-created-tmpl",
|
||||
"status": "draft",
|
||||
"tree": [{"name": "dev", "object_type": "dcim.device", "quantity": 1, "selector": {"type": "netbox_filter", "filters": {}}, "scope": "service", "children": []}],
|
||||
}, format="json")
|
||||
assert resp.status_code == 201
|
||||
assert resp.data["name"] == "api-created-tmpl"
|
||||
assert len(resp.data["tree"]) == 1
|
||||
|
||||
def test_retrieve(self, api_client):
|
||||
st = ServiceTemplate.objects.create(name="api-retrieve-tmpl")
|
||||
resp = api_client.get(f"/api/plugins/services/service-templates/{st.pk}/")
|
||||
assert resp.status_code == 200
|
||||
|
||||
def test_delete(self, api_client):
|
||||
st = ServiceTemplate.objects.create(name="api-delete-tmpl")
|
||||
resp = api_client.delete(f"/api/plugins/services/service-templates/{st.pk}/")
|
||||
assert resp.status_code == 204
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestServiceAPI:
|
||||
def test_list(self, api_client, service_template, tenant):
|
||||
Service.objects.create(name="api-svc", service_template=service_template, tenant=tenant)
|
||||
resp = api_client.get("/api/plugins/services/services/")
|
||||
assert resp.status_code == 200
|
||||
assert resp.data["count"] >= 1
|
||||
|
||||
def test_create(self, api_client, service_template, tenant):
|
||||
resp = api_client.post("/api/plugins/services/services/", {
|
||||
"name": "api-created-svc",
|
||||
"service_template": service_template.pk,
|
||||
"tenant": tenant.pk,
|
||||
"status": "planned",
|
||||
}, format="json")
|
||||
assert resp.status_code == 201
|
||||
|
||||
def test_resolve_dry_run(self, api_client, db, tenant):
|
||||
from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
|
||||
|
||||
site = Site.objects.create(name="api-res-site", slug="api-res-site")
|
||||
mfr = Manufacturer.objects.create(name="api-res-mfr", slug="api-res-mfr")
|
||||
dt = DeviceType.objects.create(manufacturer=mfr, model="api-model", slug="api-model")
|
||||
role = DeviceRole.objects.create(name="api-role", slug="api-role")
|
||||
Device.objects.create(name="api-dev", site=site, device_type=dt, role=role)
|
||||
|
||||
tmpl = ServiceTemplate.objects.create(
|
||||
name="api-res-tmpl",
|
||||
status="active",
|
||||
tree=[{
|
||||
"name": "device",
|
||||
"object_type": "dcim.device",
|
||||
"quantity": 1,
|
||||
"selector": {"type": "netbox_filter", "filters": {"role": ["api-role"]}},
|
||||
"scope": "service",
|
||||
"children": [],
|
||||
}],
|
||||
)
|
||||
svc = Service.objects.create(name="api-res-svc", service_template=tmpl, tenant=tenant)
|
||||
|
||||
resp = api_client.post(f"/api/plugins/services/services/{svc.pk}/resolve/", {
|
||||
"mode": "dry_run",
|
||||
}, format="json")
|
||||
assert resp.status_code == 200
|
||||
assert resp.data["mode"] == "dry_run"
|
||||
assert resp.data["total_planned"] == 1
|
||||
|
||||
def test_resolve_commit(self, api_client, db, tenant):
|
||||
from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
|
||||
from netbox_services.models import ServiceResourceBinding
|
||||
|
||||
site = Site.objects.create(name="api-commit-site", slug="api-commit-site")
|
||||
mfr = Manufacturer.objects.create(name="api-commit-mfr", slug="api-commit-mfr")
|
||||
dt = DeviceType.objects.create(manufacturer=mfr, model="api-commit-model", slug="api-commit-model")
|
||||
role = DeviceRole.objects.create(name="api-commit-role", slug="api-commit-role")
|
||||
Device.objects.create(name="api-commit-dev", site=site, device_type=dt, role=role)
|
||||
|
||||
tmpl = ServiceTemplate.objects.create(
|
||||
name="api-commit-tmpl",
|
||||
status="active",
|
||||
tree=[{
|
||||
"name": "device",
|
||||
"object_type": "dcim.device",
|
||||
"quantity": 1,
|
||||
"selector": {"type": "netbox_filter", "filters": {"role": ["api-commit-role"]}},
|
||||
"scope": "service",
|
||||
"children": [],
|
||||
}],
|
||||
)
|
||||
svc = Service.objects.create(name="api-commit-svc", service_template=tmpl, tenant=tenant)
|
||||
|
||||
resp = api_client.post(f"/api/plugins/services/services/{svc.pk}/resolve/", {
|
||||
"mode": "commit",
|
||||
}, format="json")
|
||||
assert resp.status_code == 200
|
||||
assert resp.data["mode"] == "commit"
|
||||
assert ServiceResourceBinding.objects.filter(service=svc).count() == 1
|
||||
Reference in new issue
Block a user