66-export ([
77 all /0 ,
88 init_per_suite /1 ,
9- end_per_suite /1
9+ end_per_suite /1 ,
10+ init_per_testcase /2 ,
11+ end_per_testcase /2
1012]).
1113
1214-export ([
@@ -19,26 +21,46 @@ all() ->
1921
2022init_per_suite (Config ) ->
2123 {ok , _ } = application :ensure_all_started (ipinfo ),
22- Token = case os :getenv (" IPINFO_TOKEN" ) of
23- false -> nil ;
24- TokenStr -> list_to_binary (TokenStr )
25- end ,
26- [{token , Token } | Config ].
24+ {ok , _ } = application :ensure_all_started (bookish_spork ),
25+ Config .
2726
2827end_per_suite (_Config ) ->
29- ok = application :stop (ipinfo ).
28+ ok = application :stop (ipinfo ),
29+ ok = application :stop (bookish_spork ).
3030
31- resproxy_test (Config ) ->
32- Token = proplists :get_value (token , Config ),
33- {ok , IpInfo } = ipinfo :create (Token ),
31+ init_per_testcase (_TestCase , Config ) ->
32+ {ok , _ } = bookish_spork :start_server (),
33+ Config .
34+
35+ end_per_testcase (_TestCase , _Config ) ->
36+ ok = bookish_spork :stop_server ().
37+
38+ resproxy_test (_Config ) ->
39+ % Mock response for resproxy
40+ MockBody = jsx :encode (#{
41+ <<" ip" >> => <<" 175.107.211.204" >>,
42+ <<" last_seen" >> => <<" 2025-01-20" >>,
43+ <<" percent_days_seen" >> => 0.85 ,
44+ <<" service" >> => <<" example_service" >>
45+ }),
46+ bookish_spork :stub_request ([200 , #{}, MockBody ]),
47+
48+ % Create IPinfo client pointing to mock server (default bookish_spork port is 32002)
49+ {ok , IpInfo } = ipinfo :create (<<" test_token" >>, [{base_url , <<" http://127.0.0.1:32002" >>}]),
3450 {ok , Resproxy } = ipinfo :resproxy (IpInfo , <<" 175.107.211.204" >>),
51+
3552 ? assertEqual (<<" 175.107.211.204" >>, maps :get (ip , Resproxy )),
36- ? assertNotEqual (undefined , maps :get (last_seen , Resproxy )),
37- ? assertNotEqual (undefined , maps :get (percent_days_seen , Resproxy )),
38- ? assertNotEqual (undefined , maps :get (service , Resproxy )).
53+ ? assertEqual (<<" 2025-01-20" >>, maps :get (last_seen , Resproxy )),
54+ ? assertEqual (0.85 , maps :get (percent_days_seen , Resproxy )),
55+ ? assertEqual (<<" example_service" >>, maps :get (service , Resproxy )).
56+
57+ resproxy_empty_test (_Config ) ->
58+ % Mock empty response for resproxy
59+ MockBody = jsx :encode (#{}),
60+ bookish_spork :stub_request ([200 , #{}, MockBody ]),
3961
40- resproxy_empty_test (Config ) ->
41- Token = proplists :get_value (token , Config ),
42- {ok , IpInfo } = ipinfo :create (Token ),
62+ % Create IPinfo client pointing to mock server (default bookish_spork port is 32002)
63+ {ok , IpInfo } = ipinfo :create (<<" test_token" >>, [{base_url , <<" http://127.0.0.1:32002" >>}]),
4364 {ok , Resproxy } = ipinfo :resproxy (IpInfo , <<" 8.8.8.8" >>),
65+
4466 ? assertEqual (#{}, Resproxy ).
0 commit comments