2 * Copyright (c) 2019 AT&T Intellectual Property.
3 * Copyright (c) 2018-2019 Nokia.
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
29 "github.com/stretchr/testify/suite"
32 type do func(w http.ResponseWriter)
34 type QueryXAppsConfigTestSuite struct {
40 // suite setup creates the HTTP server
41 func (suite *QueryXAppsConfigTestSuite) SetupSuite() {
42 os.Unsetenv("http_proxy")
43 os.Unsetenv("HTTP_PROXY")
45 suite.listener, err = net.Listen("tcp", ":0")
47 go runXAppMgr(suite.listener, "/test_url/", suite)
50 func runXAppMgr(listener net.Listener, url string, suite *QueryXAppsConfigTestSuite) {
52 http.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) {
58 http.Serve(listener, nil)
61 func (suite *QueryXAppsConfigTestSuite) TestQueryXAppsConfigFailsWithTimeout() {
62 doSleep := func(w http.ResponseWriter) {
63 time.Sleep(time.Second * 2)
65 suite.xAppMgrFunc = doSleep
67 data, err := queryXAppsConfig("http://"+suite.listener.Addr().String()+"/test_url/", 1)
68 suite.Equal([]byte("{}"), data)
70 e, ok := err.(*url.Error)
72 suite.Equal(e.Timeout(), true)
75 func (suite *QueryXAppsConfigTestSuite) TestQueryXAppsConfigFailsWithAnErrorReply() {
76 doReplyWithErr := func(w http.ResponseWriter) {
77 http.Error(w, "405 method not allowed", http.StatusMethodNotAllowed)
79 suite.xAppMgrFunc = doReplyWithErr
81 data, err := queryXAppsConfig("http://"+suite.listener.Addr().String()+"/test_url/", 1)
82 suite.Equal([]byte("{}"), data)
84 suite.Equal("405 Method Not Allowed", err.Error())
87 func (suite *QueryXAppsConfigTestSuite) TestQueryXAppsConfigOk() {
88 doReply := func(w http.ResponseWriter) {
89 fmt.Fprintf(w, "reply message")
91 suite.xAppMgrFunc = doReply
93 data, err := queryXAppsConfig("http://"+suite.listener.Addr().String()+"/test_url/", 1)
96 suite.Equal(data, []byte("reply message"))
99 func TestQueryXAppsConfigTestSuite(t *testing.T) {
100 suite.Run(t, new(QueryXAppsConfigTestSuite))