add tests on create and import device profiles
This commit is contained in:
parent
832b406420
commit
d629151266
@ -278,6 +278,18 @@ public class TestRestClient {
|
|||||||
.as(JsonNode.class);
|
.as(JsonNode.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PageData<DeviceProfile> getDeviceProfiles(PageLink pageLink) {
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
addPageLinkToParam(params, pageLink);
|
||||||
|
return given().spec(requestSpec).queryParams(params)
|
||||||
|
.get("/api/deviceProfiles")
|
||||||
|
.then()
|
||||||
|
.statusCode(HTTP_OK)
|
||||||
|
.extract()
|
||||||
|
.as(new TypeRef<PageData<DeviceProfile>>() {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public DeviceProfile getDeviceProfileById(DeviceProfileId deviceProfileId) {
|
public DeviceProfile getDeviceProfileById(DeviceProfileId deviceProfileId) {
|
||||||
return given().spec(requestSpec).get("/api/deviceProfile/{deviceProfileId}", deviceProfileId.getId())
|
return given().spec(requestSpec).get("/api/deviceProfile/{deviceProfileId}", deviceProfileId.getId())
|
||||||
.then()
|
.then()
|
||||||
@ -296,6 +308,13 @@ public class TestRestClient {
|
|||||||
.as(DeviceProfile.class);
|
.as(DeviceProfile.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteDeviseProfile(DeviceProfileId deviceProfileId) {
|
||||||
|
given().spec(requestSpec)
|
||||||
|
.delete("/api/deviceProfile/{deviceProfileId}", deviceProfileId.getId())
|
||||||
|
.then()
|
||||||
|
.statusCode(HTTP_OK);
|
||||||
|
}
|
||||||
|
|
||||||
public Customer postCustomer(Customer customer) {
|
public Customer postCustomer(Customer customer) {
|
||||||
return given().spec(requestSpec)
|
return given().spec(requestSpec)
|
||||||
.body(customer)
|
.body(customer)
|
||||||
|
|||||||
@ -35,6 +35,7 @@ import org.openqa.selenium.support.ui.WebDriverWait;
|
|||||||
import org.testng.annotations.AfterMethod;
|
import org.testng.annotations.AfterMethod;
|
||||||
import org.testng.annotations.BeforeMethod;
|
import org.testng.annotations.BeforeMethod;
|
||||||
import org.thingsboard.server.common.data.Customer;
|
import org.thingsboard.server.common.data.Customer;
|
||||||
|
import org.thingsboard.server.common.data.DeviceProfile;
|
||||||
import org.thingsboard.server.common.data.page.PageLink;
|
import org.thingsboard.server.common.data.page.PageLink;
|
||||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
import org.thingsboard.server.common.data.rule.RuleChain;
|
||||||
import org.thingsboard.server.msa.AbstractContainerTest;
|
import org.thingsboard.server.msa.AbstractContainerTest;
|
||||||
@ -113,6 +114,11 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
|
|||||||
.filter(x -> x.getName().equals(name)).collect(Collectors.toList()).get(0);
|
.filter(x -> x.getName().equals(name)).collect(Collectors.toList()).get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static DeviceProfile getDeviceProfileByName(String name) {
|
||||||
|
return testRestClient.getDeviceProfiles(pageLink).getData().stream()
|
||||||
|
.filter(x -> x.getName().equals(name)).collect(Collectors.toList()).get(0);
|
||||||
|
}
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@Attachment(value = "Page screenshot", type = "image/png")
|
@Attachment(value = "Page screenshot", type = "image/png")
|
||||||
public static byte[] captureScreen(WebDriver driver, String dirPath) {
|
public static byte[] captureScreen(WebDriver driver, String dirPath) {
|
||||||
|
|||||||
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.msa.ui.pages;
|
package org.thingsboard.server.msa.ui.pages;
|
||||||
|
|
||||||
|
import org.openqa.selenium.By;
|
||||||
import org.openqa.selenium.WebDriver;
|
import org.openqa.selenium.WebDriver;
|
||||||
import org.openqa.selenium.WebElement;
|
import org.openqa.selenium.WebElement;
|
||||||
import org.thingsboard.server.msa.ui.base.AbstractBasePage;
|
import org.thingsboard.server.msa.ui.base.AbstractBasePage;
|
||||||
@ -62,9 +63,14 @@ public class OtherPageElements extends AbstractBasePage {
|
|||||||
private static final String ERROR_MESSAGE = "//mat-error";
|
private static final String ERROR_MESSAGE = "//mat-error";
|
||||||
private static final String ENTITY_VIEW_TITLE = "//div[@class='tb-details-title']//span";
|
private static final String ENTITY_VIEW_TITLE = "//div[@class='tb-details-title']//span";
|
||||||
private static final String LIST_OF_ENTITY = "//div[@role='listbox']/mat-option";
|
private static final String LIST_OF_ENTITY = "//div[@role='listbox']/mat-option";
|
||||||
|
private static final String ENTITY_FROM_LIST = "//div[@role='listbox']/mat-option//span[contains(text(),'%s')]";
|
||||||
protected static final String ADD_ENTITY_VIEW = "//tb-add-entity-dialog";
|
protected static final String ADD_ENTITY_VIEW = "//tb-add-entity-dialog";
|
||||||
protected static final String STATE_CONTROLLER = "//tb-entity-state-controller";
|
protected static final String STATE_CONTROLLER = "//tb-entity-state-controller";
|
||||||
private static final String SEARCH_FIELD = "//input[contains (@data-placeholder,'Search')]";
|
private static final String SEARCH_FIELD = "//input[contains (@data-placeholder,'Search')]";
|
||||||
|
private static final String BROWSE_FILE = "//input[@class='file-input']";
|
||||||
|
private static final String IMPORT_BROWSE_FILE = "//mat-dialog-container//span[contains(text(),'Import')]/..";
|
||||||
|
private static final String IMPORTING_FILE = "//div[contains(text(),'%s')]";
|
||||||
|
private static final String CLEAR_IMPORT_FILE_BTN = "//div[@class='tb-file-clear-container']//button";
|
||||||
|
|
||||||
public String getEntity(String entityName) {
|
public String getEntity(String entityName) {
|
||||||
return String.format(ENTITY, entityName);
|
return String.format(ENTITY, entityName);
|
||||||
@ -235,6 +241,10 @@ public class OtherPageElements extends AbstractBasePage {
|
|||||||
return waitUntilElementsToBeClickable(LIST_OF_ENTITY);
|
return waitUntilElementsToBeClickable(LIST_OF_ENTITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WebElement entityFromList(String entityName) {
|
||||||
|
return waitUntilVisibilityOfElementLocated(String.format(ENTITY_FROM_LIST, entityName));
|
||||||
|
}
|
||||||
|
|
||||||
public WebElement addEntityView() {
|
public WebElement addEntityView() {
|
||||||
return waitUntilVisibilityOfElementLocated(ADD_ENTITY_VIEW);
|
return waitUntilVisibilityOfElementLocated(ADD_ENTITY_VIEW);
|
||||||
}
|
}
|
||||||
@ -246,4 +256,21 @@ public class OtherPageElements extends AbstractBasePage {
|
|||||||
public WebElement searchField() {
|
public WebElement searchField() {
|
||||||
return waitUntilElementToBeClickable(SEARCH_FIELD);
|
return waitUntilElementToBeClickable(SEARCH_FIELD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WebElement browseFile() {
|
||||||
|
waitUntilElementToBeClickable(BROWSE_FILE + "/preceding-sibling::button");
|
||||||
|
return driver.findElement(By.xpath(BROWSE_FILE));
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement importBrowseFileBtn() {
|
||||||
|
return waitUntilElementToBeClickable(IMPORT_BROWSE_FILE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement importingFile(String fileName) {
|
||||||
|
return waitUntilVisibilityOfElementLocated(String.format(IMPORTING_FILE, fileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement clearImportFileBtn() {
|
||||||
|
return waitUntilElementToBeClickable(CLEAR_IMPORT_FILE_BTN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,93 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2022 The Thingsboard Authors
|
||||||
|
*
|
||||||
|
* Licensed 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.
|
||||||
|
*/
|
||||||
|
package org.thingsboard.server.msa.ui.pages;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
import org.w3c.dom.html.HTMLInputElement;
|
||||||
|
|
||||||
|
public class ProfilesPageElements extends OtherPageElementsHelper {
|
||||||
|
public ProfilesPageElements(WebDriver driver) {
|
||||||
|
super(driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String CREATE_DEVICE_PROFILE_BTN = "//span[text()='Create new device profile']";
|
||||||
|
private static final String IMPORT_PROFILE_BTN = "//span[text()='Import device profile']";
|
||||||
|
private static final String ADD_DEVICE_PROFILE_VIEW = "//tb-add-device-profile-dialog";
|
||||||
|
private static final String DEVICE_PROFILE_VIEW = "//tb-entity-details-panel";
|
||||||
|
private static final String NAME_FIELD = "//input[@formcontrolname='name']";
|
||||||
|
private static final String RULE_CHAIN_FIELD = "//input[@formcontrolname='ruleChainId']";
|
||||||
|
private static final String DASHBOARD_FIELD = "//input[@formcontrolname='dashboard']";
|
||||||
|
private static final String QUEUE_FIELD = "//input[@formcontrolname='queueName']";
|
||||||
|
private static final String DESCRIPTION_FIELD = "//textarea[@formcontrolname='description']";
|
||||||
|
private static final String ADD_DEVICE_PROFILE_ADD_BTN = ADD_DEVICE_PROFILE_VIEW + "//span[text() = 'Add']/..";
|
||||||
|
|
||||||
|
public WebElement createNewDeviceProfileBtn() {
|
||||||
|
return waitUntilElementToBeClickable(CREATE_DEVICE_PROFILE_BTN);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement importDeviceProfileBtn() {
|
||||||
|
return waitUntilElementToBeClickable(IMPORT_PROFILE_BTN);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement addDeviceProfileView() {
|
||||||
|
return waitUntilElementToBeClickable(ADD_DEVICE_PROFILE_VIEW);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement addDeviceProfileNameField() {
|
||||||
|
return waitUntilElementToBeClickable(ADD_DEVICE_PROFILE_VIEW + NAME_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement profileViewNameField() {
|
||||||
|
return waitUntilVisibilityOfElementLocated(DEVICE_PROFILE_VIEW + NAME_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement addDeviceProfileRuleChainField() {
|
||||||
|
return waitUntilElementToBeClickable(ADD_DEVICE_PROFILE_VIEW + RULE_CHAIN_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement profileViewRuleChainField() {
|
||||||
|
return waitUntilVisibilityOfElementLocated(DEVICE_PROFILE_VIEW + RULE_CHAIN_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement addDeviceProfileMobileDashboardField() {
|
||||||
|
return waitUntilElementToBeClickable(ADD_DEVICE_PROFILE_VIEW + DASHBOARD_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement profileViewMobileDashboardField() {
|
||||||
|
return waitUntilVisibilityOfElementLocated(DEVICE_PROFILE_VIEW + DASHBOARD_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement addDeviceProfileQueueField() {
|
||||||
|
return waitUntilElementToBeClickable(ADD_DEVICE_PROFILE_VIEW + QUEUE_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement profileViewQueueField() {
|
||||||
|
return waitUntilVisibilityOfElementLocated(DEVICE_PROFILE_VIEW + QUEUE_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement addDeviceDescriptionField() {
|
||||||
|
return waitUntilElementToBeClickable(ADD_DEVICE_PROFILE_VIEW + DESCRIPTION_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement profileViewDescriptionField() {
|
||||||
|
return waitUntilVisibilityOfElementLocated(DEVICE_PROFILE_VIEW + DESCRIPTION_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement addDeviceProfileAddBtn() {
|
||||||
|
return waitUntilElementToBeClickable(ADD_DEVICE_PROFILE_ADD_BTN);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,105 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2022 The Thingsboard Authors
|
||||||
|
*
|
||||||
|
* Licensed 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.
|
||||||
|
*/
|
||||||
|
package org.thingsboard.server.msa.ui.pages;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
|
||||||
|
public class ProfilesPageHelper extends ProfilesPageElements {
|
||||||
|
public ProfilesPageHelper(WebDriver driver) {
|
||||||
|
super(driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private String ruleChain;
|
||||||
|
private String mobileDashboard;
|
||||||
|
private String queue;
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
public void setName() {
|
||||||
|
this.name = profileViewNameField().getAttribute("value");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRuleChain() {
|
||||||
|
this.ruleChain = profileViewRuleChainField().getAttribute("value");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMobileDashboard() {
|
||||||
|
this.mobileDashboard = profileViewMobileDashboardField().getAttribute("value");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQueue() {
|
||||||
|
this.queue = profileViewQueueField().getAttribute("value");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription() {
|
||||||
|
this.description = profileViewDescriptionField().getAttribute("value");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRuleChain() {
|
||||||
|
return this.ruleChain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMobileDashboard() {
|
||||||
|
return this.mobileDashboard;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getQueue() {
|
||||||
|
return this.queue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return this.description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void enterName(String name) {
|
||||||
|
addDeviceProfileNameField().click();
|
||||||
|
addDeviceProfileNameField().sendKeys(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void chooseRuleChain(String ruleChain) {
|
||||||
|
addDeviceProfileRuleChainField().click();
|
||||||
|
entityFromList(ruleChain).click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void chooseMobileDashboard(String mobileDashboard) {
|
||||||
|
addDeviceProfileMobileDashboardField().click();
|
||||||
|
entityFromList(mobileDashboard).click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void chooseQueue(String queue) {
|
||||||
|
addDeviceProfileQueueField().click();
|
||||||
|
entityFromList(queue).click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void enterDescription(String description) {
|
||||||
|
addDeviceDescriptionField().sendKeys(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openCreateDeviceProfileView() {
|
||||||
|
plusBtn().click();
|
||||||
|
createNewDeviceProfileBtn().click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openImportDeviceProfileView() {
|
||||||
|
plusBtn().click();
|
||||||
|
importDeviceProfileBtn().click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -35,10 +35,6 @@ public class RuleChainsPageElements extends OtherPageElementsHelper {
|
|||||||
private static final String RULE_CHAINS_NAMES_WITHOUT_ROOT = "//mat-icon[contains(text(),'check_box_outline_blank')]/../../../mat-cell[contains(@class,'name')]/span";
|
private static final String RULE_CHAINS_NAMES_WITHOUT_ROOT = "//mat-icon[contains(text(),'check_box_outline_blank')]/../../../mat-cell[contains(@class,'name')]/span";
|
||||||
private static final String DELETE_RULE_CHAIN_FROM_VIEW_BTN = "//span[contains(text(),' Delete')]";
|
private static final String DELETE_RULE_CHAIN_FROM_VIEW_BTN = "//span[contains(text(),' Delete')]";
|
||||||
private static final String IMPORT_RULE_CHAIN_BTN = "//span[contains(text(),'Import rule chain')]";
|
private static final String IMPORT_RULE_CHAIN_BTN = "//span[contains(text(),'Import rule chain')]";
|
||||||
private static final String BROWSE_FILE = "//input[@class='file-input']";
|
|
||||||
private static final String IMPORT_BROWSE_FILE = "//mat-dialog-container//span[contains(text(),'Import')]/..";
|
|
||||||
private static final String IMPORTING_FILE = "//div[contains(text(),'%s')]";
|
|
||||||
private static final String CLEAR_IMPORT_FILE_BTN = "//div[@class='tb-file-clear-container']//button";
|
|
||||||
private static final String OPEN_RULE_CHAIN = ENTITY + "/../..//mat-icon[contains(text(),' settings_ethernet')]";
|
private static final String OPEN_RULE_CHAIN = ENTITY + "/../..//mat-icon[contains(text(),' settings_ethernet')]";
|
||||||
private static final String OPEN_RULE_CHAIN_FROM_VIEW = "//span[contains(text(),'Open rule chain')]";
|
private static final String OPEN_RULE_CHAIN_FROM_VIEW = "//span[contains(text(),'Open rule chain')]";
|
||||||
private static final String MAKE_ROOT_FROM_VIEW = "(//span[contains(text(),' Make rule chain root ')]/..)[1]";
|
private static final String MAKE_ROOT_FROM_VIEW = "(//span[contains(text(),' Make rule chain root ')]/..)[1]";
|
||||||
@ -85,23 +81,6 @@ public class RuleChainsPageElements extends OtherPageElementsHelper {
|
|||||||
return waitUntilElementToBeClickable(DELETE_RULE_CHAIN_FROM_VIEW_BTN);
|
return waitUntilElementToBeClickable(DELETE_RULE_CHAIN_FROM_VIEW_BTN);
|
||||||
}
|
}
|
||||||
|
|
||||||
public WebElement browseFile() {
|
|
||||||
waitUntilElementToBeClickable(BROWSE_FILE + "/preceding-sibling::button");
|
|
||||||
return driver.findElement(By.xpath(BROWSE_FILE));
|
|
||||||
}
|
|
||||||
|
|
||||||
public WebElement importBrowseFileBtn() {
|
|
||||||
return waitUntilElementToBeClickable(IMPORT_BROWSE_FILE);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WebElement importingFile(String fileName) {
|
|
||||||
return waitUntilVisibilityOfElementLocated(String.format(IMPORTING_FILE, fileName));
|
|
||||||
}
|
|
||||||
|
|
||||||
public WebElement clearImportFileBtn() {
|
|
||||||
return waitUntilElementToBeClickable(CLEAR_IMPORT_FILE_BTN);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WebElement openRuleChainFromViewBtn() {
|
public WebElement openRuleChainFromViewBtn() {
|
||||||
return waitUntilElementToBeClickable(OPEN_RULE_CHAIN_FROM_VIEW);
|
return waitUntilElementToBeClickable(OPEN_RULE_CHAIN_FROM_VIEW);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,8 @@ public class SideBarMenuViewElements extends AbstractBasePage {
|
|||||||
private static final String RULE_CHAINS_BTN = "//mat-toolbar//a[@href='/ruleChains']";
|
private static final String RULE_CHAINS_BTN = "//mat-toolbar//a[@href='/ruleChains']";
|
||||||
private static final String CUSTOMER_BTN = "//mat-toolbar//a[@href='/customers']";
|
private static final String CUSTOMER_BTN = "//mat-toolbar//a[@href='/customers']";
|
||||||
private static final String DASHBOARD_BTN = "//mat-toolbar//a[@href='/dashboards']";
|
private static final String DASHBOARD_BTN = "//mat-toolbar//a[@href='/dashboards']";
|
||||||
|
private static final String PROFILES_BTN = "//mat-toolbar//a[@href='/profiles']";
|
||||||
|
private static final String DEVICE_PROFILE_BTN = "//mat-toolbar//a[@href='/profiles/deviceProfiles']";
|
||||||
|
|
||||||
public WebElement ruleChainsBtn() {
|
public WebElement ruleChainsBtn() {
|
||||||
return waitUntilElementToBeClickable(RULE_CHAINS_BTN);
|
return waitUntilElementToBeClickable(RULE_CHAINS_BTN);
|
||||||
@ -39,4 +41,12 @@ public class SideBarMenuViewElements extends AbstractBasePage {
|
|||||||
public WebElement dashboardBtn() {
|
public WebElement dashboardBtn() {
|
||||||
return waitUntilElementToBeClickable(DASHBOARD_BTN);
|
return waitUntilElementToBeClickable(DASHBOARD_BTN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WebElement profilesBtn() {
|
||||||
|
return waitUntilElementToBeClickable(PROFILES_BTN);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement deviceProfileBtn() {
|
||||||
|
return waitUntilElementToBeClickable(DEVICE_PROFILE_BTN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2022 The Thingsboard Authors
|
||||||
|
*
|
||||||
|
* Licensed 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.
|
||||||
|
*/
|
||||||
|
package org.thingsboard.server.msa.ui.pages;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
|
||||||
|
public class SideBarMenuViewHelper extends SideBarMenuViewElements{
|
||||||
|
public SideBarMenuViewHelper(WebDriver driver) {
|
||||||
|
super(driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openDeviceProfiles() {
|
||||||
|
profilesBtn().click();
|
||||||
|
deviceProfileBtn().click();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,98 @@
|
|||||||
|
package org.thingsboard.server.msa.ui.tests.deviceProfileSmoke;
|
||||||
|
|
||||||
|
import io.qameta.allure.Description;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.AfterMethod;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
import org.thingsboard.server.msa.ui.base.AbstractDriverBaseTest;
|
||||||
|
import org.thingsboard.server.msa.ui.pages.LoginPageHelper;
|
||||||
|
import org.thingsboard.server.msa.ui.pages.ProfilesPageHelper;
|
||||||
|
import org.thingsboard.server.msa.ui.pages.SideBarMenuViewHelper;
|
||||||
|
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.EMPTY_IMPORT_MESSAGE;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.IMPORT_DEVICE_PROFILE_FILE_NAME;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.IMPORT_DEVICE_PROFILE_NAME;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.IMPORT_TXT_FILE_NAME;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.TENANT_EMAIL;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.TENANT_PASSWORD;
|
||||||
|
|
||||||
|
public class CreateDeviceProfileImportTest extends AbstractDriverBaseTest {
|
||||||
|
|
||||||
|
private SideBarMenuViewHelper sideBarMenuView;
|
||||||
|
private ProfilesPageHelper profilesPage;
|
||||||
|
private final String absolutePathToFileImportDeviceProfile = getClass().getClassLoader().getResource(IMPORT_DEVICE_PROFILE_FILE_NAME).getPath();
|
||||||
|
private final String absolutePathToFileImportTxt = getClass().getClassLoader().getResource(IMPORT_TXT_FILE_NAME).getPath();
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
|
||||||
|
@BeforeMethod
|
||||||
|
public void login() {
|
||||||
|
openLocalhost();
|
||||||
|
new LoginPageHelper(driver).authorizationTenant();
|
||||||
|
testRestClient.login(TENANT_EMAIL, TENANT_PASSWORD);
|
||||||
|
sideBarMenuView = new SideBarMenuViewHelper(driver);
|
||||||
|
profilesPage = new ProfilesPageHelper(driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterMethod
|
||||||
|
public void delete() {
|
||||||
|
if (name != null) {
|
||||||
|
testRestClient.deleteDeviseProfile(getDeviceProfileByName(name).getId());
|
||||||
|
name = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void importDeviceProfile() {
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.openImportDeviceProfileView();
|
||||||
|
profilesPage.browseFile().sendKeys(absolutePathToFileImportDeviceProfile);
|
||||||
|
profilesPage.importBrowseFileBtn().click();
|
||||||
|
name = IMPORT_DEVICE_PROFILE_NAME;
|
||||||
|
profilesPage.refreshBtn().click();
|
||||||
|
|
||||||
|
Assert.assertNotNull(profilesPage.entity(IMPORT_DEVICE_PROFILE_NAME));
|
||||||
|
Assert.assertTrue(profilesPage.entity(IMPORT_DEVICE_PROFILE_NAME).isDisplayed());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void importTxtFile() {
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.openImportDeviceProfileView();
|
||||||
|
profilesPage.browseFile().sendKeys(absolutePathToFileImportTxt);
|
||||||
|
|
||||||
|
Assert.assertNotNull(profilesPage.importingFile(EMPTY_IMPORT_MESSAGE));
|
||||||
|
Assert.assertTrue(profilesPage.importingFile(EMPTY_IMPORT_MESSAGE).isDisplayed());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(groups = "smoke")
|
||||||
|
@Description
|
||||||
|
public void addFileTiImportAndRemove() {
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.openImportDeviceProfileView();
|
||||||
|
profilesPage.browseFile().sendKeys(absolutePathToFileImportDeviceProfile);
|
||||||
|
profilesPage.clearImportFileBtn().click();
|
||||||
|
|
||||||
|
Assert.assertNotNull(profilesPage.importingFile(EMPTY_IMPORT_MESSAGE));
|
||||||
|
Assert.assertTrue(profilesPage.importingFile(EMPTY_IMPORT_MESSAGE).isDisplayed());
|
||||||
|
Assert.assertTrue(profilesPage.entityIsNotPresent(IMPORT_DEVICE_PROFILE_NAME));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void importDeviceProfileWithSameName() {
|
||||||
|
String name = ENTITY_NAME;
|
||||||
|
testRestClient.postDeviceProfile()
|
||||||
|
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.openImportDeviceProfileView();
|
||||||
|
profilesPage.browseFile().sendKeys(absolutePathToFileImportDeviceProfile);
|
||||||
|
profilesPage.importBrowseFileBtn().click();
|
||||||
|
this.name = IMPORT_DEVICE_PROFILE_NAME;
|
||||||
|
profilesPage.refreshBtn().click();
|
||||||
|
|
||||||
|
Assert.assertNotNull(profilesPage.entity(IMPORT_DEVICE_PROFILE_NAME));
|
||||||
|
Assert.assertTrue(profilesPage.entity(IMPORT_DEVICE_PROFILE_NAME).isDisplayed());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,184 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2022 The Thingsboard Authors
|
||||||
|
*
|
||||||
|
* Licensed 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.
|
||||||
|
*/
|
||||||
|
package org.thingsboard.server.msa.ui.tests.deviceProfileSmoke;
|
||||||
|
|
||||||
|
import io.qameta.allure.Description;
|
||||||
|
import org.openqa.selenium.Keys;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.AfterMethod;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
import org.thingsboard.server.msa.ui.base.AbstractDriverBaseTest;
|
||||||
|
import org.thingsboard.server.msa.ui.pages.LoginPageHelper;
|
||||||
|
import org.thingsboard.server.msa.ui.pages.ProfilesPageHelper;
|
||||||
|
import org.thingsboard.server.msa.ui.pages.SideBarMenuViewHelper;
|
||||||
|
import org.thingsboard.server.msa.ui.utils.EntityPrototypes;
|
||||||
|
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.EMPTY_DEVICE_PROFILE_MESSAGE;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.NAME_IS_REQUIRED_MESSAGE;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.SAME_NAME_WARNING_DEVICE_PROFILE_MESSAGE;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.TENANT_EMAIL;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.TENANT_PASSWORD;
|
||||||
|
|
||||||
|
public class CreateDeviceProfileTest extends AbstractDriverBaseTest {
|
||||||
|
|
||||||
|
private SideBarMenuViewHelper sideBarMenuView;
|
||||||
|
private ProfilesPageHelper profilesPage;
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
|
||||||
|
@BeforeMethod
|
||||||
|
public void login() {
|
||||||
|
openLocalhost();
|
||||||
|
new LoginPageHelper(driver).authorizationTenant();
|
||||||
|
testRestClient.login(TENANT_EMAIL, TENANT_PASSWORD);
|
||||||
|
sideBarMenuView = new SideBarMenuViewHelper(driver);
|
||||||
|
profilesPage = new ProfilesPageHelper(driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterMethod
|
||||||
|
public void delete() {
|
||||||
|
if (name != null) {
|
||||||
|
testRestClient.deleteDeviseProfile(getDeviceProfileByName(name).getId());
|
||||||
|
name = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createDeviceProfile() {
|
||||||
|
String name = ENTITY_NAME;
|
||||||
|
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.openCreateDeviceProfileView();
|
||||||
|
profilesPage.addDeviceProfileNameField().click();
|
||||||
|
profilesPage.addDeviceProfileNameField().sendKeys(name);
|
||||||
|
profilesPage.addDeviceProfileAddBtn().click();
|
||||||
|
this.name = name;
|
||||||
|
profilesPage.refreshBtn().click();
|
||||||
|
|
||||||
|
Assert.assertNotNull(profilesPage.entity(name));
|
||||||
|
Assert.assertTrue(profilesPage.entity(name).isDisplayed());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createDeviceProfileWithDetails() {
|
||||||
|
String name = ENTITY_NAME;
|
||||||
|
String ruleChain = "Root Rule Chain";
|
||||||
|
String mobileDashboard = "Firmware";
|
||||||
|
String queue = "Main";
|
||||||
|
String description = "Description";
|
||||||
|
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.openCreateDeviceProfileView();
|
||||||
|
profilesPage.enterName(name);
|
||||||
|
profilesPage.chooseRuleChain(ruleChain);
|
||||||
|
profilesPage.chooseMobileDashboard(mobileDashboard);
|
||||||
|
profilesPage.chooseQueue(queue);
|
||||||
|
profilesPage.enterDescription(description);
|
||||||
|
profilesPage.addDeviceProfileAddBtn().click();
|
||||||
|
this.name = name;
|
||||||
|
profilesPage.refreshBtn().click();
|
||||||
|
profilesPage.entity(name).click();
|
||||||
|
profilesPage.setName();
|
||||||
|
profilesPage.setRuleChain();
|
||||||
|
profilesPage.setMobileDashboard();
|
||||||
|
profilesPage.setQueue();
|
||||||
|
profilesPage.setDescription();
|
||||||
|
|
||||||
|
Assert.assertNotNull(profilesPage.entity(name));
|
||||||
|
Assert.assertTrue(profilesPage.entity(name).isDisplayed());
|
||||||
|
Assert.assertEquals(name, profilesPage.getName());
|
||||||
|
Assert.assertEquals(ruleChain, profilesPage.getRuleChain());
|
||||||
|
Assert.assertEquals(mobileDashboard, profilesPage.getMobileDashboard());
|
||||||
|
Assert.assertEquals(queue, profilesPage.getQueue());
|
||||||
|
Assert.assertEquals(description, profilesPage.getDescription());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createDeviseProfileWithSameName() {
|
||||||
|
String name = ENTITY_NAME;
|
||||||
|
testRestClient.postDeviceProfile(EntityPrototypes.defaultDeviceProfile(name));
|
||||||
|
this.name = name;
|
||||||
|
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.openCreateDeviceProfileView();
|
||||||
|
profilesPage.addDeviceProfileNameField().click();
|
||||||
|
profilesPage.addDeviceProfileNameField().sendKeys(name);
|
||||||
|
profilesPage.addDeviceProfileAddBtn().click();
|
||||||
|
|
||||||
|
Assert.assertNotNull(profilesPage.warningMessage());
|
||||||
|
Assert.assertTrue(profilesPage.warningMessage().isDisplayed());
|
||||||
|
Assert.assertEquals(profilesPage.warningMessage().getText(), SAME_NAME_WARNING_DEVICE_PROFILE_MESSAGE);
|
||||||
|
Assert.assertNotNull(profilesPage.addDeviceProfileView());
|
||||||
|
Assert.assertTrue(profilesPage.addDeviceProfileView().isDisplayed());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createDeviceProfileWithoutName() {
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.openCreateDeviceProfileView();
|
||||||
|
profilesPage.addDeviceProfileAddBtn().click();
|
||||||
|
|
||||||
|
Assert.assertNotNull(profilesPage.addDeviceProfileView());
|
||||||
|
Assert.assertTrue(profilesPage.addDeviceProfileView().isDisplayed());
|
||||||
|
Assert.assertNotNull(profilesPage.errorMessage());
|
||||||
|
Assert.assertEquals(profilesPage.errorMessage().getText(), NAME_IS_REQUIRED_MESSAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createDeviseProfileWithOnlySpaceInName() {
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.openCreateDeviceProfileView();
|
||||||
|
profilesPage.addDeviceProfileNameField().click();
|
||||||
|
profilesPage.addDeviceProfileNameField().sendKeys(Keys.SPACE);
|
||||||
|
profilesPage.addDeviceProfileAddBtn().click();
|
||||||
|
|
||||||
|
Assert.assertNotNull(profilesPage.warningMessage());
|
||||||
|
Assert.assertTrue(profilesPage.warningMessage().isDisplayed());
|
||||||
|
Assert.assertEquals(profilesPage.warningMessage().getText(), EMPTY_DEVICE_PROFILE_MESSAGE);
|
||||||
|
Assert.assertNotNull(profilesPage.addDeviceProfileView());
|
||||||
|
Assert.assertTrue(profilesPage.addDeviceProfileView().isDisplayed());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createDeviceProfileWithoutRefresh() {
|
||||||
|
String name = ENTITY_NAME;
|
||||||
|
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.openCreateDeviceProfileView();
|
||||||
|
profilesPage.addDeviceProfileNameField().click();
|
||||||
|
profilesPage.addDeviceProfileNameField().sendKeys(name);
|
||||||
|
profilesPage.addDeviceProfileAddBtn().click();
|
||||||
|
this.name = name;
|
||||||
|
|
||||||
|
Assert.assertNotNull(profilesPage.entity(name));
|
||||||
|
Assert.assertTrue(profilesPage.entity(name).isDisplayed());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(groups = "smoke")
|
||||||
|
@Description
|
||||||
|
public void documentation() {
|
||||||
|
String urlPath = "docs/user-guide/device-profiles/";
|
||||||
|
|
||||||
|
sideBarMenuView.openDeviceProfiles();
|
||||||
|
profilesPage.allEntity().get(0).click();
|
||||||
|
profilesPage.goToHelpPage();
|
||||||
|
|
||||||
|
Assert.assertTrue(urlContains(urlPath));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ public class CreateRuleChainImportTest extends AbstractDriverBaseTest {
|
|||||||
|
|
||||||
Assert.assertNotNull(ruleChainsPage.importingFile(EMPTY_IMPORT_MESSAGE));
|
Assert.assertNotNull(ruleChainsPage.importingFile(EMPTY_IMPORT_MESSAGE));
|
||||||
Assert.assertTrue(ruleChainsPage.importingFile(EMPTY_IMPORT_MESSAGE).isDisplayed());
|
Assert.assertTrue(ruleChainsPage.importingFile(EMPTY_IMPORT_MESSAGE).isDisplayed());
|
||||||
Assert.assertTrue(ruleChainsPage.entityIsNotPresent(IMPORT_TXT_FILE_NAME));
|
Assert.assertTrue(ruleChainsPage.entityIsNotPresent(IMPORT_RULE_CHAIN_FILE_NAME));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(priority = 20, groups = "smoke")
|
@Test(priority = 20, groups = "smoke")
|
||||||
|
|||||||
@ -25,13 +25,18 @@ public class Const {
|
|||||||
public static final String TENANT_PASSWORD = "tenant";
|
public static final String TENANT_PASSWORD = "tenant";
|
||||||
public static final String ENTITY_NAME = "Az!@#$%^&*()_-+=~`" + getRandomNumber();
|
public static final String ENTITY_NAME = "Az!@#$%^&*()_-+=~`" + getRandomNumber();
|
||||||
public static final String ROOT_RULE_CHAIN_NAME = "Root Rule Chain";
|
public static final String ROOT_RULE_CHAIN_NAME = "Root Rule Chain";
|
||||||
public static final String IMPORT_RULE_CHAIN_NAME = "Rule Chain from Import";
|
public static final String IMPORT_RULE_CHAIN_NAME = "Rule Chain For Import";
|
||||||
public static final String IMPORT_RULE_CHAIN_FILE_NAME = "forImport.json";
|
public static final String IMPORT_DEVICE_PROFILE_NAME = "Device Profile For Import";
|
||||||
|
public static final String IMPORT_RULE_CHAIN_FILE_NAME = "ruleChainForImport.json";
|
||||||
|
public static final String IMPORT_DEVICE_PROFILE_FILE_NAME = "deviceProfileForImport.json";
|
||||||
public static final String IMPORT_TXT_FILE_NAME = "forImport.txt";
|
public static final String IMPORT_TXT_FILE_NAME = "forImport.txt";
|
||||||
public static final String EMPTY_IMPORT_MESSAGE = "No file selected";
|
public static final String EMPTY_IMPORT_MESSAGE = "No file selected";
|
||||||
public static final String EMPTY_RULE_CHAIN_MESSAGE = "Rule chain name should be specified!";
|
public static final String EMPTY_RULE_CHAIN_MESSAGE = "Rule chain name should be specified!";
|
||||||
public static final String EMPTY_CUSTOMER_MESSAGE = "Customer title should be specified!";
|
public static final String EMPTY_CUSTOMER_MESSAGE = "Customer title should be specified!";
|
||||||
|
public static final String EMPTY_DEVICE_PROFILE_MESSAGE = "Device profile name should be specified!";
|
||||||
public static final String DELETE_RULE_CHAIN_WITH_PROFILE_MESSAGE = "The rule chain referenced by the device profiles cannot be deleted!";
|
public static final String DELETE_RULE_CHAIN_WITH_PROFILE_MESSAGE = "The rule chain referenced by the device profiles cannot be deleted!";
|
||||||
public static final String SAME_NAME_WARNING_CUSTOMER_MESSAGE = "Customer with such title already exists!";
|
public static final String SAME_NAME_WARNING_CUSTOMER_MESSAGE = "Customer with such title already exists!";
|
||||||
|
public static final String SAME_NAME_WARNING_DEVICE_PROFILE_MESSAGE = "Device profile with such name already exists!";
|
||||||
public static final String PHONE_NUMBER_ERROR_MESSAGE = "Phone number is invalid or not possible";
|
public static final String PHONE_NUMBER_ERROR_MESSAGE = "Phone number is invalid or not possible";
|
||||||
|
public static final String NAME_IS_REQUIRED_MESSAGE = "Name is required.";
|
||||||
}
|
}
|
||||||
@ -16,6 +16,12 @@
|
|||||||
package org.thingsboard.server.msa.ui.utils;
|
package org.thingsboard.server.msa.ui.utils;
|
||||||
|
|
||||||
import org.thingsboard.server.common.data.Customer;
|
import org.thingsboard.server.common.data.Customer;
|
||||||
|
import org.thingsboard.server.common.data.DeviceProfile;
|
||||||
|
import org.thingsboard.server.common.data.DeviceProfileType;
|
||||||
|
import org.thingsboard.server.common.data.DeviceTransportType;
|
||||||
|
import org.thingsboard.server.common.data.device.profile.AllowCreateNewDevicesDeviceProfileProvisionConfiguration;
|
||||||
|
import org.thingsboard.server.common.data.device.profile.DefaultDeviceProfileTransportConfiguration;
|
||||||
|
import org.thingsboard.server.common.data.device.profile.DeviceProfileData;
|
||||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
import org.thingsboard.server.common.data.rule.RuleChain;
|
||||||
|
|
||||||
public class EntityPrototypes {
|
public class EntityPrototypes {
|
||||||
@ -31,4 +37,16 @@ public class EntityPrototypes {
|
|||||||
ruleChain.setName(entityName);
|
ruleChain.setName(entityName);
|
||||||
return ruleChain;
|
return ruleChain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static DeviceProfile defaultDeviceProfile(String entityName){
|
||||||
|
DeviceProfile deviceProfile = new DeviceProfile();
|
||||||
|
deviceProfile.setName(entityName);
|
||||||
|
deviceProfile.setType(DeviceProfileType.DEFAULT);
|
||||||
|
deviceProfile.setTransportType(DeviceTransportType.DEFAULT);
|
||||||
|
DeviceProfileData deviceProfileData = new DeviceProfileData();
|
||||||
|
deviceProfileData.setProvisionConfiguration( new AllowCreateNewDevicesDeviceProfileProvisionConfiguration(""));
|
||||||
|
deviceProfileData.setTransportConfiguration(new DefaultDeviceProfileTransportConfiguration());
|
||||||
|
deviceProfile.setProfileData(deviceProfileData);
|
||||||
|
return deviceProfile;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"name": "Device Profile For Import",
|
||||||
|
"description": "",
|
||||||
|
"image": null,
|
||||||
|
"type": "DEFAULT",
|
||||||
|
"transportType": "DEFAULT",
|
||||||
|
"provisionType": "DISABLED",
|
||||||
|
"defaultRuleChainId": null,
|
||||||
|
"defaultDashboardId": null,
|
||||||
|
"defaultQueueName": null,
|
||||||
|
"profileData": {
|
||||||
|
"configuration": {
|
||||||
|
"type": "DEFAULT"
|
||||||
|
},
|
||||||
|
"transportConfiguration": {
|
||||||
|
"type": "DEFAULT"
|
||||||
|
},
|
||||||
|
"provisionConfiguration": {
|
||||||
|
"type": "DISABLED",
|
||||||
|
"provisionDeviceSecret": null
|
||||||
|
},
|
||||||
|
"alarms": null
|
||||||
|
},
|
||||||
|
"provisionDeviceKey": null,
|
||||||
|
"firmwareId": null,
|
||||||
|
"softwareId": null,
|
||||||
|
"externalId": null,
|
||||||
|
"default": false
|
||||||
|
}
|
||||||
@ -3,7 +3,7 @@
|
|||||||
"additionalInfo": {
|
"additionalInfo": {
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"name": "Rule Chain from Import",
|
"name": "Rule Chain For Import",
|
||||||
"type": "CORE",
|
"type": "CORE",
|
||||||
"firstRuleNodeId": null,
|
"firstRuleNodeId": null,
|
||||||
"root": false,
|
"root": false,
|
||||||
Loading…
x
Reference in New Issue
Block a user