Skip to content

Commit eebeeb9

Browse files
add test for upload_file
1 parent 397335a commit eebeeb9

File tree

2 files changed

+387
-1
lines changed

2 files changed

+387
-1
lines changed
Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,329 @@
1+
{
2+
"http_interactions": [
3+
{
4+
"recorded_at": "2022-09-01T11:21:40",
5+
"request": {
6+
"body": {
7+
"encoding": "utf-8",
8+
"string": "{\"authenticationType\": \"OAuth\", \"name\": \"SessionSimulation\"}"
9+
},
10+
"headers": {
11+
"Accept": [
12+
"*/*"
13+
],
14+
"Accept-Encoding": [
15+
"gzip, deflate"
16+
],
17+
"Authorization": [
18+
"Bearer [redacted]"
19+
],
20+
"Connection": [
21+
"keep-alive"
22+
],
23+
"Content-Length": [
24+
"60"
25+
],
26+
"Content-Type": [
27+
"application/json"
28+
],
29+
"User-Agent": [
30+
"python-requests/2.28.1"
31+
]
32+
},
33+
"method": "POST",
34+
"uri": "https://hostname.com/casManagement/servers/cas-shared-default/sessions"
35+
},
36+
"response": {
37+
"body": {
38+
"encoding": null,
39+
"string": "{\"version\":2,\"id\":\"b4ca2c56-650d-b444-b0eb-8cfbb771e76c\",\"name\":\"SessionSimulation:Thu Sep 1 11:21:40 2022\",\"state\":\"Connected\",\"transactionState\":\"none\",\"authenticationType\":\"OAuth\",\"owner\":\"X1064007\",\"locale\":\"en\",\"links\":[{\"method\":\"GET\",\"rel\":\"self\",\"href\":\"/casManagement/servers/cas-shared-default/sessions/b4ca2c56-650d-b444-b0eb-8cfbb771e76c\",\"uri\":\"/casManagement/servers/cas-shared-default/sessions/b4ca2c56-650d-b444-b0eb-8cfbb771e76c\",\"type\":\"application/vnd.sas.cas.session.summary\"},{\"method\":\"GET\",\"rel\":\"up\",\"href\":\"/casManagement/servers/cas-shared-default/sessions\",\"uri\":\"/casManagement/servers/cas-shared-default/sessions\",\"type\":\"application/vnd.sas.collection\",\"itemType\":\"application/vnd.sas.cas.session.summary\"},{\"method\":\"DELETE\",\"rel\":\"delete\",\"href\":\"/casManagement/servers/cas-shared-default/sessions/b4ca2c56-650d-b444-b0eb-8cfbb771e76c\",\"uri\":\"/casManagement/servers/cas-shared-default/sessions/b4ca2c56-650d-b444-b0eb-8cfbb771e76c\"},{\"method\":\"POST\",\"rel\":\"startPermissionsTransaction\",\"href\":\"/casManagement/servers/cas-shared-default/sessions/b4ca2c56-650d-b444-b0eb-8cfbb771e76c?action=start\",\"uri\":\"/casManagement/servers/cas-shared-default/sessions/b4ca2c56-650d-b444-b0eb-8cfbb771e76c?action=start\"}]}"
40+
},
41+
"headers": {
42+
"Connection": [
43+
"keep-alive"
44+
],
45+
"Content-Length": [
46+
"1240"
47+
],
48+
"Content-Security-Policy": [
49+
"default-src 'self'; object-src 'none';"
50+
],
51+
"Content-Type": [
52+
"application/vnd.sas.cas.session+json"
53+
],
54+
"Date": [
55+
"Thu, 01 Sep 2022 11:21:40 GMT"
56+
],
57+
"Sas-Service-Response-Flag": [
58+
"true"
59+
],
60+
"Set-Cookie": [
61+
"sas-ingress-nginx=1ceea8e20c1d7f0525320d173016e50e|2eb82f3025ac3537becde082b07ee2c6; Path=/casManagement/; Secure; HttpOnly; SameSite=Lax",
62+
"JSESSIONID=4c1d4775-4dd6-43f4-8442-932065f5ef6e; Path=/casManagement/; HttpOnly; Secure; SameSite=Lax"
63+
],
64+
"Strict-Transport-Security": [
65+
"max-age=15724800; includeSubDomains"
66+
],
67+
"Vary": [
68+
"Origin"
69+
],
70+
"X-Content-Type-Options": [
71+
"nosniff"
72+
],
73+
"X-Frame-Options": [
74+
"SAMEORIGIN"
75+
],
76+
"X-Xss-Protection": [
77+
"1; mode=block"
78+
]
79+
},
80+
"status": {
81+
"code": 201,
82+
"message": "Created"
83+
},
84+
"url": "https://hostname.com/casManagement/servers/cas-shared-default/sessions"
85+
}
86+
},
87+
{
88+
"recorded_at": "2022-09-01T11:21:40",
89+
"request": {
90+
"body": {
91+
"encoding": "utf-8",
92+
"string": "--4c69eb5fbca623ac39525bdd6c9335a8\r\nContent-Disposition: form-data; name=\"tableName\"\r\n\r\nTEST_TABLE\r\n--4c69eb5fbca623ac39525bdd6c9335a8\r\nContent-Disposition: form-data; name=\"containsHeaderRow\"\r\n\r\nTrue\r\n--4c69eb5fbca623ac39525bdd6c9335a8\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ncsv\r\n--4c69eb5fbca623ac39525bdd6c9335a8\r\nContent-Disposition: form-data; name=\"sessionId\"\r\n\r\nb4ca2c56-650d-b444-b0eb-8cfbb771e76c\r\n--4c69eb5fbca623ac39525bdd6c9335a8\r\nContent-Disposition: form-data; name=\"delimiter\"\r\n\r\n;\r\n--4c69eb5fbca623ac39525bdd6c9335a8\r\nContent-Disposition: form-data; name=\"scope\"\r\n\r\nsession\r\n--4c69eb5fbca623ac39525bdd6c9335a8\r\nContent-Disposition: form-data; name=\"file\"; filename=\"TEST_TABLE\"\r\n\r\nA;B\nentry1;entry2\nentry3;entry4\r\n--4c69eb5fbca623ac39525bdd6c9335a8--\r\n"
93+
},
94+
"headers": {
95+
"Accept": [
96+
"*/*"
97+
],
98+
"Accept-Encoding": [
99+
"gzip, deflate"
100+
],
101+
"Authorization": [
102+
"Bearer [redacted]"
103+
],
104+
"Connection": [
105+
"keep-alive"
106+
],
107+
"Content-Length": [
108+
"779"
109+
],
110+
"Content-Type": [
111+
"multipart/form-data; boundary=4c69eb5fbca623ac39525bdd6c9335a8"
112+
],
113+
"Cookie": [
114+
"JSESSIONID=4c1d4775-4dd6-43f4-8442-932065f5ef6e; sas-ingress-nginx=1ceea8e20c1d7f0525320d173016e50e|2eb82f3025ac3537becde082b07ee2c6"
115+
],
116+
"User-Agent": [
117+
"python-requests/2.28.1"
118+
]
119+
},
120+
"method": "POST",
121+
"uri": "https://hostname.com/casManagement/servers/cas-shared-default/caslibs/Samples/tables"
122+
},
123+
"response": {
124+
"body": {
125+
"encoding": "utf-8",
126+
"string": "{\"caslibName\":\"Samples\",\"characterSet\":\"UTF8\",\"columnCount\":2,\"created\":\"2022-09-01T11:21:40.646Z\",\"createdBy\":\"X1064007\",\"disconnected\":true,\"encoding\":\"utf-8\",\"lastAccessed\":\"2022-09-01T11:21:40.646Z\",\"lastModified\":\"2022-09-01T11:21:40.646Z\",\"links\":[{\"method\":\"GET\",\"rel\":\"up\",\"href\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables\",\"uri\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables\",\"type\":\"application/vnd.sas.collection\",\"itemType\":\"application/vnd.sas.cas.table\"},{\"method\":\"GET\",\"rel\":\"self\",\"href\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE\",\"uri\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE\",\"type\":\"application/vnd.sas.cas.table\"},{\"method\":\"DELETE\",\"rel\":\"delete\",\"href\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE\",\"uri\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE\"},{\"method\":\"PUT\",\"rel\":\"updateState\",\"href\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/state\",\"uri\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/state\",\"responseType\":\"application/json,text/plain\"},{\"method\":\"GET\",\"rel\":\"columns\",\"href\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/columns\",\"uri\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/columns\",\"type\":\"application/vnd.sas.collection\",\"itemType\":\"application/vnd.sas.cas.column\"},{\"method\":\"GET\",\"rel\":\"dataTable\",\"href\":\"/dataTables/dataSources/cas~fs~cas-shared-default~fs~Samples/tables/TEST_TABLE\",\"uri\":\"/dataTables/dataSources/cas~fs~cas-shared-default~fs~Samples/tables/TEST_TABLE\",\"type\":\"application/vnd.sas.data.table\"},{\"method\":\"POST\",\"rel\":\"save\",\"href\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE\",\"uri\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE\",\"type\":\"application/vnd.sas.cas.table.save.request\",\"responseType\":\"application/vnd.sas.cas.table\"},{\"method\":\"GET\",\"rel\":\"summaryStatistics\",\"href\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/summaryStatistics\",\"uri\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/summaryStatistics\",\"type\":\"application/vnd.sas.collection\",\"itemType\":\"application/vnd.sas.cas.column.summary.statistics\"},{\"method\":\"GET\",\"rel\":\"distinctCount\",\"href\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/distinctCounts\",\"uri\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/distinctCounts\",\"type\":\"application/vnd.sas.collection\",\"itemType\":\"application/vnd.sas.cas.column.summary.statistics\"},{\"method\":\"PUT\",\"rel\":\"updateScope\",\"href\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/scope\",\"uri\":\"/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/scope\",\"responseType\":\"application/json,text/plain\"}],\"name\":\"TEST_TABLE\",\"repeated\":false,\"rowCount\":2,\"scope\":\"session\",\"serverName\":\"cas-shared-default\",\"state\":\"loaded\",\"tableReference\":{\"version\":2,\"tableUri\":\"/dataTables/dataSources/cas~fs~cas-shared-default~fs~Samples/tables/TEST_TABLE\",\"sessionId\":\"b4ca2c56-650d-b444-b0eb-8cfbb771e76c\",\"sourceCaslibName\":\"Samples\"},\"version\":3}"
127+
},
128+
"headers": {
129+
"Connection": [
130+
"keep-alive"
131+
],
132+
"Content-Security-Policy": [
133+
"default-src 'self'; object-src 'none';"
134+
],
135+
"Content-Type": [
136+
"application/json"
137+
],
138+
"Date": [
139+
"Thu, 01 Sep 2022 11:21:40 GMT"
140+
],
141+
"Sas-Service-Response-Flag": [
142+
"true"
143+
],
144+
"Strict-Transport-Security": [
145+
"max-age=15724800; includeSubDomains"
146+
],
147+
"Transfer-Encoding": [
148+
"chunked"
149+
],
150+
"Vary": [
151+
"Origin"
152+
],
153+
"X-Content-Type-Options": [
154+
"nosniff"
155+
],
156+
"X-Frame-Options": [
157+
"SAMEORIGIN"
158+
],
159+
"X-Xss-Protection": [
160+
"1; mode=block"
161+
]
162+
},
163+
"status": {
164+
"code": 201,
165+
"message": "Created"
166+
},
167+
"url": "https://hostname.com/casManagement/servers/cas-shared-default/caslibs/Samples/tables"
168+
}
169+
},
170+
{
171+
"recorded_at": "2022-09-01T11:21:40",
172+
"request": {
173+
"body": {
174+
"encoding": "utf-8",
175+
"string": "{}"
176+
},
177+
"headers": {
178+
"Accept": [
179+
"*/*"
180+
],
181+
"Accept-Encoding": [
182+
"gzip, deflate"
183+
],
184+
"Authorization": [
185+
"Bearer [redacted]"
186+
],
187+
"Connection": [
188+
"keep-alive"
189+
],
190+
"Content-Length": [
191+
"2"
192+
],
193+
"Content-Type": [
194+
"application/json"
195+
],
196+
"Cookie": [
197+
"JSESSIONID=4c1d4775-4dd6-43f4-8442-932065f5ef6e; sas-ingress-nginx=1ceea8e20c1d7f0525320d173016e50e|2eb82f3025ac3537becde082b07ee2c6"
198+
],
199+
"User-Agent": [
200+
"python-requests/2.28.1"
201+
]
202+
},
203+
"method": "PUT",
204+
"uri": "https://hostname.com/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/state?value=unloaded&sessionId=b4ca2c56-650d-b444-b0eb-8cfbb771e76c"
205+
},
206+
"response": {
207+
"body": {
208+
"encoding": "ISO-8859-1",
209+
"string": "unloaded"
210+
},
211+
"headers": {
212+
"Connection": [
213+
"keep-alive"
214+
],
215+
"Content-Length": [
216+
"8"
217+
],
218+
"Content-Security-Policy": [
219+
"default-src 'self'; object-src 'none';"
220+
],
221+
"Content-Type": [
222+
"text/plain"
223+
],
224+
"Date": [
225+
"Thu, 01 Sep 2022 11:21:40 GMT"
226+
],
227+
"Sas-Service-Response-Flag": [
228+
"true"
229+
],
230+
"Strict-Transport-Security": [
231+
"max-age=15724800; includeSubDomains"
232+
],
233+
"Vary": [
234+
"Origin"
235+
],
236+
"X-Content-Type-Options": [
237+
"nosniff"
238+
],
239+
"X-Frame-Options": [
240+
"SAMEORIGIN"
241+
],
242+
"X-Xss-Protection": [
243+
"1; mode=block"
244+
]
245+
},
246+
"status": {
247+
"code": 200,
248+
"message": "OK"
249+
},
250+
"url": "https://hostname.com/casManagement/servers/cas-shared-default/caslibs/Samples/tables/TEST_TABLE/state?value=unloaded&sessionId=b4ca2c56-650d-b444-b0eb-8cfbb771e76c"
251+
}
252+
},
253+
{
254+
"recorded_at": "2022-09-01T11:21:40",
255+
"request": {
256+
"body": {
257+
"encoding": "utf-8",
258+
"string": ""
259+
},
260+
"headers": {
261+
"Accept": [
262+
"*/*"
263+
],
264+
"Accept-Encoding": [
265+
"gzip, deflate"
266+
],
267+
"Authorization": [
268+
"Bearer [redacted]"
269+
],
270+
"Connection": [
271+
"keep-alive"
272+
],
273+
"Content-Length": [
274+
"0"
275+
],
276+
"Cookie": [
277+
"JSESSIONID=4c1d4775-4dd6-43f4-8442-932065f5ef6e; sas-ingress-nginx=1ceea8e20c1d7f0525320d173016e50e|2eb82f3025ac3537becde082b07ee2c6"
278+
],
279+
"User-Agent": [
280+
"python-requests/2.28.1"
281+
]
282+
},
283+
"method": "DELETE",
284+
"uri": "https://hostname.com/casManagement/servers/cas-shared-default/sessions/b4ca2c56-650d-b444-b0eb-8cfbb771e76c"
285+
},
286+
"response": {
287+
"body": {
288+
"encoding": null,
289+
"string": ""
290+
},
291+
"headers": {
292+
"Connection": [
293+
"keep-alive"
294+
],
295+
"Content-Security-Policy": [
296+
"default-src 'self'; object-src 'none';"
297+
],
298+
"Date": [
299+
"Thu, 01 Sep 2022 11:21:40 GMT"
300+
],
301+
"Sas-Service-Response-Flag": [
302+
"true"
303+
],
304+
"Strict-Transport-Security": [
305+
"max-age=15724800; includeSubDomains"
306+
],
307+
"Vary": [
308+
"Origin"
309+
],
310+
"X-Content-Type-Options": [
311+
"nosniff"
312+
],
313+
"X-Frame-Options": [
314+
"SAMEORIGIN"
315+
],
316+
"X-Xss-Protection": [
317+
"1; mode=block"
318+
]
319+
},
320+
"status": {
321+
"code": 204,
322+
"message": "No Content"
323+
},
324+
"url": "https://hostname.com/casManagement/servers/cas-shared-default/sessions/b4ca2c56-650d-b444-b0eb-8cfbb771e76c"
325+
}
326+
}
327+
],
328+
"recorded_with": "betamax/0.8.1"
329+
}

