github.com/stakater/IngressMonitorController@v1.0.103/pkg/monitors/statuscake/statuscake-monitor_test.go (about)

     1  package statuscake
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/stakater/IngressMonitorController/pkg/config"
     8  	"github.com/stakater/IngressMonitorController/pkg/models"
     9  	"github.com/stakater/IngressMonitorController/pkg/util"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestAddMonitorWithCorrectValues(t *testing.T) {
    14  	config := config.GetControllerConfig()
    15  
    16  	service := StatusCakeMonitorService{}
    17  	provider := util.GetProviderWithName(config, "StatusCake")
    18  	if provider == nil {
    19  		panic("Failed to find provider")
    20  	}
    21  	service.Setup(*provider)
    22  
    23  	m := models.Monitor{Name: "google-test", URL: "https://google1.com"}
    24  	service.Add(m)
    25  
    26  	mRes, err := service.GetByName("google-test")
    27  
    28  	if err != nil {
    29  		t.Error("Error: " + err.Error())
    30  	}
    31  	if mRes.Name != m.Name || mRes.URL != m.URL {
    32  		t.Error("URL and name should be the same")
    33  	}
    34  	service.Remove(*mRes)
    35  
    36  	monitor, err := service.GetByName(mRes.Name)
    37  
    38  	if monitor != nil {
    39  		t.Error("Monitor should've been deleted ", monitor, err)
    40  	}
    41  }
    42  
    43  func TestUpdateMonitorWithCorrectValues(t *testing.T) {
    44  	config := config.GetControllerConfig()
    45  
    46  	service := StatusCakeMonitorService{}
    47  
    48  	provider := util.GetProviderWithName(config, "StatusCake")
    49  	if provider == nil {
    50  		panic("Failed to find provider")
    51  	}
    52  	service.Setup(*provider)
    53  
    54  	m := models.Monitor{Name: "google-test", URL: "https://google.com"}
    55  	service.Add(m)
    56  
    57  	mRes, err := service.GetByName("google-test")
    58  
    59  	if err != nil {
    60  		t.Error("Error: " + err.Error())
    61  	}
    62  	if mRes.Name != m.Name || mRes.URL != m.URL {
    63  		t.Error("URL and name should be the same")
    64  	}
    65  
    66  	mRes.URL = "https://facebook.com"
    67  
    68  	service.Update(*mRes)
    69  
    70  	mRes, err = service.GetByName("google-test")
    71  
    72  	if err != nil {
    73  		t.Error("Error: " + err.Error())
    74  	}
    75  	if mRes.URL != "https://facebook.com" {
    76  		t.Error("URL and name should be the same")
    77  	}
    78  
    79  	service.Remove(*mRes)
    80  
    81  	monitor, err := service.GetByName(mRes.Name)
    82  
    83  	if monitor != nil {
    84  		t.Error("Monitor should've been deleted ", monitor, err)
    85  	}
    86  }
    87  
    88  func TestBuildUpsertFormAnnotations(t *testing.T) {
    89  	m := models.Monitor{Name: "google-test", URL: "https://google.com"}
    90  	m.Annotations = map[string]string{
    91  		"statuscake.monitor.stakater.com/check-rate":       "60",
    92  		"statuscake.monitor.stakater.com/test-type":        "TCP",
    93  		"statuscake.monitor.stakater.com/paused":           "true",
    94  		"statuscake.monitor.stakater.com/ping-url":         "",
    95  		"statuscake.monitor.stakater.com/follow-redirect":  "true",
    96  		"statuscake.monitor.stakater.com/port":             "7070",
    97  		"statuscake.monitor.stakater.com/trigger-rate":     "1",
    98  		"statuscake.monitor.stakater.com/contact-group":    "123456,654321",
    99  		"statuscake.monitor.stakater.com/basic-auth-user":  "testuser",
   100  		"statuscake.monitor.stakater.com/node-locations":   "",
   101  		"statuscake.monitor.stakater.com/status-codes":     "500,501,502,503,504,505",
   102  		"statuscake.monitor.stakater.com/confirmation":     "2",
   103  		"statuscake.monitor.stakater.com/enable-ssl-alert": "true",
   104  		"statuscake.monitor.stakater.com/test-tags":        "test,testrun,uptime",
   105  		"statuscake.monitor.stakater.com/real-browser":     "true",
   106  	}
   107  
   108  	oldEnv := os.Getenv("testuser")
   109  	os.Setenv("testuser", "testpass")
   110  	defer os.Setenv("testuser", oldEnv)
   111  
   112  	vals := buildUpsertForm(m, "")
   113  	assert.Equal(t, "testuser", vals.Get("BasicUser"))
   114  	assert.Equal(t, "testpass", vals.Get("BasicPass"))
   115  	assert.Equal(t, "60", vals.Get("CheckRate"))
   116  	assert.Equal(t, "2", vals.Get("Confirmation"))
   117  	assert.Equal(t, "123456,654321", vals.Get("ContactGroup"))
   118  	assert.Equal(t, "1", vals.Get("EnableSSLAlert"))
   119  	assert.Equal(t, "1", vals.Get("FollowRedirect"))
   120  	assert.Equal(t, "", vals.Get("NodeLocations"))
   121  	assert.Equal(t, "1", vals.Get("Paused"))
   122  	assert.Equal(t, "", vals.Get("PingURL"))
   123  	assert.Equal(t, "7070", vals.Get("Port"))
   124  	assert.Equal(t, "1", vals.Get("RealBrowser"))
   125  	assert.Equal(t, "500,501,502,503,504,505", vals.Get("StatusCodes"))
   126  	assert.Equal(t, "test,testrun,uptime", vals.Get("TestTags"))
   127  	assert.Equal(t, "TCP", vals.Get("TestType"))
   128  	assert.Equal(t, "1", vals.Get("TriggerRate"))
   129  }