Misc improvements in GO code
[nonrtric.git] / test / usecases / oruclosedlooprecovery / goversion / internal / config / config_test.go
1 // -
2 //   ========================LICENSE_START=================================
3 //   O-RAN-SC
4 //   %%
5 //   Copyright (C) 2021: Nordix Foundation
6 //   %%
7 //   Licensed under the Apache License, Version 2.0 (the "License");
8 //   you may not use this file except in compliance with the License.
9 //   You may obtain a copy of the License at
10 //
11 //        http://www.apache.org/licenses/LICENSE-2.0
12 //
13 //   Unless required by applicable law or agreed to in writing, software
14 //   distributed under the License is distributed on an "AS IS" BASIS,
15 //   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 //   See the License for the specific language governing permissions and
17 //   limitations under the License.
18 //   ========================LICENSE_END===================================
19 //
20
21 package config
22
23 import (
24         "bytes"
25         "os"
26         "testing"
27
28         log "github.com/sirupsen/logrus"
29         "github.com/stretchr/testify/require"
30 )
31
32 func TestNew_envVarsSetConfigContainSetValues(t *testing.T) {
33         assertions := require.New(t)
34         os.Setenv("LOG_LEVEL", "Debug")
35         os.Setenv("CONSUMER_HOST", "consumerHost")
36         os.Setenv("CONSUMER_PORT", "8095")
37         os.Setenv("INFO_COORD_ADDR", "infoCoordAddr")
38         os.Setenv("SDNR_HOST", "sdnrHost")
39         os.Setenv("SDNR_PORT", "3908")
40         os.Setenv("SDNR_USER", "admin")
41         os.Setenv("SDNR_PASSWORD", "pwd")
42         os.Setenv("ORU_TO_ODU_MAP_FILE", "file")
43         t.Cleanup(func() {
44                 os.Clearenv()
45         })
46         wantConfig := Config{
47                 LogLevel:               log.DebugLevel,
48                 ConsumerHost:           "consumerHost",
49                 ConsumerPort:           8095,
50                 InfoCoordinatorAddress: "infoCoordAddr",
51                 SDNRHost:               "sdnrHost",
52                 SDNRPort:               3908,
53                 SDNRUser:               "admin",
54                 SDNPassword:            "pwd",
55                 ORUToODUMapFile:        "file",
56         }
57
58         got := New()
59         assertions.Equal(&wantConfig, got)
60 }
61
62 func TestNew_faultyIntValueSetConfigContainDefaultValueAndWarnInLog(t *testing.T) {
63         assertions := require.New(t)
64         var buf bytes.Buffer
65         log.SetOutput(&buf)
66
67         os.Setenv("CONSUMER_PORT", "wrong")
68         t.Cleanup(func() {
69                 log.SetOutput(os.Stderr)
70                 os.Clearenv()
71         })
72         wantConfig := Config{
73                 LogLevel:               log.InfoLevel,
74                 ConsumerHost:           "",
75                 ConsumerPort:           0,
76                 InfoCoordinatorAddress: "http://enrichmentservice:8083",
77                 SDNRHost:               "http://localhost",
78                 SDNRPort:               3904,
79                 SDNRUser:               "admin",
80                 SDNPassword:            "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U",
81                 ORUToODUMapFile:        "o-ru-to-o-du-map.csv",
82         }
83
84         got := New()
85         assertions.Equal(&wantConfig, got)
86
87         logString := buf.String()
88         assertions.Contains(logString, "Invalid int value: wrong for variable: CONSUMER_PORT. Default value: 0 will be used")
89 }
90
91 func TestNew_envFaultyLogLevelConfigContainDefaultValues(t *testing.T) {
92         assertions := require.New(t)
93         var buf bytes.Buffer
94         log.SetOutput(&buf)
95
96         os.Setenv("LOG_LEVEL", "wrong")
97         t.Cleanup(func() {
98                 log.SetOutput(os.Stderr)
99                 os.Clearenv()
100         })
101         wantConfig := Config{
102                 LogLevel:               log.InfoLevel,
103                 ConsumerHost:           "",
104                 ConsumerPort:           0,
105                 InfoCoordinatorAddress: "http://enrichmentservice:8083",
106                 SDNRHost:               "http://localhost",
107                 SDNRPort:               3904,
108                 SDNRUser:               "admin",
109                 SDNPassword:            "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U",
110                 ORUToODUMapFile:        "o-ru-to-o-du-map.csv",
111         }
112         got := New()
113         assertions.Equal(&wantConfig, got)
114         logString := buf.String()
115         assertions.Contains(logString, "Invalid log level: wrong. Log level will be Info!")
116 }