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