Gleam SDK for Pocketenv
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

test: add backup module tests

Adds 10 tests covering:
- backup_decoder_full / minimal / missing_required (decoder unit tests)
- backup_create_ok / with_ttl / api_error
- backup_list_ok / empty / api_error
- backup_restore_ok / api_error

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

+167
+167
test/pocketenv_test.gleam
··· 5 5 import gleeunit 6 6 import mock_server 7 7 import pocketenv 8 + import pocketenv/backup 8 9 import pocketenv/copy 9 10 import pocketenv/env 10 11 import pocketenv/files ··· 686 687 mock_server.stop(pid) 687 688 assert result == Error(pocketenv.ApiError(500)) 688 689 } 690 + 691 + // ---- backup: decoder -------------------------------------------------------- 692 + 693 + pub fn backup_decoder_full_test() { 694 + let json_str = 695 + "{\"id\":\"bk1\",\"directory\":\"/app\",\"description\":\"pre-deploy\",\"expiresAt\":\"2024-12-31\",\"createdAt\":\"2024-01-01\"}" 696 + let result = json.parse(json_str, backup.backup_decoder()) 697 + assert result 698 + == Ok(backup.Backup( 699 + id: "bk1", 700 + directory: "/app", 701 + description: Some("pre-deploy"), 702 + expires_at: Some("2024-12-31"), 703 + created_at: "2024-01-01", 704 + )) 705 + } 706 + 707 + pub fn backup_decoder_minimal_test() { 708 + let json_str = 709 + "{\"id\":\"bk2\",\"directory\":\"/data\",\"createdAt\":\"2024-06-01\"}" 710 + let result = json.parse(json_str, backup.backup_decoder()) 711 + assert result 712 + == Ok(backup.Backup( 713 + id: "bk2", 714 + directory: "/data", 715 + description: None, 716 + expires_at: None, 717 + created_at: "2024-06-01", 718 + )) 719 + } 720 + 721 + pub fn backup_decoder_missing_required_test() { 722 + let json_str = "{\"id\":\"bk3\",\"createdAt\":\"2024-06-01\"}" 723 + let result = json.parse(json_str, backup.backup_decoder()) 724 + assert result |> is_error 725 + } 726 + 727 + // ---- backup: HTTP ----------------------------------------------------------- 728 + 729 + pub fn backup_create_ok_test() { 730 + let #(port, pid) = mock_server.start() 731 + mock_server.set_response( 732 + "/xrpc/io.pocketenv.sandbox.createBackup", 733 + 200, 734 + "{}", 735 + ) 736 + let client = pocketenv.new_client_with_base_url(base_url(port), "tok") 737 + let result = 738 + stub_connected("s1", client) 739 + |> backup.create("/app", Some("pre-deploy"), None) 740 + mock_server.stop(pid) 741 + assert result == Ok(Nil) 742 + } 743 + 744 + pub fn backup_create_with_ttl_ok_test() { 745 + let #(port, pid) = mock_server.start() 746 + mock_server.set_response( 747 + "/xrpc/io.pocketenv.sandbox.createBackup", 748 + 200, 749 + "{}", 750 + ) 751 + let client = pocketenv.new_client_with_base_url(base_url(port), "tok") 752 + let result = 753 + stub_connected("s1", client) 754 + |> backup.create("/app", None, Some(3600)) 755 + mock_server.stop(pid) 756 + assert result == Ok(Nil) 757 + } 758 + 759 + pub fn backup_create_api_error_test() { 760 + let #(port, pid) = mock_server.start() 761 + mock_server.set_response( 762 + "/xrpc/io.pocketenv.sandbox.createBackup", 763 + 403, 764 + "{}", 765 + ) 766 + let client = pocketenv.new_client_with_base_url(base_url(port), "tok") 767 + let result = 768 + stub_connected("s1", client) 769 + |> backup.create("/app", None, None) 770 + mock_server.stop(pid) 771 + assert result == Error(pocketenv.ApiError(403)) 772 + } 773 + 774 + pub fn backup_list_ok_test() { 775 + let resp = 776 + "{\"backups\":[{\"id\":\"bk1\",\"directory\":\"/app\",\"createdAt\":\"2024-01-01\"},{\"id\":\"bk2\",\"directory\":\"/data\",\"description\":\"snap\",\"createdAt\":\"2024-02-01\"}]}" 777 + let #(port, pid) = mock_server.start() 778 + mock_server.set_response( 779 + "/xrpc/io.pocketenv.sandbox.getBackups", 780 + 200, 781 + resp, 782 + ) 783 + let client = pocketenv.new_client_with_base_url(base_url(port), "tok") 784 + let result = stub_connected("s1", client) |> backup.list() 785 + mock_server.stop(pid) 786 + assert result 787 + == Ok([ 788 + backup.Backup( 789 + id: "bk1", 790 + directory: "/app", 791 + description: None, 792 + expires_at: None, 793 + created_at: "2024-01-01", 794 + ), 795 + backup.Backup( 796 + id: "bk2", 797 + directory: "/data", 798 + description: Some("snap"), 799 + expires_at: None, 800 + created_at: "2024-02-01", 801 + ), 802 + ]) 803 + } 804 + 805 + pub fn backup_list_empty_test() { 806 + let #(port, pid) = mock_server.start() 807 + mock_server.set_response( 808 + "/xrpc/io.pocketenv.sandbox.getBackups", 809 + 200, 810 + "{\"backups\":[]}", 811 + ) 812 + let client = pocketenv.new_client_with_base_url(base_url(port), "tok") 813 + let result = stub_connected("s1", client) |> backup.list() 814 + mock_server.stop(pid) 815 + assert result == Ok([]) 816 + } 817 + 818 + pub fn backup_list_api_error_test() { 819 + let #(port, pid) = mock_server.start() 820 + mock_server.set_response( 821 + "/xrpc/io.pocketenv.sandbox.getBackups", 822 + 401, 823 + "{}", 824 + ) 825 + let client = pocketenv.new_client_with_base_url(base_url(port), "tok") 826 + let result = stub_connected("s1", client) |> backup.list() 827 + mock_server.stop(pid) 828 + assert result == Error(pocketenv.ApiError(401)) 829 + } 830 + 831 + pub fn backup_restore_ok_test() { 832 + let #(port, pid) = mock_server.start() 833 + mock_server.set_response( 834 + "/xrpc/io.pocketenv.sandbox.restoreBackup", 835 + 200, 836 + "{}", 837 + ) 838 + let client = pocketenv.new_client_with_base_url(base_url(port), "tok") 839 + let result = stub_connected("s1", client) |> backup.restore("bk1") 840 + mock_server.stop(pid) 841 + assert result == Ok(Nil) 842 + } 843 + 844 + pub fn backup_restore_api_error_test() { 845 + let #(port, pid) = mock_server.start() 846 + mock_server.set_response( 847 + "/xrpc/io.pocketenv.sandbox.restoreBackup", 848 + 404, 849 + "{}", 850 + ) 851 + let client = pocketenv.new_client_with_base_url(base_url(port), "tok") 852 + let result = stub_connected("s1", client) |> backup.restore("missing") 853 + mock_server.stop(pid) 854 + assert result == Error(pocketenv.ApiError(404)) 855 + }