@@ -35,14 +35,23 @@ func TestInvokeMethodWithContent(t *testing.T) {
35
35
assert .Nil (t , err )
36
36
assert .NotNil (t , resp )
37
37
assert .Equal (t , string (resp ), data )
38
+ })
38
39
40
+ t .Run ("with content, method contains querystring" , func (t * testing.T ) {
41
+ content := & DataContent {
42
+ ContentType : "text/plain" ,
43
+ Data : []byte (data ),
44
+ }
45
+ resp , err := testClient .InvokeMethodWithContent (ctx , "test" , "fn?foo=bar&url=http://dapr.io" , "get" , content )
46
+ assert .Nil (t , err )
47
+ assert .NotNil (t , resp )
48
+ assert .Equal (t , string (resp ), data )
39
49
})
40
50
41
51
t .Run ("without content" , func (t * testing.T ) {
42
52
resp , err := testClient .InvokeMethod (ctx , "test" , "fn" , "get" )
43
53
assert .Nil (t , err )
44
54
assert .Nil (t , resp )
45
-
46
55
})
47
56
48
57
t .Run ("without service ID" , func (t * testing.T ) {
@@ -87,20 +96,78 @@ func TestInvokeMethodWithContent(t *testing.T) {
87
96
88
97
func TestVerbParsing (t * testing.T ) {
89
98
t .Run ("valid lower case" , func (t * testing.T ) {
90
- v := verbToHTTPExtension ( "post" )
99
+ v := queryAndVerbToHTTPExtension ( "" , "post" )
91
100
assert .NotNil (t , v )
92
101
assert .Equal (t , v1 .HTTPExtension_POST , v .Verb )
102
+ assert .Len (t , v .Querystring , 0 )
93
103
})
94
104
95
105
t .Run ("valid upper case" , func (t * testing.T ) {
96
- v := verbToHTTPExtension ( "GET" )
106
+ v := queryAndVerbToHTTPExtension ( "" , "GET" )
97
107
assert .NotNil (t , v )
98
108
assert .Equal (t , v1 .HTTPExtension_GET , v .Verb )
99
109
})
100
110
101
111
t .Run ("invalid verb" , func (t * testing.T ) {
102
- v := verbToHTTPExtension ( "BAD" )
112
+ v := queryAndVerbToHTTPExtension ( "" , "BAD" )
103
113
assert .NotNil (t , v )
104
114
assert .Equal (t , v1 .HTTPExtension_NONE , v .Verb )
105
115
})
116
+
117
+ t .Run ("valid query" , func (t * testing.T ) {
118
+ v := queryAndVerbToHTTPExtension ("foo=bar&url=http://dapr.io" , "post" )
119
+ assert .NotNil (t , v )
120
+ assert .Equal (t , v1 .HTTPExtension_POST , v .Verb )
121
+ assert .Len (t , v .Querystring , 2 )
122
+ assert .Equal (t , "bar" , v .Querystring ["foo" ])
123
+ assert .Equal (t , "http://dapr.io" , v .Querystring ["url" ])
124
+ })
125
+ }
126
+
127
+ func TestExtractMethodAndQuery (t * testing.T ) {
128
+ type args struct {
129
+ name string
130
+ }
131
+ tests := []struct {
132
+ name string
133
+ args args
134
+ wantMethod string
135
+ wantQuery string
136
+ }{
137
+ {
138
+ "pure uri" ,
139
+ args {name : "method" },
140
+ "method" ,
141
+ "" ,
142
+ },
143
+ {
144
+ "root route method" ,
145
+ args {name : "/" },
146
+ "/" ,
147
+ "" ,
148
+ },
149
+ {
150
+ "uri with one query" ,
151
+ args {name : "method?foo=bar" },
152
+ "method" ,
153
+ "foo=bar" ,
154
+ },
155
+ {
156
+ "uri with two query" ,
157
+ args {name : "method?foo=bar&url=http://dapr.io" },
158
+ "method" ,
159
+ "foo=bar&url=http://dapr.io" ,
160
+ },
161
+ }
162
+ for _ , tt := range tests {
163
+ t .Run (tt .name , func (t * testing.T ) {
164
+ gotMethod , gotQuery := extractMethodAndQuery (tt .args .name )
165
+ if gotMethod != tt .wantMethod {
166
+ t .Errorf ("extractMethodAndQuery() gotMethod = %v, want %v" , gotMethod , tt .wantMethod )
167
+ }
168
+ if gotQuery != tt .wantQuery {
169
+ t .Errorf ("extractMethodAndQuery() gotQuery = %v, want %v" , gotQuery , tt .wantQuery )
170
+ }
171
+ })
172
+ }
106
173
}
0 commit comments