Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 35 additions & 25 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = false
insert_final_newline = true
trim_trailing_whitespace = true
max_line_length = 100
tab_width = 2
ij_continuation_indent_size = 2
Expand All @@ -15,7 +16,6 @@ ij_visual_guides = 100
ij_wrap_on_typing = false

[*.css]
ij_continuation_indent_size = 2
ij_visual_guides = none
ij_css_align_closing_brace_with_properties = false
ij_css_blank_lines_around_nested_selector = 1
Expand Down Expand Up @@ -333,7 +333,7 @@ ij_typescript_ternary_operation_wrap = on_every_item
ij_typescript_union_types_wrap = on_every_item
ij_typescript_use_chained_calls_group_indents = false
ij_typescript_use_double_quotes = false
ij_typescript_use_explicit_js_extension = global
ij_typescript_use_explicit_js_extension = auto
ij_typescript_use_path_mapping = always
ij_typescript_use_public_modifier = false
ij_typescript_use_semicolon_after_statement = true
Expand All @@ -350,9 +350,10 @@ ij_shell_minify_program = false
ij_shell_redirect_followed_by_space = false
ij_shell_switch_cases_indented = false

[{*.cjs,*.js,*.mjs}]
[{*.cjs,*.es6,*.js,*.mjs,*.jsx}]
indent_size = 2
tab_width = 2
ij_continuation_indent_size = 2
ij_visual_guides = none
ij_javascript_align_imports = false
ij_javascript_align_multiline_array_initializer_expression = false
ij_javascript_align_multiline_binary_operation = false
Expand All @@ -368,39 +369,45 @@ ij_javascript_align_var_statements = 0
ij_javascript_array_initializer_new_line_after_left_brace = true
ij_javascript_array_initializer_right_brace_on_new_line = true
ij_javascript_array_initializer_wrap = on_every_item
ij_javascript_assignment_wrap = on_every_item
ij_javascript_binary_operation_sign_on_next_line = true
ij_javascript_binary_operation_wrap = on_every_item
ij_javascript_assignment_wrap = off
ij_javascript_binary_operation_sign_on_next_line = false
ij_javascript_binary_operation_wrap = normal
ij_javascript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/**
ij_javascript_blank_lines_after_imports = 1
ij_javascript_blank_lines_around_class = 1
ij_javascript_blank_lines_around_field = 0
ij_javascript_blank_lines_around_function = 1
ij_javascript_blank_lines_around_method = 1
ij_javascript_block_brace_style = end_of_line
ij_javascript_block_comment_add_space = false
ij_javascript_block_comment_at_first_column = true
ij_javascript_call_parameters_new_line_after_left_paren = false
ij_javascript_call_parameters_right_paren_on_new_line = false
ij_javascript_call_parameters_wrap = on_every_item
ij_javascript_call_parameters_wrap = normal
ij_javascript_catch_on_new_line = false
ij_javascript_chained_call_dot_on_new_line = true
ij_javascript_chained_call_dot_on_new_line = false
ij_javascript_class_brace_style = end_of_line
ij_javascript_class_decorator_wrap = split_into_lines
ij_javascript_class_field_decorator_wrap = off
ij_javascript_class_method_decorator_wrap = off
ij_javascript_comma_on_new_line = false
ij_javascript_do_while_brace_force = always
ij_javascript_do_while_brace_force = never
ij_javascript_else_on_new_line = false
ij_javascript_enforce_trailing_comma = remove
ij_javascript_enforce_trailing_comma = whenmultiline
ij_javascript_extends_keyword_wrap = off
ij_javascript_extends_list_wrap = off
ij_javascript_field_prefix = _
ij_javascript_file_name_style = relaxed
ij_javascript_finally_on_new_line = false
ij_javascript_for_brace_force = always
ij_javascript_for_brace_force = never
ij_javascript_for_statement_new_line_after_left_paren = false
ij_javascript_for_statement_right_paren_on_new_line = false
ij_javascript_for_statement_wrap = off
ij_javascript_force_quote_style = true
ij_javascript_force_semicolon_style = true
ij_javascript_function_expression_brace_style = end_of_line
ij_javascript_if_brace_force = always
ij_javascript_function_parameter_decorator_wrap = off
ij_javascript_if_brace_force = never
ij_javascript_import_merge_members = global
ij_javascript_import_prefer_absolute_path = global
ij_javascript_import_sort_members = true
Expand All @@ -421,10 +428,11 @@ ij_javascript_line_comment_add_space = true
ij_javascript_line_comment_at_first_column = false
ij_javascript_method_brace_style = end_of_line
ij_javascript_method_call_chain_wrap = on_every_item
ij_javascript_method_parameters_new_line_after_left_paren = false
ij_javascript_method_parameters_new_line_after_left_paren = true
ij_javascript_method_parameters_right_paren_on_new_line = false
ij_javascript_method_parameters_wrap = on_every_item
ij_javascript_method_parameters_wrap = normal
ij_javascript_object_literal_wrap = on_every_item
ij_javascript_object_types_wrap = on_every_item
ij_javascript_parentheses_expression_new_line_after_left_paren = false
ij_javascript_parentheses_expression_right_paren_on_new_line = false
ij_javascript_place_assignment_sign_on_next_line = false
Expand All @@ -433,7 +441,8 @@ ij_javascript_prefer_explicit_types_function_expression_returns = false
ij_javascript_prefer_explicit_types_function_returns = false
ij_javascript_prefer_explicit_types_vars_fields = false
ij_javascript_prefer_parameters_wrap = false
ij_javascript_reformat_c_style_comments = true
ij_javascript_property_prefix =
ij_javascript_reformat_c_style_comments = false
ij_javascript_space_after_colon = true
ij_javascript_space_after_comma = true
ij_javascript_space_after_dots_in_rest_parameter = false
Expand All @@ -459,12 +468,12 @@ ij_javascript_space_before_for_left_brace = true
ij_javascript_space_before_for_parentheses = true
ij_javascript_space_before_for_semicolon = false
ij_javascript_space_before_function_left_parenth = true
ij_javascript_space_before_generator_mult = false
ij_javascript_space_before_generator_mult = true
ij_javascript_space_before_if_left_brace = true
ij_javascript_space_before_if_parentheses = true
ij_javascript_space_before_method_call_parentheses = false
ij_javascript_space_before_method_left_brace = true
ij_javascript_space_before_method_parentheses = false
ij_javascript_space_before_method_parentheses = true
ij_javascript_space_before_property_colon = false
ij_javascript_space_before_quest = true
ij_javascript_space_before_switch_left_brace = true
Expand Down Expand Up @@ -507,12 +516,13 @@ ij_javascript_ternary_operation_wrap = on_every_item
ij_javascript_union_types_wrap = on_every_item
ij_javascript_use_chained_calls_group_indents = false
ij_javascript_use_double_quotes = false
ij_javascript_use_explicit_js_extension = global
ij_javascript_use_explicit_js_extension = auto
ij_javascript_use_import_type = auto
ij_javascript_use_path_mapping = always
ij_javascript_use_public_modifier = false
ij_javascript_use_semicolon_after_statement = true
ij_javascript_var_declaration_wrap = on_every_item
ij_javascript_while_brace_force = always
ij_javascript_use_semicolon_after_statement = false
ij_javascript_var_declaration_wrap = normal
ij_javascript_while_brace_force = never
ij_javascript_while_on_new_line = false
ij_javascript_wrap_comments = false

Expand Down Expand Up @@ -648,8 +658,8 @@ ij_html_keep_line_breaks_in_text = true
ij_html_keep_whitespaces = false
ij_html_keep_whitespaces_inside = span,pre,textarea
ij_html_line_comment_at_first_column = true
ij_html_new_line_after_last_attribute = when multiline
ij_html_new_line_before_first_attribute = when multiline
ij_html_new_line_after_last_attribute = when_multiline
ij_html_new_line_before_first_attribute = when_multiline
ij_html_quote_style = double
ij_html_remove_new_line_before_tags = br
ij_html_space_after_tag_name = false
Expand Down
34 changes: 0 additions & 34 deletions .eslintrc.cjs

This file was deleted.

17 changes: 0 additions & 17 deletions .eslintrc.json

This file was deleted.

67 changes: 67 additions & 0 deletions .github/workflows/cipp_api_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
name: CIPP API Tests
on:
pull_request:
branches:
- dev
- main
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
api-tests:
if: github.repository_owner == 'KelvinTegelaar'
name: API Shape & Integration Tests
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v6

- name: Run Shape Tests
id: shape-tests
shell: pwsh
env:
CIPP_API_URL: ${{ secrets.CIPP_TEST_API_URL }}
CIPP_CLIENT_ID: ${{ secrets.CIPP_TEST_CLIENT_ID }}
CIPP_CLIENT_SECRET: ${{ secrets.CIPP_TEST_CLIENT_SECRET }}
CIPP_TENANT_ID: ${{ secrets.CIPP_TEST_TENANT_ID }}
CIPP_API_SCOPE: ${{ secrets.CIPP_TEST_API_SCOPE }}
CIPP_TENANT_FILTER: ${{ secrets.CIPP_TEST_TENANT_FILTER }}
run: |
./Tools/Invoke-CippShapeTests.ps1 `
-CippApiUrl $env:CIPP_API_URL `
-CippClientId $env:CIPP_CLIENT_ID `
-CippClientSecret $env:CIPP_CLIENT_SECRET `
-CippTenantId $env:CIPP_TENANT_ID `
-CippApiScope $env:CIPP_API_SCOPE `
-TenantFilter $env:CIPP_TENANT_FILTER `
-CI

- name: Run Integration Tests
if: always()
id: integration-tests
shell: pwsh
env:
CIPP_API_URL: ${{ secrets.CIPP_TEST_API_URL }}
CIPP_CLIENT_ID: ${{ secrets.CIPP_TEST_CLIENT_ID }}
CIPP_CLIENT_SECRET: ${{ secrets.CIPP_TEST_CLIENT_SECRET }}
CIPP_TENANT_ID: ${{ secrets.CIPP_TEST_TENANT_ID }}
CIPP_API_SCOPE: ${{ secrets.CIPP_TEST_API_SCOPE }}
CIPP_TENANT_FILTER: ${{ secrets.CIPP_TEST_TENANT_FILTER }}
run: |
./Tools/Invoke-CippIntegrationTests.ps1 `
-CippApiUrl $env:CIPP_API_URL `
-CippClientId $env:CIPP_CLIENT_ID `
-CippClientSecret $env:CIPP_CLIENT_SECRET `
-CippTenantId $env:CIPP_TENANT_ID `
-CippApiScope $env:CIPP_API_SCOPE `
-TenantFilter $env:CIPP_TENANT_FILTER `
-CI

- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v7
with:
name: test-results
path: Tests/Shapes/test-results.json
retention-days: 30
2 changes: 1 addition & 1 deletion .github/workflows/cipp_dev_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:

# Upload to Azure Blob Storage
- name: Azure Blob Upload
uses: LanceMcCarthy/Action-AzureBlobUpload@v3.9.0
uses: LanceMcCarthy/Action-AzureBlobUpload@v3.11.0
with:
connection_string: ${{ secrets.AZURE_CONNECTION_STRING }}
container_name: cipp
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cipp_frontend_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:

# Upload to Azure Blob Storage
- name: Azure Blob Upload
uses: LanceMcCarthy/Action-AzureBlobUpload@v3.9.0
uses: LanceMcCarthy/Action-AzureBlobUpload@v3.11.0
with:
connection_string: ${{ secrets.AZURE_CONNECTION_STRING }}
container_name: cipp
Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,10 @@ app.log
# AI rules
.*/rules
AGENTS.md

