From 5f33d054916ad03fbfe66f77f7e8471ee6669e62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Wo=C5=BAniak?= Date: Mon, 31 Oct 2022 23:37:12 +0100 Subject: [PATCH] Added tests --- README.md | 15 ++++++++ main_test.go | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 main_test.go diff --git a/README.md b/README.md index 79b54f0..2b7dd9b 100644 --- a/README.md +++ b/README.md @@ -111,3 +111,18 @@ Rotation w52-25.12-1.1 has been created for schedule YEAR_2023. ### Schedule settings in OpsGenie ![alt text](https://github.com/y0rune/opsgenie-scheduler-creator/blob/main/screenshots/OpsGenieSchedule.png) ![alt text](https://github.com/y0rune/opsgenie-scheduler-creator/blob/main/screenshots/OpsGenieUpdateRotation.png) +## Test + +### Run all tests + +```bash +export OPSGENIE_API_KEY="XXXXXXXXXXXXXXX" +go test -v +``` + +Alternative: + +```bash +go test --apiKey XXXXXXXXXXXXXXXXXXXXXX -v +``` + diff --git a/main_test.go b/main_test.go new file mode 100644 index 0000000..b04b134 --- /dev/null +++ b/main_test.go @@ -0,0 +1,107 @@ +package main + +import ( + "flag" + "fmt" + "os/exec" + "testing" + + "github.com/opsgenie/opsgenie-go-sdk-v2/schedule" +) + +var scheduleID string +var scheduleClient *schedule.Client +var scheduleTest schedule.CreateResult +var apiKey *string = flag.String("apiKey", "", "# ApiKey for use in that script.\n# You can use the export OPSGENIE_API_KEY=\"XXXXXXXXXXXXXXX\"") + +const scheduleName string = "Testing_Schedule" +const scheduleTimezone string = "Europe/Warsaw" +const scheduleTeam string = "TestTeam" +const scheduleYear int = 2022 +const scheduleEnabledFlag bool = false +const expetedNameOfRotation string = "w21-23.5-30.5" + +func TestCreateApiClient(t *testing.T) { + flag.Parse() + scheduleClient = createApi(*apiKey) +} + +func TestCreateSchedule(t *testing.T) { + scheduleTest = scheduleCreator(*scheduleClient, scheduleName, + scheduleTimezone, scheduleTeam, + scheduleEnabledFlag) + + if scheduleTest.Name != scheduleName { + t.Fatalf("Schedule has been NOT created correctly.") + } +} + +func TestCreateRestriction(t *testing.T) { + restrictionCreator(*scheduleClient, scheduleTest.Id, scheduleYear) + + listRotation := getListRotation(*scheduleClient, scheduleTest.Id) + if (listRotation.Rotations[20].Name) != expetedNameOfRotation { + t.Fatalf("Schedule has been NOT created correctly.") + } +} + +func TestDeleteSchedule(t *testing.T) { + deleteSchedule(*scheduleClient, scheduleTest.Id) +} + +func TestFailedCreateScheduleCommand(t *testing.T) { + cmd := exec.Command( + "go", "run", + "--scheduleTeam", scheduleTeam, + "--scheduleName", scheduleName, + "--scheduleYear", fmt.Sprint(scheduleYear), + ) + + err := cmd.Run() + if err == nil { + t.Fatalf("Command has been failed") + } +} + +func TestCreateViaGoRunScheduleCommand(t *testing.T) { + cmd := exec.Command( + "go", "run", + "main.go", + "--apiKey", *apiKey, + "--scheduleTeam", scheduleTeam, + "--scheduleName", scheduleName, + "--scheduleYear", fmt.Sprint(scheduleYear), + "--delete", + ) + + err := cmd.Run() + if err != nil { + fmt.Println(cmd) + t.Fatalf("Command has been failed.\nCommand: %s", err) + } +} + +func TestBuildCommand(t *testing.T) { + cmd := exec.Command("make", "build") + + err := cmd.Run() + if err != nil { + t.Fatalf("Command has been failed") + } +} + +func TestCreateScheduleCommand(t *testing.T) { + cmd := exec.Command( + "./opsgenie-scheduler-rotation", + "--apiKey", *apiKey, + "--scheduleTeam", scheduleTeam, + "--scheduleName", scheduleName, + "--scheduleYear", fmt.Sprint(scheduleYear), + "--delete", + ) + + err := cmd.Run() + if err != nil { + t.Fatalf("Command has been failed.\nCommand: %s", err) + } +}