github.com/cloudwego/dynamicgo@v0.2.6-0.20240519101509-707f41b6b834/thrift/annotation/key_mapping_test.go (about) 1 /** 2 * Copyright 2023 CloudWeGo Authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package annotation 18 19 import ( 20 "context" 21 "testing" 22 23 "github.com/cloudwego/dynamicgo/thrift" 24 "github.com/stretchr/testify/require" 25 ) 26 27 func TestAgwKey(t *testing.T) { 28 path := "a/b/main.thrift" 29 content := ` 30 namespace go kitex.test.server 31 struct Base { 32 1: required string required_field 33 999: required string test1 (agw.key="test2") 34 3: string pass 35 } 36 37 service InboxService { 38 string ExampleMethod(1: Base req) 39 } 40 ` 41 includes := map[string]string{ 42 path: content, 43 } 44 p, err := thrift.NewDescritorFromContent(context.Background(), path, content, includes, true) 45 if err != nil { 46 t.Fatal(err) 47 } 48 req := p.Functions()["ExampleMethod"].Request().Struct().Fields()[0].Type() 49 require.Equal(t, "test2", req.Struct().FieldById(999).Alias()) 50 } 51 52 func TestNameCase(t *testing.T) { 53 path := "a/b/main.thrift" 54 content := ` 55 namespace go kitex.test.server 56 57 struct Base1 { 58 1: string InnerBase (agw.to_snake="false") 59 2: string Msg 60 3: string logID (agw.to_lower_camel_case="false") 61 4: string req_list 62 } 63 64 struct Base2 { 65 1: string InnerBase (agw.to_snake="false") 66 2: string Msg 67 3: string logID 68 4: string req_list (agw.to_lower_camel_case="true") 69 } (agw.to_snake="False") 70 71 struct Base3 { 72 1: string InnerBase 73 2: string Msg 74 3: string logID 75 4: string req_list 76 } 77 78 struct Base4 { 79 1: string InnerBase (agw.to_snake="true") 80 2: string Msg (agw.to_lower_camel_case="false") 81 3: string logID 82 4: string req_list 83 } (agw.to_snake="falsE") 84 85 service ExampleService { 86 Base2 ExampleMethod1(1: Base1 req) (agw.to_snake="True") 87 Base4 ExampleMethod2(1: Base3 req) (agw.to_lower_camel_case="True") 88 Base4 ExampleMethod3(1: Base3 req) (agw.to_snake="True") 89 } 90 ` 91 includes := map[string]string{ 92 path: content, 93 } 94 95 p, err := thrift.Options{}.NewDescriptorFromContentWithMethod(context.Background(), path, content, includes, true, "ExampleMethod1", "ExampleMethod2") 96 require.NoError(t, err) 97 98 base1 := p.Functions()["ExampleMethod1"].Request().Struct().Fields()[0].Type() 99 require.Equal(t, "InnerBase", base1.Struct().FieldById(1).Alias()) 100 require.Equal(t, "msg", base1.Struct().FieldById(2).Alias()) 101 require.Equal(t, "log_id", base1.Struct().FieldById(3).Alias()) 102 require.Equal(t, "req_list", base1.Struct().FieldById(4).Alias()) 103 104 base2 := p.Functions()["ExampleMethod1"].Response().Struct().Fields()[0].Type() 105 require.Equal(t, "InnerBase", base2.Struct().FieldById(1).Alias()) 106 require.Equal(t, "Msg", base2.Struct().FieldById(2).Alias()) 107 require.Equal(t, "logID", base2.Struct().FieldById(3).Alias()) 108 require.Equal(t, "reqList", base2.Struct().FieldById(4).Alias()) 109 110 base3 := p.Functions()["ExampleMethod2"].Request().Struct().Fields()[0].Type() 111 require.Equal(t, "innerBase", base3.Struct().FieldById(1).Alias()) 112 require.Equal(t, "msg", base3.Struct().FieldById(2).Alias()) 113 require.Equal(t, "logID", base3.Struct().FieldById(3).Alias()) 114 require.Equal(t, "reqList", base3.Struct().FieldById(4).Alias()) 115 116 base4 := p.Functions()["ExampleMethod2"].Response().Struct().Fields()[0].Type() 117 require.Equal(t, "inner_base", base4.Struct().FieldById(1).Alias()) 118 require.Equal(t, "Msg", base4.Struct().FieldById(2).Alias()) 119 require.Equal(t, "logID", base4.Struct().FieldById(3).Alias()) 120 require.Equal(t, "reqList", base4.Struct().FieldById(4).Alias()) 121 122 p, err = thrift.Options{}.NewDescriptorFromContentWithMethod(context.Background(), path, content, includes, true, "ExampleMethod3") 123 require.NoError(t, err) 124 base3 = p.Functions()["ExampleMethod3"].Request().Struct().Fields()[0].Type() 125 require.Equal(t, "inner_base", base3.Struct().FieldById(1).Alias()) 126 require.Equal(t, "msg", base3.Struct().FieldById(2).Alias()) 127 require.Equal(t, "log_id", base3.Struct().FieldById(3).Alias()) 128 require.Equal(t, "req_list", base3.Struct().FieldById(4).Alias()) 129 130 base4 = p.Functions()["ExampleMethod3"].Response().Struct().Fields()[0].Type() 131 require.Equal(t, "inner_base", base4.Struct().FieldById(1).Alias()) 132 require.Equal(t, "Msg", base4.Struct().FieldById(2).Alias()) 133 require.Equal(t, "logID", base4.Struct().FieldById(3).Alias()) 134 require.Equal(t, "req_list", base4.Struct().FieldById(4).Alias()) 135 }