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.
22 "github.com/stretchr/testify/suite"
31 type do func(w http.ResponseWriter)
33 type QueryXAppsStatusTestSuite struct {
39 // suite setup creates the HTTP server
40 func (suite *QueryXAppsStatusTestSuite) SetupSuite() {
41 os.Unsetenv("http_proxy")
42 os.Unsetenv("HTTP_PROXY")
44 suite.listener, err = net.Listen("tcp", ":0")
46 go runXAppMgr(suite.listener, "/test_url/", suite)
49 func runXAppMgr(listener net.Listener, url string, suite *QueryXAppsStatusTestSuite) {
51 http.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) {
57 http.Serve(listener, nil)
60 func (suite *QueryXAppsStatusTestSuite) TestQueryXAppsStatusFailsWithTimeout() {
61 do_sleep := func(w http.ResponseWriter) {
62 time.Sleep(time.Second * 2)
64 suite.xAppMgrFunc = do_sleep
66 data, err := queryXAppsStatus("http://"+suite.listener.Addr().String()+"/test_url/", 1)
69 e, ok := err.(*url.Error)
71 suite.Equal(e.Timeout(), true)
74 func (suite *QueryXAppsStatusTestSuite) TestQueryXAppsStatusFailsWithAnErrorReply() {
75 do_reply_with_err := func(w http.ResponseWriter) {
76 http.Error(w, "405 method not allowed", http.StatusMethodNotAllowed)
78 suite.xAppMgrFunc = do_reply_with_err
80 data, err := queryXAppsStatus("http://"+suite.listener.Addr().String()+"/test_url/", 1)
83 suite.Equal("405 Method Not Allowed", err.Error())
86 func (suite *QueryXAppsStatusTestSuite) TestQueryXAppsStatusOk() {
87 do_reply := func(w http.ResponseWriter) {
88 fmt.Fprintf(w, "reply message")
90 suite.xAppMgrFunc = do_reply
92 data, err := queryXAppsStatus("http://"+suite.listener.Addr().String()+"/test_url/", 1)
95 suite.Equal(data, []byte("reply message"))
98 func TestQueryXAppsStatusTestSuite(t *testing.T) {
99 suite.Run(t, new(QueryXAppsStatusTestSuite))