|
package server_test
|
Documentation in literate-programming-style is available at:
https://redhatinsights.github.io/insights-operator-controller/packages/server/cluster_test.html
|
import (
"net/http"
"testing"
)
|
TestNonErrorsClusterWithoutData tests OK behaviour with empty DB (schema only)
|
func TestNonErrorsClusterWithoutData ( t * testing . T ) {
serv := MockedIOCServer ( t , false )
defer serv . Storage . Close ( )
nonErrorTT := [ ] testCase {
{ "GetClusters OK" , serv . GetClusters , http . StatusOK , "GET" , true , requestData { } , requestData { } , "" } ,
{ "GetClusterByID Not found" , serv . GetClusterByID , http . StatusNotFound , "GET" , true , requestData { "id" : "1" } , requestData { } , "" } ,
{ "SearchCluster Not found" , serv . SearchCluster , http . StatusNotFound , "GET" , true , requestData { } , requestData { "id" : "1" } , "" } ,
{ "SearchCluster Not found" , serv . SearchCluster , http . StatusNotFound , "GET" , true , requestData { } , requestData { "name" : "test" } , "" } ,
{ "DeleteCluster Not found" , serv . DeleteCluster , http . StatusNotFound , "DELETE" , false , requestData { "id" : "2" } , requestData { } , "" } ,
{ "DeleteCluster Not found" , serv . DeleteClusterByName , http . StatusNotFound , "DELETE" , false , requestData { "name" : "foobar" } , requestData { } , "" } ,
{ "NewCluster OK" , serv . NewCluster , http . StatusCreated , "POST" , false , requestData { "name" : "test" } , requestData { } , "" } ,
}
for _ , tt := range nonErrorTT {
testRequest ( t , tt )
}
}
|
TestNonErrorsClusterWithData tests OK behaviour with mock data
|
func TestNonErrorsClusterWithData ( t * testing . T ) {
serv := MockedIOCServer ( t , true )
defer serv . Storage . Close ( )
nonErrorTT := [ ] testCase {
{ "GetClusters OK" , serv . GetClusters , http . StatusOK , "GET" , true , requestData { } , requestData { } , "" } ,
{ "NewCluster OK" , serv . NewCluster , http . StatusCreated , "POST" , false , requestData { "name" : "test" } , requestData { } , "" } ,
{ "GetClusterByID OK" , serv . GetClusterByID , http . StatusOK , "GET" , true , requestData { "id" : "1" } , requestData { } , "" } ,
{ "SearchCluster OK" , serv . SearchCluster , http . StatusOK , "GET" , true , requestData { } , requestData { "name" : "test" } , "" } ,
{ "DeleteCluster OK" , serv . DeleteCluster , http . StatusOK , "DELETE" , false , requestData { "id" : "1" } , requestData { } , "" } ,
{ "DeleteCluster OK" , serv . DeleteClusterByName , http . StatusNotFound , "DELETE" , false , requestData { "name" : "foobar" } , requestData { } , "" } ,
}
for _ , tt := range nonErrorTT {
testRequest ( t , tt )
}
}
|
TestDatabaseErrorsCluster tests unexpected behaviour by closing DB connection (consistency check)
|
func TestDatabaseErrorCluster ( t * testing . T ) {
serv := MockedIOCServer ( t , false )
dbErrorTT := [ ] testCase {
{ "GetClusters DB error" , serv . GetClusters , http . StatusInternalServerError , "GET" , true , requestData { } , requestData { } , "" } ,
{ "NewCluster DB error" , serv . NewCluster , http . StatusInternalServerError , "POST" , false , requestData { "name" : "test" } , requestData { } , "" } ,
{ "GetClusterByID DB error" , serv . GetClusterByID , http . StatusInternalServerError , "GET" , true , requestData { "id" : "1" } , requestData { } , "" } ,
{ "DeleteCluster DB error" , serv . DeleteCluster , http . StatusInternalServerError , "DELETE" , false , requestData { "id" : "1" } , requestData { } , "" } ,
{ "DeleteCluster DB error" , serv . DeleteClusterByName , http . StatusNotFound , "DELETE" , false , requestData { "name" : "foobar" } , requestData { } , "" } ,
{ "SearchCluster DB error" , serv . SearchCluster , http . StatusInternalServerError , "GET" , true , requestData { } , requestData { "name" : "test" } , "" } ,
}
|
close DB
|
serv . Storage . Close ( )
for _ , tt := range dbErrorTT {
testRequest ( t , tt )
}
}
|
TestParameterErrorsCluster tests wrong request parameters
|
func TestParameterErrorsCluster ( t * testing . T ) {
serv := MockedIOCServer ( t , true )
defer serv . Storage . Close ( )
paramErrorTT := [ ] testCase {
{ "NewCluster no param" , serv . NewCluster , http . StatusBadRequest , "POST" , false , requestData { } , requestData { } , "" } ,
{ "NewCluster empty name key" , serv . NewCluster , http . StatusBadRequest , "POST" , false , requestData { "name" : "" } , requestData { } , "" } ,
{ "GetClusterByID no param" , serv . GetClusterByID , http . StatusBadRequest , "GET" , true , requestData { } , requestData { } , "" } ,
{ "GetClusterByID non-int id" , serv . GetClusterByID , http . StatusBadRequest , "GET" , true , requestData { "id" : "non-int" } , requestData { } , "" } ,
{ "DeleteCluster no param" , serv . DeleteCluster , http . StatusBadRequest , "DELETE" , false , requestData { } , requestData { } , "" } ,
{ "DeleteCluster by name" , serv . DeleteCluster , http . StatusBadRequest , "DELETE" , false , requestData { "name" : "test" } , requestData { } , "" } ,
{ "DeleteCluster by name" , serv . DeleteClusterByName , http . StatusBadRequest , "DELETE" , false , requestData { "foo" : "test" } , requestData { } , "" } ,
{ "DeleteCluster by non-int id" , serv . DeleteCluster , http . StatusBadRequest , "DELETE" , false , requestData { "id" : "non-int" } , requestData { } , "" } ,
{ "SearchCluster no params" , serv . SearchCluster , http . StatusBadRequest , "GET" , true , requestData { } , requestData { } , "" } ,
{ "SearchCluster wrong data type" , serv . SearchCluster , http . StatusBadRequest , "GET" , true , requestData { "name" : "" } , requestData { } , "" } ,
}
for _ , tt := range paramErrorTT {
testRequest ( t , tt )
}
}
|