okami.mom/albedo
git clone https://git.nkp.pet/okami.mom/albedo
b585313
main
1// Private regular-file validation guards symlink and permissions attacks on MCP credentials. 2import gleam/dynamic 3import gleeunit/should 4 5@external ( erlang , "albedo_skills_test_support" , "fixture" ) 6fn fixture () -> #( String , String , String ) 7 8@external ( erlang , "albedo_skills_test_support" , "write" ) 9fn write ( base : String , path : String , contents : String ) -> String 10 11@external ( erlang , "albedo_skills_test_support" , "chmod" ) 12fn chmod ( base : String , path : String , mode : Int ) -> Nil 13 14@external ( erlang , "albedo_skills_test_support" , "replace_with_symlink" ) 15fn link ( base : String , source : String , path : String ) -> Nil 16 17@external ( erlang , "albedo_skills_test_support" , "cleanup" ) 18fn cleanup ( root : String ) -> Nil 19 20@external ( erlang , "albedo_mcp_credentials" , "server_at" ) 21fn secret ( home : String , name : String ) -> Result ( dynamic . Dynamic , String ) 22 23pub fn credentials_require_private_regular_file_test () -> Nil { 24let #( root , _ , home ) = fixture () 25secret ( home , "docs" ) |> should . be_ok 26let _ = 27write ( 28home , 29"creds.json" , 30"{\"mcp\":{\"docs\":{\"bearerToken\":\"never-log\"}}}" , 31) 32chmod ( home , "creds.json" , 420 ) 33secret ( home , "docs" ) |> should . be_error 34chmod ( home , "creds.json" , 384 ) 35secret ( home , "docs" ) |> should . be_ok 36let _ = write ( home , "replacement" , "{}" ) 37link ( home , "replacement" , "creds.json" ) 38secret ( home , "docs" ) |> should . be_error 39cleanup ( root ) 40}