#!api-testing # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # yaml-language-server: $schema=https://linuxsuren.github.io/api-testing/api-testing-schema.json name: hertzbeat api: | {{default "http://localhost:1157" (env "SERVER")}} param: monitorHTTP: "{{randAlpha 6}}" monitorSiteMap: "{{randAlpha 6}}" monitorPort: "{{randAlpha 6}}" monitorSSL: "{{randAlpha 6}}" monitorPing: "{{randAlpha 6}}" monitorUDP: "{{randAlpha 6}}" monitorWebsite: "{{randAlpha 6}}" monitorFTP: "{{randAlpha 6}}" apiTokenName: "e2e-token-{{randAlpha 6}}" labelName: "{{randAlpha 3}}" items: - name: login request: api: /api/account/auth/form method: POST header: Content-type: application/json body: | { "type": 0, "identifier": "admin", "credential": "hertzbeat" } expect: bodyFieldsExpect: code: "0" - name: login-missing-content-type request: api: /api/account/auth/form method: POST body: | { "type": 0, "identifier": "admin", "credential": "hertzbeat" } expect: statusCode: 500 - name: monitorList request: api: /api/monitors?pageIndex=0&pageSize=8 header: Authorization: Bearer {{.login.data.token}} expect: bodyFieldsExpect: code: "0" - name: missing-auth-header request: api: /api/monitors header: Accept: application/json expect: statusCode: 401 - name: createSitemapMonitor request: api: /api/monitor method: POST header: Authorization: Bearer {{.login.data.token}} Content-type: application/json bodyFromFile: data/monitor-sitemap.json - name: listSitemapMonitor request: api: /api/monitors?pageIndex=0&pageSize=8&app=fullsite header: Authorization: Bearer {{.login.data.token}} - name: cancelSitemapMonitor request: api: /api/monitors/manage?ids={{(index .listSitemapMonitor.data.content 0).id | int64}} query: type: JSON method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: deleteSitemapMonitor request: api: /api/monitors?ids={{(index .listSitemapMonitor.data.content 0).id | int64}} method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: createPortMonitor request: api: /api/monitor method: POST header: Authorization: Bearer {{.login.data.token}} Content-type: application/json bodyFromFile: data/monitor-port.json - name: listPortMonitor request: api: /api/monitors?pageIndex=0&pageSize=8&app=port header: Authorization: Bearer {{.login.data.token}} - name: cancelPortMonitor request: api: /api/monitors/manage?ids={{(index .listPortMonitor.data.content 0).id | int64}} query: type: JSON method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: deletePortMonitor request: api: /api/monitors?ids={{(index .listPortMonitor.data.content 0).id | int64}} method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: createSSLMonitor request: api: /api/monitor method: POST header: Authorization: Bearer {{.login.data.token}} Content-type: application/json bodyFromFile: data/monitor-ssl.json - name: listSSLMonitor request: api: /api/monitors?pageIndex=0&pageSize=8&app=ssl_cert header: Authorization: Bearer {{.login.data.token}} - name: cancelSSLMonitor request: api: /api/monitors/manage?ids={{(index .listSSLMonitor.data.content 0).id | int64}} query: type: JSON method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: deleteSSLMonitor request: api: /api/monitors?ids={{(index .listSSLMonitor.data.content 0).id | int64}} method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: createPingMonitor request: api: /api/monitor method: POST header: Authorization: Bearer {{.login.data.token}} Content-type: application/json bodyFromFile: data/monitor-ping.json - name: listPingMonitor request: api: /api/monitors?pageIndex=0&pageSize=8&app=ping header: Authorization: Bearer {{.login.data.token}} - name: cancelPingMonitor request: api: /api/monitors/manage?ids={{(index .listPingMonitor.data.content 0).id | int64}} query: type: JSON method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: deletePingMonitor request: api: /api/monitors?ids={{(index .listPingMonitor.data.content 0).id | int64}} method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: createUDPMonitor request: api: /api/monitor method: POST header: Authorization: Bearer {{.login.data.token}} Content-type: application/json bodyFromFile: data/monitor-udp.json - name: listUDPMonitor request: api: /api/monitors?pageIndex=0&pageSize=8&app=udp_port header: Authorization: Bearer {{.login.data.token}} - name: cancelUDPMonitor request: api: /api/monitors/manage?ids={{(index .listUDPMonitor.data.content 0).id | int64}} query: type: JSON method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: deleteUDPMonitor request: api: /api/monitors?ids={{(index .listUDPMonitor.data.content 0).id | int64}} method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: createWebsiteMonitor request: api: /api/monitor method: POST header: Authorization: Bearer {{.login.data.token}} Content-type: application/json bodyFromFile: data/monitor-website.json - name: listWebsiteMonitor request: api: /api/monitors?pageIndex=0&pageSize=8&app=website header: Authorization: Bearer {{.login.data.token}} - name: cancelWebsiteMonitor request: api: /api/monitors/manage?ids={{(index .listWebsiteMonitor.data.content 0).id | int64}} query: type: JSON method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: deleteWebsiteMonitor request: api: /api/monitors?ids={{(index .listWebsiteMonitor.data.content 0).id | int64}} method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: createFTPMonitor request: api: /api/monitor method: POST header: Authorization: Bearer {{.login.data.token}} Content-type: application/json bodyFromFile: data/monitor-ftp.json - name: listFTPMonitor request: api: /api/monitors?pageIndex=0&pageSize=8&app=ftp header: Authorization: Bearer {{.login.data.token}} - name: cancelFTPMonitor request: api: /api/monitors/manage?ids={{(index .listFTPMonitor.data.content 0).id | int64}} query: type: JSON method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: deleteFTPMonitor request: api: /api/monitors?ids={{(index .listFTPMonitor.data.content 0).id | int64}} method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: createHTTPMonitor request: api: /api/monitor method: POST header: Authorization: Bearer {{.login.data.token}} Content-type: application/json bodyFromFile: data/monitor-http.json - name: listHTTPMonitor request: api: /api/monitors?pageIndex=0&pageSize=8&app=api header: Authorization: Bearer {{.login.data.token}} - name: cancelHTTPMonitor request: api: /api/monitors/manage?ids={{(index .listHTTPMonitor.data.content 0).id | int64}} query: type: JSON method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: deleteHTTPMonitor request: api: /api/monitors?ids={{(index .listHTTPMonitor.data.content 0).id | int64}} method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: listAlertDefines request: api: /api/alert/defines header: Authorization: Bearer {{.login.data.token}} - name: deleteAlertDefine request: api: /api/alert/defines?ids=1 method: DELETE header: Authorization: Bearer {{.login.data.token}} - name: listAlertGroupConverges request: api: /api/alert/groups header: Authorization: Bearer {{.login.data.token}} - name: listAlertSilences request: api: /api/alert/silences header: Authorization: Bearer {{.login.data.token}} - name: listGroupAlerts request: api: /api/alerts/group header: Authorization: Bearer {{.login.data.token}} - name: listReceivers request: api: /api/notice/receivers header: Authorization: Bearer {{.login.data.token}} - name: listRules request: api: /api/notice/rules header: Authorization: Bearer {{.login.data.token}} - name: listTemplates request: api: /api/notice/templates header: Authorization: Bearer {{.login.data.token}} - name: listCollectors request: api: /api/collector header: Authorization: Bearer {{.login.data.token}} ## Label - name: createLabel request: api: /api/label method: POST header: Authorization: Bearer {{.login.data.token}} Content-type: application/json body: | { "name": "{{.param.labelName}}" } - name: listLabels request: api: /api/label?pageIndex=0&pageSize=8&type=1 header: Authorization: Bearer {{.login.data.token}} - name: updateLabel request: api: /api/label method: PUT header: Authorization: Bearer {{.login.data.token}} Content-type: application/json body: | { "id": {{(index .listLabels.data.content 0).id | int64}}, "name": "{{randAlpha 3}}", "tagValue": "{{randAlpha 3}}", "type": 1, "creator": "admin", "modifier": "admin" } expect: bodyFieldsExpect: code: "0" - name: deleteLabel request: api: /api/label?ids={{(index .listLabels.data.content 0).id | int64}} method: DELETE header: Authorization: Bearer {{.login.data.token}} ## API Token Management - name: generateApiToken request: api: /api/account/token/generate?name={{.apiTokenName}}&expireSeconds=-1 method: POST header: Authorization: Bearer {{.login.data.token}} expect: bodyFieldsExpect: code: "0" - name: listApiTokens request: api: /api/account/token header: Authorization: Bearer {{.login.data.token}} expect: bodyFieldsExpect: code: "0" data.0.name: "{{.apiTokenName}}" data.0.creator: "admin" - name: listApiTokensByGeneratedToken request: api: /api/account/token header: Authorization: Bearer {{.generateApiToken.data.token}} expect: bodyFieldsExpect: code: "0" data.0.name: "{{.apiTokenName}}" - name: useGeneratedTokenToCallApi request: api: /api/monitors?pageIndex=0&pageSize=8 header: Authorization: Bearer {{.generateApiToken.data.token}} expect: bodyFieldsExpect: code: "0" - name: deleteApiToken request: api: /api/account/token/{{(index .listApiTokens.data 0).id | int64}} method: DELETE header: Authorization: Bearer {{.login.data.token}} expect: bodyFieldsExpect: code: "0" ## Config - name: getConfigEmail request: api: /api/config/email header: Authorization: Bearer {{.login.data.token}} - name: getConfigSystem request: api: /api/config/system header: Authorization: Bearer {{.login.data.token}} - name: updateSystem request: api: /api/config/system method: POST body: | { "timeZoneId": "Asia/Shanghai", "locale": "en_US", "theme": null } header: Authorization: Bearer {{.login.data.token}} Content-type: application/json - name: getConfigOSS request: api: /api/config/oss header: Authorization: Bearer {{.login.data.token}} - name: updateOSS request: api: /api/config/oss method: POST body: | { "type": "FILE", "config": {} } header: Authorization: Bearer {{.login.data.token}} Content-type: application/json