Files
wt cf25e28c28
Rust verification / test (push) Successful in 4m10s
initial commit
2026-10-28 15:59:54 +07:00

563 lines
16 KiB
JSON

{
"recorded_at_utc": "2026-10-27T02:52:00.131691+00:00",
"reference": {
"upstream_commit": "3516c776a1fcbd83d234efc007e3a49807d6ed91",
"php": "8.4.27",
"laravel": "13.29.0",
"composer_lock_sha256": "b1376d21c517d700bc48b196e9dc2b30257caf25774e315ff9d1bf8a2411241a",
"database": "fresh disposable SQLite, all 42 migrations completed; independent temporary application storage",
"production_dependencies": 110,
"required_extensions_loaded": true,
"composer_dependencies_total_with_dev": 153,
"materialized_sqlite_ddl": "sqlite-reference-schema.sql",
"tables": 22,
"explicit_indexes": 34
},
"candidate": {
"artifact": "preexisting target/release/twofauth-rs, predates current source changes",
"sha256": "e3d2f4435197bad611e2150c128b0edfcf97ce90d61156a430e948f1461438ba"
},
"limits": [
"This is a limited differential result, not replacement certification.",
"Random CSRF output and cookie protocols are not normalized.",
"Only synthetic fixture data was used.",
"Body IDs ignored only for account create/read as specified in cases.stateful.json.",
"State effects checked through API readback, not SQL table comparison.",
"New source changes must be rebuilt and compared again."
],
"results": {
"default": {
"exit_code": 1,
"cases": [
{
"case": 0,
"result": "different",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": false,
"body": false
}
},
{
"case": 1,
"result": "different",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": false
}
},
{
"case": 2,
"result": "different",
"reference_status": 200,
"candidate_status": 404,
"checks": {
"status": false,
"content_type": true,
"body": false
}
},
{
"case": 3,
"result": "different",
"reference_status": 404,
"candidate_status": 404,
"checks": {
"status": true,
"content_type": true,
"body": false
}
}
]
},
"stateful": {
"exit_code": 1,
"cases": [
{
"case": 0,
"result": "different",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": false,
"body": false,
"expected_status": true
}
},
{
"case": 1,
"result": "different",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": false,
"expected_status": true
}
},
{
"case": 2,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 3,
"result": "equal",
"reference_status": 201,
"candidate_status": 201,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 4,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 5,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 6,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 7,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 8,
"result": "equal",
"reference_status": 204,
"candidate_status": 204,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 9,
"result": "different",
"reference_status": 404,
"candidate_status": 404,
"checks": {
"status": true,
"content_type": true,
"body": false,
"expected_status": true
}
},
{
"case": 10,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 11,
"result": "different",
"reference_status": 401,
"candidate_status": 401,
"checks": {
"status": true,
"content_type": true,
"body": false,
"expected_status": true
}
}
]
},
"extended": {
"exit_code": 1,
"cases": [
{
"case": 0,
"result": "different",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": false,
"body": false,
"expected_status": true
}
},
{
"case": 1,
"result": "different",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": false,
"expected_status": true
}
},
{
"case": 2,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 3,
"result": "equal",
"reference_status": 201,
"candidate_status": 201,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 4,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 5,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 6,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 7,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 8,
"result": "different",
"reference_status": 201,
"candidate_status": 201,
"checks": {
"status": true,
"content_type": true,
"body": false,
"expected_status": true
}
},
{
"case": 9,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 10,
"result": "equal",
"reference_status": 204,
"candidate_status": 204,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 11,
"result": "different",
"reference_status": 403,
"candidate_status": 403,
"checks": {
"status": true,
"content_type": true,
"body": false,
"expected_status": true
}
},
{
"case": 12,
"result": "different",
"reference_status": 403,
"candidate_status": 404,
"checks": {
"status": false,
"content_type": true,
"body": false,
"expected_status": false
}
},
{
"case": 13,
"result": "different",
"reference_status": 403,
"candidate_status": 404,
"checks": {
"status": false,
"content_type": true,
"body": false,
"expected_status": false
}
},
{
"case": 14,
"result": "different",
"reference_status": 200,
"candidate_status": 404,
"checks": {
"status": false,
"content_type": true,
"body": false,
"expected_status": false
}
},
{
"case": 15,
"result": "different",
"reference_status": 422,
"candidate_status": 404,
"checks": {
"status": false,
"content_type": true,
"body": false,
"expected_status": false
}
},
{
"case": 16,
"result": "different",
"reference_status": 422,
"candidate_status": 405,
"checks": {
"status": false,
"content_type": false,
"body": false,
"expected_status": false
}
},
{
"case": 17,
"result": "different",
"reference_status": 422,
"candidate_status": 422,
"checks": {
"status": true,
"content_type": true,
"body": false,
"expected_status": true
}
},
{
"case": 18,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 19,
"result": "equal",
"reference_status": 204,
"candidate_status": 204,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 20,
"result": "different",
"reference_status": 404,
"candidate_status": 404,
"checks": {
"status": true,
"content_type": true,
"body": false,
"expected_status": true
}
},
{
"case": 21,
"result": "equal",
"reference_status": 200,
"candidate_status": 200,
"checks": {
"status": true,
"content_type": true,
"body": true,
"expected_status": true
}
},
{
"case": 22,
"result": "different",
"reference_status": 401,
"candidate_status": 401,
"checks": {
"status": true,
"content_type": true,
"body": false,
"expected_status": true
}
}
]
}
},
"reproduction": "PHPRC=<php.ini path> python tools/run_reference.py --php <php executable or wrapper> --source ../upstream --candidate-binary target/release/twofauth-rs --output <result.json>",
"upstream_suite": {
"command": "PHPRC=<php.ini> PATH=<php runtime>:$PATH php artisan config:clear; php vendor/bin/phpunit",
"tests": 1518,
"assertions": 4573,
"errors": 5,
"failures": 2,
"failure_details": [
{
"test": "Tests.Feature.Models.TwoFAccountModelTest::test_fill_with_custom_totp_uri_returns_correct_value",
"kind": "failure",
"message": "Tests\\Feature\\Models\\TwoFAccountModelTest::test_fill_with_custom_totp_uri_returns_correct_value"
},
{
"test": "Tests.Feature.Models.TwoFAccountModelTest::test_fill_with_custom_hotp_uri_returns_correct_value",
"kind": "failure",
"message": "Tests\\Feature\\Models\\TwoFAccountModelTest::test_fill_with_custom_hotp_uri_returns_correct_value"
},
{
"test": "Tests.Feature.Services.IconServiceTest::test_build_from_remote_image_stores_icon_and_returns_name with data set \"PNG\"",
"kind": "error",
"message": "Tests\\Feature\\Services\\IconServiceTest::test_build_from_remote_image_stores_icon_and_returns_name with data set \"PNG\""
},
{
"test": "Tests.Feature.Services.IconServiceTest::test_build_from_remote_image_stores_icon_and_returns_name with data set \"JPEG\"",
"kind": "error",
"message": "Tests\\Feature\\Services\\IconServiceTest::test_build_from_remote_image_stores_icon_and_returns_name with data set \"JPEG\""
},
{
"test": "Tests.Feature.Services.IconServiceTest::test_build_from_remote_image_stores_icon_and_returns_name with data set \"WEBP\"",
"kind": "error",
"message": "Tests\\Feature\\Services\\IconServiceTest::test_build_from_remote_image_stores_icon_and_returns_name with data set \"WEBP\""
},
{
"test": "Tests.Feature.Services.IconServiceTest::test_build_from_remote_image_stores_icon_and_returns_name with data set \"BPM\"",
"kind": "error",
"message": "Tests\\Feature\\Services\\IconServiceTest::test_build_from_remote_image_stores_icon_and_returns_name with data set \"BPM\""
},
{
"test": "Tests.Feature.Services.IconServiceTest::test_build_from_remote_image_stores_icon_and_returns_name with data set \"SVG\"",
"kind": "error",
"message": "Tests\\Feature\\Services\\IconServiceTest::test_build_from_remote_image_stores_icon_and_returns_name with data set \"SVG\""
}
],
"limitations": [
"All seven remaining failing cases depend on real DNS resolution before mocked HTTP. dns_get_record returned false with a temporary server error for the image hosts.",
"No upstream source was patched to suppress those failures."
]
},
"crypto": {
"php_openssl": "6/6 fixtures passed",
"laravel_encrypter": "Laravel 13.29.0 Encrypter::decryptString accepted 6/6 independent Python envelopes"
}
}