< Summary - Backend C Tests - Coverage Report (WSL)

Information
Class: test_rbac_c
Assembly: src.backend.tests.unit
File(s): ./src/backend/tests/unit/test_rbac.c
Line coverage
100%
Covered lines: 76
Uncovered lines: 0
Coverable lines: 76
Total lines: 95
Line coverage: 100%
Branch coverage
50%
Covered branches: 15
Total branches: 30
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 2/18/2026 - 10:50:55 PM Line coverage: 100% (76/76) Branch coverage: 50% (15/30) Total lines: 95 2/18/2026 - 10:50:55 PM Line coverage: 100% (76/76) Branch coverage: 50% (15/30) Total lines: 95

File(s)

./src/backend/tests/unit/test_rbac.c

#LineLine coverage
 1#include "../../security/rbac.h"
 2#include <stdio.h>
 3#include <assert.h>
 4#include <string.h>
 5
 16void test_string_to_role_admin() {
 17  UserRole role = string_to_role("admin");
 18  assert(role == ROLE_ADMIN);
 19  printf("[PASS] string_to_role: admin\n");
 110}
 11
 112void test_string_to_role_teknisyen() {
 113  UserRole role = string_to_role("teknisyen");
 114  assert(role == ROLE_TEKNISYEN);
 115  printf("[PASS] string_to_role: teknisyen\n");
 116}
 17
 118void test_string_to_role_operator() {
 119  UserRole role = string_to_role("operator");
 120  assert(role == ROLE_OPERATOR);
 121  printf("[PASS] string_to_role: operator\n");
 122}
 23
 124void test_string_to_role_unknown() {
 125  UserRole role = string_to_role("invalid_role");
 126  assert(role == ROLE_UNKNOWN);
 127  printf("[PASS] string_to_role: unknown role\n");
 128}
 29
 130void test_string_to_role_null() {
 131  UserRole role = string_to_role(NULL);
 132  assert(role == ROLE_UNKNOWN);
 133  printf("[PASS] string_to_role: NULL input\n");
 134}
 35
 136void test_can_delete_assets_admin() {
 137  assert(can_delete_assets(ROLE_ADMIN) == 1);
 138  printf("[PASS] can_delete_assets: admin allowed\n");
 139}
 40
 141void test_can_delete_assets_teknisyen() {
 142  assert(can_delete_assets(ROLE_TEKNISYEN) == 0);
 143  printf("[PASS] can_delete_assets: teknisyen denied\n");
 144}
 45
 146void test_can_delete_assets_operator() {
 147  assert(can_delete_assets(ROLE_OPERATOR) == 0);
 148  printf("[PASS] can_delete_assets: operator denied\n");
 149}
 50
 151void test_can_onboard_assets_admin() {
 152  assert(can_onboard_assets(ROLE_ADMIN) == 1);
 153  printf("[PASS] can_onboard_assets: admin allowed\n");
 154}
 55
 156void test_can_onboard_assets_teknisyen() {
 157  assert(can_onboard_assets(ROLE_TEKNISYEN) == 1);
 158  printf("[PASS] can_onboard_assets: teknisyen allowed\n");
 159}
 60
 161void test_can_onboard_assets_operator() {
 162  assert(can_onboard_assets(ROLE_OPERATOR) == 0);
 163  printf("[PASS] can_onboard_assets: operator denied\n");
 164}
 65
 166void test_can_view_system_all_roles() {
 167  assert(can_view_system(ROLE_ADMIN) == 1);
 168  assert(can_view_system(ROLE_TEKNISYEN) == 1);
 169  assert(can_view_system(ROLE_OPERATOR) == 1);
 170  printf("[PASS] can_view_system: all roles allowed\n");
 171}
 72
 173void test_can_view_system_unknown() {
 174  assert(can_view_system(ROLE_UNKNOWN) == 0);
 175  printf("[PASS] can_view_system: unknown role denied\n");
 176}
 77
 178int main() {
 179  printf("=== RBAC Unit Tests ===\n");
 180  test_string_to_role_admin();
 181  test_string_to_role_teknisyen();
 182  test_string_to_role_operator();
 183  test_string_to_role_unknown();
 184  test_string_to_role_null();
 185  test_can_delete_assets_admin();
 186  test_can_delete_assets_teknisyen();
 187  test_can_delete_assets_operator();
 188  test_can_onboard_assets_admin();
 189  test_can_onboard_assets_teknisyen();
 190  test_can_onboard_assets_operator();
 191  test_can_view_system_all_roles();
 192  test_can_view_system_unknown();
 193  printf("\n✅ All RBAC tests passed!\n");
 194  return 0;
 95}

Methods/Properties