Add CSIT test: Delete CM Handle
[cps.git] / csit / tests / cps-model-sync / cps-model-sync.robot
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2021-2024 Nordix Foundation
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  *  SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 *** Settings ***
22 Documentation         NCMP
23
24 Library               Collections
25 Library               OperatingSystem
26 Library               RequestsLibrary
27 Library               BuiltIn
28
29 Suite Setup           Create Session      CPS_URL    http://${CPS_CORE_HOST}:${CPS_CORE_PORT}
30
31 *** Variables ***
32
33 ${auth}                   Basic Y3BzdXNlcjpjcHNyMGNrcyE=
34 ${ncmpInventoryBasePath}  /ncmpInventory
35 ${ncmpBasePath}           /ncmp
36 ${dmiUrl}                 http://${DMI_HOST}:${DMI_PORT}
37 ${createPayload}         {"dmiPlugin":"${dmiUrl}","dmiDataPlugin":"","dmiModelPlugin":"","createdCmHandles":[{"cmHandle":"ietfYang-PNFDemo","cmHandleProperties":{"Book1":"Sci-Fi Book"},"publicCmHandleProperties":{"Contact":"storeemail@bookstore.com", "Contact2":"storeemail2@bookstore.com"}},{"cmHandle":"CmHandleForDelete"}]}
38 ${updatePayload}         {"dmiPlugin":"${dmiUrl}","dmiDataPlugin":"","dmiModelPlugin":"","updatedCmHandles":[{"cmHandle":"ietfYang-PNFDemo","cmHandleProperties":{"Book1":"Romance Book"},"publicCmHandleProperties":{"Contact":"newemailforstore@bookstore.com"}}]}
39 ${deletePayload}         {"dmiPlugin":"${dmiUrl}","dmiDataPlugin":"","dmiModelPlugin":"","removedCmHandles":["CmHandleForDelete"]}
40
41 *** Test Cases ***
42 Register data node and sync modules.
43     ${uri}=              Set Variable       ${ncmpInventoryBasePath}/v1/ch
44     ${headers}=          Create Dictionary  Content-Type=application/json   Authorization=${auth}
45     ${response}=         POST On Session    CPS_URL   ${uri}   headers=${headers}   data=${createPayload}
46     Should Be Equal As Strings              ${response.status_code}   200
47
48 Get CM Handle details and confirm it has been registered.
49     ${uri}=              Set Variable       ${ncmpBasePath}/v1/ch/ietfYang-PNFDemo
50     ${headers}=          Create Dictionary  Authorization=${auth}
51     ${response}=         GET On Session     CPS_URL   ${uri}   headers=${headers}
52     ${responseJson}=     Set Variable       ${response.json()}
53     ${schemaCount}=      Get length         ${responseJson}
54     Should Be Equal As Strings              ${response.status_code}   200
55     IF    "${responseJson['cmHandle']}" == "ietfYang-PNFDemo"
56            FOR   ${item}   IN  @{responseJson['publicCmHandleProperties']}
57                    Should Be Equal As Strings              "${item['Contact']}"  "storeemail@bookstore.com"
58            END
59     END
60
61 Update data node and sync modules.
62     ${uri}=              Set Variable       ${ncmpInventoryBasePath}/v1/ch
63     ${headers}=          Create Dictionary  Content-Type=application/json   Authorization=${auth}
64     ${response}=         POST On Session    CPS_URL   ${uri}   headers=${headers}   data=${updatePayload}
65     Should Be Equal As Strings              ${response.status_code}   200
66
67 Get CM Handle details and confirm it has been updated.
68     ${uri}=              Set Variable       ${ncmpBasePath}/v1/ch/ietfYang-PNFDemo
69     ${headers}=          Create Dictionary  Authorization=${auth}
70     ${response}=         GET On Session     CPS_URL   ${uri}   headers=${headers}
71     ${responseJson}=     Set Variable       ${response.json()}
72     ${schemaCount}=      Get length         ${responseJson}
73     Should Be Equal As Strings              ${response.status_code}   200
74     IF    "${responseJson['cmHandle']}" == "ietfYang-PNFDemo"
75            FOR   ${item}   IN  @{responseJson['publicCmHandleProperties']}
76                    Should Be Equal As Strings              "${item['Contact']}"  "newemailforstore@bookstore.com"
77            END
78     END
79
80 Delete cm handle
81     ${uri}=              Set Variable       ${ncmpInventoryBasePath}/v1/ch
82     ${headers}=          Create Dictionary  Content-Type=application/json   Authorization=${auth}
83     ${response}=         POST On Session    CPS_URL   ${uri}   headers=${headers}   data=${deletePayload}
84     Should Be Equal As Strings              ${response.status_code}   200
85
86 Get cm handle details and confirm it has been deleted
87     ${uri}=              Set Variable       ${ncmpBasePath}/v1/ch/CmHandleForDelete
88     ${headers}=          Create Dictionary  Authorization=${auth}
89     ${response}=         GET On Session     CPS_URL   ${uri}   headers=${headers}   expected_status=404
90
91 Get modules for registered data node
92     ${uri}=              Set Variable       ${ncmpBasePath}/v1/ch/ietfYang-PNFDemo/modules
93     ${headers}=          Create Dictionary  Authorization=${auth}
94     ${response}=         GET On Session     CPS_URL   ${uri}   headers=${headers}
95     Should Be Equal As Strings              ${response.status_code}   200
96     FOR   ${item}   IN  @{response.json()}
97             IF   "${item['moduleName']}" == "stores"
98                 Should Be Equal As Strings              "${item['revision']}"   "2020-09-15"
99             END
100     END