github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/stellar/transform_test.go (about) 1 package stellar 2 3 import ( 4 "encoding/json" 5 "reflect" 6 "testing" 7 8 "github.com/keybase/client/go/protocol/stellar1" 9 "github.com/keybase/client/go/stellar/remote" 10 ) 11 12 type atest struct { 13 name string 14 json string 15 status stellar1.AirdropStatus 16 } 17 18 var atests = []atest{ 19 { 20 name: "unqualified new account no proofs", 21 json: `{"status":{"code":0,"name":"OK"},"already_registered":false,"qualifications":{"has_stellar_key":true,"has_enough_devices":false,"service_checks":{"keybase":{"service_username":"a1","account_created":1543864123,"is_old_enough":false,"is_used_already":false,"qualifies":false},"github":{"service_username":null,"account_created":null,"is_old_enough":false,"is_used_already":true,"qualifies":false},"hackernews":{"service_username":null,"account_created":null,"is_old_enough":false,"is_used_already":true,"qualifies":false}},"qualifies_overall":false,"is_before_registration_deadline":true},"airdrop_cfg":{"min_active_devices":3,"min_active_devices_title":"3 installed devices or paper keys","registration_deadline":1571633999,"account_creation_title":"Old enough Keybase, GitHub, or Hacker News account","account_creation_subtitle":"You can connect a GitHub or Hacker News account created before January 1, 2017 to qualify.","account_used":"Note that %s was already used to qualifiy a different account for the airdrop.","account_creation_deadlines":{"keybase":1514786400,"github":1483250400,"hackernews":1483250400}},"csrf_token":"lgHZIGY1NWZmMTZmNjZmNDMzNjAyNjZiOTVkYjZmOGZlYzE5zlxSWdXOAIPWAMDEILqynj/ovmhytFw+m8Xr3ns5UJ18X//dNSQe4gZwtDK/"}`, 22 status: stellar1.AirdropStatus{ 23 State: stellar1.AirdropUnqualified, 24 Rows: []stellar1.AirdropQualification{ 25 { 26 Title: "3 installed devices or paper keys", 27 Valid: false, 28 }, 29 { 30 Title: "Old enough Keybase, GitHub, or Hacker News account", 31 Subtitle: "You can connect a GitHub or Hacker News account created before January 1, 2017 to qualify.", 32 Valid: false, 33 }, 34 }, 35 }, 36 }, 37 { 38 name: "unqualified new account used proof", 39 json: `{"status":{"code":0,"name":"OK"},"already_registered":false,"qualifications":{"has_stellar_key":true,"has_enough_devices":false,"service_checks":{"keybase":{"service_username":"a1","account_created":1543864123,"is_old_enough":false,"is_used_already":false,"qualifies":false},"github":{"service_username":"patrickxb","account_created":1000,"is_old_enough":true,"is_used_already":true,"qualifies":false},"hackernews":{"service_username":null,"account_created":null,"is_old_enough":false,"is_used_already":true,"qualifies":false}},"qualifies_overall":false,"is_before_registration_deadline":true},"airdrop_cfg":{"min_active_devices":3,"min_active_devices_title":"3 installed devices or paper keys","registration_deadline":1571633999,"account_creation_title":"Old enough Keybase, GitHub, or Hacker News account","account_creation_subtitle":"You can connect a GitHub or Hacker News account created before January 1, 2017 to qualify.","account_used":"Note that %s was already used to qualifiy a different account for the airdrop.","account_creation_deadlines":{"keybase":1514786400,"github":1483250400,"hackernews":1483250400}},"csrf_token":"lgHZIGY1NWZmMTZmNjZmNDMzNjAyNjZiOTVkYjZmOGZlYzE5zlxSWdXOAIPWAMDEILqynj/ovmhytFw+m8Xr3ns5UJ18X//dNSQe4gZwtDK/"}`, 40 status: stellar1.AirdropStatus{ 41 State: stellar1.AirdropUnqualified, 42 Rows: []stellar1.AirdropQualification{ 43 { 44 Title: "3 installed devices or paper keys", 45 Valid: false, 46 }, 47 { 48 Title: "Old enough Keybase, GitHub, or Hacker News account", 49 Subtitle: "You can connect a GitHub or Hacker News account created before January 1, 2017 to qualify. Note that patrickxb@github was already used to qualifiy a different account for the airdrop.", 50 Valid: false, 51 }, 52 }, 53 }, 54 }, 55 { 56 name: "new account qualifying proof", 57 json: `{"status":{"code":0,"name":"OK"},"already_registered":false,"qualifications":{"has_stellar_key":true,"has_enough_devices":false,"service_checks":{"keybase":{"service_username":"a1","account_created":1543864123,"is_old_enough":false,"is_used_already":false,"qualifies":false},"github":{"service_username":"patrickxb","account_created":1000,"is_old_enough":true,"is_used_already":false,"qualifies":true},"hackernews":{"service_username":null,"account_created":null,"is_old_enough":false,"is_used_already":true,"qualifies":false}},"qualifies_overall":false,"is_before_registration_deadline":true},"airdrop_cfg":{"min_active_devices":3,"min_active_devices_title":"3 installed devices or paper keys","registration_deadline":1571633999,"account_creation_title":"Old enough Keybase, GitHub, or Hacker News account","account_creation_subtitle":"You can connect a GitHub or Hacker News account created before January 1, 2017 to qualify.","account_used":"Note that %s was already used to qualifiy a different account for the airdrop.","account_creation_deadlines":{"keybase":1514786400,"github":1483250400,"hackernews":1483250400}},"csrf_token":"lgHZIGY1NWZmMTZmNjZmNDMzNjAyNjZiOTVkYjZmOGZlYzE5zlxSWdXOAIPWAMDEILqynj/ovmhytFw+m8Xr3ns5UJ18X//dNSQe4gZwtDK/"}`, 58 status: stellar1.AirdropStatus{ 59 State: stellar1.AirdropUnqualified, 60 Rows: []stellar1.AirdropQualification{ 61 { 62 Title: "3 installed devices or paper keys", 63 Valid: false, 64 }, 65 { 66 Title: "Old enough Keybase, GitHub, or Hacker News account", 67 Valid: true, 68 }, 69 }, 70 }, 71 }, 72 { 73 name: "new account qualifying proof, enough devices", 74 json: `{"status":{"code":0,"name":"OK"},"already_registered":false,"qualifications":{"has_stellar_key":true,"has_enough_devices":true,"service_checks":{"keybase":{"service_username":"a1","account_created":1543864123,"is_old_enough":false,"is_used_already":false,"qualifies":false},"github":{"service_username":"patrickxb","account_created":1000,"is_old_enough":true,"is_used_already":false,"qualifies":true},"hackernews":{"service_username":null,"account_created":null,"is_old_enough":false,"is_used_already":true,"qualifies":false}},"qualifies_overall":true,"is_before_registration_deadline":true},"airdrop_cfg":{"min_active_devices":3,"min_active_devices_title":"3 installed devices or paper keys","registration_deadline":1571633999,"account_creation_title":"Old enough Keybase, GitHub, or Hacker News account","account_creation_subtitle":"You can connect a GitHub or Hacker News account created before January 1, 2017 to qualify.","account_used":"Note that %s was already used to qualifiy a different account for the airdrop.","account_creation_deadlines":{"keybase":1514786400,"github":1483250400,"hackernews":1483250400}},"csrf_token":"lgHZIGY1NWZmMTZmNjZmNDMzNjAyNjZiOTVkYjZmOGZlYzE5zlxSWdXOAIPWAMDEILqynj/ovmhytFw+m8Xr3ns5UJ18X//dNSQe4gZwtDK/"}`, 75 status: stellar1.AirdropStatus{ 76 State: stellar1.AirdropQualified, 77 Rows: []stellar1.AirdropQualification{ 78 { 79 Title: "3 installed devices or paper keys", 80 Valid: true, 81 }, 82 { 83 Title: "Old enough Keybase, GitHub, or Hacker News account", 84 Valid: true, 85 }, 86 }, 87 }, 88 }, 89 } 90 91 func TestTransformToAirdropStatus(t *testing.T) { 92 for _, test := range atests { 93 var api remote.AirdropStatusAPI 94 if err := json.Unmarshal([]byte(test.json), &api); err != nil { 95 t.Errorf("%s: error: %s", test.name, err) 96 continue 97 } 98 out := TransformToAirdropStatus(api) 99 if !reflect.DeepEqual(out, test.status) { 100 t.Errorf("%s: transform output didn't match, expected %+v, got %+v", test.name, test.status, out) 101 } 102 } 103 }