diff --git a/admin_test.go b/admin_test.go index edafc44d9b..3b02fbafb6 100644 --- a/admin_test.go +++ b/admin_test.go @@ -246,6 +246,35 @@ func TestClusterAdminDeleteEmptyTopic(t *testing.T) { } } +func TestClusterAdminDeleteTopicError(t *testing.T) { + seedBroker := NewMockBroker(t, 1) + defer seedBroker.Close() + + seedBroker.SetHandlerByMap(map[string]MockResponse{ + "MetadataRequest": NewMockMetadataResponse(t). + SetController(seedBroker.BrokerID()). + SetBroker(seedBroker.Addr(), seedBroker.BrokerID()), + "DeleteTopicsRequest": NewMockDeleteTopicsResponse(t).SetError(ErrTopicDeletionDisabled), + }) + + config := NewTestConfig() + config.Version = V0_10_2_0 + admin, err := NewClusterAdmin([]string{seedBroker.Addr()}, config) + if err != nil { + t.Fatal(err) + } + + err = admin.DeleteTopic("my_topic") + if !errors.Is(err, ErrTopicDeletionDisabled) { + t.Fatal(err) + } + + err = admin.Close() + if err != nil { + t.Fatal(err) + } +} + func TestClusterAdminCreatePartitions(t *testing.T) { seedBroker := NewMockBroker(t, 1) defer seedBroker.Close() diff --git a/mockresponses.go b/mockresponses.go index 15b4367f99..c7d4fdf189 100644 --- a/mockresponses.go +++ b/mockresponses.go @@ -667,7 +667,8 @@ func (mr *MockCreateTopicsResponse) For(reqBody versionedDecoder) encoderWithHea } type MockDeleteTopicsResponse struct { - t TestReporter + t TestReporter + error KError } func NewMockDeleteTopicsResponse(t TestReporter) *MockDeleteTopicsResponse { @@ -680,12 +681,17 @@ func (mr *MockDeleteTopicsResponse) For(reqBody versionedDecoder) encoderWithHea res.TopicErrorCodes = make(map[string]KError) for _, topic := range req.Topics { - res.TopicErrorCodes[topic] = ErrNoError + res.TopicErrorCodes[topic] = mr.error } res.Version = req.Version return res } +func (mr *MockDeleteTopicsResponse) SetError(kerror KError) *MockDeleteTopicsResponse { + mr.error = kerror + return mr +} + type MockCreatePartitionsResponse struct { t TestReporter }