tests/integration/test_cas_management.py

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,61 @@ def test_delete_session():
104104
}
105105
res = cm.list_sessions(qpar)
106106

107-
assert len(res)==0
107+
assert len(res)==0
108+
109+
@pytest.fixture(scope='session')
110+
def sample_table(tmpdir_factory):
111+
"""Create a temporary folder and
112+
save a CSV file representing the table.
113+
Return the path to the file.
114+
"""
115+
path = tmpdir_factory.mktemp("data") / "testtable.csv"
116+
tbl = "A;B\r\nentry1;entry2\r\nentry3;entry4"
117+
path.write(tbl)
118+
return path
119+
120+
121+
def test_upload_file(sample_table):
122+
properties = {
123+
"authenticationType": "OAuth",
124+
"name": "SessionSimulation"
125+
}
126+
sess = cm.create_session(properties)
127+
128+
path = sample_table
129+
test_tbl = "TEST_TABLE"
130+
caslib = 'Samples'
131+
server = 'cas-shared-default'
132+
frmt = 'csv'
133+
134+
info = {
135+
"sessionId": sess.id,
136+
"delimiter": ";",
137+
"scope": "session"
138+
}
139+
tbl = cm.upload_file(path,test_tbl,caslib,server,True,frmt,detail=info)
140+
assert tbl.state == 'loaded'
141+
qp = {'sessionId':sess.id}
142+
r = cm.update_state_table('unloaded',test_tbl,caslib,server,qparams=qp)
143+
assert r == 'unloaded'
144+
145+
info = {
146+
"sessionId": sess.id,
147+
"delimiter": ";",
148+
"scope": "session",
149+
"parameter": "wrong"
150+
}
151+
with pytest.raises(ValueError):
152+
cm.upload_file(path,test_tbl,caslib,server,True,frmt,detail=info)
153+
154+
info = {
155+
"sessionId": sess.id,
156+
"delimiter": ";",
157+
"scope": "session",
158+
"encoding": "utf-8",
159+
"password": "pass"
160+
}
161+
with pytest.raises(ValueError):
162+
cm.upload_file(path,test_tbl,caslib,server,True,frmt,detail=info)
163+
164+
cm.delete_session(sess.id,server)

0 commit comments

Comments
 (0)