package configread import ( "encoding/json" "testing" ) func TestTaskConfigurationIdentityIgnoresOnlyReceptionMetadata(t *testing.T) { task := Task{Raw: json.RawMessage(`{"task_revision":9,"status":"running","name":"test","agent":{"asr":{"params":{"sample_rate":16000}}}}`)} original, err := TaskConfigurationSHA256(task) if err != nil { t.Fatal(err) } for _, body := range []string{ `{"name":"test","status":"paused","task_revision":1,"agent":{"asr":{"params":{"sample_rate":16000}}}}`, `{"task_revision":9,"status":"running","name":"test","agent":{"asr":{"params":{"sample_rate":8000}}}}`, } { current, err := TaskConfigurationSHA256(Task{Raw: json.RawMessage(body)}) if err != nil { t.Fatal(err) } var value map[string]any if err := json.Unmarshal([]byte(body), &value); err != nil { t.Fatal(err) } metadataOnly := value["status"] == "paused" if (original == current) != metadataOnly { t.Fatalf("configuration identity mismatch: metadataOnly=%v", metadataOnly) } } if _, err := TaskConfigurationSHA256(Task{Raw: json.RawMessage(`{`)}); err == nil { t.Fatal("accepted malformed task JSON") } }