1. ######################################################################################################
2. #
3. # ███████╗██╗███╗ ███╗██████╗ ██╗ ███████╗███████╗████████╗ ██████╗ ██████╗ ███████╗
4. # ██╔════╝██║████╗ ████║██╔══██╗██║ ██╔════╝██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗██╔════╝
5. # ███████╗██║██╔████╔██║██████╔╝██║ █████╗ ███████╗ ██║ ██║ ██║██████╔╝█████╗
6. # ╚════██║██║██║╚██╔╝██║██╔═══╝ ██║ ██╔══╝ ╚════██║ ██║ ██║ ██║██╔══██╗██╔══╝
7. # ███████║██║██║ ╚═╝ ██║██║ ███████╗███████╗███████║ ██║ ╚██████╔╝██║ ██║███████╗
8. # ╚══════╝╚═╝╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
9. #
10. #######################################################################################################
11. #
12. # Welcome to simplestore BootCamp! All our APIs are 100% TEst case coverage. So Just go through the
13. # testcase which is just a documents for us.
14. #
15. # NOTE:
16. # (1) For testing local and remote db is same as local db
17. # This is not just a test case file. However, This fill will list all the feature which has supported.
18. # Any feature must be converged with test case which ensure we don't break while adding new feature.
19. # Here is the feature we support:
20. # create, find, regex, update, hits, rankup, rankdown, delete, count
21. #
22. # FEATURE LIST :
23. # (1) We are not supporting _cmd API
24. # (9) Started supporting _analytics which offer to track the app useas time and other important stuff.
25. # (10) Started supporting appconfig which offer to do easy A/B testing across the apps.
26. #######################################################################################################
27. #
28. # Do you know?
29. # (a) We support two two interesting was of scheduling: using schedule2 and schedule script.
30. #
31. #
32. #
33. #
34. #
35. #
36. #######################################################################################################
37.
38. # Set ENV
39. #=> context => server => localhost
40.
41. # Quick Test add here
42.
43.
44. # API Error case
45. => GET => http://{{server}}/api/test0/test => 404 - We have not yet support this api
46. => POST => http://{{server}}/api/test0/create/ => abc => Unexpected token
47. => POST => http://{{server}}/api/test0/ => Hello => Unexpected token
48.
49. => GET => http://{{server}}/api/_test0/find => Invalid DB name
50. => POST => http://{{server}}/api/_test0/find => {} => Invalid DB name
51.
52. => GET => http://{{server}}/api/test0/ => Find successfully with
53. => POST => http://{{server}}/api/test0/ => {} => Find successfully wit
54.
55. #######################################################################################
56. # RULES for API Validation
57. # (a) Any params passes to the API using get of post like _abc will be treated as config.
58. # (b) The API internally can add abc_ fields which will be store in db but not exposed with API Resp.
59. #######################################################################################
60.
61. # Test Normalization like auto remove of abc_
62. => GET => http://{{server}}/api/test/delete?_confirmstr=test => success
63. => POST => http://localhost/api/test/insert=>{"name":"dip", "hidden_":"hidden"} => "name":"dip","ts_insert" # Hiden is not in resp hidden
64. => GET => http://{{server}}/api/test => "name":"dip","ts_insert"
65. # Test for object array
66. => POST => http://{{server}}/api/test/insert=>{"name":"dip2", "hidden_":"hidden"} => "name":"dip2","ts_insert" # Hiden is not in resp hidden
67. => GET => http://{{server}}/api/test => "name":"dip","ts_insert"
68. => GET => http://{{server}}/api/_test => access db with db name with
69.
70. #########################################################################################
71. ## ##
72. ## HOW TO ACCESS DOCS FILE ##
73. ## ##
74. #########################################################################################
75.
76. => GET => http://{{server}}/api/ => This is not just a test case file
77. => POST => http://{{server}}/api/ => {} => This is not just a test case file
78.
79. #########################################################################################
80. ## ##
81. ## APPLYING DB CONTSRINS ##
82. ## ##
83. #########################################################################################
84. => !GET => http://{{server}}/api/test/delete => missing _confirmstr
85. => !GET => http://{{server}}/api/test/delete?_confirmstr=delete => invalid _confirmstr
86. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => Deleted count is
87. => GET => http://{{server}}/api/test/delete?_confirmstr=test => Deleted count is : 0
88. => !GET => http://{{server}}/api/test/constraints/clear => all constraints cleared successfully
89.
90. => !GET => http://{{server}}/api/test0/constraints/clear => Invalid User Input # fix this test case
91. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
92.
93.
94. => !GET => http://{{server}}/api/test1/delete?_confirmstr=test1 => Deleted count is
95. => !GET => http://{{server}}/api/test1/constraints/clear => Invalid User Input # Fix this test case
96. #### DB restriction ####
97. => GET => http://{{server}}/api/_test => db name with _
98. => POST => http://{{server}}/api/_test => {} => db name with _
99. => GET => http://{{server}}/api/_test/delete => db name with _
100.
101.
102. #########################################################################################
103. ## ##
104. ## DB INSERTIONS ##
105. ## ##
106. #########################################################################################
107.
108. ######### Test: insert one or many ############
109. => GET => http://{{server}}/api/test0/create =>Trying insert Empty Object
110. => GET => http://{{server}}/api/test0/create?name=dip1&roll=10 => "ts_insert":"202
111. => GET => http://{{server}}/api/test0/insert?name=dip1&roll=10 => "ts_insert":"202
112. => POST => http://{{server}}/api/test0/insert => {} => error
113. => POST => http://{{server}}/api/test0/create => {"name":"dip2","roll":10} => 1 entry\(s\) insert successfully.
114. => POST => http://{{server}}/api/test0/create => {"_payload":[{"name":"dip3","roll":10},{"name":"dip3","roll":10}]} => 2 entry\(s\) insert successfully.
115. => POST => http://{{server}}/api/test0/insert => {"_payload":[{"name":"dip3","roll":10},{"name":"dip3","roll":10}]} => 2 entry\(s\) insert successfully.
116.
117. ########## BULK Insert
118. => POST => http://{{server}}/api/test0/bulk_insert => {"_payload":[{"name":"dip3","roll":10},{"name":"dip3","roll":10}]} => [2/2]
119. => POST => http://{{server}}/api/test0/bulk_insert => {"_payload":[{"name":"dip3","roll":10},{"name":"dip3","roll":10,"_id":10}]} => we found id for some entry which is not allowed
120.
121.
122.
123.
124.
125. #########################################################################################
126. ## ##
127. ## DB QUERY ##
128. ## ##
129. #########################################################################################
130. # allows to search over the db.
131. # You can use get or find alternatively in GET or POST Request.
132. # You can use _filter for advance ops and even pass Mongo query inside _filter while makeing POST.
133.
134. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
135. => !POST => http://{{server}}/api/test0/insert => {"_payload":[{"name":"dip1", "roll":10},{"name":"dip2", "roll":20},{"name":"dip3", "roll":30} ]} => 3 entry\(s\) insert successfully.
136. => !POST => http://{{server}}/api/test0/create => {"name":"dip","count":1} => "_id":"(?.*?)"
137. => GET => http://{{server}}/api/test0 => 4 items.
138. => GET => http://{{server}}/api/test0/ => 4 items.
139. => GET => http://{{server}}/api/test0/find => 4 items.
140. => GET => http://{{server}}/api/test0/find/ => 4 items.
141. => GET => http://{{server}}/api/test0/get => 4 items.
142. => GET => http://{{server}}/api/test0/get/ => 4 items.
143. => GET => http://{{server}}/api/test0/find?id={{id}} => Find successfully with 1 items
144. => GET => http://{{server}}/api/test0/get?id={{id}} => Find successfully with 1 items
145. => GET => http://{{server}}/api/test0/find?name=dip3 => 1 items
146. => GET => http://{{server}}/api/test0/find?name=dip1&roll=10 => 0 items
147. # you should you POST to make type senasitive serach.
148. => POST => http://{{server}}/api/test0/find => {"name":"dip3","roll":30} => 1 items.
149. #Test _filter
150. => GET => http://{{server}}/api/test0/find?_filter=name:dip3 => 1 items
151. => POST => http://{{server}}/api/test0/find => {"_filter":"name:dip3"} => 1 items
152. => POST => http://{{server}}/api/test0/find => {"_filter":{"name":"dip3"}} => 1 items
153. => POST => http://{{server}}/api/test0/find => {"_filter":{"name":{"$regex":"dip","$options":"i"}}} => 4 items
154. => GET => http://{{server}}/api/test0/ => 4 items
155. # FIX ME: GET => http://{{server}}/api/test0 => 4 items
156.
157.
158.
159. # ======= _page and _limit =================
160. # A SS way to support pagination.
161.
162. => !POST => http://{{server}}/api/test0/insert => {"_payload":[{"name":"dip20", "roll":10},{"name":"dip21", "roll":20},{"name":"dip22", "roll":30},{"name":"dip23", "roll":10},{"name":"dip24", "roll":20},{"name":"dip25", "roll":30},{"name":"dip26", "roll":10},{"name":"dip27", "roll":20},{"name":"dip28", "roll":30},{"name":"dip29", "roll":10},{"name":"dip30", "roll":20},{"name":"dip31", "roll":30} ]} => 12 entry
163. => GET => http://{{server}}/api/test0/find?_page=0 => 10 items
164. => GET => http://{{server}}/api/test0/find?_page=1 => 6 items
165. => GET => http://{{server}}/api/test0/find?_limit=2 => 2 items
166. => GET => http://{{server}}/api/test0/find?_page=0&_limit=2 => 2 items
167. => GET => http://{{server}}/api/test0/find?_page=1&_limit=2 => Find successfully with 2 items \(page:1, limit:2\)
168. => GET => http://{{server}}/api/test0/find?_page=200&_limit=2 => 0 items
169.
170. # _project helps to return only those ele in the find.
171. => GET => http://{{server}}/api/test0/find?_project=_id => ,{"_id":".*?"},
172. => GET => http://{{server}}/api/test0/find?_project=name => {"name":".*?"},{"name":".*?"},
173. => GET => http://{{server}}/api/test0/find?_project=_id,name => {"_id":".*?","name":".*?"},
174. => GET => http://{{server}}/api/test0/find?_project=_id,name,roll => {"_id":".*?","name":".*?","roll":.*?},{
175. => GET => http://{{server}}/api/test0/find?_project= => ts_insert
176. => GET => http://{{server}}/api/test0/find?_project=unknown => \[{},{},{},{}
177.
178. #==================== ~ with _filter ===================
179. # we use _filter to filter documents for insert/delete/find/update. we can use _filter in POST
180. # to support = operator which should be replaced by : for GET. You should use ~ for partial matching REGEX.
181.
182. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
183. => !POST => http://{{server}}/api/test0/insert => {"_payload":[{"name":"dip1"},{"name":"dip2"},{"name":"supdi2"} ]} => 3 entry\(s\) insert successfully.
184. => GET => http://{{server}}/api/test0/find?_filter=name:dip1 => 1 items
185. => GET => http://{{server}}/api/test0/find?_filter=name~dip1 => 1 items
186. => GET => http://{{server}}/api/test0/find?_filter=name~p => 3 items
187. => GET => http://{{server}}/api/test0/find?_filter=name~^di => 2 items
188. => GET => http://{{server}}/api/test0/find?_filter=name~1$ => 1 items.
189.
190.
191.
192. #=================== regex =======================
193. # this a way to support regular expression search.
194.
195. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
196. => !POST => http://{{server}}/api/test0/create?_confirmstr=test0 => {"_payload":[{"name":"dip1","roll":1}, {"name":"dip2","roll":2}, {"name":"xip2","roll":3}]} => success
197. => GET => http://{{server}}/api/test0/regex?name=^d => with 2 items.
198. => GET => http://{{server}}/api/test0/regex?name=1$ => with 1 items.
199.
200.
201. #================= @today, @week, @month ==============
202. => GET => http://{{server}}/api/test0?ts_insert=@today =>3 items
203. => GET => http://{{server}}/api/test0/count?ts_insert=@week => Count: 3
204. => GET => http://{{server}}/api/test0?ts_insert=@month =>3 items
205. => GET => http://{{server}}/api/test0?ts_update=@today =>3 items
206. => GET => http://{{server}}/api/test0?ts_update=@week => 3 items
207. => GET => http://{{server}}/api/test0/count?ts_update=@month =>Count: 3
208. => GET => http://{{server}}/api/test0/count?ts_update=@3DaysOld =>Count: 0
209. => GET => http://{{server}}/api/test0/count?ts_update=@7DaysOld =>Count: 0
210.
211. # ==== TEST get random ####
212. => GET => http://{{server}}/api/test0/get_random?_limit=3 => returned random list of size : 3
213. => GET => http://{{server}}/api/test0/get_random?_limit=3 => returned random list of size : 3
214.
215. #########################################################################################
216. ## ##
217. ## DB UPDATE ##
218. ## ##
219. #########################################################################################
220.
221. #============= create and update =================
222. # 1. Test We able update an specific entry
223. # 2. Test we update multiple entry by filter.
224. # 3. Test we update multiple entry with multiple specific data ( using _payload.)
225.
226. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
227. => !POST => http://{{server}}/api/test0/create => {"name":"subha","roll":1} => success
228. => !POST => http://{{server}}/api/test0/create => {"name":"subha","roll":2} => success
229. # Simple create should be return list everywhere
230. => POST => http://{{server}}/api/test0/create => {"name":"hari","roll":3} => "out":\[{"name":"hari",
231. => GET => http://{{server}}/api/test0/update?id={{id}}&name=hari1 => "name":"hari1"
232. => GET => http://{{server}}/api/test0/update?id={{id}}&name=hari2 => "name":"hari2"
233. => GET => http://{{server}}/api/test0/update?roll=10&_filter=name:subha => missing _confirmstr
234. => GET => http://{{server}}/api/test0/update?_filter=name:subha&_confirmstr=test0 => Looks like you are sending empty data
235. => GET => http://{{server}}/api/test0/update?roll=10&_filter=name:subha&_confirmstr=test0 => Successfully updated 2 entry out of 2 matched cout
236. => POST => http://{{server}}/api/test0/update => {"roll":10,"_filter":{"name":"subha"},"_confirmstr":"test0"} => Successfully updated 2 entry out of 2 matched cout
237. => POST => http://{{server}}/api/test0/update => {"_payload":[{"name":"dip"}], "_confirmstr":"test0"} => each object in _payload must have a id
238.
239.
240. ########################## Subentry #################################################################
241. # This helps to building facebook post with comments
242. # adding subentry to a database entry: like adding a comments
243. # Whne you add a subentry , it will create a entry_id as a uniquer id whcih can be used to delete.
244. ######################################################################################################
245. => !GET => http://{{server}}/api/test1/delete?_confirmstr=test1 => Deleted count is
246. => !POST => http://{{server}}/api/test1/insert => {"name":"A1","comments":[]} => "_id":"(?.*?)"
247. => POST => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}"} => Missing key
248. => POST => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}","key":"comments"} => Missing value
249. => POST => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}","key":"comments","value":10} => error
250. => POST => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}","key":"comments","value":{"msg":"message1"}} => "msg":"message1"
251. => POST => http://{{server}}/api/test1/subentry/add? => {"_id":"601ddf283ac366b16c634000","key":"comments","value":{"msg":"message1"}} => not found this id
252. => POST => http://{{server}}/api/test1/subentry/add? => {"_id":"{{id1}}","key":"comments","value":{"msg":"message1"}} => "msg":"message1"
253. => POST => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}","key":"comments","value":[{"msg":"message2"},{"msg":"message3"}]} => Input is not an object
254. => POST => http://{{server}}/api/test1/subentry/add_many => {"id":"{{id1}}","key":"comments","value":[{"msg":"message2"},{"msg":"message3"}]} => "msg":"message3"
255. => POST => http://{{server}}/api/test1 => {"id":"{{id1}}"} => "msg":"message3"
256. #Check add remove
257. => POST => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}","key":"comments","value":{"msg":"message4"}} => "entry_id":"(?.*?)"
258. => POST => http://{{server}}/api/test1/subentry/remove => {"id":"{{id1}}", "key":"comments", "entry_id":"{{entry_id}}"} => success
259. => POST => http://{{server}}/api/test1/subentry/get => {"id":"{{id1}}"} => This feature not yet supported
260.
261. # test update
262. => !POST => http://{{server}}/api/test1/insert => {"name":"A2","comments":[]} => "_id":"(?.*?)"
263. => POST => http://{{server}}/api/test1/subentry/add? =>{"_id":"{{id1}}", "key":"comments", "value":{"msg":"hello","name":"hello"}} => "entry_id":"(?.*?)" => "name":"hello"
264. # This should merge
265. => POST => http://{{server}}/api/test1/subentry/update? =>{"_id":"{{id1}}","entry_id":"{{entry_id}}", "key":"comments", "value":{"msg":"hello1", "color":"red"}} => successfully update subentry with key
266. => POST => http://{{server}}/api/test1/ => {"_id":"{{id1}}"} => "name":"hello"
267. => POST => http://{{server}}/api/test1/ => {"_id":"{{id1}}"} => "color":"red"
268.
269. #Testing with auth_token_
270. => POST => http://{{server}}/api/test1/subentry/update? => {"_id":"{{id1}}","entry_id":"{{entry_id}}", "key":"comments", "value":{"msg":"hello1", "color":"red"}, "auth_token_":"skip"} => successfully update subentry with key
271.
272. => !GET => http://{{server}}/api/test1/delete?_confirmstr=test1 => Deleted count is
273.
274.
275.
276. ############# BULK UPDATE #############################
277. => !POST => http://{{server}}/api/test0/insert => {"name":"A1"} => "_id":"(?.*?)"
278. => !POST => http://{{server}}/api/test0/insert => {"name":"A2"} => "_id":"(?.*?)"
279. => POST => http://{{server}}/api/test0/bulkupdate => {"_payload":[]} => missing _confirmstr
280. => POST => http://{{server}}/api/test0/bulkupdate => {"_payload":[], "_confirmstr":"test0"} => ensureHasNonEmptyPayload
281. => POST => http://{{server}}/api/test0/bulkupdate => {"_payload":[{"name":"10"}], "_confirmstr":"test0"} => ensurePayloadHasId
282. => POST => http://{{server}}/api/test0/bulkupdate => {"_payload":[{"id":"{{id1}}", "name":"B1","tool":3}, {"id":"{{id2}}", "name":"B2"}], "_confirmstr":"test0"} => 2/2
283. => GET => http://{{server}}/api/test0?_id={{id1}} => B1
284.
285.
286. #===================== insertorupdate =============================
287. => !POST => http://{{server}}/api/test0/insertorupdate => {} => _field is missing
288. => !POST => http://{{server}}/api/test0/insertorupdate => {"_payload":[{"name":"dip","roll":1}, {"name":"dip2","roll":1}],"_field":"name"} => 2/0
289. => !POST => http://{{server}}/api/test0/insertorupdate => {"_payload":[{"name":"dip","roll":2}, {"name":"dip2","roll":2},{"name":"dip3","roll":3}],"_field":"name"} => 1/2
290.
291.
292. #########################################################################################
293. ## ##
294. ## DB DELETE ##
295. ## ##
296. #########################################################################################
297.
298. # delete allows to delete one or many items or all the items. to delete in bulk you need to
299. # provide _confirmstr as a db name. A db starting with nodel_ don't support any delete _operation by design.
300.
301. => GET => http://{{server}}/api/test0/delete => missing _confirmstr
302. => GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
303. => GET => http://{{server}}/api/nodel_test0/delete?_confirmstr=nodel_test0 => The DB has marked as nodel
304.
305. #########################################################################################
306. ## ##
307. ## DB RANK ##
308. ## ##
309. #########################################################################################
310.
311. # ranks and hits are the simplestore ways to ranking algorithms
312. # hits will help increment or decrements ranking.
313. # rankup - will rankup based on rank strategies
314. # rankdown - will rankdown based on rank strategies
315.
316. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is : 0
317. => !POST => http://{{server}}/api/test0/create => {"name":"dip","count":1} => "_id":"(?.*?)"
318. => GET => http://{{server}}/api/test0/find?id={{id}} => Find successfully with 1 items
319. => GET => http://{{server}}/api/test0/hits => You must pass a _id
320. => GET => http://{{server}}/api/test0/hits?_field=count => You must pass a _id
321. => GET => http://{{server}}/api/test0/hits?id={{id}}=> _field is missing
322. => GET => http://{{server}}/api/test0/hits?_field=count&id={{id}} => ","out":2,"help"
323. => GET => http://{{server}}/api/test0/hits?_field=count&id={{id}} => ","out":3,"help"
324. # Adjust the bellow test as they are right.
325. => GET => http://{{server}}/api/test0/hits?_field=count&id={{id}}&_value=8 => 11
326. => GET => http://{{server}}/api/test0/hits?_field=count&id={{id}}&_value=-1 => 10
327. => GET => http://{{server}}/api/test0/increment?_field=count&id={{id}}&_value=-1 => ","out":9,"help"
328. => GET => http://{{server}}/api/test0/increment/?_field=count&id={{id}}&_value=-1 => 8
329. => GET => http://{{server}}/api/test0/increment?_field=count&id=wrongID&_value=-1 => not a valid ID
330. => GET => http://{{server}}/api/test0/increment?_field=count&id=5df55c6273df4d3ec6cbcf15&_value=-1 => Item not found
331.
332.
333. => !GET => http://{{server}}/api/test0/create?name=dip1 => "_id":"(?.*?)"
334. => GET => http://{{server}}/api/test0/rankup => You must pass a _id
335. => GET => http://{{server}}/api/test0/rankup?id={{id}} => _field is missing
336. => GET => http://{{server}}/api/test0/rankup?_field=count => You must pass a _id
337. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => ","out":1,"help"
338. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 2
339. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 3
340. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 4
341. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 5
342. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 6
343. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 7
344. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 8
345. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 9
346. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 10
347. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 10
348. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => ","out":9,"help"
349. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 8
350. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 7
351. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 6
352. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 5
353. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 4
354. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 3
355. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 2
356. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 1
357. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 0
358. => GET => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 0
359. => GET => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 1
360.
361. #########################################################################################
362. ## ##
363. ## DB COUNT ##
364. ## ##
365. #########################################################################################
366.
367. # just count elements of find or filter.
368.
369. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is : 2
370. => !POST => http://{{server}}/api/test0/create?_confirmstr=test0 => {"_payload":[{"name":"dip","roll":1}, {"name":"dip","roll":2}, {"name":"sup","roll":3}]} => success
371. => GET => http://{{server}}/api/test0/count => 3
372. => GET => http://{{server}}/api/test0/count?name=dip => 2
373. => GET => http://{{server}}/api/test0/count?roll=3 => 0
374. => POST => http://{{server}}/api/test0/count => {"roll":3} => 1
375.
376. #########################################################################################
377. ## ##
378. ## DB AGGRESSION ##
379. ## ##
380. #########################################################################################
381.
382. # sum is the aggregation framework for simplestore. It allows to count, sum, max,min avg on
383. # a _field.
384.
385. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
386. => !POST => http://{{server}}/api/test0/create?_confirmstr=test0 => {"_payload":[{ "name": "Infosys", "qty": 100, "price": 800 }, { "name": "TCS", "qty": 100, "price": 2000 },{ "name": "Wipro", "qty": 2500, "price": 300 }]} => success
387. => GET => http://{{server}}/api/test0/sum => _field is missing
388. => GET => http://{{server}}/api/test0/sum?_field=qty => 2700
389. => POST => http://{{server}}/api/test0/sum => {"_field" : "qty"} => 2700
390. => POST => http://{{server}}/api/test0/sum => {"_field" : "qty", "_operation":"$max"} => 2500
391. => POST => http://{{server}}/api/test0/sum => {"_field" : "qty", "_operation":"$min"} => 100
392. => POST => http://{{server}}/api/test0/sum => {"_field" : "qty", "_operation":"$avg"} => 900
393. => POST => http://{{server}}/api/test0/sum => {"_field":"qty", "_filter":{"qty":100}} => 200
394.
395. #########################################################################################
396. ## ##
397. ## DB CONSTRAINT ##
398. ## ##
399. #########################################################################################
400. # Constraints allows us to dynamically insert of delete the unique key for a db.
401. # we sound support other func like not null or datatype constraints.
402.
403. => !GET => http://{{server}}/api/test1/delete?_confirmstr=test1 => success
404. => GET => http://{{server}}/api/test1/constraints/get => all constraints returned successfully
405. => GET => http://{{server}}/api/test1/constraints/add?name=unique => all constraints added successfully
406. => GET => http://{{server}}/api/test1/constraints/get => name_1
407. => GET => http://{{server}}/api/test1/constraints/remove => all constraints removed successfully
408. => GET => http://{{server}}/api/test1/constraints/get => all constraints returned successfully
409. => GET => http://{{server}}/api/test1/constraints/add?name=unique => name_1
410. => GET => http://{{server}}/api/test1/constraints/add?name1=unique1 => invalid constraints found:
411. => GET => http://{{server}}/api/test1/constraints/clear => all constraints cleared successfully
412. => GET => http://{{server}}/api/test1/constraints/get => all constraints returned successfully
413.
414. => !GET => http://{{server}}/api/test1/constraints/clear => all constraints cleared successfully
415. => !GET => http://{{server}}/api/test1/constraints/add?name=unique => all constraints added successfully
416. => POST => http://{{server}}/api/test1/insert => {"name":"DIP"} => insert successfully
417. => POST => http://{{server}}/api/test1/insert => {"name":"DIP"} => duplicate key error collection
418. => POST => http://{{server}}/api/test1/insert => {"_payload":[{"name":"DIP"},{"name":"DIP1"}]} => E11000 duplicate key error collection
419. => GET => http://{{server}}/api/test1 => DIP1
420.
421. #============= BULK INSERT =====================
422. # Bulk insert allows you to insert a list of items to DB even if some items are not able insert. It's similar to insert
423. # but provides the count of success and fails.
424.
425. => POST => http://{{server}}/api/test1/bulk_insert => {"name":"DIP"} => you must send _payload as list
426. => POST => http://{{server}}/api/test1/bulk_insert => {"_payload":[{"name":"DIP"},{"name":"DIP1"}]} => 0/2
427. => POST => http://{{server}}/api/test1/bulk_insert => {"_payload":[{"name":"DIP"},{"name":"DIP3"}]} => 1/2
428.
429.
430. #########################################################################################
431. ## ##
432. ## DB TAGS ##
433. ## ##
434. #########################################################################################
435. # Tags allows us to adding, removing and searching tags attached to a documents. This is essentially
436. # a tagging mechanism to support hashtag or categories a documents. It's works like a set _operation.
437. # you need to use rwa_search to do the searching the tag.
438. => POST => http://{{server}}/api/test/tags/add => {"_id":"{{id}}", "_field":"tag"} => You have not send either _field or _value.
439. => POST => http://{{server}}/api/test/tags/add => {"_id":"{{id}}", "_value":"tag"} => You have not send either _field or _value.
440. => !POST => http://{{server}}/api/test/create => {"name":"dip","count":1} => "_id":"(?.*?)"
441. => GET => http://{{server}}/api/test/tags/clear?id=5daa8d3ea216e2d820e2c09e&_field=tag&_value=10,20 => item has not found
442. => GET => http://{{server}}/api/test/tags/clear?id={{id}}&_field=tag&_value=10,20 => "tag":\[\]
443. => GET => http://{{server}}/api/test/tags/add?id={{id}}&_field=tag&_value=10,20 => \["10","20"\]
444. => GET => http://{{server}}/api/test/tags/add?id={{id}}&_field=tag&_value=10,20 => \["10","20"\]
445. => GET => http://{{server}}/api/test/tags/add?id={{id}}&_field=tag&_value=10,20,30,40 => \["10","20","30","40"\]
446. => GET => http://{{server}}/api/test/tags/remove?id={{id}}&_field=tag&_value=10 => \["20","30","40"\]
447. => GET => http://{{server}}/api/test/tags/remove?id={{id}}&_field=tag&_value=10 => \["20","30","40"\]
448. => GET => http://{{server}}/api/test/tags/clear?id={{id}}&_field=tag&_value='' => "tag":\[\]
449.
450.
451. #########################################################################################
452. ## ##
453. ## DB INDEX ##
454. ## ##
455. #########################################################################################
456.
457. => POST => http://{{server}}/api/test/index => {} => you must send _payload as list
458. => POST => http://{{server}}/api/test/index => {"_payload":[]} => You must NOT send a empty list
459. # TODO: BROKEN TEST - FIX IT
460. # => POST => http://{{server}}/api/test/index => {"_payload":[{ "ts_insert": 1 }, { "expireAfterSeconds": 60 }]} => \{"ts_insert":1,"expireAfterSeconds":60\}
461.
462.
463.
464.
465.
466.
467. #==================== Help =================================
468. # TODO : BROKEN FIX IT -- BLOCKING TEST
469. #=> POST => http://{{server}}/api/test/index/help => {} => This API is used to create Index for a DB
470. #=> GET => http://{{server}}/api/test/index/help => This API is used to create Index for a DB
471.
472.
473.
474. #########################################################################################
475. ## ##
476. ## DB DISTRIBUTION ##
477. ## ##
478. #########################################################################################
479. => !POST => http://{{server}}/api/test/bulk_insert => {"_payload":[{"type":"a","roll":1},{"type":"a","roll":1},{"type":"a","roll":1},{"type":"b","roll":1},{"type":"b","roll":2},{"type":"c","roll":1},{"type":"d","roll":2},{"type":"d","roll":2}]} => 8/8
480. => POST => http://{{server}}/api/test/distribution => {"roll":1,"_field":"type"} => {"count":3,"type":"a"}
481. => POST => http://{{server}}/api/test/distribution?_viewas=chartjs => {"roll":1,"_field":"type"} => "borderWidth":1
482. => POST => http://{{server}}/api/test/distribution => {"roll":1,"ts_insert":"@today", "_field":"type"} => {"count":3,"type":"a"}
483. => POST => http://{{server}}/api/test/distribution => {"roll":2,"_field":"type"} => {"count":2,"type":"d"}
484.
485.
486.
487. #########################################################################################
488. ## ##
489. ## DB TIME SERIES ##
490. ## ##
491. #########################################################################################
492. => !POST => http://{{server}}/api/test/create => {"_payload":[{"name":"dipp","number":10}, {"name":"dipp","number":20}, {"name":"dipp1","number":20}]} => success
493. => GET => http://{{server}}/api/test/ts => "count":12
494. => GET => http://{{server}}/api/test/ts?name=dipp&_field=dummy => "count":2,
495.
496.
497. #########################################################################################
498. ## ##
499. ## APP ANALYTICS ##
500. ## ##
501. #########################################################################################
502. # Note it is causing the perf issue for we black listed the analytics API
503. # _analytics will provides Analytics in the app.
504. #=> context => app_id => test.app
505. #=> !GET => http://{{server}}/api/analytics/delete?app_id={{app_id}}&_confirmstr=analytics => success
506. #=> POST => http://{{server}}/api/_analytics/launch => {"app_id":"{{app_id}}","app_version":"1.0","device_os":"android", "device_id":"abc","device_api":"27"} => "session":"(?.*?)"
507. #=> POST => http://{{server}}/api/_analytics/action => {"app_id":"{{app_id}}","session":"{{session}}","type":"click", "target_id":"btn1"} => Tracked action
508. #=> POST => http://{{server}}/api/_analytics/exception => {"app_id":"{{app_id}}", "session":"{{session}}","type":"RuntimeException", "location":"Main.c:20","stack":"full stack here"} => Tracked exception
509. #=> POST => http://{{server}}/api/_analytics/timeit => {"app_id":"{{app_id}}", "session":"{{session}}", "total_time": 10000, "type" :"Activity", "block":"MainActivity"} => Tracked timeit
510. #=> GET => http://{{server}}/api/_analytics/hit_tracker?app_id={{app_id}}&action=play => 1
511. #=> GET => http://{{server}}/api/_analytics/hit_tracker?app_id={{app_id}}&action=play => 2
512. #=> GET => http://{{server}}/api/_analytics/hit_tracker?app_id={{app_id}}&action=play => 3
513. #=> GET => http://{{server}}/api/_analytics/hit_tracker?app_id={{app_id}}&action=pause => 1
514. #=> GET => http://{{server}}/api/_analytics/hit_tracker?app_id={{app_id}}&action=pause => 2
515. #=> POST => http://{{server}}/api/_analytics/logs => {"app_id":"{{app_id}}"} => found all logs
516. #=> POST => http://{{server}}/api/_analytics/logs => {"app_id":"Invalid"} => "out":\[\],
517. #=> POST => http://{{server}}/api/_analytics/session_history => {"session":"{{session}}"} => History returned
518. #=> GET => http://{{server}}/api/_analytics/session_history?session={{session}} => History returned
519. #=> POST => http://{{server}}/api/_analytics/app_summary_today => {"app_id":"{{app_id}}"} => not yet supported
520. #=> POST => http://{{server}}/api/_analytics/app_summary_week => {"app_id":"{{app_id}}"} => not yet supported
521. #
522. #
523. #=> context => app_id => test.app
524. #=> !GET => http://{{server}}/api/analytics/delete?app_id={{app_id}}&_confirmstr=analytics => success
525. #=> POST => http://{{server}}/api/analytics/launch => {"app_id":"{{app_id}}","app_version":"1.0","device_os":"android", "device_id":"abc","device_api":"27"} => "session":"(?.*?)"
526. #=> POST => http://{{server}}/api/analytics/action => {"app_id":"{{app_id}}","session":"{{session}}","type":"click", "target_id":"btn1","tag":"btn_click"} => Tracked action
527. #=> POST => http://{{server}}/api/analytics/action => {"app_id":"{{app_id}}","session":"{{session}}","type":"click", "target_id":"btn1", "tag":"btn_click"} => Tracked action
528. #=> POST => http://{{server}}/api/analytics/exception => {"app_id":"{{app_id}}", "session":"{{session}}","type":"RuntimeException", "location":"Main.c:20","stack":"full stack here"} => Tracked exception
529. #=> POST => http://{{server}}/api/analytics/exception => {"app_id":"{{app_id}}", "session":"{{session}}","type":"RuntimeException", "location":"Main.c:20","stack":"full stack here"} => Tracked exception
530. #=> POST => http://{{server}}/api/analytics/timeit => {"app_id":"{{app_id}}", "session":"{{session}}", "total_time": 10000, "type" :"Activity", "block":"MainActivity"} => Tracked timeit
531. #=> GET => http://{{server}}/api/analytics/hit_tracker?app_id={{app_id}}&action=play => 1
532. #=> GET => http://{{server}}/api/analytics/hit_tracker?app_id={{app_id}}&action=play => 2
533. #=> GET => http://{{server}}/api/analytics/hit_tracker?app_id={{app_id}}&action=play => 3
534. #=> GET => http://{{server}}/api/analytics/hit_tracker?app_id={{app_id}}&action=pause => 1
535. #=> GET => http://{{server}}/api/analytics/hit_tracker?app_id={{app_id}}&action=pause => 2
536. #=> POST => http://{{server}}/api/analytics/logs => {"app_id":"{{app_id}}"} => found all logs
537. #=> POST => http://{{server}}/api/analytics/logs => {"app_id":"Invalid"} => "out":\[\],
538. #=> POST => http://{{server}}/api/analytics/session_history => {"session":"{{session}}"} => History returned
539. #=> GET => http://{{server}}/api/analytics/session_history?session={{session}} => History returned
540. #=> POST => http://{{server}}/api/analytics/app_summary_today => {"app_id":"{{app_id}}"} => We have not yet support this api
541. #=> POST => http://{{server}}/api/analytics/app_summary_week => {"app_id":"{{app_id}}"} => We have not yet support this api
542. #=> GET => http://{{server}}/api/analytics/show => Please select a app id:
543. #=> GET => http://{{server}}/api/analytics/show?app_id={{app_id}} => Main.c:20
544.
545. #########################################################################################
546. ## ##
547. ## APP APPCONFIG ##
548. ## ##
549. #########################################################################################
550. ## appconfig allows you gate your feature and do A/B testing.
551. ## TODO: This test is broken, we need to fix it.
552. #=> context => app_id => test.app
553. #=> POST => http://{{server}}/api/appconfig/fetch => {} => Input validation failed: Missing app_id
554. #=> POST => http://{{server}}/api/appconfig/clear => {"app_id":"{{app_id}}"} => AppConfig config has deleted
555. #=> POST => http://{{server}}/api/appconfig/fetch => {"app_id":"{{app_id}}"} => Error: AppConfig not found for this app id
556. #=> POST => http://{{server}}/api/appconfig/set => {"app_id":"{{app_id}}","test1":false} => "gk_list":{"test1":{"type":"raw","key":"test1","value":false}}}
557. #=> POST => http://{{server}}/api/appconfig/set => {"app_id":"{{app_id}}","test2":"something"} => "test2":{"type":"raw","key":"test2","value":"something"
558. ## Enable feature 60%
559. #=> POST => http://{{server}}/api/appconfig/ab => {"app_id":"{{app_id}}","test3":60} => "test3":{"type":"ab","key":"test3","value":60}}}
560. #=> POST => http://{{server}}/api/appconfig/fetch => {"app_id":"{{app_id}}"} => "force_id":"(?.*?)"
561. #=> POST => http://{{server}}/api/appconfig/fetch => {"app_id":"{{app_id}}"} => force_id
562. #=> POST => http://{{server}}/api/appconfig/force => {"app_id":"{{app_id}}"} => "force_id":"(?.*?)"
563. #=> POST => http://{{server}}/api/appconfig/fetch => {"app_id":"{{app_id}}"} => force_id
564. #=> POST => http://{{server}}/api/appconfig/set => {"app_id":"in.peerreview.khabar","min_version":28} =>success
565. #=> POST => http://{{server}}/api/appconfig/fetch => {} => 28
566.
567.
568. # ======= exist API ===================
569. => !POST => http://{{server}}/api/test/create?_confirmstr=test0 => {"_payload":[{"name":"dip","roll":1}, {"name":"dip1","roll":2}]} => success
570. => POST => http://{{server}}/api/test/exist => {} => You have not send either _field or _value
571. => POST => http://{{server}}/api/test/exist => {"_field":"name"} => You have not send either _field or _value
572. => POST => http://{{server}}/api/test/exist => {"_field":"name","_value":""} => You have not send either _field or _value.
573. => POST => http://{{server}}/api/test/exist => {"_field":"name","_value":",,,"} => You must NOT send a not empty _value as a list or equivalent comma separated string
574. => POST => http://{{server}}/api/test/exist => {"_field":"name","_value":"dip"} => Found 1 out of 1.
575. => POST => http://{{server}}/api/test/exist => {"_field":"name","_value":"dip, dip1"} => Found 2 out of 2.
576. => POST => http://{{server}}/api/test/exist => {"_field":"name","_value":["dip","dip1"]} => Found 2 out of 2.
577.
578. # ===== _viewas =====================
579. => GET => http://{{server}}/api/test/find?_viewas=compressed => Find successfully
580. => GET => http://{{server}}/api/test/find?_viewas=invalid => Network request contains invalid _viewas
581. => GET => http://{{server}}/api/test/find?name=dip&_viewas=input => "input":\{"name":"dip"
582. => GET => http://{{server}}/api/test/?_viewas=html => button type="button" onclick="clone
583.
584.
585. #=== aggregate API ===========
586. => !POST => http://{{server}}/api/test/create?_confirmstr=test => {"_payload":[{"product":"X","type":"type1"}, {"product":"X","type":"type1"}, {"product":"Y","type":"type1"}, {"product":"Y","type":"type2"}, {"product":"Z","type":"type2"}]} => success
587. => POST => http://{{server}}/api/test/aggregate => {} => you must send _payload as list
588. => POST => http://{{server}}/api/test/aggregate => {"_payload":{"hello":"hello"}} => you must send _payload as list
589. => POST => http://{{server}}/api/test/aggregate => {"_payload": [ {"$match":{"type":"type1"}}, {"$group": {"_id": "$product","count": {"$sum": 1}}}] } => {"_id":"X","count":2}
590.
591. #====== date api ======
592. => POST => http://{{server}}/api/utils/date => {} => 202
593. => GET => http://{{server}}/api/utils/date => 202
594.
595. # ============ test /dbconfig ====================
596. => GET => http://{{server}}/api/test10/dbconfig => DbConfig not found
597. => GET => http://{{server}}/api/test_r/dbconfig => \{"local":false\}
598.
599. # ========== type-sefty and data validation ======
600. # define rules as per https://github.com/skaterdav85/validatorjs
601. # supported type: string, array, boolean, date, email, integer, numeric,regex:pattern,
602. # Supported constraints: required, not_in:foo,bar , max:value. min:value, in:foo,bar
603. => GET => http://{{server}}/api/test_v/insert?aa=aa => The name field is required
604. => POST => http://{{server}}/api/test_v/insert =>{"name":""}=> name field must not empty
605. # Also detect empty string
606. => POST => http://{{server}}/api/test_v/insert =>{"name":" "}=> name field must not empty
607. => POST => http://{{server}}/api/test_v/insert =>{"name":" "}=> name field must not empty
608. => GET => http://{{server}}/api/test_v/insert?name=dip => The email field is required
609. => GET => http://{{server}}/api/test_v/insert?name=aa&email=dip => email must be email
610. => GET => http://{{server}}/api/test_v/insert?name=aa&email=dip@dip.com => insert successfully
611. => POST => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","array":"hello"} => array must be a array
612. => POST => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","array":["hello"]} => insert successfully
613.
614. => POST => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","boolean":100} => boolean must be a boolean
615. => POST => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","boolean":true} => insert successfully
616.
617. => POST => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","number":"hello"} => number must be a number
618. => POST => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","number":1000} => "_id":"(?.*?)"
619. => POST => http://{{server}}/api/test_v/update => {"_id":"{{id}}","number":"1D000"} => number must be a number
620. => POST => http://{{server}}/api/test_v/update => {"_id":"{{id}}","number":"10000"} => success
621. => POST => http://{{server}}/api/test_v/update => {"_id":"{{id}}","number":10000} => success
622. => POST => http://{{server}}/api/test_v/update => {"_id":"{{id}}","array":"1D000"} => array must be a array
623. => POST => http://{{server}}/api/test_v/update => {"_id":"{{id}}","array":["1D000"]} => success
624. => GET => http://{{server}}/api/test_v/update?number="123D"&_confirmstr=test_v => number must be a number
625. => GET => http://{{server}}/api/test_v/update?number=123&_confirmstr=test_v => success
626. => POST => http://{{server}}/api/test_v/insert => {"_payload":[{"name":"aa","email":"dip@dip.com","number":1000},{"name":"aa","email":"dip@dip.com","number":1000}]} => success
627. => POST => http://{{server}}/api/test_v/insert => {"_payload":[{"name":"aa","email":"dip@dip.com","number":"WRONG"},{"name":"aa","email":"dip@dip.com","number":1000}]} => error
628. => POST => http://{{server}}/api/test_v/insert => {"_payload":[{"name":"aa","email":"dip@dip.com","number":"WRONG"},{"name":"aa","email":"dip@dip.com","number":"WRONG"}]} => error
629.
630.
631. ###################################################################
632. #
633. # Advance Search with RHS Color search
634. # Supported annotation:
635. # eq, ne, starts, ends:, regex:, in:, all:,int:eqi, nei, date:
636. ###################################################################
637. => !GET => http://{{server}}/api/test/delete?_confirmstr=test =>success
638. => !POST => http://{{server}}/api/test/insert => {"name":"A123","roll":10,"color":["red","green"]} => success
639. => !POST => http://{{server}}/api/test/insert => {"name":"B123","roll":11,"color":["red","blue"]} => success
640. => !POST => http://{{server}}/api/test/insert => {"name":"C124","roll":12,"color":["blue","green"]} => success
641. => !POST => http://{{server}}/api/test/insert => {"name":"xxx:xx66"} => success
642. => GET => http://{{server}}/api/test/count?name=eq:A123 => Count: 1
643. => GET => http://{{server}}/api/test/count?name=ne:A123 => Count: 3
644. => GET => http://{{server}}/api/test/count?name=starts:A => Count: 1
645. => GET => http://{{server}}/api/test/count?name=ends:3 => Count: 2
646. => GET => http://{{server}}/api/test/count?name=regex:12 => Count: 3
647. => GET => http://{{server}}/api/test/count?color=in:red => Count: 2
648. => GET => http://{{server}}/api/test/count?color=in:red,green => Count: 3
649. => GET => http://{{server}}/api/test/count?color=in:red, green,,,, => Count: 3
650. => GET => http://{{server}}/api/test/count?color=in:green,red => Count: 3
651. => GET => http://{{server}}/api/test/count?color=all:green,red => Count: 1
652. => GET => http://{{server}}/api/test/count?color=all:green,red,blue => Count: 0
653. => GET => http://{{server}}/api/test/count?color=all:green,red, blue, => Count: 0
654. => GET => http://{{server}}/api/test/count?color=in: green, red, blue, => Count: 3
655. => GET => http://{{server}}/api/test/count?color=in:green,red, blue,&name=starts:A => Count: 1
656. => GET => http://{{server}}/api/test/count?name=xxx:xx66 => Count: 1
657. => GET => http://{{server}}/api/test/count?roll=int:10 => Count: 1
658. => GET => http://{{server}}/api/test/count?roll=eqi:10 => Count: 1
659. => GET => http://{{server}}/api/test/count?roll=nei:10 => Count: 3
660. => GET => http://{{server}}/api/test/count?roll=eqi:XX => Count: 0
661.
662. # Test Params annotation
663. => !GET => http://{{server}}/api/test/delete?_confirmstr=test =>success
664. => GET => http://{{server}}/api/test/insert?rate=number:abc => params starts with number:XX
665. => GET => http://{{server}}/api/test/insert?rate=number:100 => "rate":100
666. => GET => http://{{server}}/api/test/insert?rate=number:100.100 => "rate":100.1,
667. => GET => http://{{server}}/api/test/insert?join_date=date:abc => params starts with date:
668. => GET => http://{{server}}/api/test/insert?join_date=date:2014-11-03T19:38:34.203Z => "join_date":"2014-11-03T19:38:34.203Z",
669. => POST => http://{{server}}/api/test/insert => {"join_date":"date:2014-11-03T19:38:34.203Z"} => "join_date":"2014-11-03T19:38:34.203Z",
670. => GET => http://{{server}}/api/test/insert?join_date=date:2014-11-03 => "join_date":"2014-11-03T00:00:00.000Z",
671. => GET => http://{{server}}/api/test/insert?join_date=date:2014-11-03X => must be a valid ISO Date
672.
673.
674.
675. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
676.
677.
678.
679. # == Download
680. => !POST => http://{{server}}/api/test/insert => {"name":"A123","roll":10,"color":["red","green"]} => success
681. => GET => http://{{server}}/api/test/download => \[\{"_id":
682. => GET => http://{{server}}/api/test/export => \[\{"_id":
683.
684. # override db selection.
685. # its not possible to test as in testing all are local db.
686. => GET => http://{{server}}/api/test/count?_targetdb=local => success
687. => GET => http://{{server}}/api/test/count?_targetdb=remote => success
688.
689. # pivoit Table.
690. => !GET => http://{{server}}/api/test/delete?_confirmstr=test =>success
691. => POST => http://{{server}}/api/test/insert => {"_payload":[{"name":"A", "country":"india"},{"name":"B", "country":"india"},{"name":"A", "country":"uk"},{"name":"B", "country":"uk"},{"name":"C", "country":"uk"}, {"name":"A", "country":"usa"}]} =>success
692. => GET => http://{{server}}/api/test/pivot?_field=name,country => 6 distribution found
693.
694. # Timeseries on multiple fuilds.
695. => POST => http://{{server}}/api/test/insert => {"_payload":[{"name":"A", "event":"play_error"},{"name":"A", "event":"play_error"},{"name":"A", "event":"play_error"},{"name":"A", "event":"play_success"},{"name":"A", "event":"play_success"},{"name":"A", "event":"play_success"},{"name":"A", "event":"play_success"},{"name":"A", "event":"play_hit"},{"name":"A", "event":"play_hit"}]} =>success
696. => POST => http://{{server}}/api/test/ts_multi => {} => you must send _payload as non empty list
697. => POST => http://{{server}}/api/test/ts_multi => {"_payload":{"":""}} => you must send _payload as list
698. => POST => http://{{server}}/api/test/ts_multi => {"_payload":[]} => you must send _payload as non empty list
699. => POST => http://{{server}}/api/test/ts_multi => {"_payload":["a"]} => each element of _payload must be a object
700. => POST => http://{{server}}/api/test/ts_multi => {"_payload":[{"event":"play_error"},{"event":"play_success"},{"event":"play_hit"}]} => multi distribution found
701.
702. # testing hooks
703. => POST => http://{{server}}/api/test_hook/insert => {"_payload":[{"name":"A", "event":"play_error"}]} => onBeforeInsert
704. => POST => http://{{server}}/api/test_hook/create => {"name":"dip","count":1} =>onBeforeInsert
705. => GET => http://{{server}}/api/test_hook/delete?id={{id}} => onBeforeDelete
706. => GET => http://{{server}}/api/test_hook/update?id={{id}}&name=hari1 => onBeforeUpdate
707.
708. #Composute key
709. => GET => http://{{server}}/api/test_composite/delete?_confirmstr=test_composite => success
710. => POST => http://{{server}}/api/test_composite/create => {"key1":"dip"} => Data validation failed as key2 must be present as composite key
711. => POST => http://{{server}}/api/test_composite/create => {"key2":"dip"} => Data validation failed as key1 must be present as composite key
712. => POST => http://{{server}}/api/test_composite/create => {"key1":"z1","key2":"z2"} => insert successfully
713. => POST => http://{{server}}/api/test_composite/create => {"key1":"z1","key2":"z2"} => Data validation failed as composite key failed
714. => POST => http://{{server}}/api/test_composite/create => {"key1":"z1","key2":"z3"} =>insert successfully
715. => POST => http://{{server}}/api/test_composite/create => {"key1":"z1","key2":"z3","key3":"123"} =>Data validation failed as composite key failed
716. => POST => http://{{server}}/api/test_composite/bulk_insert => {"_payload":[{"key1":"z1","key2":"z2"},{"key1":"z1","key2":"z4","key3":"123"}]} =>1/2- Bulk Insert completed
717.
718. #schedule
719. # GET => http://{{server}}/api/schedule/count => 0
720. # GET => http://{{server}}/api/schedule/insert?url=http://google.com/1&cron_format=* * * * *&method=get&is_active=true => Insert Done. Schedule success:1, error:0. Active Job count:1
721. # GET => http://{{server}}/api/schedule/count => 1
722. # GET => http://{{server}}/api/schedule/insert?url=http://google.com/1&cron_format=* * * * *&method=get&is_active=false => Data validation failed as composite key failed
723. # GET => http://{{server}}/api/schedule/insert?url=http://google.com/2&cron_format=* * * * *&method=get&is_active=false => Schedule success:0, error:1. Active Job count:1
724. # GET => http://{{server}}/api/schedule/insert?url=http://google.com/3&cron_format=wrong&method=get&is_active=true => error:1
725. # GET => http://{{server}}/api/schedule/insert?url=http://google.com/3&cron_format=* 1 * * *&method=get&is_active=true => "_id":"(?.*?)"
726. # GET => http://{{server}}/api/schedule/update?id={{id2}}&cron_format=* 2 * * * => success
727. # GET => http://{{server}}/api/schedule/?id={{id2}}=> \* 2 \* \* \*
728. # GET => http://{{server}}/api/schedule/update?id={{id2}}&is_active=true => Update Done. Schedule Ops success:0, error:1. Active Job count:2
729. # GET => http://{{server}}/api/schedule/update?id={{id2}}&is_active=true => Update Done. Schedule Ops success:0, error:1. Active Job count:2
730. # GET => http://{{server}}/api/schedule/update?id={{id2}}&is_active=false => Update Done. Schedule Ops success:1, error:0. Active Job count:1
731. # GET => http://{{server}}/api/schedule/update?id={{id2}}&is_active=fass => The selected is active is invalid.
732. # GET => http://{{server}}/api/schedule/insert?url=http://google.com/4&cron_format=* * * * *&method=get&is_active=false => "_id":"(?.*?)"
733. # GET => http://{{server}}/api/schedule/update?id={{id2}}&is_active=false => Update Done. Schedule Ops success:0, error:1. Active Job count:1
734. # GET => http://{{server}}/api/schedule/update?id={{id2}}&is_active=true => Update Done. Schedule Ops success:1, error:0. Active Job count:2
735. # GET => http://{{server}}/api/schedule/update?is_active=false&_confirmstr=schedule => Update Done
736. # POST => http://{{server}}/api/schedule/insert => {"url":"http://{{server}}/api/test11/insert","cron_format":"*/1 * * * *","method":"post","is_active":true, "data":{"name":"dip"}} => "_id":"(?.*?)"
737. # sleep 65
738. # GET => http://{{server}}/api/schedule/?id={{id}} => "last_result":
739. # GET => http://{{server}}/api/schedule/delete?_confirmstr=schedule => Deleted count is :
740.
741.
742. # test Extension for /api/test/ext
743. => GET => http://{{server}}/api/test/ext => Ext API Called
744. => POST => http://{{server}}/api/test/ext => {} => Ext API Called
745.
746. # Push Notification
747. => GET => http://{{server}}/api/push_notification/delete?_confirmstr=push_notification => success
748. => GET => http://{{server}}/api/push_notification/insert => Trying insert Empty Object
749. => GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc&os=android => insert successfully
750. => GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc&os=android => Data validation failed as composite key failed
751. => GET => http://{{server}}/api/push_notification/count => 1
752. => GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
753. => GET => http://{{server}}/api/push_notification/count => 2
754. => POST => http://{{server}}/api/push_notification/insert => {"_payload":[{"app_id":"test","token":"abc11", "os":"android"},{"app_id":"test","token":"abc2", "os":"android"},{"app_id":"test","token":"abc3", "os":"android"},{"app_id":"test","token":"abc4", "os":"android"},{"app_id":"test","token":"abc5", "os":"android"},{"app_id":"test","token":"abc6", "os":"android"},{"app_id":"test","token":"abc7", "os":"android"},{"app_id":"test","token":"abc8", "os":"android"},{"app_id":"test","token":"abc9", "os":"android"},{"app_id":"test","token":"abc10", "os":"android"}]} => insert successfully
755.
756. => GET => http://{{server}}/api/push_notification/delete => You are trying to bulk operation.
757. => GET => http://{{server}}/api/push_notification/delete?token=abc=> missing _confirmstr
758. => GET => http://{{server}}/api/push_notification/delete?token=abc&_confirmstr=push_notification => Deleted count is : 1
759. => GET => http://{{server}}/api/push_notification/count => 1
760. => GET => http://{{server}}/api/push_notification/delete?token=invalid&_confirmstr=push_notification => Deleted count is : 0
761. => GET => http://{{server}}/api/push_notification/count => 1
762.
763. => GET => http://{{server}}/api/push_notification/push => Input validation failed: Missing app_id
764.
765. # It's dicult to test as we donb't have any token from mobile.
766. => GET => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=No Data&key=0 => succcss_count:0, error_count:1
767. => GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
768. => GET => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=No Data&key=0 => DRYRUN: true
769. => GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
770. => GET => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=No DATA&key=0&_no_dry_run=0 => [DRYRUN: false]
771. => GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
772. => GET => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=WITH DATA&key=0&pane=music&target=5e6d53f944526b7da8c0a844 => succcss_count:0, error_count:1
773. => GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
774. => GET => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=WITH DATA&key=0&pane=music&target=5e6d53f944526b7da8c0a844&_no_dry_run=0 => succcss_count:0, error_count:1
775.
776. => GET => http://{{server}}/api/push_notification/push_one?title=hello&body=WITH DATA&key=0&pane=music&target=5e6d53f944526b7da8c0a844 => Missing token
777. => GET => http://{{server}}/api/push_notification/push_one?token=fgEljAT1Qzg:APA91bFFF2zSUg3MaMtepRUzoE0xWcOvg4DlSSlxx8-85qDWreGJLHGWIM6zUkVgHIm3M7oZmcCoWIO11y2ZPbizyKt88dk-aNMYxgAiCf_DKF53ypPmpEH1-SpwSOTkV2wacIqSMBcz&title=hello&body=WITH DATA&key=0&pane=music&target=5e6d53f944526b7da8c0a844 => succcss_count:0, error_count:1
778. => POST =>http://{{server}}/api/push_notification/push_one => { "token":"fgEljAT1Qzg:APA91bFFF2zSUg3MaMtepRUzoE0xWcOvg4DlSSlxx8-85qDWreGJLHGWIM6zUkVgHIm3M7oZmcCoWIO11y2ZPbizyKt88dk-aNMYxgAiCf_DKF53ypPmpEH1-SpwSOTkV2wacIqSMBcz","title":"test","body":"pane","pane":"webview","target":"https://covidout.in/"} => succcss_count:0, error_count:1
779. # => GET => http://{{server}}/api/push_notification/push_one?token=fgEljAT1Qzg:APA91bFFF2zSUg3MaMtepRUzoE0xWcOvg4DlSSlxx8-85qDWreGJLHGWIM6zUkVgHIm3M7oZmcCoWIO11y2ZPbizyKt88dk-aNMYxgAiCf_DKF53ypPmpEH1-SpwSOTkV2wacIqSMBcz&title=এটা কিছু টেস্ট &body=এটা কিছু টেস্ট &key=0&pane=music&target=5e6d53f944526b7da8c0a844 => Successfully sent
780. => GET => http://{{server}}/api/push_notification/count?app_id=test => Count: 0
781.
782. # Testing Utilities
783. => GET => http://{{server}}/api/utils/test?app_id=test => You are hitting Test Utils
784. => GET => http://{{server}}/api/utils/date => The system time is
785. => GET => http://{{server}}/api/utils/bootcamp => Welcome to simplestore BootCamp!
786.
787. # Test Stategyies
788. => GET => http://{{server}}/api/test/insert?name=dip&_viewas=noresp => {"status":"success"}
789. => POST => http://{{server}}/api/test/insert?_viewas=noresp => {"name":"dip"}=> ^{"status":"success"}$
790. # We should get the exception evenif there is _viewas=noresp
791. => GET => http://{{server}}/api/test/insert?name=dip&_viewas=noresp&_viewas=xxx => Error while parsing request
792.
793.
794.
795. # test Bulk hits and rank
796. => !GET => http://{{server}}/api/test0/create?name=dip2 => "_id":"(?.*?)"
797. => POST => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field":"count", "value":1}]} => s/e: 1/0
798. # Te hardcoded value treaded as a true.
799. => POST => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field":"count", "value":1}, {"id":"56cafab06639904e9b68e73a","field":"count", "value":1}, {"id":"{{id}}","field":"count", "value":"wrong"}]} => s/e: 2/1
800. => GET => http://{{server}}/api/test0/?id={{id}} => "count":2
801. => POST => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field":"count", "value":-1}]} => [s/e: 1/0]
802. => POST => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field1":"count", "value":-1}]} => [s/e: 0/1]
803. => GET => http://{{server}}/api/test0/?id={{id}} => "count":1
804. => POST => http://{{server}}/api/test0/bulk_rank => {"_payload":[{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true}]} => [s/e: 16/0]
805. => GET => http://{{server}}/api/test0/?id={{id}} => "count":10
806. => POST => http://{{server}}/api/test0/bulk_rank => {"_payload":[{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false}]} => [s/e: 16/0]
807. => POST => http://{{server}}/api/test0/bulk_rank => {"_payload":[{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false}]} => [s/e: 16/0]
808. => GET => http://{{server}}/api/test0/?id={{id}} => "count":0
809.
810.
811.
812. ################################################################################
813. # Sending Email functinaly ( Broken Needs API redesign)
814. ################################################################################
815. ## TODO: Test are broken as we meshed up with body and html two data, I would perefr to have body and then isHtml as a flag so this need to be rredesigned
816. => GET => http://{{server}}/api/utils/email => Input validation failed: Missing to
817. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&body=Simple Test =>Input validation failed: Missing subject
818. ## Please use dryrun to ensure to avoid getting so many mails.
819. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1 => ACTUALY NOT SEND - JUST A DRY RUN
820. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&dry_run=1 => Missing body
821. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1 => ACTUALY NOT SEND - JUST A DRY RUN
822. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1&is_html=1 => ACTUALY NOT SEND - JUST A DRY RUN
823.
824. ## Test multiple sendaccount by spaciating product
825.
826. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&product=Grodok&body=hello&dry_run=1 => ACTUALY NOT SEND
827. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1&product=hello => Mail is not supported for this product
828. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1&product=default => \[DRYRUN\] Mail sent to
829.
830. ##send calender invitew - just add start_time as ISO date String and duration as number in minites
831. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z => Missing duration
832. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z&duration=xyz => has to be a valid date!
833. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=INAVLID&duration=xyz => has to be a valid date
834. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z&duration=30&dry_run=1 => ACTUALY NOT SEND
835. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z&duration=30&cal_body=Cal Body &cal_subject=Cal_Subject&cal_location=Kolkata&dry_run=1 => ACTUALY NOT SEND
836.
837. ## test HTML Mail.
838. ## We are supported HTML mail - you need to send body and html but body would be droped. It just use the degault HTML
839. ## template to send the email. It works for both w/o calender
840. => POST => http://{{server}}/api/utils/email => {"to":"dutta.dipankar08@gmail.com", "subject":"Hello", "body":"hello", "body":"Hello\nHow ae you doing?\n\nThnaks,\nDipankar","dry_run":1, "is_html":1} => ACTUALY NOT SEND
841. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z&duration=30&cal_body=Cal Body &cal_subject=Cal_Subject&cal_location=Kolkata&html=hello there&dry_run=1 => ACTUALY NOT SEND
842. => GET => http://{{server}}/api/utils/email?to=testuser@gmail.com&subject=Hello World&body=Simple Test => You must pass some valid email addess
843.
844. ## REAL SEND MAIL - DISABLE BELOW TEST
845. ## GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test => Mail sent to
846. ## GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Hello\n\nWorld\nDipankar\nTest=> Mail sent to
847. ## GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z&duration=30 => [DRYRUN] Mail sent to
848.
849. ## HTML Norm : new line to
850. => GET => http://localhost/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Hello\nWorld&dry_run=1&is_html=1 => Hello
World
851. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=\nHello\nWorld\n&dry_run=1&is_html=1 =>
Hello
World
852. => POST => http://{{server}}/api/utils/email => {"to":"dutta.dipankar08@gmail.com", "subject":"Hello World","body":"\nHello\nWorld\n","dry_run":1, "is_html":1 } =>
Hello
World
853.
854. ################################################
855. # Short code
856. ################################################
857. => GET => http://{{server}}/api/nodel_shortcode/insert => Trying insert Empty Object
858. => GET => http://{{server}}/api/nodel_shortcode/generate => Input validation failed: Missing target_db
859. => GET => http://{{server}}/api/nodel_shortcode/generate?target_id=123&target_db=xxxdb => "short_code":"(?.*?)"
860. => GET => http://{{server}}/api/nodel_shortcode/get?short_code={{short_code}} => xxxdb
861. => GET => http://{{server}}/api/nodel_shortcode/get?short_code=wrong => Find successfully with 0 items
862.
863.
864.
865.
866. # Support _sort.
867. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => success
868. => !POST => http://{{server}}/api/test0/create => {"_payload":[{"name":"dip3","roll":1},{"name":"dip3","roll":2}]} => success
869. => GET => http://{{server}}/api/test0/find?&_sort=roll => "roll":1.*?"roll":2
870. => GET => http://{{server}}/api/test0/find?&_sort=-roll => "roll":2.*?"roll":1
871.
872. # Support clone APIs
873. => !POST => http://{{server}}/api/test0/create => {"name":"dip","num":{"math":10, "eng":11}} => "_id":"(?.*?)"
874. => GET => http://{{server}}/api/test0/clone => You must pass a _id
875. => POST => http://{{server}}/api/test0/clone => {} => You must pass a _id
876. => GET => http://{{server}}/api/test0/clone?_id={{id}} => "name":"dip"
877. => GET => http://{{server}}/api/test0/clone?_id={{id}}&name=dip2 => "name":"dip2"
878. => POST => http://{{server}}/api/test0/clone => {"id":"{{id}}", "name":"dip3"} => "name":"dip3"
879.
880. # QR code generation:
881. => GET => http://{{server}}/api/utils/qr => Missing url
882. => GET => http://{{server}}/api/utils/qr?url=http://google.com => svg
883. => GET => http://{{server}}/api/utils/qr?url=http://google.com&size=100 => height="100"
884. => GET => http://{{server}}/api/utils/qr?url=http://google.com&size=100&color=%23ff0000 => \#ff0000
885.
886.
887. # test system_payment == Migrate to simple_auth
888. #=> GET => http://{{server}}/api/system_payment/stripe => Stripe API returns an unexpected resp
889. # => GET => http://{{server}}/api/system_payment/stripe?id=1234 => Stripe API returns an unexpected resp <<< FIX THIS
890. #=> GET => http://{{server}}/api/system_payment_not_webhook/?id=1234 => not a valid ID
891. # test invalid sqi
892. #=> POST => http://{{server}}/api/system_payment/stripe => {"data":{"object":{"amount":100,"currency":"inr","id":"123", "customer":"cus_123", "description":"tx description", "charges":{"data":[{"billing_details":{"email":"dip@fb.com"}}]}}}}=> SKU not configuired in SimpleStore
893. # test right parsing
894. #=> POST => http://{{server}}/api/system_payment/stripe => {"data":{"object":{"amount":100,"currency":"inr","id":"123", "customer":"cus_123", "description":"sku1", "charges":{"data":[{"billing_details":{"email":"dip@fb.com"}}]}}}}=> Payment is inserted
895. # test empty data
896. #=> POST => http://{{server}}/api/system_payment/stripe => {}=> Stripe API returns an unexpected resp
897. #=> GET => http://{{server}}/api/system_payment/points => Missing user_id
898. # this api should be used to get total points for an user
899. #=> GET => http://{{server}}/api/system_payment/points?user_id=123 => No matching query found
900. #=> GET => http://{{server}}/api/system_payment/points?user_id=dip@fb.com => Total points is:
901.
902. # test roserpay WebHook
903. #=> POST => http://{{server}}/api/system_payment/razorpay => { "entity": "event", "account_id": "acc_3xhNTlBQgmDD7g", "event": "payment.captured", "contains": ["payment" ], "payload": {"payment": { "entity": {"id": "pay_FVxUMaT3vnv78M","entity": "payment","amount": 20000,"currency": "INR","status": "captured","order_id": "order_FVxUBI0n9PhY5T","invoice_id": null,"international": false,"method": "netbanking","amount_refunded": 0,"refund_status": null,"captured": true,"description": null,"card_id": null,"bank": "HDFC","wallet": null,"vpa": null,"email": "dutta.dipankat08@gmail.com","contact": "+919933588184","notes": { "email": "dutta.dipankat08@gmail.com", "phone": "9933588184"},"fee": 590,"tax": 90,"error_code": null,"error_description": null,"error_source": null,"error_step": null,"error_reason": null,"acquirer_data": { "bank_transaction_id": "5972833"},"created_at": 1598568741 }} }, "created_at": 1598568744} => Payment is inserted
904. #=> POST => http://{{server}}/api/system_payment/razorpay => { "entity": "event", "account_id": "acc_3xhNTlBQgmDD7g", "event": "payment.failure", "contains": ["payment" ], "payload": {"payment": { "entity": {"id": "pay_FVxUMaT3vnv78M","entity": "payment","amount": 20000,"currency": "INR","status": "captured","order_id": "order_FVxUBI0n9PhY5T","invoice_id": null,"international": false,"method": "netbanking","amount_refunded": 0,"refund_status": null,"captured": true,"description": null,"card_id": null,"bank": "HDFC","wallet": null,"vpa": null,"email": "dutta.dipankat08@gmail.com","contact": "+919933588184","notes": { "email": "dutta.dipankat08@gmail.com", "phone": "9933588184"},"fee": 590,"tax": 90,"error_code": null,"error_description": null,"error_source": null,"error_step": null,"error_reason": null,"acquirer_data": { "bank_transaction_id": "5972833"},"created_at": 1598568741 }} }, "created_at": 1598568744} => Received invalid events - razorpay API returns an unexpected resp
905. #=> POST => http://{{server}}/api/system_payment/razorpay => { "entity": "event", "account_id": "acc_3xhNTlBQgmDD7g", "event": "payment.captured", "contains": ["payment" ], "payload": {"payment": { "entity": {"id": "pay_FVxUMaT3vnv78M","entity": "payment","amount": 20001,"currency": "INR","status": "captured","order_id": "order_FVxUBI0n9PhY5T","invoice_id": null,"international": false,"method": "netbanking","amount_refunded": 0,"refund_status": null,"captured": true,"description": null,"card_id": null,"bank": "HDFC","wallet": null,"vpa": null,"email": "dutta.dipankat08@gmail.com","contact": "+919933588184","notes": { "email": "dutta.dipankat08@gmail.com", "phone": "9933588184"},"fee": 590,"tax": 90,"error_code": null,"error_description": null,"error_source": null,"error_step": null,"error_reason": null,"acquirer_data": { "bank_transaction_id": "5972833"},"created_at": 1598568741 }} }, "created_at": 1598568744} => SKU not configuired in SimpleStore
906.
907. # Test Trial points.
908. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial => Your trail is activated!
909. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial => You aleady used your trial
910. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=unknown => SKU not configuired in SimpleStore
911. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial_no => This SKU is not elligiable from trail
912. #=> GET => http://{{server}}/api/system_payment/points?user_id=trial_user1 => 10
913. #=> GET => http://{{server}}/api/system_payment/delete?_confirmstr=system_payment => success
914.
915.
916. # test friendly ID: ( test3 is config for friendly id so it would be a match)
917. # You should note that friendlyID should NOT necessaryly to be unique due to te perf.
918. => POST => http://{{server}}/api/test0/insert => {"name":"dip"} => ts_insert
919. => POST => http://{{server}}/api/test3/insert => {"name":"dip"} => friendly_id
920. => POST => http://{{server}}/api/test3/insert => {"name":"dip"} => friendly_id
921.
922. ######### Testing calender APIS #############
923. => POST => http://{{server}}/api/system_calender/grant => {} => Input validation failed
924. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"invalid","duration":30, "type":"type1" } => Invalid start_time
925. #=> POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T02:00:00Z","duration":15, "type":"type1" } => success
926. #=> POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T02:00:00Z","duration":60, "type":"type1" } => 2/2 slots created
927. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T03:00:00Z","duration":60, "type":"type1","slot":10 } => 6/6 slots created
928. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T03:00:00Z","duration":60, "type":"type1","slot":10 } => error
929. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T03:10:00Z","duration":70, "type":"type1","slot":10 } => 2/7
930. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2014-03-10T03:10:00Z","duration":70, "type":"type1","slot":10 } => 7/7
931.
932. # Test Avilablity
933. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z" } => ,"user_id":"123","type":"type1"
934. # There is an issue in the below test
935. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2015-03-10T03:10:00Z" } => 0 free slots found
936. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"type1" } => ,"user_id":"123","type":"type1"
937. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"type2" } => "out":\[\]
938. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"pe1" } => ,"user_id":"123",
939. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2012-03-10T03:10:00Z","type":"pe2" } => "out":\[\]
940. => POST => http://{{server}}/api/system_calender/availability => {"date":"2013-03-10T03:10:00Z","type":"pe2" } => Missing product
941.
942. # test booking:
943. => POST => http://{{server}}/api/system_calender/grant => {"product":"doctor", "user_id":"123", "start_time":"2015-03-15T03:00:00Z","duration":60, "type":"type1","slot":10 } => 6/6
944. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z"} => 6 free slots found
945. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z"} => "_id":"(?.*?)"
946. => POST => http://{{server}}/api/system_calender/book => {"product":"test", "id" :"{{id2}}", "user_id":"booker2"} => successfully booked
947. => POST => http://{{server}}/api/system_calender/book => {"product":"test", "id" :"{{id2}}", "user_id":"booker2"} => This schedule is already taken
948. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z" } => 5 free slots found
949.
950. # test cancel
951. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"{{id2}}", "user_id":"booker3"} => not auth
952. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"5f46e8952dd1ada69b161f91", "user_id":"booker3"} => Schedule not found"
953. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"{{id2}}", "user_id":"booker2"} => successfully canceled
954. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z" } => 6 free slots found
955. => GET => http://{{server}}/api/system_calender/delete?_confirmstr=system_calender => success
956.
957.
958. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1&product=hello => Mail is not supported for this product
959. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1&product=default => \[DRYRUN\] Mail sent to
960.
961. # Test promotion ## Needs a migration simple auth => admin_promotions DB instead
962. #=> !POST => http://{{server}}/api/auth2/login_by_token => {"token": "fake_token"} => "auth_token":"(?.*?)"
963. #=> POST => http://{{server}}/api/promotion/get_referral_code => {} => Missing auth_token
964. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "wrong","product":"fake_product"} => Unauthorized request
965. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product"} => "code":"(?.*?)"
966. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product"} => You already have generated the ref code.
967. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product1"} => "code":"(?.*?)"
968. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "{{code}}","product":"fake_product"} => "type":"REFER",
969. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "{{code}}","product":"fake_product1"} => This referral code is not valid
970. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "wrong","product":"fake_product1"} => This referral code is not valid
971. #=> GET => http://{{server}}/api/promotion/delete?_confirmstr=promotion => success
972.
973. # RCE - JUST BASIC TEST
974.
975. # Capabilities
976. => GET => http://{{server}}/api/utils/rce/capabilities?_dev_token=root => hello_world_code
977.
978. # Status
979. => GET => http://{{server}}/api/utils/rce/status?_dev_token=root&lang=c => Compiler works fine
980. => POST => http://{{server}}/api/utils/rce/execute => {"_dev_token":"root", "lang":"c", "code":"\#include"} => \"out\":{\"stderr\":\"/tmp/
981. => POST => http://{{server}}/api/utils/rce/execute => {"_dev_token":"root", "lang":"c","code": "\#include \n int main(){ while(1) printf(\"Hello Dipankar\"); \nreturn 0;}"} => DipankarHello DipankarHello DipankarHello DipankarHello DipankarHello
982. => POST => http://{{server}}/api/utils/rce/execute_ext => {"_dev_token":"root", "lang":"python", "code":"print 'hello123'"} => hello123
983. => POST => http://{{server}}/api/utils/rce/execute_input => {"_dev_token":"root", "lang":"c", "code": "\#include \n int main(){ char str[100]; scanf(\"%s\",&str);printf(\"%s\", str); \nreturn 0;}","lang":"c","input":"HelloWorld"} => HelloWorld
984.
985.
986.
987. # Test Youtube Download
988. #sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
989. # sudo chmod a+rx /usr/local/bin/youtube-dl
990. #=> GET => http://{{server}}/api/utils/youtubedl?id=sb_sMqAF_o => Incomplete YouTube ID
991. # => GET => http://{{server}}/api/utils/youtubedl?id=CP2AYEqoaZo => googlevideo.com
992. # => GET => http://{{server}}/api/utils/youtubedl/audio?id=CP2AYEqoaZo => googlevideo.com
993. # => GET => http://{{server}}/api/utils/youtubedl/video?id=CP2AYEqoaZo => googlevideo.com
994. # => GET => http://{{server}}/api/utils/youtubedl/info?id=CP2AYEqoaZo => googlevideo.com
995. # => GET => http://{{server}}/api/utils/youtubedl/audio?id=https://www.youtube.com/watch?v=De8UKeURlWU => googlevideo.com
996. # => GET => http://{{server}}/api/utils/youtubedl/dl?id=kEld6MLDXPI => A-V-mp4
997. #### USE TESING BELOW LINE ##
998.
999. # SimpleStore EXPLORE
1000. => GET => http://{{server}}/api/explore/play => Simple Store API EXPLORE
1001.
1002. # SMS
1003. => GET => http://{{server}}/api/utils/sms?to=8927476238&msg=hello&dryrun=true => \[Dryrun\] SMS sent to 8927476238
1004.
1005. # Dev key
1006. GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin => Access denied
1007. GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin&_dev_token=root1 => Access denied
1008. GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin&_dev_token=root => Error while executing this code
1009.
1010. # Status utils = This tracks the health of the endpoints
1011. GET => http://{{server}}/api/status/ping?name=ServiceA => Missing endpoint
1012. GET => http://{{server}}/api/status/ping?endpoint=www.google.com => Missing name
1013. GET => http://{{server}}/api/status/ping?name=ServiceA&endpoint=www.google.com => pong
1014. GET => http://{{server}}/api/status/ping?name=ServiceA&endpoint=www.google.com => pong
1015. GET => http://{{server}}/api/status/show => Live Status of our Service
1016. # HTML TEST NOT SUPPORTED GET => http://{{server}}/api/analytics/show?app_id=sample1 => Showing data for app id sample1
1017. # HTML TEST NOT SUPPORTED GET => http://{{server}}/api/analytics/show?app_id=sample => Showing data for app id sample
1018.
1019. # Long tern Jobs
1020.
1021.
1022.
1023.
1024. ############################# license APIS. #############################
1025. # License APis allows you to create license for an app user for a app for a duration.
1026. # You can either grant, revoke and validate the license
1027. # All common api's needs root_key to access (TODO)
1028. # There is no renew supported, you just revoke and grant it again.
1029. #########################################################################
1030. => !GET => http://{{server}}/api/license/delete?_confirmstr=license => success
1031. # Root key
1032. # => GET => http://{{server}}/api/license/ => api access denied
1033. # => GET => http://{{server}}/api/license?root_key=WRONG => success
1034. # Grant, validate and revoke
1035. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test => Missing duration
1036. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test&duration=1&key=NO_KEY => "key":"NO_KEY"
1037. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test&duration=1&key=NO_KEY => license already granted
1038. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test1&duration=WRONG&key=NO_KEY => please pass a valid duration
1039. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test&key=NO_KEY => access granted
1040. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test&key=NO_KEY1 => access denied
1041. => GET => http://{{server}}/api/license/validate?app_id=WRONG&user_id=test&key=NO_KEY => access denied
1042. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test => license revoked
1043. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test => license not found
1044. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test => license not found
1045. => GET => http://{{server}}/api/license/revoke?app_id=test=> Missing user_id
1046.
1047. # expairy
1048. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test2&duration=0&key=NO_KEY=> success
1049. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test2&key=NO_KEY => license expired
1050.
1051. # renew
1052. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test2 => license revoked
1053. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test2&duration=1&key=NO_KEY=> success
1054. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test2&key=NO_KEY => access granted
1055.
1056. # generate key
1057. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test3&duration=1=> "key":"(?.*?)"
1058. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test3&key={{key}} => access granted
1059.
1060.
1061. ############################# Schedule Script #############################
1062. # You can schedule arbitrary script execution with SimpleStore
1063. # FIrst submit a task using /schedule_script/submit/
1064. # Then Activate the task using /schedule_script/submit/
1065. # Great! You job has scheduled.
1066. # Check a list of jobs which are current scheduled as /schedule_script/status/ and you can deactivate as /schedule_script/deactivate/
1067. #########################################################################
1068. => !GET => http://{{server}}/api/schedule_script/delete?_confirmstr=schedule_script => success
1069.
1070. => GET => http://{{server}}/api/schedule_script/submit?name=test&description=test&script=console.log(%22hello%20Dipankar%22)ZZ&cron=*/1%20*%20*%20*%20* => "_id":"(?.*?)"
1071. => GET => http://{{server}}/api/schedule_script/activate?id={{job_id}} => Job has scheduled
1072. => GET => http://{{server}}/api/schedule_script/activate?id={{job_id}} => already scheduled
1073. => GET => http://{{server}}/api/schedule_script/activate_all => 0/1 Job has scheduled
1074. => GET => http://{{server}}/api/schedule_script/reload => We have restarted 1 jobs
1075. => GET => http://{{server}}/api/schedule_script/status => {{job_id}}
1076. # => sleep => 30 # Disabled to just avoid waiting while testing -- works fine,
1077. # => GET => http://{{server}}/api/schedule_script/status => "successCount":1
1078. => GET => http://{{server}}/api/schedule_script/deactivate?id={{job_id}} => canceled
1079. => GET => http://{{server}}/api/schedule_script/deactivate?id={{job_id}} => is not scheduled
1080. => GET => http://{{server}}/api/schedule_script/status => We found 0 active scheduled Script
1081. => GET => http://{{server}}/api/schedule_script/dryrun?script=ABCD => ABCD
1082. => GET => http://{{server}}/api/schedule_script/dryrun?script=console.log('hello') => success
1083.
1084.
1085. # Delete all at the end this is needed as server auto load when stat
1086. => !GET => http://{{server}}/api/schedule_script/delete?_confirmstr=schedule_script => success
1087.
1088.
1089. ############################# Subscription #############################
1090. # Provides api for email subscription and resubscription
1091. # User can do subscribe and unscibe to an app by giving email id.
1092. # Admin can notify by ending mail to all the people who subscribe.
1093. # Maximum notification allow is 1000
1094. #########################################################################
1095. => !GET => http://{{server}}/api/subscription/delete?_confirmstr=subscription => success
1096. => GET => http://{{server}}/api/subscription/subscribe?app_id=test&email=dutta.dipankar08@gmail.com => success
1097. => GET => http://{{server}}/api/subscription/subscribe?app_id=test&email=dutta.dipankar08@gmail.com => Data validation failed as composite key failed
1098. => GET => http://{{server}}/api/subscription/count => Count: 1
1099. => GET => http://{{server}}/api/subscription/notify?subject=Hello&body=Some HTML Content&app_id=test&dry_run=1 => Email send to 1 subscriber
1100. => GET => http://{{server}}/api/subscription/notify?subject=Hello&body=Some HTML Content&app_id=wrong&dry_run=1 => Not able to notify as there is zero subscription for this app
1101. => GET => http://{{server}}/api/subscription/unsubscribe?app_id=test&email=dutta.dipankar08@gmail.com => success
1102. => GET => http://{{server}}/api/subscription/unsubscribe?app_id=test&email=dutta.dipankar08@gmail.com => Not able to unsubscribe
1103. => GET => http://{{server}}/api/subscription/count => Count: 0
1104.
1105.
1106. ############################ SOCIAL POST ##################################
1107. # This allow to post the text and image in FB, Tweeter, Linked-In and Telegram
1108. # We currently supports (1)FB abd (2) Tweeter
1109. # You need to update the key in /etc/SECURE
1110. ############################################################################
1111. # Comments to avoid spanning the profile
1112. # => GET => http://{{server}}/api/utils/social/twitter?text=automation test => Successfully tweeted
1113. # => GET => http://{{server}}/api/utils/social/twitter?text=automation test => Status is a duplicate
1114. # => GET => http://{{server}}/api/utils/social/facebook?text=automation test => Successfully tweeted
1115. => GET => http://{{server}}/api/utils/social/telegram => Missing text
1116. # => GET => http://{{server}}/api/utils/social/telegram?text=automationtest\&Test => success
1117. # You should you post method to pass data
1118. # Below two test is diable as missing real tokens
1119. # => POST => http://{{server}}/api/utils/social/telegram => {"text":"automation test & Test & test"} => success
1120. # => POST => http://{{server}}/api/utils/social/facebook => {"text":"Welcome to SimpleStore! This is post where we test our APIs"} => success
1121.
1122. ############################ TEST Universal Link page ##################################
1123. #
1124. ############################################################################
1125. => GET => http://{{server}}/api/utils/universal_link?app_id=in.co.dipankar.fmradio&key=1&app_name=FMRadio => https://play\.google\.com/store/apps/details\?id=in\.co\.dipankar\.fmradio
1126. => GET => http://{{server}}/api/utils/universal_link?app_id=in.co.dipankar.fmradio&key=1&app_name => Input validation failed: Missing app_name"
1127. => GET => http://{{server}}/api/utils/universal_link => Input validation failed: Missing app_id"
1128.
1129. ############################ Static File generator ##################################
1130. #
1131. ############################################################################
1132. => GET => http://{{server}}/api/utils/static/privacy?app_id=in.co.dipankar.fmradio&key=1&app_name=XXXXXXXXX => XXXXXXXXX
1133. => GET => http://{{server}}/api/utils/static/toc?app_id=in.co.dipankar.fmradio&key=1&app_name=XXXXXXXXX => XXXXXXXXX
1134.
1135. ############################## UPDATE ONE ###########################################
1136. # THIS API helps to update one entry entry in ethe system. you must by _filter and _payload to serch that
1137. # entry and update with the needed data. Should throw the error it it found many entry
1138. # >>> NOT WORKING ANY MORE <<<<
1139. #####################################################################################
1140. #=> !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1141. #=> POST => http://{{server}}/api/test/create => {"name":"dip", "roll":1} => success
1142. #=> POST => http://{{server}}/api/test/update_one => {} => _filter object must be non empty
1143. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{}} => _filter object must be non empty
1144. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"} ,"_payload":{}} => You must pass some data in the request
1145. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":2}} => there is no matching entry
1146. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"},"_payload":{"roll":2}} => pdated 1 entry out of 1 matched
1147. #=> POST => http://{{server}}/api/test/create => {"name":"dip", "roll":1} => success
1148. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"},"_payload":{"roll":2}} => We found multiple entry
1149. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1150.
1151. ############################## INSERT OR UPDATE ONE ###########################################
1152. # THIS API helps to insert update one entry entry in ethe system. you must by _filter and _payload to pass
1153. # if the item is found that are updated with new payload - or it will create a new entry by marging _filter and _payload
1154. #####################################################################################
1155. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1156. => POST => http://{{server}}/api/test/insert_or_update_one => {} => _filter object must be non empty
1157. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{}} => _filter object must be non empty
1158. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip"} ,"_payload":{}} => Please send some non empty payload
1159. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":2}} => inserted one entry
1160. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":3}} => updated one entry
1161. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":4}} => updated one entry
1162. => POST => http://{{server}}/api/test/create => {"name":"dip1", "roll":5} => success
1163. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":4}} => We found multiple entry
1164. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1165.
1166.
1167. ################ LIST APIs #############################
1168. # append to list
1169. # remove from list
1170. # clean from list
1171. ######################################################
1172. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success
1173. => POST => http://{{server}}/api/test/insert => {"name":"dip"} => "_id":"(?.*?)"
1174. => GET => http://{{server}}/api/test/list/append?_id={{id1}}&_field=tag&_value=a => "tag":\["a"\]
1175. => GET => http://{{server}}/api/test/list/append?_id={{id1}}&_field=tag&_value=a,b,c => "tag":\["a","b","c"\]
1176. => GET => http://{{server}}/api/test/list/remove?_id={{id1}}&_field=tag&_value=a => "tag":\["b","c"\]
1177. => GET => http://{{server}}/api/test/list/remove?_id={{id1}}&_field=tag&_value=a,b => "tag":\["c"\]
1178. => GET => http://{{server}}/api/test/list/clear?_id={{id1}}&_field=tag&_value=a,b => "tag":\[\]
1179. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success
1180.
1181. ############# Raiseing tickets for the app #############
1182. # This api will raise github tickts
1183. #
1184. ###########################################################
1185. => GET => http://{{server}}/api/utils/ticket?app=test => error
1186. # TODO: FIX IT github expaired the token
1187. #=> GET => http://{{server}}/api/utils/ticket?app=test&title=Raise by e2e test&desc=ignore this bug&label=bug => Successfully created a tickets
1188. #=> POST => http://{{server}}/api/utils/ticket=> {"app":"test", "title":"Raise by e2e test", "desc":"ignore this bug", "label":"bug,test"} => Successfully created a tickets
1189.
1190. ######## Create or Get #######
1191. # If filter returns some result - just get it back or create with _payload + _filter data
1192. ###############################
1193. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success
1194. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => inserted the entry
1195. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => found entry
1196. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => found entry
1197.
1198. ############ Simple Login/AUth #################################################
1199. ## SImpel password based login.
1200. ## Support only login from obe devices.
1201. ## Hash password got stored
1202. ## Once you log successfully , it will return auth_token_
1203. #################################################################################
1204.
1205. # first clean the DB -> Below API will not work, use the UI tool to delete like https://www.mongodb.com/try/download/compass
1206. => POST => http://localhost/api/internal_auth_user_data/delete?_confirmstr=simple_auth => {} => Looks like you are trying to access the internal db
1207. => GET => http://localhost/api/internal_auth_user_data/delete?_root_user=1&_confirmstr=_auth_token => Looks like you are trying to access the internal db # You can't do that any more
1208.
1209. # Dfine three users: test and test1 and dutta.dipankar08+2@gmail.com as username
1210. #=> GET => http://localhost/api/simple_auth/register?username=test&password_=test123&email=dutta.dipankar08@gmail.com => registration success
1211. #=> GET => http://localhost/api/simple_auth/register?username=test1&password_=test123&email=dutta.dipankar08+1@gmail.com => registration success
1212. #=> GET => http://localhost/api/simple_auth/register?password_=test123&email=dutta.dipankar08+2@gmail.com => registration success # Email and password only no username
1213.
1214. # Duplicate res
1215. => GET => http://{{server}}/api/simple_auth/register?username=test&password_=test&email=dutta.dipankar08@gmail.com => username already taken
1216. => GET => http://{{server}}/api/simple_auth/register?username=test4&password_=test&email=dutta.dipankar08@gmail.com => email already taken
1217.
1218.
1219. # Login ( by user name)
1220. => GET => http://{{server}}/api/simple_auth/login?username=test&password_=test11 => Invalid username or password
1221. => GET => http://{{server}}/api/simple_auth/login?username=test11&password_=test => Invalid username or password
1222.
1223. # Login With Email and password or Email + Auth_token
1224. => GET => http://{{server}}/api/simple_auth/login_by_email?username=test&password_=test11 => Input validation failed: Missing email
1225. => GET => http://{{server}}/api/simple_auth/login_by_email?email=test11@test.com&password_=test => Invalid email or password
1226. => GET => http://localhost/api/simple_auth/login_by_email?_no_encode=1&email=dutta.dipankar08@gmail.com&password_=test123 => "auth_token_":"(?.*?)" #should be able to return the token
1227. => GET => http://{{server}}/api/simple_auth/login_by_email?_no_encode=1&email=dutta.dipankar08@gmail.com&auth_token_={{login_token1}} => You must pass any one of password_ # Note you can only login by token if you pass the username
1228.
1229. # login with username and password or authtoken and get login_token1 back
1230. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=test&password_=test123 => "auth_token_":"(?.*?)"
1231. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token1}} => dutta.dipankar08@gmail.com
1232. => GET => http://{{server}}/api/simple_auth/validate_login_session?_no_encode=1&auth_token_={{login_token1}} => success
1233.
1234. # getifo
1235. => GET => http://{{server}}/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => user data returned
1236.
1237. #update_info
1238. => GET => http://{{server}}/api/simple_auth/update_info?_no_encode=1&auth_token_={{login_token1}}&phone=7547564902 => user data returned
1239. => GET => http://{{server}}/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => 7547564902
1240.
1241. # login agaun get token2
1242. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test123 => "auth_token_":"(?.*?)"
1243. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token2}} => dutta.dipankar08@gmail.com
1244.
1245. # try login with invalid tokens.
1246. => GET => http://{{server}}/api/simple_auth/login?username=test&auth_token_=wrong => Invalid username or auth_token_
1247. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test2&auth_token_={{login_token2}} => Invalid username or auth_token_
1248.
1249. # logout with one token but other token should works.
1250. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => Logout done
1251. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => not able to logout as username or auth_token is wrong
1252. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token2}} => dutta.dipankar08@gmail.com
1253.
1254. # logout all session and no token should not work
1255. => GET => http://{{server}}/api/simple_auth/logout?username=test => Missing auth_token_
1256. => GET => http://{{server}}/api/simple_auth/logout_all?username=test => Missing auth_token_
1257. => GET => http://{{server}}/api/simple_auth/logout_all?username=test1&force=1 => Logout done for 0 session forcefully
1258. => GET => http://{{server}}/api/simple_auth/logout_all?username=test&force=1 => Logout done for 1 session forcefully
1259. => GET => http://{{server}}/api/simple_auth/login?username=test&auth_token_={{login_token2}} => Invalid username or auth_token_
1260.
1261.
1262. #### The bwlo example shows how we can make a DB is accexx protected and to access it it must be logged in ###
1263. => GET => http://{{server}}/api/test_simple_auth => Please send auth_token_
1264. => GET => http://{{server}}/api/test_simple_auth?auth_token_=test => Wrong auth_token_ passed
1265. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test123 => "auth_token_":"(?.*?)"
1266. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test1&password_=test123 => "auth_token_":"(?.*?)"
1267. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token}} => Find successfully with 0 items
1268. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token}}&name=Dip => "_username":"test"
1269. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token}} => Find successfully with 1 items
1270. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token1}}&name=Dip => "_username":"test1"
1271. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token1}}&name=Dip => "_username":"test1"
1272. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token1}} => Find successfully with 2 items ##
1273. => GET => http://{{server}}/api/test_simple_auth?auth_token_=skip => Find successfully with 3 items ####
1274. => GET => http://{{server}}/api/test_simple_auth/delete?auth_token_={{login_token}}&_confirmstr=test_simple_auth => Deleted count is : 1
1275. => GET => http://{{server}}/api/test_simple_auth/delete?auth_token_=skip&_confirmstr=test_simple_auth => Deleted count is : 2
1276.
1277. ## Forget and reset password to test5
1278. => GET => http://{{server}}/api/simple_auth/forgot_password => Missing username
1279. => GET => http://{{server}}/api/simple_auth/forgot_password?username=wrong => Invalid username
1280. => GET => http://{{server}}/api/simple_auth/forgot_password?_no_encode=1&username=test => "short_lived_token":"(?.*?)"
1281. => GET => http://{{server}}/api/simple_auth/reset_password?username=test => Missing short_lived_token
1282. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token=wrong => Missing password_
1283. => GET => http://{{server}}/api/simple_auth/reset_password?username=wrong&short_lived_token={{short_lived_token}} => Missing password_
1284. => GET => http://{{server}}/api/simple_auth/reset_password?username=wrong&short_lived_token=wrong&password_=hello => Invalid username or token got expired
1285. => GET => http://{{server}}/api/simple_auth/reset_password?username=test_unknown&short_lived_token={{short_lived_token}}&password_=test5 => Invalid username or token got expired
1286. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test5 => Password changed successfully
1287. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test5 => Invalid username or token got expired
1288.
1289. # reset password back to test123
1290. => GET => http://{{server}}/api/simple_auth/forgot_password?_no_encode=1&username=test => "short_lived_token":"(?.*?)"
1291. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test123 => Password changed successfully
1292.
1293. # You can pass auth_token_ as a header or cookies
1294. # curl -H "auth_token_:skip" -X GET "http://localhost/api/test_simple_auth"
1295. # curl http://localhost/api/test_simple_auth--cookie "auth_token_=skip"
1296.
1297.
1298. # add_subscription_by_stipe
1299. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test123 => "auth_token_":"(?.*?)"
1300. => GET => http://localhost/api/simple_auth/add_subscription?_no_encode=1&payment_method_id=pm_1MQHD9CtA5cdHPVpgX6YpXRY&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => subscription success
1301. => GET => http://localhost/api/simple_auth/add_subscription?_no_encode=1&payment_method_id=pm_1MQHD9CtA5cdHPVpgX6YpXRY&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => subscription success
1302.
1303. # duplicate subscription
1304. => GET => http://localhost/api/simple_auth/add_subscription?_no_encode=1&payment_method_id=pm_1MQHD9CtA5cdHPVpgX6YpXRY&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => subscription success
1305.
1306. # clear subscription
1307. => GET => http://localhost/api/simple_auth/clear_subscription?_no_encode=1&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => subscription clear
1308.
1309.
1310. => GET => http://localhost/api/simple_auth/clear_subscription?_no_encode=1&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => not able to find the subscription
1311.
1312.
1313. # For testng this you need to generate the payment_method_id first with public dat
1314. #=> GET => http://localhost/api/simple_auth/add_subscription?_no_encode=1&payment_method_id=pm_1MQHY0CtA5cdHPVpZpglF5a7&subscription_key=test&auth_token_={{login_token1}}&&subscription_provider=stripe => recept_url":"https://pay.stripe.com/receipts/payment
1315.
1316. # Google Login
1317. => POST => http://localhost/api/simple_auth/google_login => {"iss": "https://accounts.google.com","email": "test3@gmail.com", "name": "DIPANKAR DUTTA","picture": "https://lh3.googleusercontent.com/a/AEdFTp68hUhkoSvDnP6rAuuDqZwMVU4A5ULh6OoMogKdog=s96-c"} => Login success
1318.
1319.
1320.
1321.
1322. # Managing permission
1323. => GET => http://localhost/api/utils/admin_tools/generate_super_user_token?admin_code=admin_test => "out":"(?.*?)"
1324. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=test&password_=test123 => "auth_token_":"(?.*?)"
1325. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => "permission_group":\[\]
1326. => GET => http://localhost/api/simple_auth/remove_permission => missing super_user_token
1327. => GET =>http://localhost/api/simple_auth/remove_permission?super_user_token={{super_user_token}} => Please send the permission string
1328. => GET =>http://localhost/api/simple_auth/add_permission?super_user_token={{super_user_token}}&permission=test&username=test => permission is added
1329. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => "permission_group":\["test"\]
1330. => GET =>http://localhost/api/simple_auth/remove_permission?super_user_token={{super_user_token}}&permission=test&username=test => permission is removed
1331. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => "permission_group":\[\]
1332.
1333. # LOGIN WITH MAGIC LINK SUPPORT : generate and test Magic Link
1334. => GET => http://localhost/api/simple_auth/generate_magic_link => Missing email
1335. => GET => http://localhost/api/simple_auth/generate_magic_link?email=dutta.dipankar08@gmail.com => Missing url
1336. => GET => http://localhost/api/simple_auth/generate_magic_link?_no_encode=1&email=dutta.dipankar08@gmail.com&url=https://admin.grodok.com/account&app_name=admin => "magic_link_token":"(?.*?)"
1337. => GET => http://localhost/api/simple_auth/login_with_magic_link?_no_encode=1&magic_link_token={{magic_link_token1}} => success
1338. => GET => http://localhost/api/simple_auth/login_with_magic_link?_no_encode=1&magic_link_token={{magic_link_token1}} => Token not exist or expaired
1339. => GET => http://localhost/api/simple_auth/login_with_magic_link?magic_link_token=hello => Invalid token
1340.
1341.
1342.
1343. #########################################################################################
1344. ## ##
1345. ## IPTV APIS (DISABLED AS NOT USED) ##
1346. ## ##
1347. #########################################################################################
1348. #=> POST => http://{{server}}/api/ip_tv/delete?_confirmstr=ip_tv => {} => success
1349. #=> POST => http://{{server}}/api/ip_tv/add_seed => {"seed_url":"https://raw.githubusercontent.com/143maha/Sonuiptvnew/main/Indian15sep.m3u8", "name":"143maha"} => We have parsed seed
1350. #=> GET => http://{{server}}/api/ip_tv?_limit=1 => "_id":"(?.*?)"
1351. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank":
1352. #=> GET => http://{{server}}/api/ip_tv/rankup?id={{id1}}&_field=rank => Up voted
1353. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank":
1354. #=> GET => http://{{server}}/api/ip_tv/rankdown?id={{id1}}&_field=rank => Down voted
1355. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank":
1356. #=> GET => http://{{server}}/api/ip_tv/count => success
1357. # => GET => http://{{server}}/api/ip_tv/cleanup => clean up done by removing
1358. # => GET => http://localhost/api/ip_tv/cleanup?is_delete=false => success
1359. #=> GET => http://localhost/api/ip_tv/explore_seed?seed_url=https://raw.githubusercontent.com/mahmud31132/bdix-tv/main/BD%20working.m3u8 => success
1360.
1361. #########################################################################################
1362. ## ##
1363. ## TRADE APIS ##
1364. ## ##
1365. #########################################################################################
1366. # We have tested the api but disabling it=> POST => http://{{server}}/api/utils/trade/expert_call_result => {"symbol":"TCS.NS","target":"3600","stoploss":"3370","start_date":"2023-02-24T10:10:17.617Z","end_date":"2023-02-26T10:10:17.617Z"} => RESULT
1367. => GET => http://{{server}}/api/utils/trade/ltp => TCS.NS
1368. => GET => http://{{server}}/api/utils/trade/ltp?symbols=TCS.NS,WIPRO.NS => TCS.NS
1369. # Supported Index is WORLD_INDEX and INDIA_INDEX
1370. => GET => http://{{server}}/api/utils/trade/ltp?group=WORLD_INDEX=> NASDAQ
1371. => GET => http://{{server}}/api/utils/trade/ltp?group=INDIA_INDEX=> NSEI
1372.
1373. # Historical data
1374. => GET => http://localhost/api/utils/trade/history?symbol=MSFT => missing interval. possible value: 1d,5m,15m,1h
1375. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo => missing range. possible value:
1376. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo => missing range. possible value:
1377. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo&range=max => success
1378. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo&range=10y => success
1379.
1380. # Expart resilt
1381. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3630","stoploss":"3590", "target":"3645","target2":"3665"} => success
1382. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3630","stoploss":"3590", "target":"3645","target2":"3670"} => success
1383. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3630","stoploss":"3620", "target":"3645","target2":"3695"} => success
1384. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3630","stoploss":"3590", "target":"4000","target2":"4000"} => success
1385. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3700","stoploss":"3590", "target":"3645","target2":"3695"} => success
1386. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3598","stoploss":"3590", "target":"3645","target2":"3695"} => success
1387.
1388.
1389.
1390.
1391. #########################################################################################
1392. ## ##
1393. ## Youtube uploader ##
1394. ## ##
1395. ## FOR AUTH ISSUE: generate toekn: node bin/core/google/youtube.js ##
1396. #########################################################################################
1397.
1398. => GET => http://localhost/api/utils/yupload/m3u8upload => error
1399.
1400. => GET => http://localhost/api/utils/yupload/m3u8upload?uri=https://stream.live.vc.bbcmedia.co.uk/bbc_hindi_radio&duration=300 =>Please send a key
1401.
1402.
1403. #########################################################################################
1404. ## ##
1405. ## Error ##
1406. ## ##
1407. ## FOR AUTH ISSUE: generate toekn: node bin/core/google/youtube.js ##
1408. #########################################################################################
1409. => POST => http://{{server}}/api/error/delete?_confirmstr=error => {} => success
1410. => GET => http://localhost/api/error/test => Test Error
1411. => GET => http://localhost/api/error => Test Error
1412.
1413. #########################################################################################
1414. ## ##
1415. ## INFO ##
1416. ## ##
1417. ## GET API INFO ##
1418. #########################################################################################
1419. => GET => http://localhost/api/local_test/info => "isRemoteDB":false
1420. => GET => http://localhost/api/remote_test/info => "isRemoteDB":true
1421. # curl http://localhost/api/test/info --cookie "Cho=Kim;Greet=Hello"
1422. => GET => http://localhost/api/test/info => "isRemoteDB":false
1423. => GET => http://localhost/api/test_secure/info => "secure":false
1424. => GET => http://localhost/api/test_secure/ => success
1425. => GET => http://localhost/api/test_secure_/info => "secure":true # Note that You must have secure_ to pass the match
1426. => GET => http://localhost/api/test_secure_/ => Please send auth_token_
1427. => GET => http://localhost/api/test/info => "secure":false
1428.
1429.
1430. #########################################################################################
1431. ## ##
1432. ## STRIPE ##
1433. ## ##
1434. ## STRIPE validation api's helps to validate any purchase via simplestore ##
1435. #########################################################################################
1436. # ( need real setup )=> GET => http://localhost/api/stripe/check_subscription?customer_id=cus_Melrh5VwxSJB2v => "email":"dutta.dipankar08@gmail.com"
1437. => GET => http://localhost/api/stripe/check_payment?payment_id=unknwon => No such payment_intent
1438. # ( not real setup)=> GET => http://localhost/api/stripe/check_payment?payment_id=pi_3LvRVnCtA5cdHPVp0DrsawEx => "amount_captured":500
1439.
1440. #########################################################################################
1441. ## ##
1442. ## TEST Encript and dryption API output ##
1443. ## ##
1444. ## STRIPE validation api's helps to validate any purchase via simplestore ##
1445. #########################################################################################
1446. => GET => http://localhost/api/test_crypto/delete?_confirmstr=test_crypto => success
1447. => GET => http://localhost/api/test_crypto/insert?name=dip => insert successfully
1448. => GET => http://localhost/api/test_crypto => Find successfully
1449. => GET => http://localhost/api/test_crypto/count => success
1450. => GET => http://localhost/api/test_crypto/delete?_confirmstr=test_crypto => success
1451.
1452.
1453. ## Root users
1454. => GET => http://localhost/api/_auth_token/ => access db with db name with _
1455. => GET => http://localhost/api/_auth_token?_root_user=1 => success
1456.
1457. #########################################################################################
1458. ## test unset or delete fields
1459. ## This API allow you to delete a list of fileds ( just unset in the docs)
1460. ## How to unsert a field?
1461. ## How to unset multiple fields?
1462. ## how to unset fileds with nested documnets ? use dot notation.
1463. ## How to unset fields for all entrys by seraching? query + _field combination
1464. #########################################################################################
1465. => GET => http://localhost/api/test/delete?_confirmstr=test =>success
1466. => GET => http://localhost/api/test/insert?name=dip&roll=20&email=hello@hello.com => "_id":"(?.*?)"
1467. => GET => http://localhost/api/test/get?_id={{id1}} => "roll":"20"
1468. => GET => http://localhost/api/test/delete_fields?_id={{id1}}&_field=roll => We have un-set the filed for 1 entries
1469. => GET => http://localhost/api/test/get?_id={{id1}} => "name":"dip","email":"hello@hello.com",
1470.
1471. # unsetting nested object
1472. => POST => http://localhost/api/test/insert => {"name":{"first":"dip", "last":"dutta"}} => "_id":"(?.*?)"
1473. => GET => http://localhost/api/test/delete_fields?_id={{id1}}&_field=name.last => un-set the filed for 1 entries
1474. => GET => http://localhost/api/test/get?_id={{id1}} => "name":\{"first":"dip"\}
1475.
1476.
1477.
1478. #########################################################################################
1479. # File utilitiesv
1480. # This api define upload, download, delete and list files in the SimpleStore application
1481. # This is for the prototype purpose. Please don't use for scale
1482. # All test is passing - disabled for new file is missing
1483. #########################################################################################
1484. # curl -d @a.txt http://localhost/api/utils/files/upload use this for upload
1485. #=> GET => http://localhost/api/utils/files/download?filename=a.txt => Dipankar
1486. #=> GET => http://localhost/api/utils/files/list => a.txt
1487. #=> GET => http://localhost/api/utils/files/delete?filename=a.txt => success
1488. #=> GET => http://localhost/api/utils/files/delete?filename=a.txt => error
1489.
1490.
1491. #########################################################################################
1492. # remote_smb_manifest
1493. # This API will build the necessaryly function to support SMB.
1494. # Like Enable payment gateway
1495. #########################################################################################
1496. # [PASS ALL] (1) Test razorpay_create_order APIs
1497. => GET => http://localhost/api/remote_smb_manifest/delete?_confirmstr=remote_smb_manifest => success
1498. => POST => http://localhost/api/remote_smb_manifest/insert => {"public_keys":{"razor_key":"1"},"secret_keys_":{"razor_secret":"1"}} => "_id":"(?.*?)"
1499. => POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "amount":500, "currency":"INR", "smb_id":"{{id1}}"} => The api key provided is invalid
1500. => POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "amount":500, "currency":"INR", "smb_id":"wrong"} => Argument passed in must be a single String of 12 bytes
1501. => POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "currency":"INR", "smb_id":"wrong"} => Missing amount
1502. => POST => http://localhost/api/remote_smb_manifest/insert => {"public_keys":{"razor_key":"rzp_test_I2VzFwGWMekWJe"},"secret_keys_":{"razor_secret":"4Hk97bepWLg7PS0Lli1rCXmx"}} => "_id":"(?.*?)"
1503. => POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "amount":500, "currency":"INR", "smb_id":"{{id1}}"} => "order_id":"order_
1504.
1505.
1506. ####################
1507. ## Market APIs: As we wants to get the live market data, we can use goofle api to do that
1508. ##
1509. ####################
1510.
1511. # => GET => http://localhost/api/utils/market/google_ltp?symbol=VUSA.L => Vanguard S
1512.
1513. ####
1514. # Supporting revison
1515. # >>>> Update_one is not working any more <<<<<
1516. ####
1517. => GET => http://localhost/api/test/delete?_confirmstr=test => success
1518. => GET => http://localhost/api/test/insert?name=dip => "_id":"(?.*?)"
1519. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","_revision":true} => You must pass some data in the request
1520. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","name":"dip1","_revision":true} => "dip1"
1521. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","name":"dip2","_revision":true} => "dip2"
1522. => GET => http://localhost/api/test/revision?_id={{id1}} => All History\(revision\) returned
1523.
1524. ###
1525. # You need to mark remote_db to store in remote database
1526. ##
1527. => GET => https://simplestore.dipankar.co.in/api/remote_db_secure_merit/info => "isRemoteDB":true
1528. => GET => https://simplestore.dipankar.co.in/api/nodel_remote_db_secure_merit/info => "isRemoteDB":true
1529. => GET => https://simplestore.dipankar.co.in/api/nodel_secure_merit_remote_db/info => "isRemoteDB":true
1530. => GET => https://simplestore.dipankar.co.in/api/nodel_secure_merit_remoooote_db/info => "isRemoteDB":false
1531.
1532.
1533. #############################################
1534. # Test kill swicth - It provides way to set config which is globally store
1535. # this will help to switch code path based on remote coffi
1536. # This can be used for shipping experimeing features
1537. #############################################
1538. => GET => http://localhost/api/kill_switch/delete?_confirmstr=kill_switch => success
1539. => GET => http://localhost/api/kill_switch/set_bool?key=a&value=1 => "a":true
1540. => GET => http://localhost/api/kill_switch/set_bool?key=b&value=0 => "b":false
1541. => GET => http://localhost/api/kill_switch/set_bool?key=c&value=true => "c":true
1542. => GET => http://localhost/api/kill_switch/set_string?key=d&value=hello => "d":"hello"
1543. => GET => http://localhost/api/kill_switch/set_string?key=d&value=hello1 => "d":"hello1"
1544. => GET => http://localhost/api/kill_switch/get_current => "d":"hello1"
1545. => GET => http://localhost/api/kill_switch/reload => 4
1546.
1547.
1548. #############################################
1549. # Template store
1550. # this feature allow to create template in the tempalte store ( store in remote db)
1551. # and the you create_from_template api to create duplicate data from template
1552. #############################################
1553. => GET => http://localhost/api/template_store/delete?_confirmstr=template_store => success
1554. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100} => template_name must be present as composite key
1555. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100, "template_name":"test"} => success
1556. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100, "template_name":"test"} => Duplicate item found: template_name
1557. # here how to create clone from templates
1558. => POST => http://localhost/api/test/create_from_template => {"template_name":"test", "more_info":"extra data"} => "name":"dipankar","roll":100
1559. => POST => http://localhost/api/test/create_from_template => {"template_name":"test1", "more_info":"extra data"} => template not found
1560.
1561.
1562.
1563. ################ SCHEULE 2 API ######################
1564. # Schedule2 allows you to schele HTTP cron job - this is the next version of schedule
1565. # a) insert an entry
1566. # b) activate it uisng /activate.
1567. # c) check the status = /status
1568. #####################################################
1569. => POST => http://localhost/api/schedule2/delete?_confirmstr=schedule2 => {} => success
1570. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com","cron_format":"*/10 * * * * *"} => "_id":"(?.*?)" # Just insert not activated
1571. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com","cron_format":"*/10 * * * * *"} => Duplicate item found
1572. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Job is now scheduled
1573. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => is already scheduled
1574. => GET => http://{{server}}/api/schedule2/status => We have . jobs
1575. => GET => http://{{server}}/api/schedule2/reload => We have restarted . jobs
1576. => sleep => 12
1577. => GET => http://{{server}}/api/schedule2/?id={{job_id}} => doctype html # we are cjeking if the job got executed or not!
1578. => POST => http://{{server}}/api/schedule2/deactivate?id={{job_id}} => {} => canceled
1579. => POST => http://{{server}}/api/schedule2/deactivate?id={{job_id}} => {} => is not scheduled
1580. => GET => http://{{server}}/api/schedule2/status => We have 0 jobs
1581.
1582. # test post api call.
1583. => POST => http://{{server}}/api/schedule2/insert => {"method":"post", "url":"http://localhost/api/test/insert","cron_format":"*/10 * * * * *","data":{"name":"dip432"}} => "_id":"(?.*?)"
1584. => GET => http://{{server}}/api/schedule2/activate?id={{job_id2}} => Job is now scheduled
1585. => sleep => 12 # will execute in 12 sec
1586. => GET => http://{{server}}/api/schedule2/?id={{job_id2}} => insert successfully
1587. #=> POST => http://{{server}}/api/schedule2/deactivate?id={{job_id2}} => {} => canceled
1588.
1589. # Stop everything
1590. => POST => http://localhost/api/schedule2/delete?_confirmstr=schedule2 => {} => success
1591. => GET => http://localhost/api/schedule2/reload => We have restarted 0 jobs
1592.
1593. # check reload on boot
1594. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com","cron_format":"*/60 * * * * *"} => "_id":"(?.*?)" # Just insert not activated
1595. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Job is now scheduled
1596. # now restart.
1597. => GET => http://localhost/api/schedule2/status => We have 1 jobs
1598.
1599. #check timezoe support
1600. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com/test1","cron_format":"*/60 * * * * *", "time_zone":"invalid"} => "_id":"(?.*?)" # Just insert not activated
1601. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Not a valid timezone:invalid
1602.
1603. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com/test2","cron_format":"*/60 * * * * *", "time_zone":"Europe/London"} => "_id":"(?.*?)" # Just insert not activated
1604. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Job is now scheduled
1605.
1606.
1607. ################ Test Webhooks######################
1608. # Webhoks allowsto add endpoint when some db data is getting updated
1609. #####################################################
1610. => GET => http://localhost/api/webhook/status_clear => {"CALl_COUNT":0}
1611. => POST => http://localhost/api/webhook/insert => {"db_name":"test_webhook", "hook_url":"https://google.com"} => success
1612. => POST => http://localhost/api/test_webhook/insert => {"name":"Dipankar"} => success
1613. => GET => http://localhost/api/webhook/status => {"CALl_COUNT":1}
1614.
1615.
1616.
1617. ################ SECURE DB and Visibility Rules ######################
1618. # This allows to build secure DB protected by access_token.
1619. # 1. Secure DB contains the letter secure in it's name.
1620. # 2. When you define a db as secure you must pass a valid auth_token_ to create, insert. update.
1621. # 3. They are only visiuble to you and no others
1622. # 4. You can add other username as __visibility list to ensure they can be edited. But you still own that. add "public" to indicate they are public
1623. # 5. You can also create those db annonomously using spacial access token called "anonymous" - They are budefult make public visibility.
1624. # 6. Acess token "debug" can work for debug evn and skip all the secure rules
1625. #####################################################
1626.
1627. # Step1: Adding or remiving visibiity
1628. => GET => http://localhost/api/secure_test/insert?auth_token_=debug&name=hello => "_id":"(?.*?)"
1629. => GET => http://localhost/api/secure_test/visibility/add?_id1={{id1}}&auth_token_=debug => You must pass a _id or id
1630. => GET => http://localhost/api/test/visibility/add?_id={{id1}} => You can only make this action on secure db
1631. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}} => Missing auth_token_
1632. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug1 => Not logged in as Invalid auth_token_
1633. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Successfully added
1634. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\["user1"\]
1635. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Not updated
1636. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user2 => Successfully added
1637.
1638. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user1 => Successfully removed
1639. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user1 => Not updated
1640. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user2 => Successfully removed
1641. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\[\]
1642. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Successfully added
1643. => GET => http://localhost/api/secure_test/visibility/clear?_id={{id1}}&auth_token_=debug => Successfully
1644. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\[\]
1645.
1646.
1647.
1648. # Step 2: test secure access via visibility
1649. # In this case I will login as user1 and then create entry and add visibility for user2 and then try to access from user 2
1650.
1651. # first clean the DB
1652. => POST => http://localhost/api/simple_auth/delete?_confirmstr=simple_auth => {} => success
1653. => GET => http://localhost/api/_auth_token/delete?_root_user=1&_confirmstr=_auth_token => success # This will clean the token DB -> Note that it must be a root_user
1654.
1655. # Register user
1656. #=> GET => http://localhost/api/simple_auth/register?username=user1&password_=test123&email=dutta.dipankar08@gmail.com => registration success
1657. #=> GET => http://localhost/api/simple_auth/register?username=user2&password_=test123&email=dutta.dipankar08@gmail.com => registration success
1658.
1659. # login user
1660. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=user1&password_=test123 => "auth_token_":"(?.*?)"
1661. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=user2&password_=test123 => "auth_token_":"(?.*?)"
1662. # Create an ietm by user1 and add visibility to user 2
1663. => GET => http://localhost/api/secure_test/insert?auth_token_={{login_token1}}&name=share with user2 => "_id":"(?.*?)"
1664. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => Find successfully with 0 items
1665. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_={{login_token1}}&username=user2 => Successfully added
1666. # Access by user 2
1667. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => share with user2
1668. #Revoke access
1669. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_={{login_token1}}&username=user2 => Successfully removed
1670. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => Find successfully with 0 items
1671.
1672. # Update Visibility in a go using /replace
1673. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1,user2,user3 => Successfully replaced with 3
1674. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1,user2,user3 ,user4 => Successfully replaced with 4
1675. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1 => Successfully replaced with 1
1676. => POST => http://localhost/api/secure_test/visibility/replace => {"_id":"{{id1}}","auth_token_":"{{login_token1}}","username":["user1"]} => Successfully replaced with 1
1677. # In the below case, you need use clear API to replace
1678. => POST => http://localhost/api/secure_test/visibility/replace => {"_id":"{{id1}}","auth_token_":"{{login_token1}}","username":[]} => you must pass username
1679.
1680.
1681. # Testing anonymous entries.
1682. => GET => http://localhost/api/secure_test/insert?auth_token_=anonymous&name=test_anonymous => "_id":"(?.*?)"
1683. => GET => http://localhost/api/secure_test?id={{id3}} => Please send auth_token_
1684. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_=anonymous => "_visibility":\["public"\]
1685. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_=test => Wrong auth_token_ passed # So you must pass valid access token or anonymous
1686. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_={{login_token1}} => "_visibility":\["public"\]
1687.
1688.
1689. ################ PDF GEN API ######################
1690. # This allow to a secure entry to other user
1691. #####################################################
1692. => GET => http://localhost/api/utils/pdf/letter?from=Dipankar\nDutta&to=dip&subject=hello&content=hello\nworld => company_name missing
1693. => GET => http://localhost/api/utils/pdf/letter?from=Dipankar\nDutta&to=dip&subject=hello&content=hello\nworld&company_name=hello&company_address=hello => /PDF /Text
1694.
1695.
1696. ################ HEARTBEAT API ######################
1697. # This allow to a secure entry to other user
1698. #####################################################
1699. => GET => http://localhost/api/utils/heartbeat/ping => please pass name
1700. => GET => http://localhost/api/utils/heartbeat/ping?name=test =>pong
1701. => GET => http://localhost/api/utils/heartbeat/status?name=test => status: active
1702. => GET => http://localhost/api/utils/heartbeat/ping?name=test&status=error =>pong
1703. => GET => http://localhost/api/utils/heartbeat/status?name=test => status: error
1704. => GET => http://localhost/api/utils/heartbeat/ping?name=test&status=error&last_error=error_stack =>pong
1705. => GET => http://localhost/api/utils/heartbeat/status?name=test => error_stack
1706. => GET => http://localhost/api/utils/heartbeat/status?name=test1 => status: not found
1707.
1708. # Test auto expaire ( must be pinnged in every 60 sec - we delete the entry in 120 sec)
1709. # This give two chnages to ensure your pingged in reached to the server
1710. => GET => http://localhost/api/utils/heartbeat/status?name=test => error_stack
1711. # => sleep => 120 <<< DIabled as perf reason
1712. # => GET => http://localhost/api/utils/heartbeat/status?name=test => status: inactive
1713.
1714. ################ TUNNEL REQUEST ######################
1715. # This mecahnisn allows to execute a JSON request to 3p wesbite and allow to pass a custum function to process the output.
1716. #####################################################
1717. => GET => http://localhost/api/tunnel_request/delete?_confirmstr=tunnel_request =>success
1718. => POST => http://localhost/api/tunnel_request/add_tunnel => {"name":"test", "type":"get", "url":"https://market.tipranks.com/api/details/GetRealTimeQuotes", "process_fn" : "none"} => success
1719. => POST => http://localhost/api/tunnel_request/add_tunnel => {"name":"test", "type":"get", "url":"https://market.tipranks.com/api/details/GetRealTimeQuotes", "process_fn" : "none"} => Duplicate item found: name
1720.
1721. # Once we setup a tunnel, execute it using get or post
1722. => GET => http://localhost/api/tunnel_request/execute?name=test => Request failed with status code 404
1723. => GET => http://localhost/api/tunnel_request/execute?name=test&tickers=MSFT => Issue with processing function
1724.
1725. # thsi will override thr process fucntion to test purpose ( you can use both lamda and nameed function)
1726. => POST => http://localhost/api/tunnel_request/execute => {"name":"test","tickers":"MSFT","process_fn":"function(a){return a}"} => successfully executeed the process fiunction
1727.
1728. # DONT USE LAMDA FUNCTION for test as => can't eb used
1729. # curl -X POST -H "Content-Type: application/json" -d '{"name":"test","tickers":"MSFT","process_fn":"(a)=>a"}' 'http://localhost/api/tunnel_request/execute' should work but test will fail
1730. #=> POST => http://localhost/api/tunnel_request/execute => {"name":"test","tickers":"MSFT","process_fn":"(a)=>a"} => successfully executeed the process fiunction
1731.
1732. # You can add revision for that tunnel and latest revisition will be used
1733. => POST => http://localhost/api/tunnel_request/add_revision => {"name":"test", "type":"get", "url":"https://market.tipranks.com/api/details/GetRealTimeQuotes", "process_fn" : "function(a){return a[0].ticker}"} =>new revisions added
1734. => GET => http://localhost/api/tunnel_request/execute?name=test&tickers=MSFT => MSFT
1735.
1736. ################ Crash Report ######################
1737. # Thsi APi provides to report crashes from any app.
1738. #####################################################
1739. => GET => http://localhost/api/crash_log/delete?_confirmstr=crash_log =>success
1740. => POST => http://localhost/api/crash_log/report_crash => {"app_name":"test", "message":"hello","stack":"stack1"} => first_line_hash:-1e788fb6
1741. => POST => http://localhost/api/crash_log/report_crash => {"app_name":"test", "message":"hello","stack":"stack1 "} => first_line_hash:-1e788fb6
1742. => GET => http://localhost/api/crash_log => "total_count":2
1743.
1744. ################ System DB ######################
1745. # Simple store supports system db which load all SimpleStore Server realted remote config on DB start.
1746. # This will override any local config so that we can control the service remotely.
1747. # One of the example is the SERCURE_KEYS which could be reset remotely
1748. # >>>> NOT WORKING <<<<
1749. #####################################################
1750. # => GET => http://localhost/api/internal_nodel_system_db/delete?_confirmstr=internal_nodel_system_db => The DB has marked as nodel
1751. # => GET => http://localhost/api/utils/system_db/dump => system db dump -> use db UI
1752. # /update will add, update, delete all in a single api. for delete pass null
1753. # => POST => http://localhost/api/utils/system_db/update => {"db_name":"SECURE_KEYS", "test_key1":"test_key_value1","test_key2":"test_key_value2"} => "test_key2":"test_key_value2"
1754. # => POST => http://localhost/api/utils/system_db/update => {"db_name":"SECURE_KEYS", "test_key1":"test_key_value1","test_key2":"null"} => "test_key2":null
1755. # => POST => http://localhost/api/utils/system_db/update => {"db_name":"SECURE_KEYS", "test_key1":"test_key_value1","test_key2":"test_key_value3"} => "test_key2":"test_key_value3"
1756. # => GET => http://localhost/api/utils/system_db/dump => "test_key2":"test_key_value3"
1757.
1758. ######### SERVER INFO ######
1759. => GET => http://localhost/info => "secureKeys":"Un autorized"
1760. => GET => http://localhost/info?admin=1 => "secureKeys"
1761.
1762. ##############
1763. # Test for stock_alert
1764. #
1765. ############
1766. => GET => http://localhost/api/stock_alert/delete?_confirmstr=stock_alert => success
1767. => POST => http://localhost/api/stock_alert/create => {"email":"dutta.dipankar08@gmail.com"} => "_id":"(?.*?)"
1768. => POST => http://localhost/api/stock_alert/tags/add => {"id":"{{id1}}","_field":"symbol_list", "_value":"AAPL"} => "symbol_list":\["AAPL"\]
1769. => POST => http://localhost/api/stock_alert/tags/add => {"id":"{{id1}}","_field":"subscription_list", "_value":"NOTIFY_BEGIN_5,NOTIFY_END_5"} => "subscription_list":\["NOTIFY_BEGIN_5","NOTIFY_END_5"\]
1770. => POST => http://localhost/api/stock_alert => {"id":"{{id1}}"} => "email":"dutta.dipankar08@gmail.com"
1771. => GET => http://localhost/api/stock_alert/trigger?exchange=NASDAQ&event=NOTIFY_BEGIN_5 => 1 Event processed
1772.
1773.
1774. ###########
1775. # Expose reliability for admin acess
1776. ###########
1777. => GET => http://localhost/reliability/ => success
1778.
1779. ##### Admin DB ####
1780. => GET => http://localhost/api/admin_hello => Missing admin_token_
1781. => GET => http://localhost/api/test_admin => Missing admin_token_
1782. => GET => http://localhost/api/test_admin?admin_token_=admin_test => Find successfully
1783. => GET => http://localhost/api/test_admin?admin_token_=admin_test_token_invalid => Invalid admin_token
1784. => GET => http://localhost/api/test_admin/insert?admin_token_=admin_test&name=test=> success
1785. => GET => http://localhost/api/test_admin/get?name=test=> Missing admin_token_
1786. => GET => http://localhost/api/test_admin/find?name=test=> Missing admin_token_
1787.
1788.
1789. # Get and Delete.
1790. => GET => http://localhost/api/test/insert?name=test => "_id":"(?.*?)"
1791. => GET => http://localhost/api/test/get_and_delete?id={{id1}} => success
1792. => GET => http://localhost/api/test/get_and_delete?id={{id1}} => error
1793.
1794.
1795. # Test case for AWS S3 utils
1796. => GET => http://localhost/api/utils/aws/list_files?folder_name=images&bucket_name=intellicogno-s3 => https://intellicogno-s3.s3.us-east-2.amazonaws.com
1797. => GET => http://localhost/api/utils/aws/list_files?folder_name=images => missing bucket_name
1798. => GET => http://localhost/api/utils/aws/list_files?bucket_name=images => missing folder_name
1799. => GET => http://localhost/api/utils/aws/list_files?folder_name=images&bucket_name=intellicogno-s4 => return a list of url
1800. => GET => http://localhost/api/utils/aws/list_files?folder_name=images1&bucket_name=intellicogno-s3 => return a list of url
1801. # Path = https://${bucketName}.s3.${region}.amazonaws.com/${path}
1802. => GET => http://localhost/api/utils/aws/get_download_url?path=images/017.jpg&bucket_name=intellicogno-s3 => success # get a link for a file
1803.
1804.
1805. # live log
1806. => GET => http://localhost/api/live_log/test => success
1807. => GET => http://localhost/api/live_log/get_log => error
1808. => GET => http://localhost/api/live_log/get_log?sender=live_log => html
1809.
1810.
1811. # Admin feature
1812. => GET => http://localhost/admin/log => Error reading log file
1813. => GET => http://localhost/admin/routes => analytics
1814.
1815. # Power ful cron jobs scheulere
1816. # You can have job type lie ( not working anymore)
1817. # => GET => http://localhost/api/cron_job/submit?cron_format=* * * * *&job_type=debug&job_payload=json:{%22data%22:%22data%22} => success
1818. # => GET => http://localhost/api/cron_job/active_jobs => sucess
1819. # => GET => http://localhost/api/cron_job/reload => sucess
1820. # => GET => http://localhost/api/cron_job/run_now?id={xxx} => error # This api should be used to run the cron now now whcih would be helpful to test
1821.
1822. # Bash comamnd excutor
1823. => GET => http://localhost/api/utils/bash => error
1824. => GET => http://localhost/api/utils/bash?cmd=ls => success
1825. => GET => http://localhost/api/utils/bash?cmd=pwd => success
1826. => GET => http://localhost/api/utils/bash?cmd=sudo%20rm%20-rf => No rm or sudo allowed
1827. => GET => http://localhost/api/utils/bash?preset=git_pull => success
1828. => GET => http://localhost/api/utils/bash/get_all_presets => All Preset returned
1829.
1830. # yahoo_fin Historical data
1831. => GET => http://localhost/api/utils/yahoo_fin/historical_data?symbol=AAPL&interval=5m&range=1mo => success
1832.
1833.
1834. # Generating OAuth token for Simple_AUth
1835. # Oauth allows to genete refersh and access token by 3p provider
1836. # Here is how to use
1837. # 1. Add a button in the UI to call : https://api.schwabapi.com/v1/oauth/authorize?client_id=BfQwxJGANBot1jWGO4e4LUuVjP33ckXs&redirect_uri=https://127.0.0.1:3000/oauth/schwab ( Note that your need get the client id from the Schwab and you define redirect_uri while creating the app)
1838. # 2. After reditecyion, you will getting a code, note the code and pass with below url
1839. # 3. Hit the URL: http://localhost/api/simple_auth/generate_oauth_tokens?auth_token_=9CC3B6&provider=SCHWAB&code=&redirect_uri=https://127.0.0.1:3000/oauth/schwab ( note to use same reditected URI)
1840. # 4. It need to do it quickly, once you are done, a access token will be generated and asscoited with the SimpleStoreAccount. For securiy reason, the access token will never be exposed outside. It is encriped and store in the SimpleStore internal DB.
1841. # 5. velidate if that is working fine http://simplestore.dipankar.co.in/api/utils/schwab/get_all_data?auth_token_=
1842. # 6. You dont need to acess refresh the auth_token as it is done automically by the system.
1843.
1844.
1845. #=> GET => http://localhost/api/simple_auth/register?username=test&email=test@test.com&password_=test => Duplicate item found: username
1846. #=> GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6"
1847. #=> GET => http://localhost/api/simple_auth/generate_oauth_tokens?auth_token_=9CC3B6&provider=SCHWAB&code=C0.b2F1dGgyLmJkYy5zY2h3YWIuY29t.1JJrZ4ijqQQWX6Z92WtUH3ka2xKP0CNTR-I_dtBoNv0%40&redirect_uri=https://grodok-algoverse.web.app/oauth/schwab => OAuthToken generated and stored
1848. #=> GET => http://localhost/api/simple_auth/get_info?auth_token_=9CC3B6&_no_encode=1 =>"test" # Note it will never expose the oauth_tokens_ ouside
1849. #=> GET => http://localhost/api/utils/schwab/get_all_data?auth_token_=9CC3B6
1850.
1851.
1852. # Test admin tools
1853. # This tools allow to generate the super_user_token and validate
1854. => GET => http://localhost/api/utils/admin_tools/generate_super_user_token => missing admin_code
1855. => GET => http://localhost/api/utils/admin_tools/generate_super_user_token?admin_code=admin_test => "out":"(?.*?)"
1856. => GET => http://localhost/api/utils/admin_tools/validate_super_user_token => missing token
1857. => GET => http://localhost/api/utils/admin_tools/validate_super_user_token?token=eyJhbGiOiJI => Invalid super user token
1858. => GET => http://localhost/api/utils/admin_tools/validate_super_user_token?token={{super_user_token}}=> pass
1859. => GET => http://localhost/api/utils/admin_tools/validate_super_user_token?token=super_user_token11=> Invalid super user token
1860.
1861.
1862. # Set APis -> This allow to insert a string into a list in the document
1863. => !POST => http://localhost/api/test0/create => {"name":"dip","count":1} => "_id":"(?.*?)"
1864. => GET => http://localhost/api/test/set/add?_id={{id}}&field=tags&value=1234 => "1234"
1865. => GET => http://localhost/api/test/set/add?_id={{id}}&field=tags&value=1234,1235,1236,1237 => "1234","1235","1236"
1866. => GET => http://localhost/api/test/set/remove?_id={{id}}&field=tags&value=1234=> "1235","1236"
1867. => GET => http://localhost/api/test/set/remove?_id={{id}}&field=tags&value= 1234,1235, 1236=> "1237"
1868. => GET => http://localhost/api/test/set/clear?_id={{id}}&field=tags&value==> "tags":\[\]
1869. => GET => http://localhost/api/test/delete?_id={{id}} => success
1870.
1871.
1872. # Private tokens store and send message in telegeraom: Private Tokens + Telegram Utilities
1873. => GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test123&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6"
1874. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=TELEGRAM_BOT_PRIVATE_TOKEN&token=test => private tokens stored
1875. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=UNKNOWN&token=test => Invalid enum string UNKNOWN,
1876. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&provider=UNKNOWN&chat_id=test&text=hello => 404
1877. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=TELEGRAM_BOT_PRIVATE_TOKEN&token=7542704492:AAFivlt7Cu1Y7lbRjIAVmBguiVaDMr0w5RA => private tokens stored
1878. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&chat_id=test&text=hello => Bad Request: chat not found
1879. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&chat_id=-1002207345931&text=hello => Message sent successfully!
1880.
1881. # Interal db
1882. => GET => http://localhost/api/internal_test => access this information
1883.
1884. # testing passing osbucure data
1885. # Sometime you need to send a cyptic input in the request which will not allow to inspect by the client hacker, use the pass _data
1886. => GET => http://localhost/api/test/count?_data=eyJuYW1lIjogImRpcCJ9 => success
1887. => POST => http://localhost/api/test/count => {"_data":"eyJuYW1lIjogImRpcCJ9"} => success
1888. => GET => http://localhost/api/test/count?_data=eyJuYW1lIjogImRpcCJ9xx => Unexpected non-whitespace
1889.
1890. # Accessing preloaded Data stored in server
1891. => GET => http://localhost/api/utils/preload_data?name=ExampleData
1892.
1893.
1894. # schwab APIS ( not that you must have a valid access token - can;t test locally)
1895. => context => auth_token =>
1896. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/get_all_data?auth_token_={{auth_token}} => success
1897. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/quote?auth_token_={{auth_token}}&symbols=MSFT,AAPL => success
1898. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/chains?auth_token_={{auth_token}}&symbol=AAPL => success
1899. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/pricehistory?auth_token_={{auth_token}}&symbol=AAPL => success