smart_health_cards_test_kit 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 11e936a7ba17d8d7c809078bbdc0c4d86863fc5ac1b51a0349d517a412ad5610
         | 
| 4 | 
            +
              data.tar.gz: 57a8d93352c62a2dde7e124b03b3977fdb7c015a97891d455777941498991436
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4ff7902279565ad4de1c9629820e7a0df41b60724d86762f61ff9dda9b49656d1bb3e9088e803f088e0e29def99264c0efb05d37febe2b763a4642250c6d26af
         | 
| 7 | 
            +
              data.tar.gz: 577a0d8912eb002fd314c2cc2b2b43fa09ee7af80c8a19cbbb3bbdeedaa2903783ac9ab4aaa3e75ca50d122137561942b34d8f205c2ce8d7bd3e5de7cb25e85d
         | 
| @@ -0,0 +1,52 @@ | |
| 1 | 
            +
            require_relative 'version'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SmartHealthCardsTestKit
         | 
| 4 | 
            +
              class Metadata < Inferno::TestKit
         | 
| 5 | 
            +
                id :smart_health_cards
         | 
| 6 | 
            +
                title 'SMART Health Cards'
         | 
| 7 | 
            +
                description <<~DESCRIPTION
         | 
| 8 | 
            +
                  The SMART Health Cards Test Kit provides an
         | 
