github.com/mongodb/grip@v0.0.0-20240213223901-f906268d82b9/send/jira_comment_test.go (about) 1 package send 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/mongodb/grip/level" 8 "github.com/mongodb/grip/message" 9 "github.com/stretchr/testify/suite" 10 ) 11 12 type JiraCommentSuite struct { 13 opts *JiraOptions 14 suite.Suite 15 } 16 17 func TestJiraCommentSuite(t *testing.T) { 18 suite.Run(t, new(JiraCommentSuite)) 19 } 20 21 func (j *JiraCommentSuite) SetupTest() { 22 j.opts = &JiraOptions{ 23 BaseURL: "url", 24 BasicAuthOpts: JiraBasicAuth{ 25 Username: "username", 26 Password: "password", 27 }, 28 client: &jiraClientMock{}, 29 Name: "1234", 30 } 31 } 32 33 func (j *JiraCommentSuite) TestMockSenderWithNewConstructor() { 34 sender, err := NewJiraCommentLogger(context.Background(), "1234", j.opts, LevelInfo{level.Trace, level.Info}) 35 j.NotNil(sender) 36 j.NoError(err) 37 } 38 39 func (j *JiraCommentSuite) TestConstructorMustCreate() { 40 j.opts.client = &jiraClientMock{failCreate: true} 41 sender, err := NewJiraCommentLogger(context.Background(), "1234", j.opts, LevelInfo{level.Trace, level.Info}) 42 j.Nil(sender) 43 j.Error(err) 44 } 45 46 func (j *JiraCommentSuite) TestConstructorMustPassAuthTest() { 47 j.opts.client = &jiraClientMock{failAuth: true} 48 sender, err := NewJiraCommentLogger(context.Background(), "1234", j.opts, LevelInfo{level.Trace, level.Info}) 49 j.Nil(sender) 50 j.Error(err) 51 } 52 53 func (j *JiraCommentSuite) TestConstructorErrorsWithInvalidConfigs() { 54 sender, err := NewJiraCommentLogger(context.Background(), "1234", nil, LevelInfo{level.Trace, level.Info}) 55 j.Nil(sender) 56 j.Error(err) 57 58 sender, err = NewJiraLogger(context.Background(), &JiraOptions{}, LevelInfo{level.Trace, level.Info}) 59 j.Nil(sender) 60 j.Error(err) 61 } 62 63 func (j *JiraCommentSuite) TestSendMethod() { 64 numShouldHaveSent := 0 65 sender, err := NewJiraCommentLogger(context.Background(), "1234", j.opts, LevelInfo{level.Trace, level.Info}) 66 j.NoError(err) 67 j.Require().NotNil(sender) 68 69 mock, ok := j.opts.client.(*jiraClientMock) 70 j.True(ok) 71 j.Equal(mock.numSent, 0) 72 73 m := message.NewDefaultMessage(level.Debug, "sending debug level comment") 74 sender.Send(m) 75 j.Equal(mock.numSent, numShouldHaveSent) 76 77 m = message.NewDefaultMessage(level.Alert, "sending alert level comment") 78 sender.Send(m) 79 numShouldHaveSent++ 80 j.Equal(mock.numSent, numShouldHaveSent) 81 82 m = message.NewDefaultMessage(level.Emergency, "sending emergency level comment") 83 sender.Send(m) 84 numShouldHaveSent++ 85 j.Equal(mock.numSent, numShouldHaveSent) 86 } 87 88 func (j *JiraCommentSuite) TestSendMethodWithError() { 89 sender, err := NewJiraCommentLogger(context.Background(), "1234", j.opts, LevelInfo{level.Trace, level.Info}) 90 j.NotNil(sender) 91 j.NoError(err) 92 93 mock, ok := j.opts.client.(*jiraClientMock) 94 j.True(ok) 95 j.Equal(mock.numSent, 0) 96 j.False(mock.failSend) 97 98 m := message.NewDefaultMessage(level.Alert, "test") 99 sender.Send(m) 100 j.Equal(mock.numSent, 1) 101 102 mock.failSend = true 103 sender.Send(m) 104 j.Equal(mock.numSent, 1) 105 } 106 107 func (j *JiraCommentSuite) TestCreateMethodChangesClientState() { 108 base := &jiraClientImpl{} 109 new := &jiraClientImpl{} 110 111 j.Equal(base, new) 112 j.NoError(new.CreateClient(nil, "foo")) 113 j.NotEqual(base, new) 114 } 115 116 func (j *JiraCommentSuite) TestSendWithJiraIssueComposer() { 117 c := message.NewJIRACommentMessage(level.Notice, "ABC-123", "Hi") 118 119 sender, err := NewJiraCommentLogger(context.Background(), "XYZ-123", j.opts, LevelInfo{level.Trace, level.Info}) 120 j.NoError(err) 121 j.Require().NotNil(sender) 122 123 sender.Send(c) 124 125 mock, ok := j.opts.client.(*jiraClientMock) 126 j.True(ok) 127 j.Equal(1, mock.numSent) 128 j.Equal("ABC-123", mock.lastIssue) 129 }