Squash-merging e2ap-v2.0 branch
[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 )
36
37 func getE2SetupRespTestE2SetupRequest(t *testing.T, reqXmlPath string) *models.E2SetupRequestMessage {
38         xmlGnb := utils.ReadXmlFile(t, reqXmlPath)
39         setupRequest := &models.E2SetupRequestMessage{}
40         err := xml.Unmarshal(utils.NormalizeXml(xmlGnb), &setupRequest.E2APPDU)
41         assert.Nil(t, err)
42         return setupRequest
43 }
44
45 func TestNewE2SetupSuccessResponseMessageSuccess(t *testing.T) {
46         plmn := "23F749"
47         ricNearRtId := "10101010110011001110"
48         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestXmlPath)
49
50         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
51         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
52         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
53         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
54         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
55         assert.Equal(t, models.RanFunctionsAcceptedID, respIEs[2].ID)
56 }
57
58 func TestNewE2SetupSuccessResponseMessageWithoutRanFunctionsSuccess(t *testing.T) {
59         plmn := "23F749"
60         ricNearRtId := "10101010110011001110"
61         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespEnGnbSetupRequestXmlPath)
62
63         resp := models.NewE2SetupSuccessResponseMessage(plmn, ricNearRtId, setupRequest)
64         respIEs := resp.E2APPDU.Outcome.(models.SuccessfulOutcome).Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs
65         assert.Equal(t, models.GlobalRicID, respIEs[1].ID)
66         assert.Equal(t, plmn, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.PLMNIdentity)
67         assert.Equal(t, ricNearRtId, respIEs[1].Value.(models.GlobalRICID).GlobalRICID.RicID)
68         assert.Equal(t, 3, len(respIEs))
69 }
70
71 func TestNewE2SetupFailureResponseMessageSuccess(t *testing.T) {
72         waitTime := models.TimeToWaitEnum.V60s
73         cause := models.Cause{Misc: &models.CauseMisc{OmIntervention: &struct{}{}}}
74         setupRequest := getE2SetupRespTestE2SetupRequest(t, e2SetupRespGnbSetupRequestXmlPath)
75
76         resp := models.NewE2SetupFailureResponseMessage(waitTime, cause, setupRequest)
77         respIEs := resp.E2APPDU.Outcome.(models.UnsuccessfulOutcome).Value.E2setupFailure.ProtocolIEs.E2setupFailureIEs
78         assert.Equal(t, models.CauseID, respIEs[1].ID)
79         assert.Equal(t, cause, respIEs[1].Value.Value.(models.Cause))
80 }