| 9 | 
            +
                  executable set of tests for the [SMART Health Cards Framework v1.4.0](https://spec.smarthealth.cards/).
         | 
| 10 | 
            +
                  This test kit simulates downloading and validating a SMART Health Card.
         | 
| 11 | 
            +
                  <!-- break -->
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  This test kit is [open source](https://github.com/inferno-framework/smart-health-cards-test-kit#license)
         | 
| 14 | 
            +
                  and freely available for use or adoption by the health IT community including EHR vendors, health app
         | 
| 15 | 
            +
                  developers, and testing labs. It is built using the [Inferno Framework](https://inferno-framework.github.io/inferno-core/).
         | 
| 16 | 
            +
                  The Inferno Framework is designed for reuse and aims to make it easier to build test kits for any
         | 
| 17 | 
            +
                  FHIR-based data exchange.
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  ## Status
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  These tests are intended to allow server implementers to perform checks of their server against SMART Health Cards Framework requrirements.
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  The test kit currently tests the following requirements:
         | 
| 24 | 
            +
                  - Download and validate a health card via file download
         | 
| 25 | 
            +
                  - Download and validate a health card via FHIR $health-cards-issue operation
         | 
| 26 | 
            +
                  - Download and validate a health card via QR Code scanning
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  See the test descriptions within the test kit for detail on the specific validations performed as part of testing these requirements.
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  ## Repository
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  The SMART Health Cards Test Kit GitHub repository can be [found here](https://github.com/inferno-framework/smart-health-cards-test-kit).
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  ## Providing Feedback and Reporting Issues
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  We welcome feedback on the tests, including but not limited to the following areas:
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  - Validation logic, such as potential bugs, lax checks, and unexpected failures.
         | 
| 39 | 
            +
                  - Requirements coverage, such as requirements that have been missed, tests that necessitate features that the IG does not require, or other issues with the interpretation of the IG's requirements.
         | 
| 40 | 
            +
                  - User experience, such as confusing or missing information in the test UI.
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  Please report any issues with this set of tests in the [issues section](https://github.com/inferno-framework/smart-health-cards-test-kit/issues) of the repository.
         | 
| 43 | 
            +
                DESCRIPTION
         | 
| 44 | 
            +
                suite_ids [:smart_health_cards]
         | 
| 45 | 
            +
                tags ['SMART Health Cards']
         | 
| 46 | 
            +
                last_updated LAST_UPDATED
         | 
| 47 | 
            +
                version VERSION
         | 
| 48 | 
            +
                maturity 'Low'
         | 
| 49 | 
            +
                authors ['Yunwei Wang']
         | 
| 50 | 
            +
                repo 'https://github.com/inferno-framework/smart-health-cards-test-kit'
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
            end
         | 
| @@ -0,0 +1,84 @@ | |
| 1 | 
            +
            require 'json'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative 'version'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            require_relative 'utils/jws'
         | 
| 6 | 
            +
            require_relative 'health_card'
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            require_relative 'shc_fhir_validation'
         | 
| 9 | 
            +
            require_relative 'shc_header_verification'
         | 
| 10 | 
            +
            require_relative 'shc_payload_verification'
         | 
| 11 | 
            +
            require_relative 'shc_signature_verification'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            require_relative 'file_download_group'
         | 
| 14 | 
            +
            require_relative 'qr_code_group'
         | 
| 15 | 
            +
            require_relative 'fhir_operation_group'
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            module SmartHealthCardsTestKit
         | 
| 18 | 
            +
              class SmartHealthCardsTestSuite < Inferno::TestSuite
         | 
| 19 | 
            +
                id :smart_health_cards
         | 
| 20 | 
            +
                title 'SMART Health Cards'
         | 
| 21 | 
            +
                description %(
         | 
| 22 | 
            +
                  The US Core Test Kit tests systems for their conformance to the
         | 
| 23 | 
            +
                  [SMART Health Cards Framework v1.4.0](https://spec.smarthealth.cards/)
         | 
| 24 | 
            +
                )
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                links [
         | 
| 27 | 
            +
                  {
         | 
| 28 | 
            +
                    type: 'source_code',
         | 
| 29 | 
            +
                    label: 'Open Source',
         | 
| 30 | 
            +
                    url: 'https://github.com/inferno-framework/smart-health-cards-test-kit/'
         | 
| 31 | 
            +
                  },
         | 
| 32 | 
            +
                  {
         | 
| 33 | 
            +
                    type: 'report_issue',
         | 
| 34 | 
            +
                    label: 'Report Issue',
         | 
| 35 | 
            +
                    url: 'https://github.com/inferno-framework/smart-health-cards-test-kit/issues/'
         | 
| 36 | 
            +
                  },
         | 
| 37 | 
            +
                  {
         | 
| 38 | 
            +
                    type: 'download',
         | 
| 39 | 
            +
                    label: 'Download',
         | 
| 40 | 
            +
                    url: 'https://github.com/inferno-framework/smart-health-cards-test-kit/releases/'
         | 
| 41 | 
            +
                  }
         | 
| 42 | 
            +
                ]
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                # All FHIR validation requsets will use this FHIR validator
         | 
| 45 | 
            +
                fhir_resource_validator do
         | 
| 46 | 
            +
                  # igs 'identifier#version' # Use this method for published IGs/versions
         | 
| 47 | 
            +
                  # igs 'igs/filename.tgz'   # Use this otherwise
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  exclude_message do |message|
         | 
| 50 | 
            +
                    message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                # HTTP Routes
         | 
| 55 | 
            +
                resume_test_route :post, '/post_qr_code' do |request|
         | 
| 56 | 
            +
                  request.query_parameters['id']
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                scan_qr_code_html = File.read(File.join(__dir__, './views/scan_qr_code.html'))
         | 
| 60 | 
            +
                scan_qr_code_html_route_handler = proc { [200, { 'Content-Type' => 'text/html' }, [scan_qr_code_html]] }
         | 
| 61 | 
            +
                route(:get, '/scan_qr_code', scan_qr_code_html_route_handler)
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                qr_scanner = File.read(File.join(__dir__, './javascript/qr-scanner.min.js'))
         | 
| 64 | 
            +
                qr_scanner_route_handler = proc { [200, { 'Content-Type' => 'text/javascript' }, [qr_scanner]] }
         | 
| 65 | 
            +
                route(:get, '/qr-scanner.min.js', qr_scanner_route_handler)
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                qr_scanner_worker = File.read(File.join(__dir__, './javascript/qr-scanner-worker.min.js'))
         | 
| 68 | 
            +
                qr_scanner_worker_route_handler = proc { [200, { 'Content-Type' => 'text/javascript' }, [qr_scanner_worker]] }
         | 
| 69 | 
            +
                route(:get, '/qr-scanner-worker.min.js', qr_scanner_worker_route_handler)
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                js_qr = File.read(File.join(__dir__, './javascript/jsQR.js'))
         | 
| 72 | 
            +
                js_qr_route_handler = proc { [200, { 'Content-Type' => 'text/javascript' }, [js_qr]] }
         | 
| 73 | 
            +
                route(:get, '/jsqr.js', js_qr_route_handler)
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                upload_html = File.read(File.join(__dir__, './views/upload_qr_code.html'))
         | 
| 76 | 
            +
                upload_html_route_handler = proc { [200, { 'Content-Type' => 'text/html' }, [upload_html]] }
         | 
| 77 | 
            +
                route(:get, '/upload_qr_code', upload_html_route_handler)
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                # Tests and TestGroups
         | 
| 80 | 
            +
                group from: :shc_file_download_group
         | 
| 81 | 
            +
                group from: :shc_fhir_operation_group
         | 
| 82 | 
            +
                group from: :shc_qr_code_group
         | 
| 83 | 
            +
              end
         | 
| 84 | 
            +
            end
         | 
| @@ -1,67 +1,5 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            require_relative 'smart_health_cards_test_kit/version'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            require_relative 'smart_health_cards_test_kit/utils/jws'
         | 
| 6 | 
            -
            require_relative 'smart_health_cards_test_kit/health_card'
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            require_relative 'smart_health_cards_test_kit/shc_fhir_validation'
         | 
| 9 | 
            -
            require_relative 'smart_health_cards_test_kit/shc_header_verification'
         | 
| 10 | 
            -
            require_relative 'smart_health_cards_test_kit/shc_payload_verification'
         | 
| 11 | 
            -
            require_relative 'smart_health_cards_test_kit/shc_signature_verification'
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            require_relative 'smart_health_cards_test_kit/file_download_group'
         | 
| 14 | 
            -
            require_relative 'smart_health_cards_test_kit/qr_code_group'
         | 
| 15 | 
            -
            require_relative 'smart_health_cards_test_kit/fhir_operation_group'
         | 
| 1 | 
            +
            require_relative 'smart_health_cards_test_kit/smart_health_cards_test_suite'
         | 
| 2 | 
            +
            require_relative 'smart_health_cards_test_kit/metadata'
         | 
| 16 3 |  | 
| 17 4 | 
             
            module SmartHealthCardsTestKit
         | 
| 18 | 
            -
              class SmartHealthCardsTestSuite < Inferno::TestSuite
         | 
| 19 | 
            -
                id :smart_health_cards
         | 
| 20 | 
            -
                title 'SMART Health Cards'
         | 
| 21 | 
            -
                description %(
         | 
| 22 | 
            -
                  The US Core Test Kit tests systems for their conformance to the
         | 
| 23 | 
            -
                  [SMART Health Cards Framework v1.4.0](https://spec.smarthealth.cards/)
         | 
| 24 | 
            -
                )
         | 
| 25 | 
            -
                version VERSION
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                # All FHIR validation requsets will use this FHIR validator
         | 
| 28 | 
            -
                fhir_resource_validator do
         | 
| 29 | 
            -
                  # igs 'identifier#version' # Use this method for published IGs/versions
         | 
| 30 | 
            -
                  # igs 'igs/filename.tgz'   # Use this otherwise
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                  exclude_message do |message|
         | 
| 33 | 
            -
                    message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
         | 
| 34 | 
            -
                  end
         | 
| 35 | 
            -
                end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                # HTTP Routes
         | 
| 38 | 
            -
                resume_test_route :post, '/post_qr_code' do |request|
         | 
| 39 | 
            -
                  request.query_parameters['id']
         | 
| 40 | 
            -
                end
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                scan_qr_code_html = File.read(File.join(__dir__, './smart_health_cards_test_kit/views/scan_qr_code.html'))
         | 
| 43 | 
            -
                scan_qr_code_html_route_handler = proc { [200, { 'Content-Type' => 'text/html' }, [scan_qr_code_html]] }
         | 
| 44 | 
            -
                route(:get, '/scan_qr_code', scan_qr_code_html_route_handler)
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                qr_scanner = File.read(File.join(__dir__, './smart_health_cards_test_kit/javascript/qr-scanner.min.js'))
         | 
| 47 | 
            -
                qr_scanner_route_handler = proc { [200, { 'Content-Type' => 'text/javascript' }, [qr_scanner]] }
         | 
| 48 | 
            -
                route(:get, '/qr-scanner.min.js', qr_scanner_route_handler)
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                qr_scanner_worker = File.read(File.join(__dir__, './smart_health_cards_test_kit/javascript/qr-scanner-worker.min.js'))
         | 
| 51 | 
            -
                qr_scanner_worker_route_handler = proc { [200, { 'Content-Type' => 'text/javascript' }, [qr_scanner_worker]] }
         | 
| 52 | 
            -
                route(:get, '/qr-scanner-worker.min.js', qr_scanner_worker_route_handler)
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                js_qr = File.read(File.join(__dir__, './smart_health_cards_test_kit/javascript/jsQR.js'))
         | 
| 55 | 
            -
                js_qr_route_handler = proc { [200, { 'Content-Type' => 'text/javascript' }, [js_qr]] }
         | 
| 56 | 
            -
                route(:get, '/jsqr.js', js_qr_route_handler)
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                upload_html = File.read(File.join(__dir__, './smart_health_cards_test_kit/views/upload_qr_code.html'))
         | 
| 59 | 
            -
                upload_html_route_handler = proc { [200, { 'Content-Type' => 'text/html' }, [upload_html]] }
         | 
| 60 | 
            -
                route(:get, '/upload_qr_code', upload_html_route_handler)
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                # Tests and TestGroups
         | 
| 63 | 
            -
                group from: :shc_file_download_group
         | 
| 64 | 
            -
                group from: :shc_fhir_operation_group
         | 
| 65 | 
            -
                group from: :shc_qr_code_group
         | 
| 66 | 
            -
              end
         | 
| 67 5 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: smart_health_cards_test_kit
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.10.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Yunwei Wang
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2025- | 
| 11 | 
            +
            date: 2025-02-20 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: inferno_core
         | 
| @@ -16,14 +16,14 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - ">="
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 0. | 
| 19 | 
            +
                    version: 0.6.4
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: 0. | 
| 26 | 
            +
                    version: 0.6.4
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: rqrcode
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -123,11 +123,13 @@ files: | |
| 123 123 | 
             
            - lib/smart_health_cards_test_kit/javascript/jsQR.js
         | 
| 124 124 | 
             
            - lib/smart_health_cards_test_kit/javascript/qr-scanner-worker.min.js
         | 
| 125 125 | 
             
            - lib/smart_health_cards_test_kit/javascript/qr-scanner.min.js
         | 
| 126 | 
            +
            - lib/smart_health_cards_test_kit/metadata.rb
         | 
| 126 127 | 
             
            - lib/smart_health_cards_test_kit/qr_code_group.rb
         | 
| 127 128 | 
             
            - lib/smart_health_cards_test_kit/shc_fhir_validation.rb
         | 
| 128 129 | 
             
            - lib/smart_health_cards_test_kit/shc_header_verification.rb
         | 
| 129 130 | 
             
            - lib/smart_health_cards_test_kit/shc_payload_verification.rb
         | 
| 130 131 | 
             
            - lib/smart_health_cards_test_kit/shc_signature_verification.rb
         | 
| 132 | 
            +
            - lib/smart_health_cards_test_kit/smart_health_cards_test_suite.rb
         | 
| 131 133 | 
             
            - lib/smart_health_cards_test_kit/utils/chunking_utils.rb
         | 
| 132 134 | 
             
            - lib/smart_health_cards_test_kit/utils/encoding.rb
         | 
| 133 135 | 
             
            - lib/smart_health_cards_test_kit/utils/jws.rb
         | 
| @@ -146,6 +148,7 @@ licenses: | |
| 146 148 | 
             
            metadata:
         | 
| 147 149 | 
             
              homepage_uri: https://github.com/inferno-framework/smart-health-cards-test-kit
         | 
| 148 150 | 
             
              source_code_uri: https://github.com/inferno-framework/smart-health-cards-test-kit
         | 
| 151 | 
            +
              inferno_test_kit: 'true'
         | 
| 149 152 | 
             
            post_install_message:
         | 
| 150 153 | 
             
            rdoc_options: []
         | 
| 151 154 | 
             
            require_paths:
         | 
| @@ -154,14 +157,14 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 154 157 | 
             
              requirements:
         | 
| 155 158 | 
             
              - - ">="
         | 
| 156 159 | 
             
                - !ruby/object:Gem::Version
         | 
| 157 | 
            -
                  version: 3. | 
| 160 | 
            +
                  version: 3.3.6
         | 
| 158 161 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 159 162 | 
             
              requirements:
         | 
| 160 163 | 
             
              - - ">="
         | 
| 161 164 | 
             
                - !ruby/object:Gem::Version
         | 
| 162 165 | 
             
                  version: '0'
         | 
| 163 166 | 
             
            requirements: []
         | 
| 164 | 
            -
            rubygems_version: 3.5. | 
| 167 | 
            +
            rubygems_version: 3.5.22
         | 
| 165 168 | 
             
            signing_key:
         | 
| 166 169 | 
             
            specification_version: 4
         | 
| 167 170 | 
             
            summary: Smart Health Cards test kit
         |