github.com/mponton/terratest@v0.44.0/modules/slack/validate_test.go (about)

     1  package slack
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/slack-go/slack"
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/mponton/terratest/modules/environment"
    13  	"github.com/mponton/terratest/modules/random"
    14  	"github.com/mponton/terratest/modules/retry"
    15  )
    16  
    17  const (
    18  	slackTokenEnv     = "SLACK_TOKEN_FOR_TEST"
    19  	slackChannelIDEnv = "SLACK_CHANNEL_ID_FOR_TEST"
    20  )
    21  
    22  func TestValidateSlackMessage(t *testing.T) {
    23  	t.Parallel()
    24  
    25  	environment.RequireEnvVar(t, slackTokenEnv)
    26  	environment.RequireEnvVar(t, slackChannelIDEnv)
    27  
    28  	token := os.Getenv(slackTokenEnv)
    29  	channelID := os.Getenv(slackChannelIDEnv)
    30  
    31  	uniqueID := random.UniqueId()
    32  	msgTxt := fmt.Sprintf("Test message from terratest: %s", uniqueID)
    33  
    34  	slackClt := slack.New(token)
    35  
    36  	_, _, err := slackClt.PostMessage(
    37  		channelID,
    38  		slack.MsgOptionText(msgTxt, false),
    39  	)
    40  	require.NoError(t, err)
    41  
    42  	retry.DoWithRetry(
    43  		t,
    44  		"wait for slack message",
    45  		10, 10*time.Second,
    46  		func() (string, error) {
    47  			err := ValidateExpectedSlackMessageE(t, token, channelID, msgTxt, 10, 5*time.Minute)
    48  			return "", err
    49  		},
    50  	)
    51  }