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 => success
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 => success
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. # Google chnages backend impl of Push notification so below API will not work anymore
747. # Push Notification
748. #=> GET => http://{{server}}/api/push_notification/delete?_confirmstr=push_notification => success
749. #=> GET => http://{{server}}/api/push_notification/insert => Trying insert Empty Object
750. #=> GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc&os=android => insert successfully
751. #=> GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc&os=android => Data validation failed as composite key failed
752. #=> GET => http://{{server}}/api/push_notification/count => 1
753. #=> GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
754. #=> GET => http://{{server}}/api/push_notification/count => 2
755. #=> 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
756. #
757. #=> GET => http://{{server}}/api/push_notification/delete => You are trying to bulk operation.
758. #=> GET => http://{{server}}/api/push_notification/delete?token=abc=> missing _confirmstr
759. #=> GET => http://{{server}}/api/push_notification/delete?token=abc&_confirmstr=push_notification => Deleted count is : 1
760. #=> GET => http://{{server}}/api/push_notification/count => 1
761. #=> GET => http://{{server}}/api/push_notification/delete?token=invalid&_confirmstr=push_notification => Deleted count is : 0
762. #=> GET => http://{{server}}/api/push_notification/count => 1
763. #
764. #=> GET => http://{{server}}/api/push_notification/push => Input validation failed: Missing app_id
765. ###
766. ## It's dicult to test as we donb't have any token from mobile.
767. #=> 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
768. #=> GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
769. #=> GET => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=No Data&key=0 => DRYRUN: true
770. #=> GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
771. #=> 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]
772. #=> GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
773. #=> 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
774. #=> GET => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
775. #=> 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
776. #
777. #=> GET => http://{{server}}/api/push_notification/push_one?title=hello&body=WITH DATA&key=0&pane=music&target=5e6d53f944526b7da8c0a844 => Missing token
778. #=> 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
779. #=> 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
780. ## => 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
781. #=> GET => http://{{server}}/api/push_notification/count?app_id=test => Count: 0
782.
783. # Testing Utilities
784. => GET => http://{{server}}/api/utils/test?app_id=test => You are hitting Test Utils
785. => GET => http://{{server}}/api/utils/date => The system time is
786. => GET => http://{{server}}/api/utils/bootcamp => Welcome to simplestore BootCamp!
787.
788. # Test Stategyies
789. => GET => http://{{server}}/api/test/insert?name=dip&_viewas=noresp => {"status":"success"}
790. => POST => http://{{server}}/api/test/insert?_viewas=noresp => {"name":"dip"}=> ^{"status":"success"}$
791. # We should get the exception evenif there is _viewas=noresp
792. => GET => http://{{server}}/api/test/insert?name=dip&_viewas=noresp&_viewas=xxx => Error while parsing request
793.
794.
795.
796. # test Bulk hits and rank
797. => !GET => http://{{server}}/api/test0/create?name=dip2 => "_id":"(?.*?)"
798. => POST => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field":"count", "value":1}]} => s/e: 1/0
799. # Te hardcoded value treaded as a true.
800. => 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
801. => GET => http://{{server}}/api/test0/?id={{id}} => "count":2
802. => POST => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field":"count", "value":-1}]} => [s/e: 1/0]
803. => POST => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field1":"count", "value":-1}]} => [s/e: 0/1]
804. => GET => http://{{server}}/api/test0/?id={{id}} => "count":1
805. => 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]
806. => GET => http://{{server}}/api/test0/?id={{id}} => "count":10
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. => 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]
809. => GET => http://{{server}}/api/test0/?id={{id}} => "count":0
810.
811.
812.
813. ################################################################################
814. # Sending Email functinaly ( Broken Needs API redesign)
815. ################################################################################
816. ## 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
817. => GET => http://{{server}}/api/utils/email => Input validation failed: Missing to
818. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&body=Simple Test =>Input validation failed: Missing subject
819. ## Please use dryrun to ensure to avoid getting so many mails.
820. => 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
821. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&dry_run=1 => Missing body
822. => 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
823. => 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
824.
825. ## Test multiple sendaccount by spaciating product
826.
827. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&product=Grodok&body=hello&dry_run=1 => ACTUALY NOT SEND
828. => 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
829. => 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
830.
831. ##send calender invitew - just add start_time as ISO date String and duration as number in minites
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 => Missing duration
833. => 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!
834. => 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
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&dry_run=1 => ACTUALY NOT SEND
836. => 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
837.
838. ## test HTML Mail.
839. ## We are supported HTML mail - you need to send body and html but body would be droped. It just use the degault HTML
840. ## template to send the email. It works for both w/o calender
841. => 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
842. => 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
843. => GET => http://{{server}}/api/utils/email?to=testuser@gmail.com&subject=Hello World&body=Simple Test => You must pass some valid email addess
844.
845. ## REAL SEND MAIL - DISABLE BELOW TEST
846. ## GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test => Mail sent to
847. ## GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Hello\n\nWorld\nDipankar\nTest=> Mail sent to
848. ## 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
849.
850. ## HTML Norm : new line to
851. => 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
852. => 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
853. => 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
854.
855. ################################################
856. # Short code
857. ################################################
858. => GET => http://{{server}}/api/nodel_shortcode/insert => Trying insert Empty Object
859. => GET => http://{{server}}/api/nodel_shortcode/generate => Input validation failed: Missing target_db
860. => GET => http://{{server}}/api/nodel_shortcode/generate?target_id=123&target_db=xxxdb => "short_code":"(?.*?)"
861. => GET => http://{{server}}/api/nodel_shortcode/get?short_code={{short_code}} => xxxdb
862. => GET => http://{{server}}/api/nodel_shortcode/get?short_code=wrong => Find successfully with 0 items
863.
864.
865.
866.
867. # Support _sort.
868. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => success
869. => !POST => http://{{server}}/api/test0/create => {"_payload":[{"name":"dip3","roll":1},{"name":"dip3","roll":2}]} => success
870. => GET => http://{{server}}/api/test0/find?&_sort=roll => "roll":1.*?"roll":2
871. => GET => http://{{server}}/api/test0/find?&_sort=-roll => "roll":2.*?"roll":1
872.
873. # Support clone APIs
874. => !POST => http://{{server}}/api/test0/create => {"name":"dip","num":{"math":10, "eng":11}} => "_id":"(?.*?)"
875. => GET => http://{{server}}/api/test0/clone => You must pass a _id
876. => POST => http://{{server}}/api/test0/clone => {} => You must pass a _id
877. => GET => http://{{server}}/api/test0/clone?_id={{id}} => "name":"dip"
878. => GET => http://{{server}}/api/test0/clone?_id={{id}}&name=dip2 => "name":"dip2"
879. => POST => http://{{server}}/api/test0/clone => {"id":"{{id}}", "name":"dip3"} => "name":"dip3"
880.
881. # QR code generation:
882. => GET => http://{{server}}/api/utils/qr => Missing url
883. => GET => http://{{server}}/api/utils/qr?url=http://google.com => svg
884. => GET => http://{{server}}/api/utils/qr?url=http://google.com&size=100 => height="100"
885. => GET => http://{{server}}/api/utils/qr?url=http://google.com&size=100&color=%23ff0000 => \#ff0000
886.
887.
888. # test system_payment == Migrate to simple_auth
889. #=> GET => http://{{server}}/api/system_payment/stripe => Stripe API returns an unexpected resp
890. # => GET => http://{{server}}/api/system_payment/stripe?id=1234 => Stripe API returns an unexpected resp <<< FIX THIS
891. #=> GET => http://{{server}}/api/system_payment_not_webhook/?id=1234 => not a valid ID
892. # test invalid sqi
893. #=> 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
894. # test right parsing
895. #=> 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
896. # test empty data
897. #=> POST => http://{{server}}/api/system_payment/stripe => {}=> Stripe API returns an unexpected resp
898. #=> GET => http://{{server}}/api/system_payment/points => Missing user_id
899. # this api should be used to get total points for an user
900. #=> GET => http://{{server}}/api/system_payment/points?user_id=123 => No matching query found
901. #=> GET => http://{{server}}/api/system_payment/points?user_id=dip@fb.com => Total points is:
902.
903. # test roserpay WebHook
904. #=> 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
905. #=> 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
906. #=> 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
907.
908. # Test Trial points.
909. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial => Your trail is activated!
910. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial => You aleady used your trial
911. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=unknown => SKU not configuired in SimpleStore
912. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial_no => This SKU is not elligiable from trail
913. #=> GET => http://{{server}}/api/system_payment/points?user_id=trial_user1 => 10
914. #=> GET => http://{{server}}/api/system_payment/delete?_confirmstr=system_payment => success
915.
916.
917. # test friendly ID: ( test3 is config for friendly id so it would be a match)
918. # You should note that friendlyID should NOT necessaryly to be unique due to te perf.
919. => POST => http://{{server}}/api/test0/insert => {"name":"dip"} => ts_insert
920. => POST => http://{{server}}/api/test3/insert => {"name":"dip"} => friendly_id
921. => POST => http://{{server}}/api/test3/insert => {"name":"dip"} => friendly_id
922.
923. ######### Testing calender APIS #############
924. => POST => http://{{server}}/api/system_calender/grant => {} => Input validation failed
925. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"invalid","duration":30, "type":"type1" } => Invalid start_time
926. #=> POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T02:00:00Z","duration":15, "type":"type1" } => success
927. #=> 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
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 } => 6/6 slots created
929. => 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
930. => 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
931. => 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
932.
933. # Test Avilablity
934. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z" } => ,"user_id":"123","type":"type1"
935. # There is an issue in the below test
936. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2015-03-10T03:10:00Z" } => 0 free slots found
937. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"type1" } => ,"user_id":"123","type":"type1"
938. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"type2" } => "out":\[\]
939. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"pe1" } => ,"user_id":"123",
940. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2012-03-10T03:10:00Z","type":"pe2" } => "out":\[\]
941. => POST => http://{{server}}/api/system_calender/availability => {"date":"2013-03-10T03:10:00Z","type":"pe2" } => Missing product
942.
943. # test booking:
944. => 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
945. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z"} => 6 free slots found
946. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z"} => "_id":"(?.*?)"
947. => POST => http://{{server}}/api/system_calender/book => {"product":"test", "id" :"{{id2}}", "user_id":"booker2"} => successfully booked
948. => POST => http://{{server}}/api/system_calender/book => {"product":"test", "id" :"{{id2}}", "user_id":"booker2"} => This schedule is already taken
949. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z" } => 5 free slots found
950.
951. # test cancel
952. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"{{id2}}", "user_id":"booker3"} => not auth
953. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"5f46e8952dd1ada69b161f91", "user_id":"booker3"} => Schedule not found"
954. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"{{id2}}", "user_id":"booker2"} => successfully canceled
955. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z" } => 6 free slots found
956. => GET => http://{{server}}/api/system_calender/delete?_confirmstr=system_calender => success
957.
958.
959. => 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
960. => 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
961.
962. # Test promotion ## Needs a migration simple auth => admin_promotions DB instead
963. #=> !POST => http://{{server}}/api/auth2/login_by_token => {"token": "fake_token"} => "auth_token":"(?.*?)"
964. #=> POST => http://{{server}}/api/promotion/get_referral_code => {} => Missing auth_token
965. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "wrong","product":"fake_product"} => Unauthorized request
966. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product"} => "code":"(?.*?)"
967. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product"} => You already have generated the ref code.
968. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product1"} => "code":"(?.*?)"
969. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "{{code}}","product":"fake_product"} => "type":"REFER",
970. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "{{code}}","product":"fake_product1"} => This referral code is not valid
971. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "wrong","product":"fake_product1"} => This referral code is not valid
972. #=> GET => http://{{server}}/api/promotion/delete?_confirmstr=promotion => success
973.
974. # RCE - JUST BASIC TEST
975.
976. # Capabilities
977. => GET => http://{{server}}/api/utils/rce/capabilities?_dev_token=root => hello_world_code
978.
979. # Status
980. => GET => http://{{server}}/api/utils/rce/status?_dev_token=root&lang=c => Compiler works fine
981. => POST => http://{{server}}/api/utils/rce/execute => {"_dev_token":"root", "lang":"c", "code":"\#include"} => \"out\":{\"stderr\":\"/tmp/
982. => 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
983. => POST => http://{{server}}/api/utils/rce/execute_ext => {"_dev_token":"root", "lang":"python", "code":"print 'hello123'"} => hello123
984. => 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
985.
986.
987.
988. # Test Youtube Download
989. #sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
990. # sudo chmod a+rx /usr/local/bin/youtube-dl
991. #=> GET => http://{{server}}/api/utils/youtubedl?id=sb_sMqAF_o => Incomplete YouTube ID
992. # => GET => http://{{server}}/api/utils/youtubedl?id=CP2AYEqoaZo => googlevideo.com
993. # => GET => http://{{server}}/api/utils/youtubedl/audio?id=CP2AYEqoaZo => googlevideo.com
994. # => GET => http://{{server}}/api/utils/youtubedl/video?id=CP2AYEqoaZo => googlevideo.com
995. # => GET => http://{{server}}/api/utils/youtubedl/info?id=CP2AYEqoaZo => googlevideo.com
996. # => GET => http://{{server}}/api/utils/youtubedl/audio?id=https://www.youtube.com/watch?v=De8UKeURlWU => googlevideo.com
997. # => GET => http://{{server}}/api/utils/youtubedl/dl?id=kEld6MLDXPI => A-V-mp4
998. #### USE TESING BELOW LINE ##
999.
1000. # SimpleStore EXPLORE
1001. => GET => http://{{server}}/api/explore/play => Simple Store API EXPLORE
1002.
1003. # SMS
1004. => GET => http://{{server}}/api/utils/sms?to=8927476238&msg=hello&dryrun=true => \[Dryrun\] SMS sent to 8927476238
1005.
1006. # Dev key
1007. GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin => Access denied
1008. GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin&_dev_token=root1 => Access denied
1009. GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin&_dev_token=root => Error while executing this code
1010.
1011. # Status utils = This tracks the health of the endpoints
1012. GET => http://{{server}}/api/status/ping?name=ServiceA => Missing endpoint
1013. GET => http://{{server}}/api/status/ping?endpoint=www.google.com => Missing name
1014. GET => http://{{server}}/api/status/ping?name=ServiceA&endpoint=www.google.com => pong
1015. GET => http://{{server}}/api/status/ping?name=ServiceA&endpoint=www.google.com => pong
1016. GET => http://{{server}}/api/status/show => Live Status of our Service
1017. # HTML TEST NOT SUPPORTED GET => http://{{server}}/api/analytics/show?app_id=sample1 => Showing data for app id sample1
1018. # HTML TEST NOT SUPPORTED GET => http://{{server}}/api/analytics/show?app_id=sample => Showing data for app id sample
1019.
1020. # Long tern Jobs
1021.
1022.
1023.
1024.
1025. ############################# license APIS. #############################
1026. # License APis allows you to create license for an app user for a app for a duration.
1027. # You can either grant, revoke and validate the license
1028. # All common api's needs root_key to access (TODO)
1029. # There is no renew supported, you just revoke and grant it again.
1030. #########################################################################
1031. => !GET => http://{{server}}/api/license/delete?_confirmstr=license => success
1032. # Root key
1033. # => GET => http://{{server}}/api/license/ => api access denied
1034. # => GET => http://{{server}}/api/license?root_key=WRONG => success
1035. # Grant, validate and revoke
1036. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test => Missing duration
1037. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test&duration=1&key=NO_KEY => "key":"NO_KEY"
1038. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test&duration=1&key=NO_KEY => license already granted
1039. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test1&duration=WRONG&key=NO_KEY => please pass a valid duration
1040. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test&key=NO_KEY => access granted
1041. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test&key=NO_KEY1 => access denied
1042. => GET => http://{{server}}/api/license/validate?app_id=WRONG&user_id=test&key=NO_KEY => access denied
1043. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test => license revoked
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&user_id=test => license not found
1046. => GET => http://{{server}}/api/license/revoke?app_id=test=> Missing user_id
1047.
1048. # expairy
1049. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test2&duration=0&key=NO_KEY=> success
1050. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test2&key=NO_KEY => license expired
1051.
1052. # renew
1053. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test2 => license revoked
1054. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test2&duration=1&key=NO_KEY=> success
1055. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test2&key=NO_KEY => access granted
1056.
1057. # generate key
1058. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test3&duration=1=> "key":"(?.*?)"
1059. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test3&key={{key}} => access granted
1060.
1061.
1062. ############################# Schedule Script #############################
1063. # You can schedule arbitrary script execution with SimpleStore
1064. # FIrst submit a task using /schedule_script/submit/
1065. # Then Activate the task using /schedule_script/submit/
1066. # Great! You job has scheduled.
1067. # Check a list of jobs which are current scheduled as /schedule_script/status/ and you can deactivate as /schedule_script/deactivate/
1068. #########################################################################
1069. => !GET => http://{{server}}/api/schedule_script/delete?_confirmstr=schedule_script => success
1070.
1071. => 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":"(?.*?)"
1072. => GET => http://{{server}}/api/schedule_script/activate?id={{job_id}} => Job has scheduled
1073. => GET => http://{{server}}/api/schedule_script/activate?id={{job_id}} => already scheduled
1074. => GET => http://{{server}}/api/schedule_script/activate_all => 0/1 Job has scheduled
1075. => GET => http://{{server}}/api/schedule_script/reload => We have restarted 1 jobs
1076. => GET => http://{{server}}/api/schedule_script/status => {{job_id}}
1077. # => sleep => 30 # Disabled to just avoid waiting while testing -- works fine,
1078. # => GET => http://{{server}}/api/schedule_script/status => "successCount":1
1079. => GET => http://{{server}}/api/schedule_script/deactivate?id={{job_id}} => canceled
1080. => GET => http://{{server}}/api/schedule_script/deactivate?id={{job_id}} => is not scheduled
1081. => GET => http://{{server}}/api/schedule_script/status => We found 0 active scheduled Script
1082. => GET => http://{{server}}/api/schedule_script/dryrun?script=ABCD => ABCD
1083. => GET => http://{{server}}/api/schedule_script/dryrun?script=console.log('hello') => success
1084.
1085.
1086. # Delete all at the end this is needed as server auto load when stat
1087. => !GET => http://{{server}}/api/schedule_script/delete?_confirmstr=schedule_script => success
1088.
1089.
1090. ############################# Subscription #############################
1091. # Provides api for email subscription and resubscription
1092. # User can do subscribe and unscibe to an app by giving email id.
1093. # Admin can notify by ending mail to all the people who subscribe.
1094. # Maximum notification allow is 1000
1095. #########################################################################
1096. => !GET => http://{{server}}/api/subscription/delete?_confirmstr=subscription => success
1097. => GET => http://{{server}}/api/subscription/subscribe?app_id=test&email=dutta.dipankar08@gmail.com => success
1098. => GET => http://{{server}}/api/subscription/subscribe?app_id=test&email=dutta.dipankar08@gmail.com => Data validation failed as composite key failed
1099. => GET => http://{{server}}/api/subscription/count => Count: 1
1100. => GET => http://{{server}}/api/subscription/notify?subject=Hello&body=Some HTML Content&app_id=test&dry_run=1 => Email send to 1 subscriber
1101. => 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
1102. => GET => http://{{server}}/api/subscription/unsubscribe?app_id=test&email=dutta.dipankar08@gmail.com => success
1103. => GET => http://{{server}}/api/subscription/unsubscribe?app_id=test&email=dutta.dipankar08@gmail.com => Not able to unsubscribe
1104. => GET => http://{{server}}/api/subscription/count => Count: 0
1105.
1106.
1107. ############################ SOCIAL POST ##################################
1108. # This allow to post the text and image in FB, Tweeter, Linked-In and Telegram
1109. # We currently supports (1)FB abd (2) Tweeter
1110. # You need to update the key in /etc/SECURE
1111. ############################################################################
1112. # Comments to avoid spanning the profile
1113. # => GET => http://{{server}}/api/utils/social/twitter?text=automation test => Successfully tweeted
1114. # => GET => http://{{server}}/api/utils/social/twitter?text=automation test => Status is a duplicate
1115. # => GET => http://{{server}}/api/utils/social/facebook?text=automation test => Successfully tweeted
1116. => GET => http://{{server}}/api/utils/social/telegram => Missing text
1117. # => GET => http://{{server}}/api/utils/social/telegram?text=automationtest\&Test => success
1118. # You should you post method to pass data
1119. # Below two test is diable as missing real tokens
1120. # => POST => http://{{server}}/api/utils/social/telegram => {"text":"automation test & Test & test"} => success
1121. # => POST => http://{{server}}/api/utils/social/facebook => {"text":"Welcome to SimpleStore! This is post where we test our APIs"} => success
1122.
1123. ############################ TEST Universal Link page ##################################
1124. #
1125. ############################################################################
1126. => 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
1127. => GET => http://{{server}}/api/utils/universal_link?app_id=in.co.dipankar.fmradio&key=1&app_name => Input validation failed: Missing app_name"
1128. => GET => http://{{server}}/api/utils/universal_link => Input validation failed: Missing app_id"
1129.
1130. ############################ Static File generator ##################################
1131. #
1132. ############################################################################
1133. => GET => http://{{server}}/api/utils/static/privacy?app_id=in.co.dipankar.fmradio&key=1&app_name=XXXXXXXXX => XXXXXXXXX
1134. => GET => http://{{server}}/api/utils/static/toc?app_id=in.co.dipankar.fmradio&key=1&app_name=XXXXXXXXX => XXXXXXXXX
1135.
1136. ############################## UPDATE ONE ###########################################
1137. # THIS API helps to update one entry entry in ethe system. you must by _filter and _payload to serch that
1138. # entry and update with the needed data. Should throw the error it it found many entry
1139. # >>> NOT WORKING ANY MORE <<<<
1140. #####################################################################################
1141. #=> !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1142. #=> POST => http://{{server}}/api/test/create => {"name":"dip", "roll":1} => success
1143. #=> POST => http://{{server}}/api/test/update_one => {} => _filter object must be non empty
1144. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{}} => _filter object must be non empty
1145. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"} ,"_payload":{}} => You must pass some data in the request
1146. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":2}} => there is no matching entry
1147. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"},"_payload":{"roll":2}} => pdated 1 entry out of 1 matched
1148. #=> POST => http://{{server}}/api/test/create => {"name":"dip", "roll":1} => success
1149. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"},"_payload":{"roll":2}} => We found multiple entry
1150. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1151.
1152. ############################## INSERT OR UPDATE ONE ###########################################
1153. # THIS API helps to insert update one entry entry in ethe system. you must by _filter and _payload to pass
1154. # if the item is found that are updated with new payload - or it will create a new entry by marging _filter and _payload
1155. #####################################################################################
1156. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1157. => POST => http://{{server}}/api/test/insert_or_update_one => {} => _filter object must be non empty
1158. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{}} => _filter object must be non empty
1159. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip"} ,"_payload":{}} => Please send some non empty payload
1160. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":2}} => inserted one entry
1161. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":3}} => updated one entry
1162. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":4}} => updated one entry
1163. => POST => http://{{server}}/api/test/create => {"name":"dip1", "roll":5} => success
1164. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":4}} => We found multiple entry
1165. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1166.
1167.
1168. ################ LIST APIs #############################
1169. # append to list
1170. # remove from list
1171. # clean from list
1172. ######################################################
1173. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success
1174. => POST => http://{{server}}/api/test/insert => {"name":"dip"} => "_id":"(?.*?)"
1175. => GET => http://{{server}}/api/test/list/append?_id={{id1}}&_field=tag&_value=a => "tag":\["a"\]
1176. => GET => http://{{server}}/api/test/list/append?_id={{id1}}&_field=tag&_value=a,b,c => "tag":\["a","b","c"\]
1177. => GET => http://{{server}}/api/test/list/remove?_id={{id1}}&_field=tag&_value=a => "tag":\["b","c"\]
1178. => GET => http://{{server}}/api/test/list/remove?_id={{id1}}&_field=tag&_value=a,b => "tag":\["c"\]
1179. => GET => http://{{server}}/api/test/list/clear?_id={{id1}}&_field=tag&_value=a,b => "tag":\[\]
1180. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success
1181.
1182. ############# Raiseing tickets for the app #############
1183. # This api will raise github tickts
1184. #
1185. ###########################################################
1186. => GET => http://{{server}}/api/utils/ticket?app=test => error
1187. # TODO: FIX IT github expaired the token
1188. #=> GET => http://{{server}}/api/utils/ticket?app=test&title=Raise by e2e test&desc=ignore this bug&label=bug => Successfully created a tickets
1189. #=> POST => http://{{server}}/api/utils/ticket=> {"app":"test", "title":"Raise by e2e test", "desc":"ignore this bug", "label":"bug,test"} => Successfully created a tickets
1190.
1191. ######## Create or Get #######
1192. # If filter returns some result - just get it back or create with _payload + _filter data
1193. ###############################
1194. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success
1195. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => inserted the entry
1196. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => found entry
1197. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => found entry
1198.
1199. ############ Simple Login/AUth #################################################
1200. ## SImpel password based login.
1201. ## Support only login from obe devices.
1202. ## Hash password got stored
1203. ## Once you log successfully , it will return auth_token_
1204. #################################################################################
1205.
1206. # first clean the DB -> Below API will not work, use the UI tool to delete like https://www.mongodb.com/try/download/compass
1207. => POST => http://localhost/api/internal_auth_user_data/delete?_confirmstr=simple_auth => {} => Looks like you are trying to access the internal db
1208. => 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
1209.
1210. # Dfine three users: test and test1 and dutta.dipankar08+2@gmail.com as username
1211. #=> GET => http://localhost/api/simple_auth/register?username=test&password_=test123&email=dutta.dipankar08@gmail.com => registration success
1212. #=> GET => http://localhost/api/simple_auth/register?username=test1&password_=test123&email=dutta.dipankar08+1@gmail.com => registration success
1213. #=> GET => http://localhost/api/simple_auth/register?password_=test123&email=dutta.dipankar08+2@gmail.com => registration success # Email and password only no username
1214.
1215. # Duplicate res
1216. => GET => http://{{server}}/api/simple_auth/register?username=test&password_=test&email=dutta.dipankar08@gmail.com => already taken
1217. => GET => http://{{server}}/api/simple_auth/register?username=test4&password_=test&email=dutta.dipankar08@gmail.com => already taken
1218.
1219.
1220. # Login ( by user name)
1221. => GET => http://{{server}}/api/simple_auth/login?username=test&password_=test11 => Invalid username or password
1222. => GET => http://{{server}}/api/simple_auth/login?username=test11&password_=test => Invalid username or password
1223.
1224. # Login With Email and password or Email + Auth_token
1225. => GET => http://{{server}}/api/simple_auth/login_by_email?username=test&password_=test11 => Input validation failed: Missing email
1226. => GET => http://{{server}}/api/simple_auth/login_by_email?email=test11@test.com&password_=test => Invalid email or password
1227. => 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
1228. => 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
1229.
1230. # login with username and password or authtoken and get login_token1 back
1231. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=test&password_=test123 => "auth_token_":"(?.*?)"
1232. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token1}} => dutta.dipankar08@gmail.com
1233. => GET => http://{{server}}/api/simple_auth/validate_login_session?_no_encode=1&auth_token_={{login_token1}} => success
1234.
1235. # getifo
1236. => GET => http://{{server}}/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => user data returned
1237.
1238. #update_info
1239. => GET => http://{{server}}/api/simple_auth/update_info?_no_encode=1&auth_token_={{login_token1}}&phone=7547564902 => user data returned
1240. => GET => http://{{server}}/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => 7547564902
1241.
1242. # login agaun get token2
1243. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test123 => "auth_token_":"(?.*?)"
1244. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token2}} => dutta.dipankar08@gmail.com
1245.
1246. # try login with invalid tokens.
1247. => GET => http://{{server}}/api/simple_auth/login?username=test&auth_token_=wrong => Invalid username or auth_token_
1248. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test2&auth_token_={{login_token2}} => Invalid username or auth_token_
1249.
1250. # logout with one token but other token should works.
1251. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => success
1252. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => Logout done for
1253. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => not able to logout as username or auth_token is wrong
1254. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token2}} => dutta.dipankar08@gmail.com
1255.
1256. # logout all session and no token should not work
1257. => GET => http://{{server}}/api/simple_auth/logout?username=test => Missing auth_token_
1258. => GET => http://{{server}}/api/simple_auth/logout_all?username=test => Missing auth_token_
1259. => GET => http://{{server}}/api/simple_auth/logout_all?username=test1&force=1 => Logout done for . session forcefully
1260. => GET => http://{{server}}/api/simple_auth/logout_all?username=test&force=1 => Logout done
1261. => GET => http://{{server}}/api/simple_auth/login?username=test&auth_token_={{login_token2}} => Invalid username or auth_token_
1262.
1263.
1264. #### The bwlo example shows how we can make a DB is accexx protected and to access it it must be logged in ###
1265. => GET => http://{{server}}/api/test_simple_auth => Please send auth_token_
1266. => GET => http://{{server}}/api/test_simple_auth?auth_token_=test => Wrong auth_token_ passed
1267. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test123 => "auth_token_":"(?.*?)"
1268. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test1&password_=test123 => "auth_token_":"(?.*?)"
1269. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token}} => Find successfully with 0 items
1270. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token}}&name=Dip => "_username":"test"
1271. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token}} => Find successfully with 1 items
1272. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token1}}&name=Dip => "_username":"test1"
1273. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token1}}&name=Dip => "_username":"test1"
1274. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token1}} => Find successfully with 2 items ##
1275. => GET => http://{{server}}/api/test_simple_auth?auth_token_=skip => Find successfully with 3 items ####
1276. => GET => http://{{server}}/api/test_simple_auth/delete?auth_token_={{login_token}}&_confirmstr=test_simple_auth => Deleted count is : 1
1277. => GET => http://{{server}}/api/test_simple_auth/delete?auth_token_=skip&_confirmstr=test_simple_auth => Deleted count is : 2
1278.
1279. ## Forget and reset password to test5
1280. => GET => http://{{server}}/api/simple_auth/forgot_password => Missing username
1281. => GET => http://{{server}}/api/simple_auth/forgot_password?username=wrong => Invalid username
1282. => GET => http://{{server}}/api/simple_auth/forgot_password?_no_encode=1&username=test => "short_lived_token":"(?.*?)"
1283. => GET => http://{{server}}/api/simple_auth/reset_password?username=test => Missing short_lived_token
1284. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token=wrong => Missing password_
1285. => GET => http://{{server}}/api/simple_auth/reset_password?username=wrong&short_lived_token={{short_lived_token}} => Missing password_
1286. => GET => http://{{server}}/api/simple_auth/reset_password?username=wrong&short_lived_token=wrong&password_=hello => Invalid username or token got expired
1287. => 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
1288. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test5 => Password changed successfully
1289. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test5 => Invalid username or token got expired
1290.
1291. # reset password back to test123
1292. => GET => http://{{server}}/api/simple_auth/forgot_password?_no_encode=1&username=test => "short_lived_token":"(?.*?)"
1293. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test123 => Password changed successfully
1294.
1295. # You can pass auth_token_ as a header or cookies
1296. # curl -H "auth_token_:skip" -X GET "http://localhost/api/test_simple_auth"
1297. # curl http://localhost/api/test_simple_auth--cookie "auth_token_=skip"
1298.
1299.
1300. # add_subscription_by_stipe
1301. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test123 => "auth_token_":"(?.*?)"
1302. => 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
1303. => 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
1304.
1305. # duplicate subscription
1306. => 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
1307.
1308. # clear subscription
1309. => GET => http://localhost/api/simple_auth/clear_subscription?_no_encode=1&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => subscription clear
1310.
1311.
1312. => 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
1313.
1314.
1315. # For testng this you need to generate the payment_method_id first with public dat
1316. #=> 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
1317.
1318. # Google Login
1319. => 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
1320.
1321.
1322. # Managing permission for other users
1323. # To perfrom this acton, you must have a superuser permission
1324. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test123 => "auth_token_":"(?.*?)"
1325. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=superuser@grodok.com&password_=superuser@123 => "auth_token_":"(?.*?)"
1326. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{su_login_token}} => Grodok SuperUser
1327. => GET =>http://localhost/api/simple_auth/add_permission?permission=test&username=test&auth_token_={{su_login_token}} => permission is added
1328. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{t_login_token}} => "permission_group":\["test"\]
1329. => GET =>http://localhost/api/simple_auth/remove_permission?permission=test&username=test&auth_token_={{su_login_token}} => permission is removed
1330. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{t_login_token}} => "permission_group":\[\]
1331. => GET => http://localhost/api/simple_auth/add_permission?permission=test&username=test&auth_token_={{t_login_token}} => Not logged in as a super user
1332. => GET =>http://localhost/api/simple_auth/remove_permission?permission=test&username=test&auth_token_={{t_login_token}} => Not logged in as a super user
1333.
1334. # LOGIN WITH MAGIC LINK SUPPORT : generate and test Magic Link
1335. => GET => http://localhost/api/simple_auth/generate_magic_link => Missing email
1336. => GET => http://localhost/api/simple_auth/generate_magic_link?email=dutta.dipankar08@gmail.com => Missing url
1337. => 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":"(?.*?)"
1338. => GET => http://localhost/api/simple_auth/login_with_magic_link?_no_encode=1&magic_link_token={{magic_link_token1}} => success
1339. => GET => http://localhost/api/simple_auth/login_with_magic_link?_no_encode=1&magic_link_token={{magic_link_token1}} => Token not exist or expaired
1340. => GET => http://localhost/api/simple_auth/login_with_magic_link?magic_link_token=hello => Invalid token
1341.
1342.
1343.
1344. #########################################################################################
1345. ## ##
1346. ## IPTV APIS (DISABLED AS NOT USED) ##
1347. ## ##
1348. #########################################################################################
1349. #=> POST => http://{{server}}/api/ip_tv/delete?_confirmstr=ip_tv => {} => success
1350. #=> 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
1351. #=> GET => http://{{server}}/api/ip_tv?_limit=1 => "_id":"(?.*?)"
1352. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank":
1353. #=> GET => http://{{server}}/api/ip_tv/rankup?id={{id1}}&_field=rank => Up voted
1354. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank":
1355. #=> GET => http://{{server}}/api/ip_tv/rankdown?id={{id1}}&_field=rank => Down voted
1356. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank":
1357. #=> GET => http://{{server}}/api/ip_tv/count => success
1358. # => GET => http://{{server}}/api/ip_tv/cleanup => clean up done by removing
1359. # => GET => http://localhost/api/ip_tv/cleanup?is_delete=false => success
1360. #=> GET => http://localhost/api/ip_tv/explore_seed?seed_url=https://raw.githubusercontent.com/mahmud31132/bdix-tv/main/BD%20working.m3u8 => success
1361.
1362. #########################################################################################
1363. ## ##
1364. ## TRADE APIS ##
1365. ## ##
1366. #########################################################################################
1367. # 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
1368. => GET => http://{{server}}/api/utils/trade/ltp => symbol list is empty
1369. => GET => http://{{server}}/api/utils/trade/ltp?symbols=TCS.NS,WIPRO.NS => success # This API is noy working anymore
1370.
1371. # Historical data
1372. => GET => http://localhost/api/utils/trade/history?symbol=MSFT => missing interval. possible value: 1d,5m,15m,1h
1373. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo => missing range. possible value:
1374. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo => missing range. possible value:
1375. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo&range=max => success
1376. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo&range=10y => success
1377.
1378. # Expart resilt
1379. => 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
1380. => 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
1381. => 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
1382. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3630","stoploss":"3590", "target":"4000","target2":"4000"} => success
1383. => 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
1384. => 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
1385.
1386.
1387.
1388.
1389. #########################################################################################
1390. ## ##
1391. ## Youtube uploader ##
1392. ## ##
1393. ## FOR AUTH ISSUE: generate toekn: node bin/core/google/youtube.js ##
1394. #########################################################################################
1395.
1396. => GET => http://localhost/api/utils/yupload/m3u8upload => error
1397.
1398. => GET => http://localhost/api/utils/yupload/m3u8upload?uri=https://stream.live.vc.bbcmedia.co.uk/bbc_hindi_radio&duration=300 =>Please send a key
1399.
1400.
1401. #########################################################################################
1402. ## ##
1403. ## Error ##
1404. ## ##
1405. ## FOR AUTH ISSUE: generate toekn: node bin/core/google/youtube.js ##
1406. #########################################################################################
1407. => POST => http://{{server}}/api/error/delete?_confirmstr=error => {} => success
1408. => GET => http://localhost/api/error/test => Test Error
1409. => GET => http://localhost/api/error => Test Error
1410.
1411. #########################################################################################
1412. ## ##
1413. ## INFO ##
1414. ## ##
1415. ## GET API INFO ##
1416. #########################################################################################
1417. => GET => http://localhost/api/local_test/info => "isRemoteDB":false
1418. => GET => http://localhost/api/remote_test/info => "isRemoteDB":true
1419. # curl http://localhost/api/test/info --cookie "Cho=Kim;Greet=Hello"
1420. => GET => http://localhost/api/test/info => "isRemoteDB":false
1421. => GET => http://localhost/api/test_secure/info => "secure":false
1422. => GET => http://localhost/api/test_secure/ => success
1423. => GET => http://localhost/api/test_secure_/info => "secure":true # Note that You must have secure_ to pass the match
1424. => GET => http://localhost/api/test_secure_/ => Please send auth_token_
1425. => GET => http://localhost/api/test/info => "secure":false
1426.
1427.
1428. #########################################################################################
1429. ## ##
1430. ## STRIPE ##
1431. ## ##
1432. ## STRIPE validation api's helps to validate any purchase via simplestore ##
1433. #########################################################################################
1434. # ( need real setup )=> GET => http://localhost/api/stripe/check_subscription?customer_id=cus_Melrh5VwxSJB2v => "email":"dutta.dipankar08@gmail.com"
1435. => GET => http://localhost/api/stripe/check_payment?payment_id=unknwon => No such payment_intent
1436. # ( not real setup)=> GET => http://localhost/api/stripe/check_payment?payment_id=pi_3LvRVnCtA5cdHPVp0DrsawEx => "amount_captured":500
1437.
1438. #########################################################################################
1439. ## ##
1440. ## TEST Encript and dryption API output ##
1441. ## ##
1442. ## STRIPE validation api's helps to validate any purchase via simplestore ##
1443. #########################################################################################
1444. => GET => http://localhost/api/test_crypto/delete?_confirmstr=test_crypto => success
1445. => GET => http://localhost/api/test_crypto/insert?name=dip => insert successfully
1446. => GET => http://localhost/api/test_crypto => Find successfully
1447. => GET => http://localhost/api/test_crypto/count => success
1448. => GET => http://localhost/api/test_crypto/delete?_confirmstr=test_crypto => success
1449.
1450.
1451. ## Root users
1452. => GET => http://localhost/api/_auth_token/ => access db with db name with _
1453. => GET => http://localhost/api/_auth_token?_root_user=1 => success
1454.
1455. #########################################################################################
1456. ## test unset or delete fields
1457. ## This API allow you to delete a list of fileds ( just unset in the docs)
1458. ## How to unsert a field?
1459. ## How to unset multiple fields?
1460. ## how to unset fileds with nested documnets ? use dot notation.
1461. ## How to unset fields for all entrys by seraching? query + _field combination
1462. #########################################################################################
1463. => GET => http://localhost/api/test/delete?_confirmstr=test =>success
1464. => GET => http://localhost/api/test/insert?name=dip&roll=20&email=hello@hello.com => "_id":"(?.*?)"
1465. => GET => http://localhost/api/test/get?_id={{id1}} => "roll":"20"
1466. => GET => http://localhost/api/test/delete_fields?_id={{id1}}&_field=roll => We have un-set the filed for 1 entries
1467. => GET => http://localhost/api/test/get?_id={{id1}} => "name":"dip","email":"hello@hello.com",
1468.
1469. # unsetting nested object
1470. => POST => http://localhost/api/test/insert => {"name":{"first":"dip", "last":"dutta"}} => "_id":"(?.*?)"
1471. => GET => http://localhost/api/test/delete_fields?_id={{id1}}&_field=name.last => un-set the filed for 1 entries
1472. => GET => http://localhost/api/test/get?_id={{id1}} => "name":\{"first":"dip"\}
1473.
1474.
1475.
1476. #########################################################################################
1477. # File utilitiesv
1478. # This api define upload, download, delete and list files in the SimpleStore application
1479. # This is for the prototype purpose. Please don't use for scale
1480. # All test is passing - disabled for new file is missing
1481. #########################################################################################
1482. # curl -d @a.txt http://localhost/api/utils/files/upload use this for upload
1483. #=> GET => http://localhost/api/utils/files/download?filename=a.txt => Dipankar
1484. #=> GET => http://localhost/api/utils/files/list => a.txt
1485. #=> GET => http://localhost/api/utils/files/delete?filename=a.txt => success
1486. #=> GET => http://localhost/api/utils/files/delete?filename=a.txt => error
1487.
1488.
1489. #########################################################################################
1490. # remote_smb_manifest ()
1491. # This API will build the necessaryly function to support SMB.
1492. # Like Enable payment gateway
1493. #########################################################################################
1494. # [PASS ALL] (1) Test razorpay_create_order APIs
1495. ###>>>> Diabling all test as Key expaired
1496. #=> GET => http://localhost/api/remote_smb_manifest/delete?_confirmstr=remote_smb_manifest => success
1497. #=> POST => http://localhost/api/remote_smb_manifest/insert => {"public_keys":{"razor_key":"1"},"secret_keys_":{"razor_secret":"1"}} => "_id":"(?.*?)"
1498. #=> 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
1499. #=> 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
1500. #=> POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "currency":"INR", "smb_id":"wrong"} => Missing amount
1501. #=> POST => http://localhost/api/remote_smb_manifest/insert => {"public_keys":{"razor_key":"rzp_test_I2VzFwGWMekWJe"},"secret_keys_":{"razor_secret":"4Hk97bepWLg7PS0Lli1rCXmx"}} => "_id":"(?.*?)"
1502. #=> POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "amount":500, "currency":"INR", "smb_id":"{{id1}}"} => "order_id":"order_
1503.
1504.
1505. ####################
1506. ## Market APIs: As we wants to get the live market data, we can use goofle api to do that
1507. ##
1508. ####################
1509.
1510. # => GET => http://localhost/api/utils/market/google_ltp?symbol=VUSA.L => Vanguard S
1511.
1512. ####
1513. # Supporting revison
1514. # >>>> Update_one is not working any more <<<<<
1515. ####
1516. => GET => http://localhost/api/test/delete?_confirmstr=test => success
1517. => GET => http://localhost/api/test/insert?name=dip => "_id":"(?.*?)"
1518. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","_revision":true} => You must pass some data in the request
1519. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","name":"dip1","_revision":true} => "dip1"
1520. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","name":"dip2","_revision":true} => "dip2"
1521. => GET => http://localhost/api/test/revision?_id={{id1}} => All History\(revision\) returned
1522.
1523. ###
1524. # You need to mark remote_db to store in remote database
1525. ##
1526. => GET => http://localhost/api/remote_db_secure_merit/info => "isRemoteDB":true
1527. => GET => http://localhost/api/nodel_remote_db_secure_merit/info => "isRemoteDB":true
1528. => GET => http://localhost/api/nodel_secure_merit_remote_db/info => "isRemoteDB":true
1529. => GET => http://localhost/api/nodel_secure_merit_remoooote_db/info => "isRemoteDB":false
1530.
1531.
1532. #############################################
1533. # Test kill swicth - It provides way to set config which is globally store
1534. # this will help to switch code path based on remote coffi
1535. # This can be used for shipping experimeing features
1536. #############################################
1537. => GET => http://localhost/api/kill_switch/delete?_confirmstr=kill_switch => success
1538. => GET => http://localhost/api/kill_switch/set_bool?key=a&value=1 => "a":true
1539. => GET => http://localhost/api/kill_switch/set_bool?key=b&value=0 => "b":false
1540. => GET => http://localhost/api/kill_switch/set_bool?key=c&value=true => "c":true
1541. => GET => http://localhost/api/kill_switch/set_string?key=d&value=hello => "d":"hello"
1542. => GET => http://localhost/api/kill_switch/set_string?key=d&value=hello1 => "d":"hello1"
1543. => GET => http://localhost/api/kill_switch/get_current => "d":"hello1"
1544. => GET => http://localhost/api/kill_switch/reload => 4
1545.
1546.
1547. #############################################
1548. # Template store
1549. # this feature allow to create template in the tempalte store ( store in remote db)
1550. # and the you create_from_template api to create duplicate data from template
1551. #############################################
1552. => GET => http://localhost/api/template_store/delete?_confirmstr=template_store => success
1553. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100} => template_name must be present as composite key
1554. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100, "template_name":"test"} => success
1555. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100, "template_name":"test"} => Duplicate item found: template_name
1556. # here how to create clone from templates
1557. => POST => http://localhost/api/test/create_from_template => {"template_name":"test", "more_info":"extra data"} => "name":"dipankar","roll":100
1558. => POST => http://localhost/api/test/create_from_template => {"template_name":"test1", "more_info":"extra data"} => template not found
1559.
1560.
1561.
1562. ################ SCHEULE 2 API ######################
1563. # Schedule2 allows you to schele HTTP cron job - this is the next version of schedule
1564. # a) insert an entry
1565. # b) activate it uisng /activate.
1566. # c) check the status = /status
1567. #####################################################
1568. => POST => http://localhost/api/schedule2/delete?_confirmstr=schedule2 => {} => success
1569. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com","cron_format":"*/10 * * * * *"} => "_id":"(?.*?)" # Just insert not activated
1570. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com","cron_format":"*/10 * * * * *"} => Duplicate item found
1571. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Job is now scheduled
1572. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => is already scheduled
1573. => GET => http://{{server}}/api/schedule2/status => We have . jobs
1574. => GET => http://{{server}}/api/schedule2/reload => We have restarted . jobs
1575. => sleep => 12
1576. => GET => http://{{server}}/api/schedule2/?id={{job_id}} => doctype html # we are cjeking if the job got executed or not!
1577. => POST => http://{{server}}/api/schedule2/deactivate?id={{job_id}} => {} => canceled
1578. => POST => http://{{server}}/api/schedule2/deactivate?id={{job_id}} => {} => is not scheduled
1579. => GET => http://{{server}}/api/schedule2/status => We have 0 jobs
1580.
1581. # test post api call.
1582. => POST => http://{{server}}/api/schedule2/insert => {"method":"post", "url":"http://localhost/api/test/insert","cron_format":"*/10 * * * * *","data":{"name":"dip432"}} => "_id":"(?.*?)"
1583. => GET => http://{{server}}/api/schedule2/activate?id={{job_id2}} => Job is now scheduled
1584. => sleep => 12 # will execute in 12 sec
1585. => GET => http://{{server}}/api/schedule2/?id={{job_id2}} => insert successfully
1586. #=> POST => http://{{server}}/api/schedule2/deactivate?id={{job_id2}} => {} => canceled
1587.
1588. # Stop everything
1589. => POST => http://localhost/api/schedule2/delete?_confirmstr=schedule2 => {} => success
1590. => GET => http://localhost/api/schedule2/reload => We have restarted 0 jobs
1591.
1592. # check reload on boot
1593. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com","cron_format":"*/60 * * * * *"} => "_id":"(?.*?)" # Just insert not activated
1594. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Job is now scheduled
1595. # now restart.
1596. => GET => http://localhost/api/schedule2/status => We have 1 jobs
1597.
1598. #check timezoe support
1599. => POST => http://{{server}}/api/schedule2/insert => {"method":"get", "url":"https://google.com/test1","cron_format":"*/60 * * * * *", "time_zone":"invalid"} => "_id":"(?.*?)" # Just insert not activated
1600. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Not a valid timezone:invalid
1601.
1602. => 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
1603. => POST => http://{{server}}/api/schedule2/activate?id={{job_id}} => {} => Job is now scheduled
1604.
1605.
1606. ################ Test Webhooks######################
1607. # Webhoks allowsto add endpoint when some db data is getting updated
1608. #####################################################
1609. => GET => http://localhost/api/webhook/status_clear => {"CALl_COUNT":0}
1610. => POST => http://localhost/api/webhook/insert => {"db_name":"test_webhook", "hook_url":"https://google.com"} => success
1611. => POST => http://localhost/api/test_webhook/insert => {"name":"Dipankar"} => success
1612. => GET => http://localhost/api/webhook/status => {"CALl_COUNT":1}
1613.
1614.
1615.
1616. ################ SECURE DB and Visibility Rules ######################
1617. # This allows to build secure DB protected by access_token.
1618. # 1. Secure DB contains the letter secure in it's name.
1619. # 2. When you define a db as secure you must pass a valid auth_token_ to create, insert. update.
1620. # 3. They are only visiuble to you and no others
1621. # 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
1622. # 5. You can also create those db annonomously using spacial access token called "anonymous" - They are budefult make public visibility.
1623. # 6. Acess token "debug" can work for debug evn and skip all the secure rules
1624. #####################################################
1625.
1626. # Step1: Adding or remiving visibiity
1627. => GET => http://localhost/api/secure_test/insert?auth_token_=debug&name=hello => "_id":"(?.*?)"
1628. => GET => http://localhost/api/secure_test/visibility/add?_id1={{id1}}&auth_token_=debug => You must pass a _id or id
1629. => GET => http://localhost/api/test/visibility/add?_id={{id1}} => You can only make this action on secure db
1630. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}} => Missing auth_token_
1631. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug1 => Invalid token
1632. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Successfully added
1633. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\["user1"\]
1634. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Not updated
1635. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user2 => Successfully added
1636.
1637. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user1 => Successfully removed
1638. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user1 => Not updated
1639. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user2 => Successfully removed
1640. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\[\]
1641. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Successfully added
1642. => GET => http://localhost/api/secure_test/visibility/clear?_id={{id1}}&auth_token_=debug => Successfully
1643. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\[\]
1644.
1645.
1646.
1647. # Step 2: test secure access via visibility
1648. # 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
1649.
1650. # first clean the DB
1651. => POST => http://localhost/api/simple_auth/delete?_confirmstr=simple_auth => {} => success
1652. => 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
1653.
1654. # Register user
1655. #=> GET => http://localhost/api/simple_auth/register?username=user1&password_=test123&email=dutta.dipankar08@gmail.com => registration success
1656. #=> GET => http://localhost/api/simple_auth/register?username=user2&password_=test123&email=dutta.dipankar08+0@gmail.com => registration success
1657.
1658. # login user
1659. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=user1&password_=test123 => "auth_token_":"(?.*?)"
1660. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=user2&password_=test123 => "auth_token_":"(?.*?)"
1661. # Create an ietm by user1 and add visibility to user 2
1662. => GET => http://localhost/api/secure_test/insert?auth_token_={{login_token1}}&name=share with user2 => "_id":"(?.*?)"
1663. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => Find successfully with 0 items
1664. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_={{login_token1}}&username=user2 => Successfully added
1665. # Access by user 2
1666. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => share with user2
1667. #Revoke access
1668. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_={{login_token1}}&username=user2 => Successfully removed
1669. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => Find successfully with 0 items
1670.
1671. # Update Visibility in a go using /replace
1672. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1,user2,user3 => Successfully replaced with 3
1673. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1,user2,user3 ,user4 => Successfully replaced with 4
1674. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1 => Successfully replaced with 1
1675. => POST => http://localhost/api/secure_test/visibility/replace => {"_id":"{{id1}}","auth_token_":"{{login_token1}}","username":["user1"]} => Successfully replaced with 1
1676. # In the below case, you need use clear API to replace
1677. => POST => http://localhost/api/secure_test/visibility/replace => {"_id":"{{id1}}","auth_token_":"{{login_token1}}","username":[]} => you must pass username
1678.
1679.
1680. # Testing anonymous entries.
1681. => GET => http://localhost/api/secure_test/insert?auth_token_=anonymous&name=test_anonymous => "_id":"(?.*?)"
1682. => GET => http://localhost/api/secure_test?id={{id3}} => Please send auth_token_
1683. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_=anonymous => "_visibility":\["public"\]
1684. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_=test => Wrong auth_token_ passed # So you must pass valid access token or anonymous
1685. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_={{login_token1}} => "_visibility":\["public"\]
1686.
1687.
1688. ################ PDF GEN API ######################
1689. # This allow to a secure entry to other user
1690. #####################################################
1691. => GET => http://localhost/api/utils/pdf/letter?from=Dipankar\nDutta&to=dip&subject=hello&content=hello\nworld => company_name missing
1692. => 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
1693.
1694.
1695. ################ HEARTBEAT API ######################
1696. # This allow to a secure entry to other user
1697. #####################################################
1698. => GET => http://localhost/api/utils/heartbeat/ping => please pass name
1699. => GET => http://localhost/api/utils/heartbeat/ping?name=test =>pong
1700. => GET => http://localhost/api/utils/heartbeat/status?name=test => status: active
1701. => GET => http://localhost/api/utils/heartbeat/ping?name=test&status=error =>pong
1702. => GET => http://localhost/api/utils/heartbeat/status?name=test => status: error
1703. => GET => http://localhost/api/utils/heartbeat/ping?name=test&status=error&last_error=error_stack =>pong
1704. => GET => http://localhost/api/utils/heartbeat/status?name=test => error_stack
1705. => GET => http://localhost/api/utils/heartbeat/status?name=test1 => status: not found
1706.
1707. # Test auto expaire ( must be pinnged in every 60 sec - we delete the entry in 120 sec)
1708. # This give two chnages to ensure your pingged in reached to the server
1709. => GET => http://localhost/api/utils/heartbeat/status?name=test => error_stack
1710. # => sleep => 120 <<< DIabled as perf reason
1711. # => GET => http://localhost/api/utils/heartbeat/status?name=test => status: inactive
1712.
1713. ################ TUNNEL REQUEST ######################
1714. # This mecahnisn allows to execute a JSON request to 3p wesbite and allow to pass a custum function to process the output.
1715. #####################################################
1716. => GET => http://localhost/api/tunnel_request/delete?_confirmstr=tunnel_request =>success
1717. => POST => http://localhost/api/tunnel_request/add_tunnel => {"name":"test", "type":"get", "url":"https://market.tipranks.com/api/details/GetRealTimeQuotes", "process_fn" : "none"} => success
1718. => POST => http://localhost/api/tunnel_request/add_tunnel => {"name":"test", "type":"get", "url":"https://market.tipranks.com/api/details/GetRealTimeQuotes", "process_fn" : "none"} => Duplicate item found: name
1719.
1720. # Once we setup a tunnel, execute it using get or post
1721. => GET => http://localhost/api/tunnel_request/execute?name=test => Request failed with status code 404
1722. => GET => http://localhost/api/tunnel_request/execute?name=test&tickers=MSFT => Issue with processing function
1723.
1724. # thsi will override thr process fucntion to test purpose ( you can use both lamda and nameed function)
1725. => POST => http://localhost/api/tunnel_request/execute => {"name":"test","tickers":"MSFT","process_fn":"function(a){return a}"} => successfully executeed the process fiunction
1726.
1727. # DONT USE LAMDA FUNCTION for test as => can't eb used
1728. # 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
1729. #=> POST => http://localhost/api/tunnel_request/execute => {"name":"test","tickers":"MSFT","process_fn":"(a)=>a"} => successfully executeed the process fiunction
1730.
1731. # You can add revision for that tunnel and latest revisition will be used
1732. => 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
1733. => GET => http://localhost/api/tunnel_request/execute?name=test&tickers=MSFT => MSFT
1734.
1735. ################ Crash Report ######################
1736. # Thsi APi provides to report crashes from any app.
1737. #####################################################
1738. => GET => http://localhost/api/crash_log/delete?_confirmstr=crash_log =>success
1739. => POST => http://localhost/api/crash_log/report_crash => {"app_name":"test", "message":"hello","stack":"stack1"} => first_line_hash:-1e788fb6
1740. => POST => http://localhost/api/crash_log/report_crash => {"app_name":"test", "message":"hello","stack":"stack1 "} => first_line_hash:-1e788fb6
1741. => GET => http://localhost/api/crash_log => "total_count":2
1742.
1743. ################ System DB ######################
1744. # Simple store supports system db which load all SimpleStore Server realted remote config on DB start.
1745. # This will override any local config so that we can control the service remotely.
1746. # One of the example is the SERCURE_KEYS which could be reset remotely
1747. # >>>> NOT WORKING <<<<
1748. #####################################################
1749. # => GET => http://localhost/api/internal_nodel_system_db/delete?_confirmstr=internal_nodel_system_db => The DB has marked as nodel
1750. # => GET => http://localhost/api/utils/system_db/dump => system db dump -> use db UI
1751. # /update will add, update, delete all in a single api. for delete pass null
1752. # => 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"
1753. # => POST => http://localhost/api/utils/system_db/update => {"db_name":"SECURE_KEYS", "test_key1":"test_key_value1","test_key2":"null"} => "test_key2":null
1754. # => 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"
1755. # => GET => http://localhost/api/utils/system_db/dump => "test_key2":"test_key_value3"
1756.
1757. ######### SERVER INFO ######
1758. => GET => http://localhost/info => "secureKeys":"Un autorized"
1759. => GET => http://localhost/info?admin=1 => "secureKeys"
1760.
1761. ##############
1762. # Test for stock_alert
1763. #
1764. ############
1765. => GET => http://localhost/api/stock_alert/delete?_confirmstr=stock_alert => success
1766. => POST => http://localhost/api/stock_alert/create => {"email":"dutta.dipankar08@gmail.com"} => "_id":"(?.*?)"
1767. => POST => http://localhost/api/stock_alert/tags/add => {"id":"{{id1}}","_field":"symbol_list", "_value":"AAPL"} => "symbol_list":\["AAPL"\]
1768. => 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"\]
1769. => POST => http://localhost/api/stock_alert => {"id":"{{id1}}"} => "email":"dutta.dipankar08@gmail.com"
1770. => GET => http://localhost/api/stock_alert/trigger?exchange=NASDAQ&event=NOTIFY_BEGIN_5 => 1 Event processed
1771.
1772.
1773. ###########
1774. # Expose reliability for admin acess
1775. ###########
1776. => GET => http://localhost/reliability/ => success
1777.
1778. ##### Admin DB ####
1779. => GET => http://localhost/api/admin_hello => Missing admin_token_
1780. => GET => http://localhost/api/test_admin => Missing admin_token_
1781. => GET => http://localhost/api/test_admin?admin_token_=admin_test => Find successfully
1782. => GET => http://localhost/api/test_admin?admin_token_=admin_test_token_invalid => Invalid admin_token
1783. => GET => http://localhost/api/test_admin/insert?admin_token_=admin_test&name=test=> success
1784. => GET => http://localhost/api/test_admin/get?name=test=> Missing admin_token_
1785. => GET => http://localhost/api/test_admin/find?name=test=> Missing admin_token_
1786.
1787.
1788. # Get and Delete.
1789. => GET => http://localhost/api/test/insert?name=test => "_id":"(?.*?)"
1790. => GET => http://localhost/api/test/get_and_delete?id={{id1}} => success
1791. => GET => http://localhost/api/test/get_and_delete?id={{id1}} => error
1792.
1793.
1794. # Test case for AWS S3 utils
1795. => GET => http://localhost/api/utils/aws/list_files?folder_name=images&bucket_name=intellicogno-s3 => https://intellicogno-s3.s3.us-east-2.amazonaws.com
1796. => GET => http://localhost/api/utils/aws/list_files?folder_name=images => missing bucket_name
1797. => GET => http://localhost/api/utils/aws/list_files?bucket_name=images => missing folder_name
1798. => GET => http://localhost/api/utils/aws/list_files?folder_name=images&bucket_name=intellicogno-s4 => return a list of url
1799. => GET => http://localhost/api/utils/aws/list_files?folder_name=images1&bucket_name=intellicogno-s3 => return a list of url
1800. # Path = https://${bucketName}.s3.${region}.amazonaws.com/${path}
1801. => GET => http://localhost/api/utils/aws/get_download_url?path=images/017.jpg&bucket_name=intellicogno-s3 => success # get a link for a file
1802.
1803.
1804. # live log
1805. => GET => http://localhost/api/live_log/test => success
1806. => GET => http://localhost/api/live_log/get_log => error
1807. => GET => http://localhost/api/live_log/get_log?sender=live_log => html
1808.
1809.
1810. # Admin feature
1811. # 1. Server logs -> This works only if you login as super user
1812. => GET => http://localhost/api/utils/admin_tools/logs => success
1813. => GET => http://localhost/api/utils/admin_tools/clear_logs => success
1814. => GET => http://localhost/admin/routes => live_log
1815.
1816. # Power ful cron jobs scheulere
1817. # You can have job type lie ( not working anymore)
1818. # => GET => http://localhost/api/cron_job/submit?cron_format=* * * * *&job_type=debug&job_payload=json:{%22data%22:%22data%22} => success
1819. # => GET => http://localhost/api/cron_job/active_jobs => sucess
1820. # => GET => http://localhost/api/cron_job/reload => sucess
1821. # => 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
1822.
1823. # Bash comamnd excutor
1824. => GET => http://localhost/api/utils/bash => error
1825. => GET => http://localhost/api/utils/bash?cmd=ls => success
1826. => GET => http://localhost/api/utils/bash?cmd=pwd => success
1827. => GET => http://localhost/api/utils/bash?cmd=sudo%20rm%20-rf => No rm or sudo allowed
1828. => GET => http://localhost/api/utils/bash?preset=git_pull => success
1829. => GET => http://localhost/api/utils/bash/get_all_presets => All Preset returned
1830.
1831. # yahoo_fin Historical data
1832. => GET => http://localhost/api/utils/yahoo_fin/historical_data?symbol=AAPL&interval=5m&range=1mo => success
1833.
1834.
1835. # Generating OAuth token for Simple_AUth
1836. # Oauth allows to genete refersh and access token by 3p provider
1837. # Here is how to use
1838. # 1. Add a button in the UI to call : https://api.schwabapi.com/v1/oauth/authorize?client_id=BfQwxJGANBot1jWGO4e4LUuVjP33ckXs&redirect_uri=https://127.0.0.1:3000/oauth/schwab ( Note that your need get the client id from the Schwab and you define redirect_uri while creating the app)
1839. # 2. After reditecyion, you will getting a code, note the code and pass with below url
1840. # 3. Hit the URL: http://localhost/api/simple_auth/generate_oauth_tokens?auth_token_=9CC3B6&provider=SCHWAB&code=&redirect_uri=https://127.0.0.1:3000/oauth/schwab ( note to use same reditected URI)
1841. # 4. It need to do it quickly, once you are done, a access token will be generated and asscoited with the SimpleStoreAccount. For securiy reason, the access token will never be exposed outside. It is encriped and store in the SimpleStore internal DB.
1842. # 5. velidate if that is working fine http://simplestore.dipankar.co.in/api/utils/schwab/get_all_data?auth_token_=
1843. # 6. You dont need to acess refresh the auth_token as it is done automically by the system.
1844.
1845.
1846. #=> GET => http://localhost/api/simple_auth/register?username=test&email=test@test.com&password_=test => Duplicate item found: username
1847. #=> GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6"
1848. #=> 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
1849. #=> GET => http://localhost/api/simple_auth/get_info?auth_token_=9CC3B6&_no_encode=1 =>"test" # Note it will never expose the oauth_tokens_ ouside
1850. #=> GET => http://localhost/api/utils/schwab/get_all_data?auth_token_=9CC3B6
1851.
1852.
1853.
1854. # Set APis -> This allow to insert a string into a list in the document
1855. => !POST => http://localhost/api/test0/create => {"name":"dip","count":1} => "_id":"(?.*?)"
1856. => GET => http://localhost/api/test/set/add?_id={{id}}&field=tags&value=1234 => "1234"
1857. => GET => http://localhost/api/test/set/add?_id={{id}}&field=tags&value=1234,1235,1236,1237 => "1234","1235","1236"
1858. => GET => http://localhost/api/test/set/remove?_id={{id}}&field=tags&value=1234=> "1235","1236"
1859. => GET => http://localhost/api/test/set/remove?_id={{id}}&field=tags&value= 1234,1235, 1236=> "1237"
1860. => GET => http://localhost/api/test/set/clear?_id={{id}}&field=tags&value==> "tags":\[\]
1861. => GET => http://localhost/api/test/delete?_id={{id}} => success
1862.
1863.
1864. # Private tokens store and send message in telegeraom: Private Tokens + Telegram Utilities
1865. => GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test123&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6"
1866. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=TELEGRAM_BOT_PRIVATE_TOKEN&token=test => private tokens stored
1867. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=UNKNOWN&token=test => Invalid enum string UNKNOWN,
1868. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&provider=UNKNOWN&chat_id=test&text=hello => 404
1869. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=TELEGRAM_BOT_PRIVATE_TOKEN&token=7542704492:AAFivlt7Cu1Y7lbRjIAVmBguiVaDMr0w5RA => private tokens stored
1870. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&chat_id=test&text=hello => Bad Request: chat not found
1871. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&chat_id=-1002207345931&text=hello => Message sent successfully!
1872. => GET => http://localhost/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => success
1873.
1874. # Interal db
1875. => GET => http://localhost/api/internal_test => access this information
1876.
1877. # testing passing osbucure data
1878. # 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
1879. => GET => http://localhost/api/test/count?_data=eyJuYW1lIjogImRpcCJ9 => success
1880. => POST => http://localhost/api/test/count => {"_data":"eyJuYW1lIjogImRpcCJ9"} => success
1881. => GET => http://localhost/api/test/count?_data=eyJuYW1lIjogImRpcCJ9xx => Unexpected non-whitespace
1882.
1883. # Accessing preloaded Data stored in server
1884. => GET => http://localhost/api/utils/preload_data?name=ExampleData => success
1885.
1886.
1887. # schwab APIS ( not that you must have a valid access token - can;t test locally)
1888. => context => auth_token =>
1889. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/get_all_data?auth_token_={{auth_token}} => success
1890. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/quote?auth_token_={{auth_token}}&symbols=MSFT,AAPL => success
1891. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/chains?auth_token_={{auth_token}}&symbol=AAPL => success
1892. #=> GET => http://localhost/api/utils/schwab/pricehistory?auth_token_={{auth_token}}&symbol=AAPL => success
1893. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=start => success
1894. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=stop => success
1895. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=error => success
1896. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=result => success
1897. #=> GET => http://localhost/api/utils/schwab/list_chains?symbol=AAPL => success
1898.
1899. # System_Config => This is a file based env store where we expose API to save and get it.
1900. # This is only access by SimpleStore Admin user
1901. # First generate a super user_token
1902. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=superuser@grodok.com&password_=superuser@123 => "auth_token_":"(?.*?)"
1903. => GET => http://localhost/api/utils/system_config/get?auth_token_={{su_login_token}} => data returned
1904. => GET => http://localhost/api/utils/system_config/set?auth_token_={{su_login_token}}&key=key&value=value => key
1905. => GET => http://localhost/api/utils/system_config/delete?auth_token_={{su_login_token}}&key=key&value=value => Deleted the key
1906.
1907.
1908. # Open api APIs
1909. # curl -X POST http://localhost/api/utils/openai/transcribe -F "audio=@audio.mpeg" shoild be use for testing , Put the audio file in same folder
1910. # => POST => http://localhost/api/utils/openai/transcribe => "audio=@audio.mpeg" => success # FIle upload is not supported by FEST