Skip to content

Commit

Permalink
Merge 66c4c5d into 07d83b8
Browse files Browse the repository at this point in the history
  • Loading branch information
piotrpio committed Feb 23, 2023
2 parents 07d83b8 + 66c4c5d commit 45eba47
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
4 changes: 2 additions & 2 deletions jserrors.go
Expand Up @@ -80,10 +80,10 @@ var (
// ErrNotJSMessage is returned when attempting to get metadata from non JetStream message .
ErrNotJSMessage JetStreamError = &jsError{message: "not a jetstream message"}

// ErrInvalidStreamName is returned when the provided stream name is invalid (contains '.').
// ErrInvalidStreamName is returned when the provided stream name is invalid (contains '.' or ' ').
ErrInvalidStreamName JetStreamError = &jsError{message: "invalid stream name"}

// ErrInvalidConsumerName is returned when the provided consumer name is invalid (contains '.').
// ErrInvalidConsumerName is returned when the provided consumer name is invalid (contains '.' or ' ').
ErrInvalidConsumerName JetStreamError = &jsError{message: "invalid consumer name"}

// ErrNoMatchingStream is returned when stream lookup by subject is unsuccessful.
Expand Down
7 changes: 4 additions & 3 deletions jsm.go
Expand Up @@ -421,19 +421,20 @@ func checkStreamName(stream string) error {
if stream == _EMPTY_ {
return ErrStreamNameRequired
}
if strings.Contains(stream, ".") {
if strings.ContainsAny(stream, ". ") {
return ErrInvalidStreamName
}
return nil
}

// Check that the durable name exists and is valid, that is, that it does not contain any "."
// Check that the consumer name is not empty and is valid (does not contain "." and " ").
// Additional consumer name validation is done in nats-server.
// Returns ErrConsumerNameRequired if consumer name is empty, ErrInvalidConsumerName is invalid, otherwise nil
func checkConsumerName(consumer string) error {
if consumer == _EMPTY_ {
return ErrConsumerNameRequired
}
if strings.Contains(consumer, ".") {
if strings.ContainsAny(consumer, ". ") {
return ErrInvalidConsumerName
}
return nil
Expand Down
6 changes: 6 additions & 0 deletions test/js_test.go
Expand Up @@ -1781,6 +1781,9 @@ func TestJetStreamManagement(t *testing.T) {
if _, err := js.AddStream(&nats.StreamConfig{Name: "bad.stream.name"}); err != nats.ErrInvalidStreamName {
t.Fatalf("Expected %v, got %v", nats.ErrInvalidStreamName, err)
}
if _, err := js.AddStream(&nats.StreamConfig{Name: "bad stream name"}); err != nats.ErrInvalidStreamName {
t.Fatalf("Expected %v, got %v", nats.ErrInvalidStreamName, err)
}
})

t.Run("bad stream info", func(t *testing.T) {
Expand Down Expand Up @@ -1956,6 +1959,9 @@ func TestJetStreamManagement(t *testing.T) {
if _, err = js.AddConsumer("foo", &nats.ConsumerConfig{Durable: "test.durable"}); err != nats.ErrInvalidConsumerName {
t.Fatalf("Expected: %v; got: %v", nats.ErrInvalidConsumerName, err)
}
if _, err = js.AddConsumer("foo", &nats.ConsumerConfig{Durable: "test durable"}); err != nats.ErrInvalidConsumerName {
t.Fatalf("Expected: %v; got: %v", nats.ErrInvalidConsumerName, err)
}
})

t.Run("consumer with given name already exists, configs do not match", func(t *testing.T) {
Expand Down

0 comments on commit 45eba47

Please sign in to comment.