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. => 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 1373. => 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 1374. => 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 1375. => 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 1376. => 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 1377. => 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 1378. 1379. 1380. ######################################################################################### 1381. ## ## 1382. ## Youtube uploader ## 1383. ## ## 1384. ## FOR AUTH ISSUE: generate toekn: node bin/core/google/youtube.js ## 1385. ######################################################################################### 1386. 1387. => GET => http://localhost/api/utils/yupload/m3u8upload => error 1388. 1389. => GET => http://localhost/api/utils/yupload/m3u8upload?uri=https://stream.live.vc.bbcmedia.co.uk/bbc_hindi_radio&duration=300 =>Please send a key 1390. 1391. 1392. ######################################################################################### 1393. ## ## 1394. ## Error ## 1395. ## ## 1396. ## FOR AUTH ISSUE: generate toekn: node bin/core/google/youtube.js ## 1397. ######################################################################################### 1398. => POST => http://{{server}}/api/error/delete?_confirmstr=error => {} => success 1399. => GET => http://localhost/api/error/test => Test Error 1400. => GET => http://localhost/api/error => Test Error 1401. 1402. ######################################################################################### 1403. ## ## 1404. ## INFO ## 1405. ## ## 1406. ## GET API INFO ## 1407. ######################################################################################### 1408. => GET => http://localhost/api/local_test/info => "isRemoteDB":false 1409. => GET => http://localhost/api/remote_test/info => "isRemoteDB":true 1410. # curl http://localhost/api/test/info --cookie "Cho=Kim;Greet=Hello" 1411. => GET => http://localhost/api/test/info => "isRemoteDB":false 1412. => GET => http://localhost/api/test_secure/info => "secure":false 1413. => GET => http://localhost/api/test_secure/ => success 1414. => GET => http://localhost/api/test_secure_/info => "secure":true # Note that You must have secure_ to pass the match 1415. => GET => http://localhost/api/test_secure_/ => Please send auth_token_ 1416. => GET => http://localhost/api/test/info => "secure":false 1417. 1418. 1419. ######################################################################################### 1420. ## ## 1421. ## STRIPE ## 1422. ## ## 1423. ## STRIPE validation api's helps to validate any purchase via simplestore ## 1424. ######################################################################################### 1425. # ( need real setup )=> GET => http://localhost/api/stripe/check_subscription?customer_id=cus_Melrh5VwxSJB2v => "email":"dutta.dipankar08@gmail.com" 1426. => GET => http://localhost/api/stripe/check_payment?payment_id=unknwon => No such payment_intent 1427. # ( not real setup)=> GET => http://localhost/api/stripe/check_payment?payment_id=pi_3LvRVnCtA5cdHPVp0DrsawEx => "amount_captured":500 1428. 1429. ######################################################################################### 1430. ## ## 1431. ## TEST Encript and dryption API output ## 1432. ## ## 1433. ## STRIPE validation api's helps to validate any purchase via simplestore ## 1434. ######################################################################################### 1435. => GET => http://localhost/api/test_crypto/delete?_confirmstr=test_crypto => success 1436. => GET => http://localhost/api/test_crypto/insert?name=dip => insert successfully 1437. => GET => http://localhost/api/test_crypto => Find successfully 1438. => GET => http://localhost/api/test_crypto/count => success 1439. => GET => http://localhost/api/test_crypto/delete?_confirmstr=test_crypto => success 1440. 1441. 1442. ## Root users 1443. => GET => http://localhost/api/_auth_token/ => access db with db name with _ 1444. => GET => http://localhost/api/_auth_token?_root_user=1 => success 1445. 1446. ######################################################################################### 1447. ## test unset or delete fields 1448. ## This API allow you to delete a list of fileds ( just unset in the docs) 1449. ## How to unsert a field? 1450. ## How to unset multiple fields? 1451. ## how to unset fileds with nested documnets ? use dot notation. 1452. ## How to unset fields for all entrys by seraching? query + _field combination 1453. ######################################################################################### 1454. => GET => http://localhost/api/test/delete?_confirmstr=test =>success 1455. => GET => http://localhost/api/test/insert?name=dip&roll=20&email=hello@hello.com => "_id":"(?.*?)" 1456. => GET => http://localhost/api/test/get?_id={{id1}} => "roll":"20" 1457. => GET => http://localhost/api/test/delete_fields?_id={{id1}}&_field=roll => We have un-set the filed for 1 entries 1458. => GET => http://localhost/api/test/get?_id={{id1}} => "name":"dip","email":"hello@hello.com", 1459. 1460. # unsetting nested object 1461. => POST => http://localhost/api/test/insert => {"name":{"first":"dip", "last":"dutta"}} => "_id":"(?.*?)" 1462. => GET => http://localhost/api/test/delete_fields?_id={{id1}}&_field=name.last => un-set the filed for 1 entries 1463. => GET => http://localhost/api/test/get?_id={{id1}} => "name":\{"first":"dip"\} 1464. 1465. 1466. 1467. ######################################################################################### 1468. # File utilitiesv 1469. # This api define upload, download, delete and list files in the SimpleStore application 1470. # This is for the prototype purpose. Please don't use for scale 1471. # All test is passing - disabled for new file is missing 1472. ######################################################################################### 1473. # curl -d @a.txt http://localhost/api/utils/files/upload use this for upload 1474. #=> GET => http://localhost/api/utils/files/download?filename=a.txt => Dipankar 1475. #=> GET => http://localhost/api/utils/files/list => a.txt 1476. #=> GET => http://localhost/api/utils/files/delete?filename=a.txt => success 1477. #=> GET => http://localhost/api/utils/files/delete?filename=a.txt => error 1478. 1479. 1480. ######################################################################################### 1481. # remote_smb_manifest 1482. # This API will build the necessaryly function to support SMB. 1483. # Like Enable payment gateway 1484. ######################################################################################### 1485. # [PASS ALL] (1) Test razorpay_create_order APIs 1486. => GET => http://localhost/api/remote_smb_manifest/delete?_confirmstr=remote_smb_manifest => success 1487. => POST => http://localhost/api/remote_smb_manifest/insert => {"public_keys":{"razor_key":"1"},"secret_keys_":{"razor_secret":"1"}} => "_id":"(?.*?)" 1488. => 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 1489. => 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 1490. => POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "currency":"INR", "smb_id":"wrong"} => Missing amount 1491. => POST => http://localhost/api/remote_smb_manifest/insert => {"public_keys":{"razor_key":"rzp_test_I2VzFwGWMekWJe"},"secret_keys_":{"razor_secret":"4Hk97bepWLg7PS0Lli1rCXmx"}} => "_id":"(?.*?)" 1492. => POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "amount":500, "currency":"INR", "smb_id":"{{id1}}"} => "order_id":"order_ 1493. 1494. 1495. #################### 1496. ## Market APIs: As we wants to get the live market data, we can use goofle api to do that 1497. ## 1498. #################### 1499. 1500. # => GET => http://localhost/api/utils/market/google_ltp?symbol=VUSA.L => Vanguard S 1501. 1502. #### 1503. # Supporting revison 1504. # >>>> Update_one is not working any more <<<<< 1505. #### 1506. => GET => http://localhost/api/test/delete?_confirmstr=test => success 1507. => GET => http://localhost/api/test/insert?name=dip => "_id":"(?.*?)" 1508. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","_revision":true} => You must pass some data in the request 1509. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","name":"dip1","_revision":true} => "dip1" 1510. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","name":"dip2","_revision":true} => "dip2" 1511. => GET => http://localhost/api/test/revision?_id={{id1}} => All History\(revision\) returned 1512. 1513. ### 1514. # You need to mark remote_db to store in remote database 1515. ## 1516. => GET => https://simplestore.dipankar.co.in/api/remote_db_secure_merit/info => "isRemoteDB":true 1517. => GET => https://simplestore.dipankar.co.in/api/nodel_remote_db_secure_merit/info => "isRemoteDB":true 1518. => GET => https://simplestore.dipankar.co.in/api/nodel_secure_merit_remote_db/info => "isRemoteDB":true 1519. => GET => https://simplestore.dipankar.co.in/api/nodel_secure_merit_remoooote_db/info => "isRemoteDB":false 1520. 1521. 1522. ############################################# 1523. # Test kill swicth - It provides way to set config which is globally store 1524. # this will help to switch code path based on remote coffi 1525. # This can be used for shipping experimeing features 1526. ############################################# 1527. => GET => http://localhost/api/kill_switch/delete?_confirmstr=kill_switch => success 1528. => GET => http://localhost/api/kill_switch/set_bool?key=a&value=1 => "a":true 1529. => GET => http://localhost/api/kill_switch/set_bool?key=b&value=0 => "b":false 1530. => GET => http://localhost/api/kill_switch/set_bool?key=c&value=true => "c":true 1531. => GET => http://localhost/api/kill_switch/set_string?key=d&value=hello => "d":"hello" 1532. => GET => http://localhost/api/kill_switch/set_string?key=d&value=hello1 => "d":"hello1" 1533. => GET => http://localhost/api/kill_switch/get_current => "d":"hello1" 1534. => GET => http://localhost/api/kill_switch/reload => 4 1535. 1536. 1537. ############################################# 1538. # Template store 1539. # this feature allow to create template in the tempalte store ( store in remote db) 1540. # and the you create_from_template api to create duplicate data from template 1541. ############################################# 1542. => GET => http://localhost/api/template_store/delete?_confirmstr=template_store => success 1543. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100} => template_name must be present as composite key 1544. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100, "template_name":"test"} => success 1545. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100, "template_name":"test"} => Duplicate item found: template_name 1546. # here how to create clone from templates 1547. => POST => http://localhost/api/test/create_from_template => {"template_name":"test", "more_info":"extra data"} => "name":"dipankar","roll":100 1548. => POST => http://localhost/api/test/create_from_template => {"template_name":"test1", "more_info":"extra data"} => template not found 1549. 1550. 1551. 1552. ################ SCHEULE 2 API ###################### 1553. # Schedule2 allows you to schele HTTP cron job - this is the next version of schedule 1554. # a) insert an entry 1555. # b) activate it uisng /activate. 1556. # c) check the status = /status 1557. ##################################################### 1558. => POST => http://localhost/api/schedule2/delete?_confirmstr=schedule2 => {} => success 1559. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com","cron_format":"*/10 * * * * *"} => "_id":"(?.*?)" # Just insert not activated 1560. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com","cron_format":"*/10 * * * * *"} => Duplicate item found 1561. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Job is now scheduled 1562. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => is already scheduled 1563. => GET => http://{{server}}/api/schedule2/status => We have . jobs 1564. => GET => http://{{server}}/api/schedule2/reload => We have restarted . jobs 1565. => sleep => 12 1566. => GET => http://{{server}}/api/schedule2/?id={{job_id}} => doctype html # we are cjeking if the job got executed or not! 1567. => POST => http://{{server}}/api/schedule2/deactivate?id={{job_id}} => {} => canceled 1568. => POST => http://{{server}}/api/schedule2/deactivate?id={{job_id}} => {} => is not scheduled 1569. => GET => http://{{server}}/api/schedule2/status => We have 0 jobs 1570. 1571. # test post api call. 1572. => POST => http://{{server}}/api/schedule2/insert => {"method":"post", "url":"http://localhost/api/test/insert","cron_format":"*/10 * * * * *","data":{"name":"dip432"}} => "_id":"(?.*?)" 1573. => GET => http://{{server}}/api/schedule2/activate?id={{job_id2}} => Job is now scheduled 1574. => sleep => 12 # will execute in 12 sec 1575. => GET => http://{{server}}/api/schedule2/?id={{job_id2}} => insert successfully 1576. #=> POST => http://{{server}}/api/schedule2/deactivate?id={{job_id2}} => {} => canceled 1577. 1578. # Stop everything 1579. => POST => http://localhost/api/schedule2/delete?_confirmstr=schedule2 => {} => success 1580. => GET => http://localhost/api/schedule2/reload => We have restarted 0 jobs 1581. 1582. # check reload on boot 1583. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com","cron_format":"*/60 * * * * *"} => "_id":"(?.*?)" # Just insert not activated 1584. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Job is now scheduled 1585. # now restart. 1586. => GET => http://localhost/api/schedule2/status => We have 1 jobs 1587. 1588. #check timezoe support 1589. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com/test1","cron_format":"*/60 * * * * *", "time_zone":"invalid"} => "_id":"(?.*?)" # Just insert not activated 1590. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Not a valid timezone:invalid 1591. 1592. => 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 1593. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Job is now scheduled 1594. 1595. 1596. ################ Test Webhooks###################### 1597. # Webhoks allowsto add endpoint when some db data is getting updated 1598. ##################################################### 1599. => GET => http://localhost/api/webhook/status_clear => {"CALl_COUNT":0} 1600. => POST => http://localhost/api/webhook/insert => {"db_name":"test_webhook", "hook_url":"https://google.com"} => success 1601. => POST => http://localhost/api/test_webhook/insert => {"name":"Dipankar"} => success 1602. => GET => http://localhost/api/webhook/status => {"CALl_COUNT":1} 1603. 1604. 1605. 1606. ################ SECURE DB and Visibility Rules ###################### 1607. # This allows to build secure DB protected by access_token. 1608. # 1. Secure DB contains the letter secure in it's name. 1609. # 2. When you define a db as secure you must pass a valid auth_token_ to create, insert. update. 1610. # 3. They are only visiuble to you and no others 1611. # 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 1612. # 5. You can also create those db annonomously using spacial access token called "anonymous" - They are budefult make public visibility. 1613. # 6. Acess token "debug" can work for debug evn and skip all the secure rules 1614. ##################################################### 1615. 1616. # Step1: Adding or remiving visibiity 1617. => GET => http://localhost/api/secure_test/insert?auth_token_=debug&name=hello => "_id":"(?.*?)" 1618. => GET => http://localhost/api/secure_test/visibility/add?_id1={{id1}}&auth_token_=debug => You must pass a _id or id 1619. => GET => http://localhost/api/test/visibility/add?_id={{id1}} => You can only make this action on secure db 1620. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}} => Missing auth_token_ 1621. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug1 => Not logged in as Invalid auth_token_ 1622. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Successfully added 1623. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\["user1"\] 1624. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Not updated 1625. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user2 => Successfully added 1626. 1627. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user1 => Successfully removed 1628. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user1 => Not updated 1629. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user2 => Successfully removed 1630. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\[\] 1631. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Successfully added 1632. => GET => http://localhost/api/secure_test/visibility/clear?_id={{id1}}&auth_token_=debug => Successfully 1633. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\[\] 1634. 1635. 1636. 1637. # Step 2: test secure access via visibility 1638. # 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 1639. 1640. # first clean the DB 1641. => POST => http://localhost/api/simple_auth/delete?_confirmstr=simple_auth => {} => success 1642. => 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 1643. 1644. # Register user 1645. #=> GET => http://localhost/api/simple_auth/register?username=user1&password_=test123&email=dutta.dipankar08@gmail.com => registration success 1646. #=> GET => http://localhost/api/simple_auth/register?username=user2&password_=test123&email=dutta.dipankar08@gmail.com => registration success 1647. 1648. # login user 1649. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=user1&password_=test123 => "auth_token_":"(?.*?)" 1650. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=user2&password_=test123 => "auth_token_":"(?.*?)" 1651. # Create an ietm by user1 and add visibility to user 2 1652. => GET => http://localhost/api/secure_test/insert?auth_token_={{login_token1}}&name=share with user2 => "_id":"(?.*?)" 1653. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => Find successfully with 0 items 1654. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_={{login_token1}}&username=user2 => Successfully added 1655. # Access by user 2 1656. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => share with user2 1657. #Revoke access 1658. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_={{login_token1}}&username=user2 => Successfully removed 1659. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => Find successfully with 0 items 1660. 1661. # Update Visibility in a go using /replace 1662. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1,user2,user3 => Successfully replaced with 3 1663. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1,user2,user3 ,user4 => Successfully replaced with 4 1664. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1 => Successfully replaced with 1 1665. => POST => http://localhost/api/secure_test/visibility/replace => {"_id":"{{id1}}","auth_token_":"{{login_token1}}","username":["user1"]} => Successfully replaced with 1 1666. # In the below case, you need use clear API to replace 1667. => POST => http://localhost/api/secure_test/visibility/replace => {"_id":"{{id1}}","auth_token_":"{{login_token1}}","username":[]} => you must pass username 1668. 1669. 1670. # Testing anonymous entries. 1671. => GET => http://localhost/api/secure_test/insert?auth_token_=anonymous&name=test_anonymous => "_id":"(?.*?)" 1672. => GET => http://localhost/api/secure_test?id={{id3}} => Please send auth_token_ 1673. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_=anonymous => "_visibility":\["public"\] 1674. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_=test => Wrong auth_token_ passed # So you must pass valid access token or anonymous 1675. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_={{login_token1}} => "_visibility":\["public"\] 1676. 1677. 1678. ################ PDF GEN API ###################### 1679. # This allow to a secure entry to other user 1680. ##################################################### 1681. => GET => http://localhost/api/utils/pdf/letter?from=Dipankar\nDutta&to=dip&subject=hello&content=hello\nworld => company_name missing 1682. => 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 1683. 1684. 1685. ################ HEARTBEAT API ###################### 1686. # This allow to a secure entry to other user 1687. ##################################################### 1688. => GET => http://localhost/api/utils/heartbeat/ping => please pass name 1689. => GET => http://localhost/api/utils/heartbeat/ping?name=test =>pong 1690. => GET => http://localhost/api/utils/heartbeat/status?name=test => status: active 1691. => GET => http://localhost/api/utils/heartbeat/ping?name=test&status=error =>pong 1692. => GET => http://localhost/api/utils/heartbeat/status?name=test => status: error 1693. => GET => http://localhost/api/utils/heartbeat/ping?name=test&status=error&last_error=error_stack =>pong 1694. => GET => http://localhost/api/utils/heartbeat/status?name=test => error_stack 1695. => GET => http://localhost/api/utils/heartbeat/status?name=test1 => status: not found 1696. 1697. # Test auto expaire ( must be pinnged in every 60 sec - we delete the entry in 120 sec) 1698. # This give two chnages to ensure your pingged in reached to the server 1699. => GET => http://localhost/api/utils/heartbeat/status?name=test => error_stack 1700. # => sleep => 120 <<< DIabled as perf reason 1701. # => GET => http://localhost/api/utils/heartbeat/status?name=test => status: inactive 1702. 1703. ################ TUNNEL REQUEST ###################### 1704. # This mecahnisn allows to execute a JSON request to 3p wesbite and allow to pass a custum function to process the output. 1705. ##################################################### 1706. => GET => http://localhost/api/tunnel_request/delete?_confirmstr=tunnel_request =>success 1707. => POST => http://localhost/api/tunnel_request/add_tunnel => {"name":"test", "type":"get", "url":"https://market.tipranks.com/api/details/GetRealTimeQuotes", "process_fn" : "none"} => success 1708. => 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 1709. 1710. # Once we setup a tunnel, execute it using get or post 1711. => GET => http://localhost/api/tunnel_request/execute?name=test => Request failed with status code 404 1712. => GET => http://localhost/api/tunnel_request/execute?name=test&tickers=MSFT => Issue with processing function 1713. 1714. # thsi will override thr process fucntion to test purpose ( you can use both lamda and nameed function) 1715. => POST => http://localhost/api/tunnel_request/execute => {"name":"test","tickers":"MSFT","process_fn":"function(a){return a}"} => successfully executeed the process fiunction 1716. 1717. # DONT USE LAMDA FUNCTION for test as => can't eb used 1718. # 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 1719. #=> POST => http://localhost/api/tunnel_request/execute => {"name":"test","tickers":"MSFT","process_fn":"(a)=>a"} => successfully executeed the process fiunction 1720. 1721. # You can add revision for that tunnel and latest revisition will be used 1722. => 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 1723. => GET => http://localhost/api/tunnel_request/execute?name=test&tickers=MSFT => MSFT 1724. 1725. ################ Crash Report ###################### 1726. # Thsi APi provides to report crashes from any app. 1727. ##################################################### 1728. => GET => http://localhost/api/crash_log/delete?_confirmstr=crash_log =>success 1729. => POST => http://localhost/api/crash_log/report_crash => {"app_name":"test", "message":"hello","stack":"stack1"} => first_line_hash:-1e788fb6 1730. => POST => http://localhost/api/crash_log/report_crash => {"app_name":"test", "message":"hello","stack":"stack1 "} => first_line_hash:-1e788fb6 1731. => GET => http://localhost/api/crash_log => "total_count":2 1732. 1733. ################ System DB ###################### 1734. # Simple store supports system db which load all SimpleStore Server realted remote config on DB start. 1735. # This will override any local config so that we can control the service remotely. 1736. # One of the example is the SERCURE_KEYS which could be reset remotely 1737. # >>>> NOT WORKING <<<< 1738. ##################################################### 1739. # => GET => http://localhost/api/internal_nodel_system_db/delete?_confirmstr=internal_nodel_system_db => The DB has marked as nodel 1740. # => GET => http://localhost/api/utils/system_db/dump => system db dump -> use db UI 1741. # /update will add, update, delete all in a single api. for delete pass null 1742. # => 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" 1743. # => POST => http://localhost/api/utils/system_db/update => {"db_name":"SECURE_KEYS", "test_key1":"test_key_value1","test_key2":"null"} => "test_key2":null 1744. # => 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" 1745. # => GET => http://localhost/api/utils/system_db/dump => "test_key2":"test_key_value3" 1746. 1747. ######### SERVER INFO ###### 1748. => GET => http://localhost/info => "secureKeys":"Un autorized" 1749. => GET => http://localhost/info?admin=1 => "secureKeys" 1750. 1751. ############## 1752. # Test for stock_alert 1753. # 1754. ############ 1755. => GET => http://localhost/api/stock_alert/delete?_confirmstr=stock_alert => success 1756. => POST => http://localhost/api/stock_alert/create => {"email":"dutta.dipankar08@gmail.com"} => "_id":"(?.*?)" 1757. => POST => http://localhost/api/stock_alert/tags/add => {"id":"{{id1}}","_field":"symbol_list", "_value":"AAPL"} => "symbol_list":\["AAPL"\] 1758. => 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"\] 1759. => POST => http://localhost/api/stock_alert => {"id":"{{id1}}"} => "email":"dutta.dipankar08@gmail.com" 1760. => GET => http://localhost/api/stock_alert/trigger?exchange=NASDAQ&event=NOTIFY_BEGIN_5 => 1 Event processed 1761. 1762. 1763. ########### 1764. # Expose reliability for admin acess 1765. ########### 1766. => GET => http://localhost/reliability/ => success 1767. 1768. ##### Admin DB #### 1769. => GET => http://localhost/api/admin_hello => Missing admin_token_ 1770. => GET => http://localhost/api/test_admin => Missing admin_token_ 1771. => GET => http://localhost/api/test_admin?admin_token_=admin_test => Find successfully 1772. => GET => http://localhost/api/test_admin?admin_token_=admin_test_token_invalid => Invalid admin_token 1773. => GET => http://localhost/api/test_admin/insert?admin_token_=admin_test&name=test=> success 1774. => GET => http://localhost/api/test_admin/get?name=test=> Missing admin_token_ 1775. => GET => http://localhost/api/test_admin/find?name=test=> Missing admin_token_ 1776. 1777. 1778. # Get and Delete. 1779. => GET => http://localhost/api/test/insert?name=test => "_id":"(?.*?)" 1780. => GET => http://localhost/api/test/get_and_delete?id={{id1}} => success 1781. => GET => http://localhost/api/test/get_and_delete?id={{id1}} => error 1782. 1783. 1784. # Test case for AWS S3 utils 1785. => GET => http://localhost/api/utils/aws/list_files?folder_name=images&bucket_name=intellicogno-s3 => https://intellicogno-s3.s3.us-east-2.amazonaws.com 1786. => GET => http://localhost/api/utils/aws/list_files?folder_name=images => missing bucket_name 1787. => GET => http://localhost/api/utils/aws/list_files?bucket_name=images => missing folder_name 1788. => GET => http://localhost/api/utils/aws/list_files?folder_name=images&bucket_name=intellicogno-s4 => return a list of url 1789. => GET => http://localhost/api/utils/aws/list_files?folder_name=images1&bucket_name=intellicogno-s3 => return a list of url 1790. # Path = https://${bucketName}.s3.${region}.amazonaws.com/${path} 1791. => GET => http://localhost/api/utils/aws/get_download_url?path=images/017.jpg&bucket_name=intellicogno-s3 => success # get a link for a file 1792. 1793. 1794. # live log 1795. => GET => http://localhost/api/live_log/test => success 1796. => GET => http://localhost/api/live_log/get_log => error 1797. => GET => http://localhost/api/live_log/get_log?sender=live_log => html 1798. 1799. 1800. # Admin feature 1801. => GET => http://localhost/admin/log => Error reading log file 1802. => GET => http://localhost/admin/routes => analytics 1803. 1804. # Power ful cron jobs scheulere 1805. # You can have job type lie ( not working anymore) 1806. # => GET => http://localhost/api/cron_job/submit?cron_format=* * * * *&job_type=debug&job_payload=json:{%22data%22:%22data%22} => success 1807. # => GET => http://localhost/api/cron_job/active_jobs => sucess 1808. # => GET => http://localhost/api/cron_job/reload => sucess 1809. # => 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 1810. 1811. # Bash comamnd excutor 1812. => GET => http://localhost/api/utils/bash => error 1813. => GET => http://localhost/api/utils/bash?cmd=ls => success 1814. => GET => http://localhost/api/utils/bash?cmd=pwd => success 1815. => GET => http://localhost/api/utils/bash?cmd=sudo%20rm%20-rf => No rm or sudo allowed 1816. => GET => http://localhost/api/utils/bash?preset=git_pull => success 1817. 1818. # yahoo_fin Historical data 1819. => GET => http://localhost/api/utils/yahoo_fin/historical_data?symbol=AAPL&interval=5m&range=1mo => success 1820. 1821. 1822. # Generating OAuth token for Simple_AUth 1823. #=> GET => http://localhost/api/simple_auth/register?username=test&email=test@test.com&password_=test => Duplicate item found: username 1824. #=> GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6" 1825. #=> 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 1826. #=> GET => http://localhost/api/simple_auth/get_info?auth_token_=9CC3B6&_no_encode=1 =>"test" # Note it will never expose the oauth_tokens_ ouside 1827. #=> GET => http://localhost/api/utils/schwab/get_all_data?auth_token_=9CC3B6 1828. 1829. 1830. # Test admin tools 1831. # This tools allow to generate the super_user_token and validate 1832. => GET => http://localhost/api/utils/admin_tools/generate_super_user_token => missing admin_code 1833. => GET => http://localhost/api/utils/admin_tools/generate_super_user_token?admin_code=admin_test => "out":"(?.*?)" 1834. => GET => http://localhost/api/utils/admin_tools/validate_super_user_token => missing token 1835. => GET => http://localhost/api/utils/admin_tools/validate_super_user_token?token=eyJhbGiOiJI => Invalid super user token 1836. => GET => http://localhost/api/utils/admin_tools/validate_super_user_token?token={{super_user_token}}=> pass 1837. => GET => http://localhost/api/utils/admin_tools/validate_super_user_token?token=super_user_token11=> Invalid super user token 1838. 1839. 1840. # Set APis -> This allow to insert a string into a list in the document 1841. => !POST => http://localhost/api/test0/create => {"name":"dip","count":1} => "_id":"(?.*?)" 1842. => GET => http://localhost/api/test/set/add?_id={{id}}&field=tags&value=1234 => "1234" 1843. => GET => http://localhost/api/test/set/add?_id={{id}}&field=tags&value=1234,1235,1236,1237 => "1234","1235","1236" 1844. => GET => http://localhost/api/test/set/remove?_id={{id}}&field=tags&value=1234=> "1235","1236" 1845. => GET => http://localhost/api/test/set/remove?_id={{id}}&field=tags&value= 1234,1235, 1236=> "1237" 1846. => GET => http://localhost/api/test/set/clear?_id={{id}}&field=tags&value==> "tags":\[\] 1847. => GET => http://localhost/api/test/delete?_id={{id}} => success 1848. 1849. 1850. # Private tokens store and send message in telegeraom: Private Tokens + Telegram Utilities 1851. => GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test123&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6" 1852. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=TELEGRAM_BOT_PRIVATE_TOKEN&token=test => private tokens stored 1853. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=UNKNOWN&token=test => Invalid enum string UNKNOWN, 1854. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&provider=UNKNOWN&chat_id=test&text=hello => 404 1855. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=TELEGRAM_BOT_PRIVATE_TOKEN&token=7542704492:AAFivlt7Cu1Y7lbRjIAVmBguiVaDMr0w5RA => private tokens stored 1856. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&chat_id=test&text=hello => Bad Request: chat not found 1857. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&chat_id=-1002207345931&text=hello => Message sent successfully! 1858. 1859. # Interal db 1860. => GET => http://localhost/api/internal_test => access this information 1861. 1862. # testing passing osbucure data 1863. # 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 1864. => GET => http://localhost/api/test/count?_data=eyJuYW1lIjogImRpcCJ9 => success 1865. => POST => http://localhost/api/test/count => {"_data":"eyJuYW1lIjogImRpcCJ9"} => success 1866. => GET => http://localhost/api/test/count?_data=eyJuYW1lIjogImRpcCJ9xx => Unexpected non-whitespace