trpc.group/trpc-go/trpc-go@v1.0.3/restful/pattern_test.go (about)

     1  //
     2  //
     3  // Tencent is pleased to support the open source community by making tRPC available.
     4  //
     5  // Copyright (C) 2023 THL A29 Limited, a Tencent company.
     6  // All rights reserved.
     7  //
     8  // If you have downloaded a copy of the tRPC source code from Tencent,
     9  // please note that tRPC source code is licensed under the  Apache 2.0 License,
    10  // A copy of the Apache 2.0 License is included in this file.
    11  //
    12  //
    13  
    14  package restful_test
    15  
    16  import (
    17  	"testing"
    18  
    19  	"github.com/stretchr/testify/require"
    20  	"trpc.group/trpc-go/trpc-go/restful"
    21  )
    22  
    23  func TestPattern(t *testing.T) {
    24  	for _, test := range []struct {
    25  		input   string
    26  		wantErr bool
    27  		desc    string
    28  	}{
    29  		{
    30  			input:   "/",
    31  			wantErr: true,
    32  			desc:    "test blank url path",
    33  		},
    34  		{
    35  			input:   "!@#$%^&",
    36  			wantErr: true,
    37  			desc:    "test invalid url path",
    38  		},
    39  		{
    40  			input:   "/foobar/foo/{bar}",
    41  			wantErr: false,
    42  			desc:    "test valid url path",
    43  		},
    44  	} {
    45  		_, err := restful.Parse(test.input)
    46  		require.Equal(t, test.wantErr, err != nil, test.desc)
    47  		if test.wantErr {
    48  			require.Panics(t, func() { restful.Enforce(test.input) }, test.desc)
    49  		} else {
    50  			require.NotPanics(t, func() { restful.Enforce(test.input) }, test.desc)
    51  		}
    52  	}
    53  }