@@ -10,6 +10,7 @@ import (
1010 "github.com/webhookx-io/webhookx/db"
1111 "github.com/webhookx-io/webhookx/db/entities"
1212 "github.com/webhookx-io/webhookx/pkg/plugin"
13+ key_auth "github.com/webhookx-io/webhookx/plugins/key-auth"
1314 "github.com/webhookx-io/webhookx/test/fixtures/plugins/hello"
1415 "github.com/webhookx-io/webhookx/test/fixtures/plugins/inbound"
1516 "github.com/webhookx-io/webhookx/test/fixtures/plugins/outbound"
@@ -213,6 +214,95 @@ var _ = Describe("/plugins", Ordered, func() {
213214 })
214215 })
215216
217+ Context ("basic-auth plugin" , func () {
218+ It ("return 201" , func () {
219+ source := factory .SourceP ()
220+ assert .Nil (GinkgoT (), db .Sources .Insert (context .TODO (), source ))
221+ resp , err := adminClient .R ().
222+ SetBody (map [string ]interface {}{
223+ "name" : "basic-auth" ,
224+ "source_id" : source .ID ,
225+ "config" : map [string ]string {
226+ "username" : "foo" ,
227+ "password" : "bar" ,
228+ },
229+ }).
230+ SetResult (entities.Plugin {}).
231+ Post ("/workspaces/default/plugins" )
232+
233+ assert .Nil (GinkgoT (), err )
234+ assert .Equal (GinkgoT (), 201 , resp .StatusCode ())
235+
236+ result := resp .Result ().(* entities.Plugin )
237+ assert .Equal (GinkgoT (), "basic-auth" , result .Name )
238+ assert .Equal (GinkgoT (), source .ID , * result .SourceId )
239+ assert .Equal (GinkgoT (), "foo" , result .Config ["username" ])
240+ assert .Equal (GinkgoT (), "bar" , result .Config ["password" ])
241+ })
242+ })
243+
244+ Context ("key-auth plugin" , func () {
245+ It ("return 201" , func () {
246+ source := factory .SourceP ()
247+ assert .Nil (GinkgoT (), db .Sources .Insert (context .TODO (), source ))
248+ resp , err := adminClient .R ().
249+ SetBody (map [string ]interface {}{
250+ "name" : "key-auth" ,
251+ "source_id" : source .ID ,
252+ "config" : map [string ]interface {}{
253+ "param_name" : "apikey" ,
254+ "param_sources" : []string {"header" , "query" },
255+ "key" : "mykey" ,
256+ },
257+ }).
258+ SetResult (entities.Plugin {}).
259+ Post ("/workspaces/default/plugins" )
260+
261+ assert .Nil (GinkgoT (), err )
262+ assert .Equal (GinkgoT (), 201 , resp .StatusCode ())
263+
264+ result := resp .Result ().(* entities.Plugin )
265+ assert .Equal (GinkgoT (), "key-auth" , result .Name )
266+ assert .Equal (GinkgoT (), source .ID , * result .SourceId )
267+ cfg := key_auth.Config {}
268+ utils .MapToStruct (result .Config , & cfg )
269+ assert .Equal (GinkgoT (), "apikey" , cfg .ParamName )
270+ assert .Equal (GinkgoT (), []string {"header" , "query" }, cfg .ParamSources )
271+ assert .Equal (GinkgoT (), "mykey" , cfg .Key )
272+ })
273+ })
274+
275+ Context ("hmac-auth plugin" , func () {
276+ It ("return 201" , func () {
277+ source := factory .SourceP ()
278+ assert .Nil (GinkgoT (), db .Sources .Insert (context .TODO (), source ))
279+ resp , err := adminClient .R ().
280+ SetBody (map [string ]interface {}{
281+ "name" : "hmac-auth" ,
282+ "source_id" : source .ID ,
283+ "config" : map [string ]interface {}{
284+ "hash_method" : "sha256" ,
285+ "hash_encoding" : "base64" ,
286+ "signature_header" : "x-signature" ,
287+ "key" : "mykey" ,
288+ },
289+ }).
290+ SetResult (entities.Plugin {}).
291+ Post ("/workspaces/default/plugins" )
292+
293+ assert .Nil (GinkgoT (), err )
294+ assert .Equal (GinkgoT (), 201 , resp .StatusCode ())
295+
296+ result := resp .Result ().(* entities.Plugin )
297+ assert .Equal (GinkgoT (), "hmac-auth" , result .Name )
298+ assert .Equal (GinkgoT (), source .ID , * result .SourceId )
299+ assert .Equal (GinkgoT (), "sha256" , result .Config ["hash_method" ])
300+ assert .Equal (GinkgoT (), "base64" , result .Config ["hash_encoding" ])
301+ assert .Equal (GinkgoT (), "x-signature" , result .Config ["signature_header" ])
302+ assert .Equal (GinkgoT (), "mykey" , result .Config ["key" ])
303+ })
304+ })
305+
216306 Context ("errors" , func () {
217307 It ("return HTTP 400" , func () {
218308 resp , err := adminClient .R ().
0 commit comments