RIC-961:implement Xn and X2 component IDs correctly in E2M
[ric-plt/e2mgr.git] / E2Manager / models / e2_setup_response_message_test.go
1 //
2 // Copyright 2020 AT&T Intellectual Property
3 // Copyright 2020 Nokia
4 // Copyright (c) 2022 Samsung Electronics Co., Ltd. All Rights Reserved.
5 //
6 // Licensed under the Apache License, Version 2.0 (the "License");
7 // you may not use this file except in compliance with the License.
8 // You may obtain a copy of the License at
9 //
10 //      http://www.apache.org/licenses/LICENSE-2.0
11 //
12 // Unless required by applicable law or agreed to in writing, software
13 // distributed under the License is distributed on an "AS IS" BASIS,
14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 // See the License for the specific language governing permissions and
16 // limitations under the License.
17
18 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)
19 //  platform project (RICP).
20
21 package models_test
22
23 import (
24         "e2mgr/models"
25         "e2mgr/utils"
26         "encoding/xml"
27         "testing"
28
29         "github.com/stretchr/testify/assert"
30 )
31
32 const (
33         e2SetupRespGnbSetupRequestXmlPath             = "../tests/resources/setupRequest/setupRequest_gnb.xml"
34         e2SetupRespEnGnbSetupRequestXmlPath           = "../tests/resources/setupRequest/setupRequest_gnb_without_functions.xml"
35         e2SetupRespGnbSetupRequestIntTypeF1XmlPath    = "../tests/resources/setupRequest/setupRequest_gnb_inttype_f1.xml"
36         e2SetupRespGnbSetupRequestIntTypeE1XmlPath    = "../tests/resources/setupRequest/setupRequest_gnb_inttype_e1.xml"
37         e2SetupRespGnbSetupRequestIntTypeW1XmlPath    = "../tests/resources/setupRequest/setupRequest_gnb_inttype_w1.xml"
38         e2SetupRespGnbSetupRequestIntTypeS1XmlPath    = "../tests/resources/setupRequest/setupRequest_gnb_inttype_s1.xml"
39         e2SetupRespGnbSetupRequestIntTypeXngnbXmlPath = "../tests/resources/setupRequest/setupRequest_gnb_inttype_xngnb.xml"
40         e2SetupRespGnbSetupRequestIntTypeXnenbXmlPath = "../tests/resources/setupRequest/setupRequest_gnb_inttype_xnenb.xml"
41         e2SetupRespGnbSetupRequestIntTypeX2gnbXmlPath = "../tests/resources/setupRequest/setupRequest_gnb_inttype_x2gnb.xml"
42         e2SetupRespGnbSetupRequestIntTypeX2enbXmlPath = "../tests/resources/setupRequest/setupRequest_gnb_inttype_x2enb.xml"
43 )
44
45 func getE2SetupRespTestE2SetupRequest(t *testing.T, reqXmlPath string) *models.E2SetupRequestMessage {
46         xmlGnb := utils.ReadXmlFile(t, reqXmlPath)
47         setupRequest := &models.E2SetupRequestMessage{}
48         err := xml.Unmarshal(utils.NormalizeXml(xmlGnb), &setupRequest.E2APPDU)
49         assert.Nil(t, err)
50         return setupRequest
51 }
52
53 func TestNewE2SetupSuccessResponseMessageSuccess(t *testing.T) {
54         plmn := "23F749"
55         ricNearRtId := "10101010110011001110"
56         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestXmlPath)
57
58         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
59         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
60         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
61         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
62         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
63         assert.Equal(t, models.RanFunctionsAcceptedID, respIEs[2].ID)
64 }
65
66 func TestNewE2SetupSuccessResponseMessageWithoutRanFunctionsSuccess(t *testing.T) {
67         plmn := "23F749"
68         ricNearRtId := "10101010110011001110"
69         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespEnGnbSetupRequestXmlPath)
70
71         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
72         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
73         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
74         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
75         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
76         assert.Equal(t, 3, len(respIEs))
77 }
78
79 func TestNewE2SetupFailureResponseMessageSuccess(t *testing.T) {
80         waitTime := models.TimeToWaitEnum.V60s
81         cause := models.Cause{Misc: &models.CauseMisc{OmIntervention: &struct{}{}}}
82         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestXmlPath)
83
84         resp := models.NewE2SetupFailureResponseMessage(waitTime, cause, setupRequest)
85         respIEs := resp.E2APPDU.Outcome.(models.UnsuccessfulOutcome).Value.E2setupFailure.ProtocolIEs.E2setupFailureIEs
86         assert.Equal(t, models.CauseID, respIEs[1].ID)
87         assert.Equal(t, cause, respIEs[1].Value.Value.(models.Cause))
88 }
89
90 func TestNewE2SetupSuccessResponseMessageIntTypeF1Success(t *testing.T) {
91         plmn := "23F749"
92         ricNearRtId := "10101010110011001110"
93         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestIntTypeF1XmlPath)
94
95         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
96         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
97         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
98         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
99         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
100         assert.Equal(t, models.RanFunctionsAcceptedID, respIEs[2].ID)
101 }
102
103 func TestNewE2SetupSuccessResponseMessageIntTypeS1Success(t *testing.T) {
104         plmn := "23F749"
105         ricNearRtId := "10101010110011001110"
106         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestIntTypeS1XmlPath)
107
108         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
109         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
110         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
111         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
112         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
113         assert.Equal(t, models.RanFunctionsAcceptedID, respIEs[2].ID)
114 }
115
116 func TestNewE2SetupSuccessResponseMessageIntTypeE1Success(t *testing.T) {
117         plmn := "23F749"
118         ricNearRtId := "10101010110011001110"
119         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestIntTypeE1XmlPath)
120
121         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
122         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
123         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
124         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
125         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
126         assert.Equal(t, models.RanFunctionsAcceptedID, respIEs[2].ID)
127 }
128
129 func TestNewE2SetupSuccessResponseMessageIntTypeW1Success(t *testing.T) {
130         plmn := "23F749"
131         ricNearRtId := "10101010110011001110"
132         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestIntTypeW1XmlPath)
133
134         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
135         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
136         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
137         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
138         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
139         assert.Equal(t, models.RanFunctionsAcceptedID, respIEs[2].ID)
140 }
141
142 func TestNewE2SetupSuccessResponseMessageIntTypeXngnbSuccess(t *testing.T) {
143         plmn := "23F749"
144         ricNearRtId := "10101010110011001110"
145         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestIntTypeXngnbXmlPath)
146
147         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
148         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
149         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
150         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
151         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
152         assert.Equal(t, models.RanFunctionsAcceptedID, respIEs[2].ID)
153 }
154
155 func TestNewE2SetupSuccessResponseMessageIntTypeXnenbSuccess(t *testing.T) {
156         plmn := "23F749"
157         ricNearRtId := "10101010110011001110"
158         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestIntTypeXnenbXmlPath)
159
160         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
161         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
162         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
163         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
164         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
165         assert.Equal(t, models.RanFunctionsAcceptedID, respIEs[2].ID)
166 }
167
168 func TestNewE2SetupSuccessResponseMessageIntTypeX2gnbSuccess(t *testing.T) {
169         plmn := "23F749"
170         ricNearRtId := "10101010110011001110"
171         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestIntTypeX2gnbXmlPath)
172
173         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
174         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
175         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
176         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
177         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
178         assert.Equal(t, models.RanFunctionsAcceptedID, respIEs[2].ID)
179 }
180
181 func TestNewE2SetupSuccessResponseMessageIntTypeX2enbSuccess(t *testing.T) {
182         plmn := "23F749"
183         ricNearRtId := "10101010110011001110"
184         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestIntTypeX2enbXmlPath)
185
186         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
187         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
188         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
189         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
190         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
191         assert.Equal(t, models.RanFunctionsAcceptedID, respIEs[2].ID)
192 }