Skip to content

Increase unit test coverage of credentials/attestation_verifier/ by 16.7% #40702

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

LyudmilaKostanyan
Copy link
Contributor

Summary

This PR increases credentials/attestation_verifier/ unit test coverage from 71% to 87.7% by adding additional unit tests that verify the behavior of default verifier stubs, object field initialization, and error description logic.

The new tests cover the following scenarios:

  • Default verifier behavior – confirms that all unimplemented stub methods return the correct fallback values and do not crash or cause unexpected side effects.
  • Attestation info field copying – validates that all fields (vendor ID, product ID, PAI, DAC, and certification declaration) are correctly transferred from attestation info into device info structures.
  • Null verifier setter – ensures that attempting to reset the device attestation verifier to a null pointer has no effect.
  • Error description mapping – exhaustively tests that every AttestationVerificationResult enum value maps to a human-readable string description, and verifies the fallback description for unknown enum values.
  • Revocation delegate configuration – checks that setting a null revocation delegate is handled safely and does not impact the verifier state.

Related issues

Main issue: #37234

Testing

This PR only adds new unit tests. No changes were made to production code.

Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds comprehensive unit tests for the device attestation verifier module to increase test coverage from 71% to 87.7%. The tests focus on verifying default stub behavior, field copying functionality, error handling, and description mapping.

Key changes:

  • Added complete test coverage for unimplemented verifier stub methods
  • Added validation tests for attestation info field copying into device info structures
  • Added comprehensive testing of error description mapping for all enum values

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
TestDeviceAttestationVerifier.cpp New comprehensive test file covering default verifier stubs, field copying, null handling, and error descriptions
BUILD.gn Added the new test file to the build configuration

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request significantly increases the unit test coverage for the credentials/attestation_verifier/ directory by adding a new test file with comprehensive tests for default verifier stubs, data copying, and error handling. The new tests are well-structured and cover a good range of scenarios. I have one suggestion to improve the code by using the idiomatic data_equal method for ByteSpan comparisons, which enhances readability and safety.

@LyudmilaKostanyan LyudmilaKostanyan force-pushed the DeviceAttestationVerifier branch from 62bc960 to 397e1ef Compare August 22, 2025 15:20
@LyudmilaKostanyan
Copy link
Contributor Author

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request significantly increases unit test coverage for the credentials/attestation_verifier/ directory by adding a new suite of tests. The new tests are well-structured and cover the intended scenarios, such as default verifier stub behavior, data copying in AttestationInfo, and error handling logic. The changes are a valuable addition to the codebase. I have one suggestion to improve the robustness of a test case to prevent a potential memory safety issue if the test is extended in the future.

@LyudmilaKostanyan LyudmilaKostanyan force-pushed the DeviceAttestationVerifier branch from 019544b to 755e82a Compare August 22, 2025 15:29
Copy link

github-actions bot commented Aug 22, 2025

PR #40702: Size comparison from c2f7ddb to 755e82a

Full report (36 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nxp, psoc6, qpg, realtek, stm32, telink)
platform target config section c2f7ddb 755e82a change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1105874 1105874 0 0.0
RAM 179018 179018 0 0.0
bl702 lighting-app bl702+eth FLASH 659208 659208 0 0.0
RAM 135025 135025 0 0.0
bl702+wifi FLASH 836380 836380 0 0.0
RAM 124509 124509 0 0.0
bl706+mfd+rpc+littlefs FLASH 1068388 1068388 0 0.0
RAM 117349 117349 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 897826 897826 0 0.0
RAM 105660 105660 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 981540 981540 0 0.0
RAM 109844 109844 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 768324 768324 0 0.0
RAM 103392 103392 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 779944 779944 0 0.0
RAM 108560 108560 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 725548 725548 0 0.0
RAM 96932 96932 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 710024 710024 0 0.0
RAM 97140 97140 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 552246 552246 0 0.0
RAM 205120 205120 0 0.0
lock CC3235SF_LAUNCHXL FLASH 584562 584562 0 0.0
RAM 205352 205352 0 0.0
efr32 lock-app BRD4187C FLASH 959824 959824 0 0.0
RAM 122696 122696 0 0.0
BRD4338a FLASH 755256 755248 -8 -0.0
RAM 252020 252020 0 0.0
window-app BRD4187C FLASH 1053940 1053940 0 0.0
RAM 118892 118892 0 0.0
esp32 all-clusters-app c3devkit DRAM 102536 102536 0 0.0
FLASH 1769494 1769494 0 0.0
IRAM 83862 83862 0 0.0
m5stack DRAM 121388 121388 0 0.0
FLASH 1716774 1716774 0 0.0
IRAM 117051 117051 0 0.0
nxp contact mcxw71+release FLASH 632472 632472 0 0.0
RAM 64124 64124 0 0.0
lock mcxw71+release FLASH 742264 742264 0 0.0
RAM 65200 65200 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1661588 1661588 0 0.0
RAM 211216 211216 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1582916 1582916 0 0.0
RAM 208480 208480 0 0.0
light cy8ckit_062s2_43012 FLASH 1453876 1453876 0 0.0
RAM 197200 197200 0 0.0
lock cy8ckit_062s2_43012 FLASH 1486204 1486204 0 0.0
RAM 224920 224920 0 0.0
qpg lighting-app qpg6200+debug FLASH 820984 820984 0 0.0
RAM 127644 127644 0 0.0
lock-app qpg6200+debug FLASH 758316 758316 0 0.0
RAM 118604 118604 0 0.0
realtek light-switch-app rtl8777g FLASH 704040 704040 0 0.0
RAM 106676 106676 0 0.0
lighting-app rtl8777g FLASH 755624 755624 0 0.0
RAM 127056 127056 0 0.0
stm32 light STM32WB5MM-DK FLASH 468060 468060 0 0.0
RAM 141400 141400 0 0.0
telink bridge-app tl7218x FLASH 709988 709988 0 0.0
RAM 93472 93472 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 798900 798900 0 0.0
RAM 44032 44032 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 790114 790114 0 0.0
RAM 100776 100776 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 716272 716272 0 0.0
RAM 54260 54260 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 749628 749628 0 0.0
RAM 77408 77408 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 726418 726418 0 0.0
RAM 37008 37008 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 606406 606406 0 0.0
RAM 112584 112584 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 822834 822838 4 0.0
RAM 99172 99172 0 0.0

