tasks_e2e_test.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670
  1. //go:build e2e
  2. // +build e2e
  3. // Copyright 2020-2021 InfluxData, Inc. All rights reserved.
  4. // Use of this source code is governed by MIT
  5. // license that can be found in the LICENSE file.
  6. package api_test
  7. import (
  8. "context"
  9. "fmt"
  10. "testing"
  11. "time"
  12. influxdb2 "github.com/influxdata/influxdb-client-go/v2"
  13. "github.com/influxdata/influxdb-client-go/v2/api"
  14. "github.com/influxdata/influxdb-client-go/v2/domain"
  15. "github.com/stretchr/testify/assert"
  16. "github.com/stretchr/testify/require"
  17. )
  18. //
  19. const taskFlux = `from(bucket:"my-bucket") |> range(start: -1h) |> last()`
  20. func TestTasksAPI_CRUDTask(t *testing.T) {
  21. client := influxdb2.NewClient(serverURL, authToken)
  22. tasksAPI := client.TasksAPI()
  23. ctx := context.Background()
  24. tasks, err := tasksAPI.FindTasks(ctx, nil)
  25. require.Nil(t, err)
  26. require.Len(t, tasks, 0)
  27. org, err := client.OrganizationsAPI().FindOrganizationByName(ctx, "my-org")
  28. require.Nil(t, err)
  29. require.NotNil(t, org)
  30. taskDescription := "Example task"
  31. taskStatus := domain.TaskStatusTypeInactive
  32. taskEvery := "5s"
  33. newTask := &domain.Task{
  34. Description: &taskDescription,
  35. Every: &taskEvery,
  36. Flux: taskFlux,
  37. Name: "task 01",
  38. OrgID: *org.Id,
  39. Status: &taskStatus,
  40. }
  41. task1, err := tasksAPI.CreateTask(ctx, newTask)
  42. require.Nil(t, err)
  43. require.NotNil(t, task1)
  44. assert.Equal(t, "task 01", task1.Name, task1.Name)
  45. if assert.NotNil(t, task1.Description) {
  46. assert.Equal(t, taskDescription, *task1.Description, *task1.Description)
  47. }
  48. if assert.NotNil(t, task1.Every) {
  49. assert.Equal(t, "5s", *task1.Every, *task1.Every)
  50. }
  51. if assert.NotNil(t, task1.Status) {
  52. assert.Equal(t, taskStatus, *task1.Status, *task1.Status)
  53. }
  54. assert.Equal(t, *org.Id, task1.OrgID, task1.OrgID)
  55. task2, err := tasksAPI.CreateTaskWithEvery(ctx, "task 02", taskFlux, "1h", *org.Id)
  56. require.Nil(t, err)
  57. require.NotNil(t, task2)
  58. assert.Equal(t, "task 02", task2.Name, task2.Name)
  59. assert.Nil(t, task2.Description)
  60. if assert.NotNil(t, task2.Every) {
  61. assert.Equal(t, "1h", *task2.Every, *task2.Every)
  62. }
  63. if assert.NotNil(t, task2.Status) {
  64. assert.Equal(t, domain.TaskStatusTypeActive, *task2.Status, *task2.Status)
  65. }
  66. assert.Equal(t, *org.Id, task2.OrgID, task2.OrgID)
  67. task3, err := tasksAPI.CreateTaskWithCron(ctx, "task 03", taskFlux, "*/1 * * * *", *org.Id)
  68. require.Nil(t, err)
  69. require.NotNil(t, task3)
  70. assert.Equal(t, "task 03", task3.Name, task3.Name)
  71. assert.Nil(t, task3.Description)
  72. if assert.NotNil(t, task3.Cron) {
  73. assert.Equal(t, "*/1 * * * *", *task3.Cron, *task3.Cron)
  74. }
  75. if assert.NotNil(t, task3.Status) {
  76. assert.Equal(t, domain.TaskStatusTypeActive, *task3.Status, *task3.Status)
  77. }
  78. assert.Equal(t, *org.Id, task3.OrgID, task3.OrgID)
  79. tasks, err = tasksAPI.FindTasks(ctx, nil)
  80. require.Nil(t, err)
  81. assert.Len(t, tasks, 3)
  82. task3.Every = &taskEvery
  83. task3.Description = &taskDescription
  84. task3.Status = &taskStatus
  85. task, err := tasksAPI.UpdateTask(ctx, task3)
  86. require.Nil(t, err)
  87. require.NotNil(t, task)
  88. assert.Equal(t, "task 03", task.Name, task.Name)
  89. if assert.NotNil(t, task.Description) {
  90. assert.Equal(t, taskDescription, *task.Description, *task.Description)
  91. }
  92. if assert.NotNil(t, task.Every) {
  93. assert.Equal(t, taskEvery, *task3.Every, *task3.Every)
  94. }
  95. if assert.NotNil(t, task3.Status) {
  96. assert.Equal(t, taskStatus, *task3.Status, *task3.Status)
  97. }
  98. flux := `import "types"
  99. option task = {
  100. name: "task 04",
  101. every: 1h,
  102. }
  103. from(bucket: "my-bucket")
  104. |> range(start: -task.every)
  105. |> filter(fn: (r) => r._measurement == "mem" and r.host == "myHost")`
  106. task4, err := tasksAPI.CreateTaskByFlux(ctx, flux, *org.Id)
  107. require.Nil(t, err)
  108. require.NotNil(t, task4)
  109. assert.Equal(t, "task 04", task4.Name, task4.Name)
  110. assert.Nil(t, task4.Description)
  111. if assert.NotNil(t, task4.Every) {
  112. assert.Equal(t, "1h", *task4.Every, *task4.Every)
  113. }
  114. if assert.NotNil(t, task4.Status) {
  115. assert.Equal(t, domain.TaskStatusTypeActive, *task4.Status, *task4.Status)
  116. }
  117. assert.Equal(t, *org.Id, task4.OrgID, task4.OrgID)
  118. err = tasksAPI.DeleteTask(ctx, task1)
  119. assert.Nil(t, err)
  120. err = tasksAPI.DeleteTask(ctx, task2)
  121. assert.Nil(t, err)
  122. err = tasksAPI.DeleteTask(ctx, task3)
  123. assert.Nil(t, err)
  124. err = tasksAPI.DeleteTask(ctx, task4)
  125. assert.Nil(t, err)
  126. tasks, err = tasksAPI.FindTasks(ctx, nil)
  127. require.Nil(t, err)
  128. assert.Len(t, tasks, 0)
  129. }
  130. func TestTasksAPI_GetTasks(t *testing.T) {
  131. client := influxdb2.NewClient(serverURL, authToken)
  132. tasksAPI := client.TasksAPI()
  133. ctx := context.Background()
  134. tasks, err := tasksAPI.FindTasks(ctx, nil)
  135. require.Nil(t, err)
  136. require.Len(t, tasks, 0)
  137. taskOrg, err := client.OrganizationsAPI().CreateOrganizationWithName(ctx, "task-org")
  138. require.Nil(t, err)
  139. require.NotNil(t, taskOrg)
  140. newtasks := make([]*domain.Task, 30)
  141. for i := 0; i < 30; i++ {
  142. newtasks[i], err = tasksAPI.CreateTaskWithEvery(ctx, fmt.Sprintf("task %02d", i+1), taskFlux, "1h", *taskOrg.Id)
  143. require.Nil(t, err)
  144. require.NotNil(t, newtasks[i])
  145. }
  146. tasks, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{Limit: 15})
  147. require.Nil(t, err)
  148. require.Len(t, tasks, 15)
  149. tasks, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{After: tasks[14].Id})
  150. require.Nil(t, err)
  151. require.Len(t, tasks, 15)
  152. tasks, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{Limit: 100})
  153. require.Nil(t, err)
  154. require.Len(t, tasks, 30)
  155. for i := 0; i < 30; i++ {
  156. err = tasksAPI.DeleteTaskWithID(ctx, newtasks[i].Id)
  157. assert.Nil(t, err)
  158. }
  159. err = client.OrganizationsAPI().DeleteOrganization(ctx, taskOrg)
  160. assert.Nil(t, err)
  161. }
  162. func TestTasksAPI_FindTasks(t *testing.T) {
  163. client := influxdb2.NewClient(serverURL, authToken)
  164. tasksAPI := client.TasksAPI()
  165. ctx := context.Background()
  166. tasks, err := tasksAPI.FindTasks(ctx, nil)
  167. require.Nil(t, err)
  168. require.Len(t, tasks, 0)
  169. taskOrg, err := client.OrganizationsAPI().CreateOrganizationWithName(ctx, "task-org")
  170. require.Nil(t, err)
  171. require.NotNil(t, taskOrg)
  172. myuser, err := client.UsersAPI().FindUserByName(ctx, "my-user")
  173. require.Nil(t, err)
  174. require.NotNil(t, myuser)
  175. task1, err := tasksAPI.CreateTaskWithEvery(ctx, "task 01", taskFlux, "1h", *taskOrg.Id)
  176. require.Nil(t, err)
  177. require.NotNil(t, task1)
  178. tasks, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{Name: "task 01"})
  179. require.Nil(t, err)
  180. require.Len(t, tasks, 1)
  181. task2, err := tasksAPI.CreateTaskWithEvery(ctx, "task 01", taskFlux, "1m", *taskOrg.Id)
  182. require.Nil(t, err)
  183. require.NotNil(t, task2)
  184. tasks, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{Name: "task 01"})
  185. require.Nil(t, err)
  186. require.Len(t, tasks, 2)
  187. tasks, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{OrgName: "task-org"})
  188. require.Nil(t, err)
  189. require.Len(t, tasks, 2)
  190. tasks, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{OrgName: "my-org"})
  191. require.Nil(t, err)
  192. require.Len(t, tasks, 0)
  193. tasks, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{OrgID: *taskOrg.Id})
  194. require.Nil(t, err)
  195. require.Len(t, tasks, 2)
  196. tasks, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{User: *myuser.Id})
  197. require.Nil(t, err)
  198. require.Len(t, tasks, 2)
  199. tasks, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{Status: domain.TaskStatusTypeActive})
  200. require.Nil(t, err)
  201. require.Len(t, tasks, 2)
  202. task, err := tasksAPI.GetTask(ctx, task1)
  203. require.Nil(t, err)
  204. require.NotNil(t, task)
  205. err = tasksAPI.DeleteTask(ctx, task1)
  206. assert.Nil(t, err)
  207. err = tasksAPI.DeleteTask(ctx, task2)
  208. assert.Nil(t, err)
  209. err = client.OrganizationsAPI().DeleteOrganization(ctx, taskOrg)
  210. assert.Nil(t, err)
  211. }
  212. func TestTasksAPI_MembersOwners(t *testing.T) {
  213. client := influxdb2.NewClient(serverURL, authToken)
  214. tasksAPI := client.TasksAPI()
  215. ctx := context.Background()
  216. tasks, err := tasksAPI.FindTasks(ctx, nil)
  217. require.Nil(t, err)
  218. require.Len(t, tasks, 0)
  219. org, err := client.OrganizationsAPI().FindOrganizationByName(ctx, "my-org")
  220. require.Nil(t, err)
  221. require.NotNil(t, org)
  222. // Test owners
  223. userOwner, err := client.UsersAPI().CreateUserWithName(ctx, "bucket-owner")
  224. require.Nil(t, err, err)
  225. require.NotNil(t, userOwner)
  226. task, err := tasksAPI.CreateTaskWithEvery(ctx, "task 01", taskFlux, "1h", *org.Id)
  227. require.Nil(t, err)
  228. require.NotNil(t, task)
  229. owners, err := tasksAPI.FindOwners(ctx, task)
  230. require.Nil(t, err, err)
  231. require.NotNil(t, owners)
  232. assert.Len(t, owners, 0)
  233. owner, err := tasksAPI.AddOwner(ctx, task, userOwner)
  234. require.Nil(t, err, err)
  235. require.NotNil(t, owner)
  236. assert.Equal(t, *userOwner.Id, *owner.Id)
  237. owners, err = tasksAPI.FindOwners(ctx, task)
  238. require.Nil(t, err, err)
  239. require.NotNil(t, owners)
  240. assert.Len(t, owners, 1)
  241. err = tasksAPI.RemoveOwnerWithID(ctx, task.Id, *owners[0].Id)
  242. require.Nil(t, err, err)
  243. owners, err = tasksAPI.FindOwners(ctx, task)
  244. require.Nil(t, err, err)
  245. require.NotNil(t, owners)
  246. assert.Len(t, owners, 0)
  247. // Test members
  248. userMember, err := client.UsersAPI().CreateUserWithName(ctx, "bucket-member")
  249. require.Nil(t, err, err)
  250. require.NotNil(t, userMember)
  251. members, err := tasksAPI.FindMembers(ctx, task)
  252. require.Nil(t, err, err)
  253. require.NotNil(t, members)
  254. assert.Len(t, members, 0)
  255. member, err := tasksAPI.AddMember(ctx, task, userMember)
  256. require.Nil(t, err, err)
  257. require.NotNil(t, member)
  258. assert.Equal(t, *userMember.Id, *member.Id)
  259. members, err = tasksAPI.FindMembers(ctx, task)
  260. require.Nil(t, err, err)
  261. require.NotNil(t, members)
  262. assert.Len(t, members, 1)
  263. err = tasksAPI.RemoveMemberWithID(ctx, task.Id, *members[0].Id)
  264. require.Nil(t, err, err)
  265. members, err = tasksAPI.FindMembers(ctx, task)
  266. require.Nil(t, err, err)
  267. require.NotNil(t, members)
  268. assert.Len(t, members, 0)
  269. err = tasksAPI.DeleteTask(ctx, task)
  270. assert.Nil(t, err, err)
  271. err = client.UsersAPI().DeleteUser(ctx, userOwner)
  272. assert.Nil(t, err, err)
  273. err = client.UsersAPI().DeleteUser(ctx, userMember)
  274. assert.Nil(t, err, err)
  275. }
  276. func TestTasksAPI_Labels(t *testing.T) {
  277. client := influxdb2.NewClient(serverURL, authToken)
  278. tasksAPI := client.TasksAPI()
  279. labelsAPI := client.LabelsAPI()
  280. ctx := context.Background()
  281. tasks, err := tasksAPI.FindTasks(ctx, nil)
  282. require.Nil(t, err)
  283. require.Len(t, tasks, 0)
  284. org, err := client.OrganizationsAPI().FindOrganizationByName(ctx, "my-org")
  285. require.Nil(t, err)
  286. require.NotNil(t, org)
  287. task, err := tasksAPI.CreateTaskWithEvery(ctx, "task 01", taskFlux, "1h", *org.Id)
  288. require.Nil(t, err)
  289. require.NotNil(t, task)
  290. labels, err := tasksAPI.FindLabels(ctx, task)
  291. require.Nil(t, err, err)
  292. require.NotNil(t, labels)
  293. assert.Len(t, labels, 0)
  294. label, err := labelsAPI.CreateLabelWithName(ctx, org, "red-label", nil)
  295. assert.Nil(t, err)
  296. assert.NotNil(t, label)
  297. labelx, err := tasksAPI.AddLabel(ctx, task, label)
  298. require.Nil(t, err, err)
  299. require.NotNil(t, labelx)
  300. labels, err = tasksAPI.FindLabels(ctx, task)
  301. require.Nil(t, err, err)
  302. require.NotNil(t, labels)
  303. assert.Len(t, labels, 1)
  304. err = tasksAPI.RemoveLabel(ctx, task, label)
  305. require.Nil(t, err, err)
  306. labels, err = tasksAPI.FindLabels(ctx, task)
  307. require.Nil(t, err, err)
  308. require.NotNil(t, labels)
  309. assert.Len(t, labels, 0)
  310. err = labelsAPI.DeleteLabel(ctx, label)
  311. assert.Nil(t, err, err)
  312. err = tasksAPI.DeleteTask(ctx, task)
  313. assert.Nil(t, err, err)
  314. }
  315. func TestTasksAPI_Runs(t *testing.T) {
  316. client := influxdb2.NewClient(serverURL, authToken)
  317. tasksAPI := client.TasksAPI()
  318. ctx := context.Background()
  319. tasks, err := tasksAPI.FindTasks(ctx, nil)
  320. require.Nil(t, err)
  321. require.Len(t, tasks, 0)
  322. org, err := client.OrganizationsAPI().FindOrganizationByName(ctx, "my-org")
  323. require.Nil(t, err)
  324. require.NotNil(t, org)
  325. start := time.Now()
  326. task, err := tasksAPI.CreateTaskWithEvery(ctx, "rapid task", taskFlux, "1s", *org.Id)
  327. require.Nil(t, err)
  328. require.NotNil(t, task)
  329. //wait for task to run 10x
  330. <-time.After(time.Second * 10)
  331. logs, err := tasksAPI.FindLogs(ctx, task)
  332. require.Nil(t, err)
  333. assert.True(t, len(logs) > 0)
  334. runs, err := tasksAPI.FindRuns(ctx, task, nil)
  335. require.Nil(t, err)
  336. runsCount := len(runs)
  337. require.True(t, runsCount > 0)
  338. runs, err = tasksAPI.FindRuns(ctx, task, &api.RunFilter{Limit: 5})
  339. require.Nil(t, err)
  340. require.Len(t, runs, 5)
  341. runs, err = tasksAPI.FindRuns(ctx, task, &api.RunFilter{Limit: 5, After: *runs[4].Id})
  342. require.Nil(t, err)
  343. require.NotNil(t, runs)
  344. //assert.Len(t, runs, 5) https://github.com/influxdata/influxdb/issues/13577
  345. runs, err = tasksAPI.FindRuns(ctx, task, &api.RunFilter{AfterTime: start, BeforeTime: start.Add(5 * time.Second)})
  346. require.Nil(t, err)
  347. //assert.Len(t, runs, 5) https://github.com/influxdata/influxdb/issues/13577
  348. assert.True(t, len(runs) > 0)
  349. runs, err = tasksAPI.FindRuns(ctx, task, &api.RunFilter{AfterTime: start.Add(5 * time.Second)})
  350. require.Nil(t, err)
  351. //assert.Len(t, runs, 5) https://github.com/influxdata/influxdb/issues/13577
  352. assert.True(t, len(runs) > 0)
  353. logs, err = tasksAPI.FindRunLogs(ctx, &runs[0])
  354. require.Nil(t, err)
  355. assert.True(t, len(logs) > 0)
  356. err = tasksAPI.DeleteTask(ctx, task)
  357. assert.Nil(t, err)
  358. task, err = tasksAPI.CreateTaskWithEvery(ctx, "task", taskFlux, "1s", *org.Id)
  359. require.Nil(t, err)
  360. require.NotNil(t, task)
  361. //wait for tasks to start and be running
  362. <-time.After(1500 * time.Millisecond)
  363. // we should get a running run
  364. runs, err = tasksAPI.FindRuns(ctx, task, nil)
  365. require.Nil(t, err)
  366. if assert.True(t, len(runs) > 0) {
  367. _ = tasksAPI.CancelRun(ctx, &runs[0])
  368. }
  369. runm, err := tasksAPI.RunManually(ctx, task)
  370. require.Nil(t, err)
  371. require.NotNil(t, runm)
  372. run, err := tasksAPI.GetRunByID(ctx, *runm.TaskID, *runm.Id)
  373. require.Nil(t, err)
  374. require.NotNil(t, run)
  375. run2, err := tasksAPI.RetryRun(ctx, run)
  376. require.Nil(t, err)
  377. require.NotNil(t, run2)
  378. err = tasksAPI.DeleteTask(ctx, task)
  379. assert.Nil(t, err)
  380. }
  381. func TestTasksAPI_Failures(t *testing.T) {
  382. client := influxdb2.NewClient(serverURL, authToken)
  383. invalidID := "000000000000000"
  384. notExistingID := "1000000000000000"
  385. tasksAPI := client.TasksAPI()
  386. ctx := context.Background()
  387. _, err := tasksAPI.GetTaskByID(ctx, invalidID)
  388. assert.NotNil(t, err)
  389. _, err = tasksAPI.GetTaskByID(ctx, notExistingID)
  390. assert.NotNil(t, err)
  391. _, err = tasksAPI.FindTasks(ctx, &api.TaskFilter{OrgID: invalidID})
  392. assert.NotNil(t, err)
  393. //empty name
  394. _, err = tasksAPI.CreateTaskWithEvery(ctx, "", taskFlux, "4s", invalidID)
  395. assert.NotNil(t, err)
  396. //invalid flux
  397. _, err = tasksAPI.CreateTaskWithEvery(ctx, "Task", "taskFlux", "4s", invalidID)
  398. assert.NotNil(t, err)
  399. //invalid every
  400. _, err = tasksAPI.CreateTaskWithEvery(ctx, "Task", taskFlux, "4g", invalidID)
  401. assert.NotNil(t, err)
  402. //invalid org
  403. _, err = tasksAPI.CreateTaskWithEvery(ctx, "Task", taskFlux, "4s", invalidID)
  404. assert.NotNil(t, err)
  405. //invalid cron
  406. _, err = tasksAPI.CreateTaskWithCron(ctx, "Task", taskFlux, "0 * *", invalidID)
  407. assert.NotNil(t, err)
  408. // delete with id
  409. err = tasksAPI.DeleteTaskWithID(ctx, notExistingID)
  410. assert.NotNil(t, err)
  411. task := &domain.Task{
  412. Id: notExistingID,
  413. Flux: taskFlux,
  414. Name: "task 01",
  415. }
  416. _, err = tasksAPI.UpdateTask(ctx, task)
  417. assert.NotNil(t, err)
  418. _, err = tasksAPI.FindMembersWithID(ctx, invalidID)
  419. assert.NotNil(t, err)
  420. _, err = tasksAPI.AddMemberWithID(ctx, notExistingID, invalidID)
  421. assert.NotNil(t, err)
  422. err = tasksAPI.RemoveMemberWithID(ctx, notExistingID, invalidID)
  423. assert.NotNil(t, err)
  424. _, err = tasksAPI.FindOwnersWithID(ctx, invalidID)
  425. assert.NotNil(t, err)
  426. _, err = tasksAPI.AddOwnerWithID(ctx, notExistingID, invalidID)
  427. assert.NotNil(t, err)
  428. err = tasksAPI.RemoveOwnerWithID(ctx, notExistingID, invalidID)
  429. assert.NotNil(t, err)
  430. _, err = tasksAPI.FindRunsWithID(ctx, notExistingID, nil)
  431. assert.NotNil(t, err)
  432. _, err = tasksAPI.GetRunByID(ctx, notExistingID, invalidID)
  433. assert.NotNil(t, err)
  434. _, err = tasksAPI.FindRunLogsWithID(ctx, notExistingID, invalidID)
  435. assert.NotNil(t, err)
  436. _, err = tasksAPI.RunManuallyWithID(ctx, notExistingID)
  437. assert.NotNil(t, err)
  438. _, err = tasksAPI.RetryRunWithID(ctx, notExistingID, invalidID)
  439. assert.NotNil(t, err)
  440. err = tasksAPI.CancelRunWithID(ctx, notExistingID, invalidID)
  441. assert.NotNil(t, err)
  442. _, err = tasksAPI.FindLogsWithID(ctx, notExistingID)
  443. assert.NotNil(t, err)
  444. _, err = tasksAPI.FindLabelsWithID(ctx, invalidID)
  445. assert.NotNil(t, err)
  446. _, err = tasksAPI.AddLabelWithID(ctx, notExistingID, invalidID)
  447. assert.NotNil(t, err)
  448. err = tasksAPI.RemoveLabelWithID(ctx, notExistingID, invalidID)
  449. assert.NotNil(t, err)
  450. }
  451. func TestTasksAPI_RequestFailures(t *testing.T) {
  452. client := influxdb2.NewClient("serverURL", authToken)
  453. invalidID := "000000000000000"
  454. notExistingID := "1000000000000000"
  455. tasksAPI := client.TasksAPI()
  456. ctx := context.Background()
  457. _, err := tasksAPI.GetTaskByID(ctx, invalidID)
  458. assert.NotNil(t, err)
  459. _, err = tasksAPI.GetTaskByID(ctx, notExistingID)
  460. assert.NotNil(t, err)
  461. _, err = tasksAPI.FindTasks(ctx, nil)
  462. assert.NotNil(t, err)
  463. //empty name
  464. _, err = tasksAPI.CreateTaskWithEvery(ctx, "", taskFlux, "4s", invalidID)
  465. assert.NotNil(t, err)
  466. //invalid flux
  467. _, err = tasksAPI.CreateTaskWithEvery(ctx, "Task", "taskFlux", "4s", invalidID)
  468. assert.NotNil(t, err)
  469. //invalid every
  470. _, err = tasksAPI.CreateTaskWithEvery(ctx, "Task", taskFlux, "4g", invalidID)
  471. assert.NotNil(t, err)
  472. //invalid org
  473. _, err = tasksAPI.CreateTaskWithEvery(ctx, "Task", taskFlux, "4s", invalidID)
  474. assert.NotNil(t, err)
  475. //invalid cron
  476. _, err = tasksAPI.CreateTaskWithCron(ctx, "Task", taskFlux, "0 * *", invalidID)
  477. assert.NotNil(t, err)
  478. // delete with id
  479. err = tasksAPI.DeleteTaskWithID(ctx, notExistingID)
  480. assert.NotNil(t, err)
  481. task := &domain.Task{
  482. Id: notExistingID,
  483. Flux: taskFlux,
  484. Name: "task 01",
  485. }
  486. _, err = tasksAPI.UpdateTask(ctx, task)
  487. assert.NotNil(t, err)
  488. _, err = tasksAPI.FindMembersWithID(ctx, invalidID)
  489. assert.NotNil(t, err)
  490. _, err = tasksAPI.AddMemberWithID(ctx, notExistingID, invalidID)
  491. assert.NotNil(t, err)
  492. err = tasksAPI.RemoveMemberWithID(ctx, notExistingID, invalidID)
  493. assert.NotNil(t, err)
  494. _, err = tasksAPI.FindOwnersWithID(ctx, invalidID)
  495. assert.NotNil(t, err)
  496. _, err = tasksAPI.AddOwnerWithID(ctx, notExistingID, invalidID)
  497. assert.NotNil(t, err)
  498. err = tasksAPI.RemoveOwnerWithID(ctx, notExistingID, invalidID)
  499. assert.NotNil(t, err)
  500. _, err = tasksAPI.FindRunsWithID(ctx, notExistingID, nil)
  501. assert.NotNil(t, err)
  502. _, err = tasksAPI.GetRunByID(ctx, notExistingID, invalidID)
  503. assert.NotNil(t, err)
  504. _, err = tasksAPI.FindRunLogsWithID(ctx, notExistingID, invalidID)
  505. assert.NotNil(t, err)
  506. _, err = tasksAPI.RunManuallyWithID(ctx, notExistingID)
  507. assert.NotNil(t, err)
  508. _, err = tasksAPI.RetryRunWithID(ctx, notExistingID, invalidID)
  509. assert.NotNil(t, err)
  510. err = tasksAPI.CancelRunWithID(ctx, notExistingID, invalidID)
  511. assert.NotNil(t, err)
  512. _, err = tasksAPI.FindLogsWithID(ctx, notExistingID)
  513. assert.NotNil(t, err)
  514. _, err = tasksAPI.FindLabelsWithID(ctx, invalidID)
  515. assert.NotNil(t, err)
  516. _, err = tasksAPI.AddLabelWithID(ctx, notExistingID, invalidID)
  517. assert.NotNil(t, err)
  518. err = tasksAPI.RemoveLabelWithID(ctx, notExistingID, invalidID)
  519. assert.NotNil(t, err)
  520. }