okami.mom/albedo
git clone https://git.nkp.pet/okami.mom/albedo
b585313
main
1//// Anthropic's authenticated endpoint cannot use the E2E loopback provider. 2//// These fixtures catch forgiving upstream parsing and cache compatibility bugs. 3 4import albedo/harness/extensions/claude/catalog 5import gleam/dynamic 6import gleam/dynamic/decode 7import gleam/json 8import gleam/option .{ None , Some } 9import gleeunit/should 10 11fn upstream () -> List ( dynamic . Dynamic ) { 12let assert Ok ( rows ) = 13json . parse ( 14"[ 15{\"id\":\"claude-fixture\",\"max_input_tokens\":200000,\"max_tokens\":64000, 16\"capabilities\":{\"image_input\":{\"supported\":true},\"effort\":{ 17\"supported\":true,\"zeta\":{\"supported\":true},\"high\":{\"supported\":true}, 18\"minimal\":{\"supported\":true},\"alpha\":{\"supported\":true}, 19\"xhigh\":{\"supported\":true},\"medium\":{\"supported\":true}, 20\"max\":{\"supported\":true},\"low\":{\"supported\":true}, 21\"disabled\":{\"supported\":false},\"malformed\":{\"supported\":\"true\"}}}}, 22{\"id\":\"\"},{\"id\":7},null, 23{\"id\":\"claude-fixture\",\"max_input_tokens\":-1,\"max_tokens\":\"100\", 24\"capabilities\":{\"image_input\":true,\"effort\":{\"supported\":false,\"high\":{\"supported\":true}}}}, 25{\"id\":\"claude-last\",\"max_input_tokens\":1.5,\"capabilities\":[]} 26]" , 27decode . list ( decode . dynamic ), 28) 29rows 30} 31 32pub fn upstream_normalization_keeps_valid_order_duplicates_and_typed_facts_test () -> Nil { 33catalog . normalize ( upstream ()) 34|> should . equal ([ 35catalog . Model ( "claude-fixture" , Some ( 200_000 ), Some ( 64_000 ), True , [ 36"minimal" , "low" , "medium" , "high" , "xhigh" , "max" , "alpha" , "zeta" , 37]), 38catalog . Model ( "claude-fixture" , None , None , False , []), 39catalog . Model ( "claude-last" , None , None , False , []), 40]) 41} 42 43pub fn normalized_upstream_saves_a_readable_private_cache_test () -> Nil { 44let home = temporary_home () 45let models = catalog . normalize ( upstream ()) 46catalog . save ( home , models ) |> should . equal ( Ok ( Nil )) 47catalog . models ( home ) |> should . equal ( models ) 48cache_permissions ( home ) |> should . equal ( 0o600 ) 49catalog . save ( home , []) |> should . equal ( Ok ( Nil )) 50catalog . models ( home ) |> should . equal ([]) 51cleanup ( home ) 52} 53 54pub fn cache_write_failure_keeps_the_existing_error_test () -> Nil { 55let home = temporary_home () 56block_cache ( home ) 57catalog . save ( home , catalog . normalize ( upstream ())) 58|> should . equal ( Error ( "could not save the Claude model list" )) 59cleanup ( home ) 60} 61 62@external ( erlang , "albedo_claude_catalog_test_support" , "temporary_home" ) 63fn temporary_home () -> String 64 65@external ( erlang , "albedo_claude_catalog_test_support" , "cache_permissions" ) 66fn cache_permissions ( home : String ) -> Int 67 68@external ( erlang , "albedo_claude_catalog_test_support" , "block_cache" ) 69fn block_cache ( home : String ) -> Nil 70 71@external ( erlang , "albedo_claude_catalog_test_support" , "cleanup" ) 72fn cleanup ( home : String ) -> Nil