Copy link

codecov bot commented Aug 22, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 50.90%. Comparing base (71aed77) to head (73f85d0).

Additional details and impacted files
@@            Coverage Diff             @@
##           master   #40702      +/-   ##
==========================================
+ Coverage   50.78%   50.90%   +0.11%     
==========================================
  Files        1358     1358              
  Lines       99477    99487      +10     
  Branches    12877    12875       -2     
==========================================
+ Hits        50521    50639     +118     
+ Misses      48956    48848     -108     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@LyudmilaKostanyan LyudmilaKostanyan force-pushed the DeviceAttestationVerifier branch from 755e82a to 13eb5a8 Compare August 22, 2025 21:37
Copy link

github-actions bot commented Aug 22, 2025

PR #40702: Size comparison from f1631b6 to 13eb5a8

Full report (36 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nxp, psoc6, qpg, realtek, stm32, telink)
platform target config section f1631b6 13eb5a8 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1105874 1105874 0 0.0
RAM 179018 179018 0 0.0
bl702 lighting-app bl702+eth FLASH 659208 659208 0 0.0
RAM 135025 135025 0 0.0
bl702+wifi FLASH 836380 836380 0 0.0
RAM 124509 124509 0 0.0
bl706+mfd+rpc+littlefs FLASH 1068388 1068388 0 0.0
RAM 117349 117349 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 897826 897826 0 0.0
RAM 105660 105660 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 981540 981540 0 0.0
RAM 109844 109844 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 768324 768324 0 0.0
RAM 103392 103392 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 779944 779944 0 0.0
RAM 108560 108560 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 725548 725548 0 0.0
RAM 96932 96932 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 710024 710024 0 0.0
RAM 97140 97140 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 552246 552246 0 0.0
RAM 205120 205120 0 0.0
lock CC3235SF_LAUNCHXL FLASH 584562 584562 0 0.0
RAM 205352 205352 0 0.0
efr32 lock-app BRD4187C FLASH 959824 959824 0 0.0
RAM 126408 126408 0 0.0
BRD4338a FLASH 755272 755264 -8 -0.0
RAM 255732 255732 0 0.0
window-app BRD4187C FLASH 1053940 1053940 0 0.0
RAM 122604 122604 0 0.0
esp32 all-clusters-app c3devkit DRAM 102536 102536 0 0.0
FLASH 1769494 1769494 0 0.0
IRAM 83862 83862 0 0.0
m5stack DRAM 121388 121388 0 0.0
FLASH 1716750 1716750 0 0.0
IRAM 117051 117051 0 0.0
nxp contact mcxw71+release FLASH 632472 632472 0 0.0
RAM 64124 64124 0 0.0
lock mcxw71+release FLASH 742264 742264 0 0.0
RAM 65200 65200 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1661588 1661588 0 0.0
RAM 211216 211216 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1582916 1582916 0 0.0
RAM 208480 208480 0 0.0
light cy8ckit_062s2_43012 FLASH 1453876 1453876 0 0.0
RAM 197200 197200 0 0.0
lock cy8ckit_062s2_43012 FLASH 1486204 1486204 0 0.0
RAM 224920 224920 0 0.0
qpg lighting-app qpg6200+debug FLASH 820984 820984 0 0.0
RAM 127644 127644 0 0.0
lock-app qpg6200+debug FLASH 758316 758316 0 0.0
RAM 118604 118604 0 0.0
realtek light-switch-app rtl8777g FLASH 704040 704040 0 0.0
RAM 106676 106676 0 0.0
lighting-app rtl8777g FLASH 755624 755624 0 0.0
RAM 127056 127056 0 0.0
stm32 light STM32WB5MM-DK FLASH 468060 468060 0 0.0
RAM 141400 141400 0 0.0
telink bridge-app tl7218x FLASH 709988 709988 0 0.0
RAM 93472 93472 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 798900 798900 0 0.0
RAM 44032 44032 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 790114 790114 0 0.0
RAM 100776 100776 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 716272 716272 0 0.0
RAM 54260 54260 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 749628 749628 0 0.0
RAM 77408 77408 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 726418 726418 0 0.0
RAM 37008 37008 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 606406 606406 0 0.0
RAM 112584 112584 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 822834 822838 4 0.0
RAM 99172 99172 0 0.0

