Files
metabuilder/workflow/plugins/python/string/string_sha256/test_direct.py
johndoe6345789 6e2f0c08c0 feat(workflow): add packagerepo and string.sha256 plugins
Created 11 packagerepo-specific workflow plugins:
- auth_verify_jwt - JWT token verification
- auth_check_scopes - Scope-based authorization
- parse_path - URL path parameter extraction (Express-style)
- normalize_entity - Field normalization (trim, lower, unique, sort)
- validate_entity - JSON schema validation
- kv_get/kv_put - RocksDB key-value operations
- blob_put - Filesystem blob storage with SHA-256 hashing
- index_upsert - Index entry management
- respond_json/respond_error - Response formatting

Created string.sha256 plugin:
- Compute SHA256 hash of strings/bytes
- Optional "sha256:" prefix
- Used by packagerepo for content-addressed storage

All plugins follow standard pattern:
- Class extending NodeExecutor
- Factory with create() function
- package.json with metadata
- Access external state via runtime parameter

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-22 15:14:59 +00:00

70 lines
2.2 KiB
Python

"""Direct test for StringSha256 plugin - no imports needed."""
import hashlib
def test_sha256():
"""Test SHA256 hash computation directly."""
print("Testing SHA256 hash computation...")
print()
# Test 1: String input without prefix
print("Test 1: String 'hello world' without prefix")
input_str = "hello world"
hash_obj = hashlib.sha256(input_str.encode('utf-8'))
result = hash_obj.hexdigest()
expected = "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
print(f" Input: '{input_str}'")
print(f" Expected: {expected}")
print(f" Result: {result}")
assert result == expected, "Test 1 failed!"
print(" ✓ PASSED")
print()
# Test 2: With prefix
print("Test 2: String 'hello world' with prefix")
result_with_prefix = f"sha256:{result}"
expected_with_prefix = "sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
print(f" Result: {result_with_prefix}")
print(f" Expected: {expected_with_prefix}")
assert result_with_prefix == expected_with_prefix, "Test 2 failed!"
print(" ✓ PASSED")
print()
# Test 3: Bytes input
print("Test 3: Bytes input b'hello world'")
input_bytes = b"hello world"
hash_obj = hashlib.sha256(input_bytes)
result = hash_obj.hexdigest()
print(f" Input: {input_bytes}")
print(f" Result: {result}")
assert result == expected, "Test 3 failed!"
print(" ✓ PASSED")
print()
# Test 4: Empty string
print("Test 4: Empty string")
input_str = ""
hash_obj = hashlib.sha256(input_str.encode('utf-8'))
result = hash_obj.hexdigest()
expected = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
print(f" Expected: {expected}")
print(f" Result: {result}")
assert result == expected, "Test 4 failed!"
print(" ✓ PASSED")
print()
print("=" * 60)
print("All SHA256 hash tests passed! ✓")
print("=" * 60)
print()
print("Plugin implementation verified:")
print(" - Handles string inputs")
print(" - Handles bytes inputs")
print(" - Optional 'sha256:' prefix")
print(" - Correct hash computation")
if __name__ == "__main__":
test_sha256()