# jetbrains
.idea

# azurite
__*
AzuriteConfig
2 changes: 2 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
build
out
6 changes: 6 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"trailingComma": "es5",
"tabWidth": 2,
"semi": false,
"singleQuote": true
}
14 changes: 14 additions & 0 deletions Tests/Shapes/GetCippAlerts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"_metadata": {
"endpoint": "GetCippAlerts",
"generatedAt": "2026-04-03T23:40:00.7267346+02:00",
"tenantFilter": null,
"requiresTenant": false
},
"shape": {
"Alert": "string",
"link": "string",
"title": "string",
"type": "string"
}
}
16 changes: 16 additions & 0 deletions Tests/Shapes/GetVersion.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"_metadata": {
"endpoint": "GetVersion",
"generatedAt": "2026-04-03T23:40:01.5268074+02:00",
"tenantFilter": null,
"requiresTenant": false
},
"shape": {
"LocalCIPPAPIVersion": "string",
"LocalCIPPVersion": "null",
"OutOfDateCIPP": "bool",
"OutOfDateCIPPAPI": "bool",
"RemoteCIPPAPIVersion": "string",
"RemoteCIPPVersion": "string"
}
}
38 changes: 38 additions & 0 deletions Tests/Shapes/ListAdminPortalLicenses.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"_metadata": {
"endpoint": "ListAdminPortalLicenses",
"generatedAt": "2026-04-03T23:40:50.5295175+02:00",
"tenantFilter": "7ngn50.onmicrosoft.com",
"requiresTenant": true
},
"shape": {
"aadSkuId": "string",
"aadSkuPartNumber": "string",
"allotments": "null",
"allotmentsMetadata": {
"allotmentsCount": "number",
"catalogIdsCount": {},
"consumedUnits": "number",
"licenseCount": "number"
},
"appliesTo": "string",
"capabilityStatus": "string",
"consumedUnits": "number",
"displayName": "string",
"prepaidUnits": {
"enabled": "number",
"suspended": "number",
"warning": "number"
},
"services": {
"_type": "array",
"_element": {
"appliesTo": "truncated",
"displayName": "truncated",
"provisioningStatus": "truncated",
"serviceId": "truncated",
"serviceName": "truncated"
}
}
}
}
Loading