Each test file covers 10 real API tests matching the C SDK reference: health_check, validate_keys, get_languages, execute, execute_error, session_list, session_lifecycle, service_list, snapshot_list, image_list. All tests skip cleanly without credentials. No soft passes. Updated all 7 Makefiles to run dedicated functional test files.
107 lines
3.2 KiB
Ruby
107 lines
3.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# 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.
|
|
|
|
# UN Ruby SDK - Functional Tests
|
|
#
|
|
# Tests library functions against real API.
|
|
# Requires: UNSANDBOX_PUBLIC_KEY, UNSANDBOX_SECRET_KEY
|
|
#
|
|
# Usage:
|
|
# cd clients/ruby/sync && ruby test/test_functional.rb
|
|
|
|
$LOAD_PATH.unshift File.expand_path('../src', __dir__)
|
|
|
|
require 'minitest/autorun'
|
|
require 'un'
|
|
|
|
class TestFunctional < Minitest::Test
|
|
def setup
|
|
skip 'UNSANDBOX_PUBLIC_KEY and UNSANDBOX_SECRET_KEY required' unless credentials?
|
|
end
|
|
|
|
def test_health_check
|
|
result = Un.health_check
|
|
assert [true, false].include?(result), 'health_check should return boolean'
|
|
end
|
|
|
|
def test_validate_keys
|
|
info = Un.validate_keys
|
|
assert_kind_of Hash, info
|
|
assert info.key?('valid') || info.key?(:valid), 'should have valid key'
|
|
assert_equal true, (info['valid'] || info[:valid])
|
|
end
|
|
|
|
def test_get_languages
|
|
langs = Un.get_languages
|
|
assert_kind_of Array, langs
|
|
refute_empty langs
|
|
assert_includes langs, 'python'
|
|
end
|
|
|
|
def test_execute
|
|
result = Un.execute_code('python', "print('hello from Ruby SDK')")
|
|
assert_kind_of Hash, result
|
|
stdout = result['stdout'] || result[:stdout] || ''
|
|
assert_includes stdout, 'hello from Ruby SDK'
|
|
exit_code = result['exit_code'] || result[:exit_code]
|
|
assert_equal 0, exit_code
|
|
end
|
|
|
|
def test_execute_error
|
|
result = Un.execute_code('python', 'import sys; sys.exit(1)')
|
|
assert_kind_of Hash, result
|
|
exit_code = result['exit_code'] || result[:exit_code]
|
|
assert_equal 1, exit_code
|
|
end
|
|
|
|
def test_session_list
|
|
sessions = Un.list_sessions
|
|
assert_kind_of Array, sessions
|
|
end
|
|
|
|
def test_session_lifecycle
|
|
session = Un.create_session('python')
|
|
assert_kind_of Hash, session
|
|
session_id = session['id'] || session[:id]
|
|
refute_nil session_id, 'session should have id'
|
|
|
|
Un.delete_session(session_id)
|
|
end
|
|
|
|
def test_service_list
|
|
services = Un.list_services
|
|
assert_kind_of Array, services
|
|
end
|
|
|
|
def test_snapshot_list
|
|
snapshots = Un.list_snapshots
|
|
assert_kind_of Array, snapshots
|
|
end
|
|
|
|
def test_image_list
|
|
images = Un.list_images
|
|
assert_kind_of Array, images
|
|
end
|
|
|
|
private
|
|
|
|
def credentials?
|
|
ENV['UNSANDBOX_PUBLIC_KEY'] && ENV['UNSANDBOX_SECRET_KEY'] &&
|
|
!ENV['UNSANDBOX_PUBLIC_KEY'].empty? && !ENV['UNSANDBOX_SECRET_KEY'].empty?
|
|
end
|
|
end
|