11import pytest
22import json
3- from pins .rsconnect .fs import RsConnectFs
3+ import requests
4+
5+ import sklearn
46from pins .boards import BoardRsConnect
57
8+ from vetiver import VetiverModel , vetiver_pin_write , mock
9+ from vetiver .rsconnect import deploy_rsconnect
10+
11+ # Load data, model
12+ X_df , y = mock .get_mock_data ()
13+ model = mock .get_mock_model ().fit (X_df , y )
14+
615RSC_SERVER_URL = "http://localhost:3939"
716RSC_KEYS_FNAME = "vetiver/tests/rsconnect_api_keys.json"
817
918pytestmark = pytest .mark .rsc_test # noqa
1019
20+
21+ def server_from_key (name ):
22+ from rsconnect .api import RSConnectServer
23+
24+ with open (RSC_KEYS_FNAME ) as f :
25+ api_key = json .load (f )[name ]
26+ return RSConnectServer (RSC_SERVER_URL , api_key )
27+
1128def rsc_from_key (name ):
1229 from pins .rsconnect .api import RsConnectApi
1330
1431 with open (RSC_KEYS_FNAME ) as f :
1532 api_key = json .load (f )[name ]
1633 return RsConnectApi (RSC_SERVER_URL , api_key )
1734
35+
1836def rsc_fs_from_key (name ):
1937 from pins .rsconnect .fs import RsConnectFs
2038
@@ -29,6 +47,7 @@ def rsc_delete_user_content(rsc):
2947 for entry in content :
3048 rsc .delete_content_item (entry ["guid" ])
3149
50+
3251@pytest .fixture (scope = "function" )
3352def rsc_short ():
3453 # tears down content after each test
@@ -37,18 +56,30 @@ def rsc_short():
3756 # delete any content that might already exist
3857 rsc_delete_user_content (fs_susan .api )
3958
40- yield BoardRsConnect ("" , fs_susan , allow_pickle_read = True ) #fs_susan.ls to list content
59+ yield BoardRsConnect (
60+ "" , fs_susan , allow_pickle_read = True
61+ ) # fs_susan.ls to list content
4162
4263 rsc_delete_user_content (fs_susan .api )
4364
44- from vetiver import VetiverModel , vetiver_pin_write , mock
45- import sklearn
46- # Load data, model
47- X_df , y = mock .get_mock_data ()
48- model = mock .get_mock_model ().fit (X_df , y )
4965
5066def test_board_pin_write (rsc_short ):
51- v = VetiverModel (model = model , ptype_data = X_df ,
52- model_name = "susan/model" , versioned = None )
67+ v = VetiverModel (
68+ model = model , ptype_data = X_df , model_name = "susan/model" , versioned = None
69+ )
5370 vetiver_pin_write (board = rsc_short , model = v )
5471 assert isinstance (rsc_short .pin_read ("susan/model" ), sklearn .dummy .DummyRegressor )
72+
73+
74+ def test_deploy (rsc_short ):
75+ v = VetiverModel (
76+ model = model , ptype_data = X_df , model_name = "susan/model" , versioned = None
77+ )
78+
79+ vetiver_pin_write (board = rsc_short , model = v )
80+ deploy_rsconnect (
81+ connect_server = server_from_key ("susan" ), board = rsc_short , pin_name = "susan/model"
82+ )
83+ response = requests .post (RSC_SERVER_URL + "/predict/" , json = X_df )
84+ assert response .status_code == 200 , response .text
85+ assert response .json () == {"prediction" : [44.47 , 44.47 ]}, response .json ()
0 commit comments