un-inception/tests/unit/test_go.go

392 lines
11 KiB
Go

// This is free software for the public good of a permacomputer hosted at
// permacomputer.com, an always-on computer by the people, for the people.
// One which is durable, easy to repair, & distributed like tap water
// for machine learning intelligence.
//
// The permacomputer is community-owned infrastructure optimized around
// four values:
//
// TRUTH First principles, math & science, open source code freely distributed
// FREEDOM Voluntary partnerships, freedom from tyranny & corporate control
// HARMONY Minimal waste, self-renewing systems with diverse thriving connections
// LOVE Be yourself without hurting others, cooperation through natural law
//
// This software contributes to that vision by enabling code execution across 42+ programming languages through a unified interface, accessible to all.
// Code is seeds to sprout on any abandoned technology.
// Unit tests for un.go - tests internal functions without API calls
package main
import (
"crypto/hmac"
"crypto/sha256"
"encoding/base64"
"encoding/hex"
"fmt"
"os"
"path/filepath"
"strings"
)
var passed, failed int
func test(name string, fn func() error) {
if err := fn(); err != nil {
fmt.Printf(" ✗ %s\n", name)
fmt.Printf(" %s\n", err)
failed++
} else {
fmt.Printf(" ✓ %s\n", name)
passed++
}
}
func assertEqual(actual, expected string) error {
if actual != expected {
return fmt.Errorf("expected '%s' but got '%s'", expected, actual)
}
return nil
}
func assertNotEqual(a, b string) error {
if a == b {
return fmt.Errorf("expected values to be different but both were '%s'", a)
}
return nil
}
func assertContains(str, substr string) error {
if !strings.Contains(str, substr) {
return fmt.Errorf("expected '%s' to contain '%s'", str, substr)
}
return nil
}
func assertTrue(val bool) error {
if !val {
return fmt.Errorf("expected true but got false")
}
return nil
}
// Extension mapping (copied from un.go)
var extMap = map[string]string{
".py": "python", ".js": "javascript", ".ts": "typescript",
".rb": "ruby", ".php": "php", ".pl": "perl", ".lua": "lua",
".sh": "bash", ".go": "go", ".rs": "rust", ".c": "c",
".cpp": "cpp", ".cc": "cpp", ".cxx": "cpp",
".java": "java", ".kt": "kotlin", ".cs": "csharp", ".fs": "fsharp",
".hs": "haskell", ".ml": "ocaml", ".clj": "clojure", ".scm": "scheme",
".lisp": "commonlisp", ".erl": "erlang", ".ex": "elixir", ".exs": "elixir",
".jl": "julia", ".r": "r", ".R": "r", ".cr": "crystal",
".d": "d", ".nim": "nim", ".zig": "zig", ".v": "v",
".dart": "dart", ".groovy": "groovy", ".scala": "scala",
".f90": "fortran", ".f95": "fortran", ".cob": "cobol",
".pro": "prolog", ".forth": "forth", ".4th": "forth",
".tcl": "tcl", ".raku": "raku", ".m": "objc",
}
func main() {
// Extension Mapping Tests
fmt.Println("\n=== Extension Mapping Tests ===")
test("Python extension maps correctly", func() error {
return assertEqual(extMap[".py"], "python")
})
test("JavaScript extensions map correctly", func() error {
if err := assertEqual(extMap[".js"], "javascript"); err != nil {
return err
}
return assertEqual(extMap[".ts"], "typescript")
})
test("Ruby extension maps correctly", func() error {
return assertEqual(extMap[".rb"], "ruby")
})
test("Go extension maps correctly", func() error {
return assertEqual(extMap[".go"], "go")
})
test("Rust extension maps correctly", func() error {
return assertEqual(extMap[".rs"], "rust")
})
test("C/C++ extensions map correctly", func() error {
if err := assertEqual(extMap[".c"], "c"); err != nil {
return err
}
if err := assertEqual(extMap[".cpp"], "cpp"); err != nil {
return err
}
if err := assertEqual(extMap[".cc"], "cpp"); err != nil {
return err
}
return assertEqual(extMap[".cxx"], "cpp")
})
test("JVM extensions map correctly", func() error {
if err := assertEqual(extMap[".java"], "java"); err != nil {
return err
}
if err := assertEqual(extMap[".kt"], "kotlin"); err != nil {
return err
}
return assertEqual(extMap[".groovy"], "groovy")
})
test("Functional language extensions map correctly", func() error {
if err := assertEqual(extMap[".hs"], "haskell"); err != nil {
return err
}
if err := assertEqual(extMap[".ml"], "ocaml"); err != nil {
return err
}
if err := assertEqual(extMap[".clj"], "clojure"); err != nil {
return err
}
return assertEqual(extMap[".erl"], "erlang")
})
// HMAC Signature Tests
fmt.Println("\n=== HMAC Signature Tests ===")
test("HMAC-SHA256 generates 64 character hex string", func() error {
secret := "test-secret-key"
message := "1234567890:POST:/execute:{}"
h := hmac.New(sha256.New, []byte(secret))
h.Write([]byte(message))
signature := hex.EncodeToString(h.Sum(nil))
if len(signature) != 64 {
return fmt.Errorf("expected length 64 but got %d", len(signature))
}
return nil
})
test("Same input produces same signature", func() error {
secret := "test-secret-key"
message := "1234567890:POST:/execute:{}"
h1 := hmac.New(sha256.New, []byte(secret))
h1.Write([]byte(message))
sig1 := hex.EncodeToString(h1.Sum(nil))
h2 := hmac.New(sha256.New, []byte(secret))
h2.Write([]byte(message))
sig2 := hex.EncodeToString(h2.Sum(nil))
return assertEqual(sig1, sig2)
})
test("Different secrets produce different signatures", func() error {
message := "1234567890:POST:/execute:{}"
h1 := hmac.New(sha256.New, []byte("secret1"))
h1.Write([]byte(message))
sig1 := hex.EncodeToString(h1.Sum(nil))
h2 := hmac.New(sha256.New, []byte("secret2"))
h2.Write([]byte(message))
sig2 := hex.EncodeToString(h2.Sum(nil))
return assertNotEqual(sig1, sig2)
})
test("Different messages produce different signatures", func() error {
secret := "test-secret"
h1 := hmac.New(sha256.New, []byte(secret))
h1.Write([]byte("message1"))
sig1 := hex.EncodeToString(h1.Sum(nil))
h2 := hmac.New(sha256.New, []byte(secret))
h2.Write([]byte("message2"))
sig2 := hex.EncodeToString(h2.Sum(nil))
return assertNotEqual(sig1, sig2)
})
test("Signature format is timestamp:METHOD:path:body", func() error {
timestamp := "1704067200"
method := "POST"
endpoint := "/execute"
body := `{"language":"python","code":"print(1)"}`
message := fmt.Sprintf("%s:%s:%s:%s", timestamp, method, endpoint, body)
// Verify format: starts with timestamp, has method and path
if err := assertTrue(strings.HasPrefix(message, timestamp)); err != nil {
return err
}
if err := assertContains(message, ":POST:"); err != nil {
return err
}
return assertContains(message, ":/execute:")
})
// Language Detection Tests
fmt.Println("\n=== Language Detection Tests ===")
test("Detect language from .py extension", func() error {
filename := "script.py"
ext := strings.ToLower(filepath.Ext(filename))
return assertEqual(extMap[ext], "python")
})
test("Detect language from .go extension", func() error {
filename := "main.go"
ext := strings.ToLower(filepath.Ext(filename))
return assertEqual(extMap[ext], "go")
})
test("Python shebang detection", func() error {
content := "#!/usr/bin/env python3\nprint('hello')"
firstLine := strings.Split(content, "\n")[0]
if err := assertTrue(strings.HasPrefix(firstLine, "#!")); err != nil {
return err
}
return assertContains(firstLine, "python")
})
test("Bash shebang detection", func() error {
content := "#!/bin/bash\necho hello"
firstLine := strings.Split(content, "\n")[0]
if err := assertTrue(strings.HasPrefix(firstLine, "#!")); err != nil {
return err
}
return assertTrue(strings.Contains(firstLine, "bash") || strings.Contains(firstLine, "/sh"))
})
// Argument Parsing Tests
fmt.Println("\n=== Argument Parsing Tests ===")
test("Parse -e KEY=VALUE format", func() error {
arg := "DEBUG=1"
parts := strings.SplitN(arg, "=", 2)
key := parts[0]
value := parts[1]
if err := assertEqual(key, "DEBUG"); err != nil {
return err
}
return assertEqual(value, "1")
})
test("Parse -e KEY=VALUE with equals in value", func() error {
arg := "URL=https://example.com?foo=bar"
parts := strings.SplitN(arg, "=", 2)
key := parts[0]
value := parts[1]
if err := assertEqual(key, "URL"); err != nil {
return err
}
return assertEqual(value, "https://example.com?foo=bar")
})
test("Valid network modes", func() error {
validModes := map[string]bool{"zerotrust": true, "semitrusted": true}
if !validModes["zerotrust"] {
return fmt.Errorf("zerotrust should be valid")
}
if !validModes["semitrusted"] {
return fmt.Errorf("semitrusted should be valid")
}
if validModes["invalid"] {
return fmt.Errorf("invalid should not be valid")
}
return nil
})
test("Subcommand detection", func() error {
args := []string{"session", "--shell", "python3"}
subcommands := map[string]bool{"session": true, "service": true, "key": true, "restore": true}
var subcommand string
if len(args) > 0 && subcommands[args[0]] {
subcommand = args[0]
}
return assertEqual(subcommand, "session")
})
// File Operations Tests
fmt.Println("\n=== File Operations Tests ===")
test("Read text file", func() error {
tmpfile, err := os.CreateTemp("", "test_un_go_*.py")
if err != nil {
return err
}
defer os.Remove(tmpfile.Name())
content := "print('hello world')"
if _, err := tmpfile.WriteString(content); err != nil {
return err
}
tmpfile.Close()
data, err := os.ReadFile(tmpfile.Name())
if err != nil {
return err
}
return assertEqual(string(data), content)
})
test("Base64 encoding/decoding", func() error {
content := "print('hello world')"
encoded := base64.StdEncoding.EncodeToString([]byte(content))
decoded, err := base64.StdEncoding.DecodeString(encoded)
if err != nil {
return err
}
return assertEqual(string(decoded), content)
})
test("Extract file basename", func() error {
path := "/home/user/project/script.py"
basename := filepath.Base(path)
return assertEqual(basename, "script.py")
})
test("Extract file extension", func() error {
path := "/home/user/project/script.py"
ext := filepath.Ext(path)
return assertEqual(ext, ".py")
})
// API Constants Tests
fmt.Println("\n=== API Constants Tests ===")
test("API base URL format", func() error {
apiBase := "https://api.unsandbox.com"
if err := assertTrue(strings.HasPrefix(apiBase, "https://")); err != nil {
return err
}
return assertContains(apiBase, "unsandbox.com")
})
test("Portal base URL format", func() error {
portalBase := "https://unsandbox.com"
return assertTrue(strings.HasPrefix(portalBase, "https://"))
})
// Summary
fmt.Println("\n=== Summary ===")
fmt.Printf("Passed: %d\n", passed)
fmt.Printf("Failed: %d\n", failed)
fmt.Printf("Total: %d\n", passed+failed)
if failed > 0 {
os.Exit(1)
}
}