- Added UnimplementedDACVerifierStub test
- Added AttestationDeviceInfoCopiesFields test
- Added SetDeviceAttestationVerifierNullptrArgument test
- Added AttestationResultDescription test
- Added SetRevocationDelegate test
- Integrated the file into the build
@LyudmilaKostanyan LyudmilaKostanyan force-pushed the DeviceAttestationVerifier branch from 13eb5a8 to 73f85d0 Compare August 24, 2025 18:39
Copy link

github-actions bot commented Aug 24, 2025

PR #40702: Size comparison from 71aed77 to 73f85d0

Full report (36 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nxp, psoc6, qpg, realtek, stm32, telink)
platform target config section 71aed77 73f85d0 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1105874 1105874 0 0.0
RAM 179018 179018 0 0.0
bl702 lighting-app bl702+eth FLASH 659208 659208 0 0.0
RAM 135025 135025 0 0.0
bl702+wifi FLASH 836380 836380 0 0.0
RAM 124509 124509 0 0.0
bl706+mfd+rpc+littlefs FLASH 1068388 1068388 0 0.0
RAM 117349 117349 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 897826 897826 0 0.0
RAM 105660 105660 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 981540 981540 0 0.0
RAM 109844 109844 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 768324 768324 0 0.0
RAM 103392 103392 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 779944 779944 0 0.0
RAM 108560 108560 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 725548 725548 0 0.0
RAM 96932 96932 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 710024 710024 0 0.0
RAM 97140 97140 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 552246 552246 0 0.0
RAM 205120 205120 0 0.0
lock CC3235SF_LAUNCHXL FLASH 584562 584562 0 0.0
RAM 205352 205352 0 0.0
efr32 lock-app BRD4187C FLASH 959824 959824 0 0.0
RAM 126408 126408 0 0.0
BRD4338a FLASH 755272 755264 -8 -0.0
RAM 255732 255732 0 0.0
window-app BRD4187C FLASH 1053940 1053940 0 0.0
RAM 122604 122604 0 0.0
esp32 all-clusters-app c3devkit DRAM 102536 102536 0 0.0
FLASH 1769494 1769494 0 0.0
IRAM 83862 83862 0 0.0
m5stack DRAM 121388 121388 0 0.0
FLASH 1716750 1716750 0 0.0
IRAM 117051 117051 0 0.0
nxp contact mcxw71+release FLASH 632472 632472 0 0.0
RAM 64124 64124 0 0.0
lock mcxw71+release FLASH 742264 742264 0 0.0
RAM 65200 65200 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1661588 1661588 0 0.0
RAM 211216 211216 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1582916 1582916 0 0.0
RAM 208480 208480 0 0.0
light cy8ckit_062s2_43012 FLASH 1453876 1453876 0 0.0
RAM 197200 197200 0 0.0
lock cy8ckit_062s2_43012 FLASH 1486204 1486204 0 0.0
RAM 224920 224920 0 0.0
qpg lighting-app qpg6200+debug FLASH 820984 820984 0 0.0
RAM 127644 127644 0 0.0
lock-app qpg6200+debug FLASH 758316 758316 0 0.0
RAM 118604 118604 0 0.0
realtek light-switch-app rtl8777g FLASH 704040 704040 0 0.0
RAM 106676 106676 0 0.0
lighting-app rtl8777g FLASH 755624 755624 0 0.0
RAM 127056 127056 0 0.0
stm32 light STM32WB5MM-DK FLASH 468060 468060 0 0.0
RAM 141400 141400 0 0.0
telink bridge-app tl7218x FLASH 709988 709988 0 0.0
RAM 93472 93472 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 798900 798900 0 0.0
RAM 44032 44032 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 790114 790114 0 0.0
RAM 100776 100776 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 716272 716272 0 0.0
RAM 54260 54260 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 749628 749628 0 0.0
RAM 77408 77408 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 726418 726418 0 0.0
RAM 37008 37008 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 606406 606406 0 0.0
RAM 112584 112584 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 822834 822838 4 0.0
RAM 99172 99172 0 0.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

Successfully merging this pull request may close these issues.

1 participant