mirror of
https://github.com/nikoksr/notify.git
synced 2025-02-13 13:18:35 +02:00
Merge pull request #389 from nikoksr/test/more-services
test(services): expand services test coverage
This commit is contained in:
commit
cbc6fda297
@ -9,7 +9,6 @@ linters:
|
||||
enable:
|
||||
- 'asciicheck'
|
||||
- 'bodyclose'
|
||||
- 'deadcode'
|
||||
- 'depguard'
|
||||
- 'dogsled'
|
||||
- 'errcheck'
|
||||
@ -33,12 +32,11 @@ linters:
|
||||
- 'revive'
|
||||
- 'sqlclosecheck'
|
||||
- 'staticcheck'
|
||||
- 'structcheck'
|
||||
- 'stylecheck'
|
||||
- 'typecheck'
|
||||
- 'unconvert'
|
||||
- 'unused'
|
||||
- 'varcheck'
|
||||
- 'unused'
|
||||
- 'whitespace'
|
||||
|
||||
issues:
|
||||
|
5
Makefile
5
Makefile
@ -11,6 +11,7 @@ setup:
|
||||
@go install mvdan.cc/gofumpt@latest
|
||||
@go install github.com/daixiang0/gci@latest
|
||||
@go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
||||
@go install github.com/vektra/mockery/v2@latest
|
||||
.PHONY: setup
|
||||
|
||||
###############################################################################
|
||||
@ -26,6 +27,10 @@ cover:
|
||||
go test -race -covermode=atomic -coverprofile=coverage.out ./...
|
||||
.PHONY: cover
|
||||
|
||||
mock:
|
||||
go generate ./...
|
||||
.PHONY: mock
|
||||
|
||||
###############################################################################
|
||||
# CODE HEALTH
|
||||
###############################################################################
|
||||
|
191
go.sum
191
go.sum
@ -9,14 +9,6 @@ github.com/Rhymen/go-whatsapp/examples/echo v0.0.0-20190325075644-cc2581bbf24d/g
|
||||
github.com/Rhymen/go-whatsapp/examples/restoreSession v0.0.0-20190325075644-cc2581bbf24d/go.mod h1:5sCUSpG616ZoSJhlt9iBNI/KXBqrVLcNUJqg7J9+8pU=
|
||||
github.com/Rhymen/go-whatsapp/examples/sendImage v0.0.0-20190325075644-cc2581bbf24d/go.mod h1:RdiyhanVEGXTam+mZ3k6Y3VDCCvXYCwReOoxGozqhHw=
|
||||
github.com/Rhymen/go-whatsapp/examples/sendTextMessages v0.0.0-20190325075644-cc2581bbf24d/go.mod h1:suwzklatySS3Q0+NCxCDh5hYfgXdQUWU1DNcxwAxStM=
|
||||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220708192748-b73dcb041214 h1:MdZskg1II+YVe+9ss935i8+paqqf4KEuYcTYUWSwABI=
|
||||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220708192748-b73dcb041214/go.mod h1:rjP7sIipbZcagro/6TCk6X0ZeFT2eyudH5+fve/cbBA=
|
||||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220809225255-0c827b6166bc h1:eaUW8YG7pbVoHiGzvl7KfLyr0rBYuxYYT21YKsIhe2I=
|
||||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220809225255-0c827b6166bc/go.mod h1:rjP7sIipbZcagro/6TCk6X0ZeFT2eyudH5+fve/cbBA=
|
||||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220810144218-381e7373453c h1:ktWwgxiW/DKN9PsFBbPdlcYPzIJUN86ZDp+5T4jUSAg=
|
||||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220810144218-381e7373453c/go.mod h1:rjP7sIipbZcagro/6TCk6X0ZeFT2eyudH5+fve/cbBA=
|
||||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220811115547-6c7006b790b8 h1:6t3jBHHC184NyUqWrzaHTpB4f/YWqfr1FR6YOKsOGdI=
|
||||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220811115547-6c7006b790b8/go.mod h1:rjP7sIipbZcagro/6TCk6X0ZeFT2eyudH5+fve/cbBA=
|
||||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220903135808-56c5346a1a28 h1:OJe0G++TYGhE525XnkrF9KF15D1WtQdyrk19SFwRrKk=
|
||||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220903135808-56c5346a1a28/go.mod h1:rjP7sIipbZcagro/6TCk6X0ZeFT2eyudH5+fve/cbBA=
|
||||
github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=
|
||||
@ -25,206 +17,38 @@ github.com/appleboy/go-fcm v0.1.5 h1:fKbcZf/7vwGsvDkcop8a+kCHnK+tt4wXX0X7uEzwI6E
|
||||
github.com/appleboy/go-fcm v0.1.5/go.mod h1:MSxZ4LqGRsnywOjnlXJXMqbjZrG4vf+0oHitfC9HRH0=
|
||||
github.com/atc0005/go-teams-notify/v2 v2.6.1 h1:t22ybzQuaQs4UJe4ceF5VYGsPhs6ir3nZOId/FBy6Go=
|
||||
github.com/atc0005/go-teams-notify/v2 v2.6.1/go.mod h1:xo6GejLDHn3tWBA181F8LrllIL0xC1uRsRxq7YNXaaY=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.8 h1:gOe9UPR98XSf7oEJCcojYg+N2/jCRm4DdeIsP85pIyQ=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.8/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.9 h1:Ezgkr/ByXA+5SASNJYLzA3kjbqXoho8QVDnCSHdgMBE=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.9/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.10 h1:+yDD0tcuHRQZgqONkpDwzepqmElQaSlFPymHRHR9mrc=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.10/go.mod h1:WTACcleLz6VZTp7fak4EO5b9Q4foxbn+8PIz3PmyKlo=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.11 h1:xM1ZPSvty3xVmdxiGr7ay/wlqv+MWhH0rMlyLdbC0YQ=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.11/go.mod h1:WTACcleLz6VZTp7fak4EO5b9Q4foxbn+8PIz3PmyKlo=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.12 h1:wbMYa2PlFysFx2GLIQojr6FJV5+OWCM/BwyHXARxETA=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.12/go.mod h1:C+Ym0ag2LIghJbXhfXZ0YEEp49rBWowxKzJLUoob0ts=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.13 h1:HgF7OX2q0gSZtcXoo9DMEA8A2Qk/GCxmWyM0RI7Yz2Y=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.13/go.mod h1:xSyvSnzh0KLs5H4HJGeIEsNYemUWdNIl0b/rP6SIsLU=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.14 h1:db6GvO4Z2UqHt5gvT0lr6J5x5P+oQ7bdRzczVaRekMU=
|
||||
github.com/aws/aws-sdk-go-v2 v1.16.14/go.mod h1:s/G+UV29dECbF5rf+RNj1xhlmvoNurGSr+McVSRj59w=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.15.15 h1:yBV+J7Au5KZwOIrIYhYkTGJbifZPCkAnCFSvGsF3ui8=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.15.15/go.mod h1:A1Lzyy/o21I5/s2FbyX5AevQfSVXpvvIDCoVFD0BC4E=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.15.16 h1:tSecG2ksgzdfGrBTdcgaDHcNOWvSLF0r19kiyM2simM=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.15.16/go.mod h1:wX5OYan3JE7OJVHCSp0Hw7ubAf7LWrTj6Up3vLdyuQg=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.15.17 h1:cM/4dqEPc5SjBOeYVdUI7iL/B6jDupCesXzg3AuUzRE=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.15.17/go.mod h1:eatrtwIm5WdvASoYCy5oPkinfiwiYFg2jLG9tJoKzkE=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.16.0 h1:LxHC50cwOLxYo67NEpwpNUiOi6ngXfDpEETphSZ6bAw=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.16.0/go.mod h1:eatrtwIm5WdvASoYCy5oPkinfiwiYFg2jLG9tJoKzkE=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.16.1 h1:jasqFPOoNPXHOYGEEuvyT87ACiXhD3OkQckIm5uqi5I=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.16.1/go.mod h1:4SKzBMiB8lV0fw2w7eDBo/LjQyHFITN4vUUuqpurFmI=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.17.0 h1:e0tIuubcjp0gJQdllgEMwolWWXGK/sKAFd1tS5S6m6I=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.17.0/go.mod h1:4SKzBMiB8lV0fw2w7eDBo/LjQyHFITN4vUUuqpurFmI=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.17.1 h1:BWxTjokU/69BZ4DnLrZco6OvBDii6ToEdfBL/y5I1nA=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.17.1/go.mod h1:uOxDHjBemNTF2Zos+fgG0NNfE86wn1OAHDTGxjMEYi0=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.17.3 h1:s1As/fiVMmM3CObC4GcSaSbkhm88S6a5qn8St3wgal0=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.17.3/go.mod h1:tRGUOfk9Rrf6UCJm5qDlL9AizSsgvteuKX4qajAV3pU=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.17.4 h1:9HY1wbShqObySCHP2Z07blfrSWVX+nVxCZmUuLZKcG8=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.17.4/go.mod h1:ul+ru+huVpfduF9XRmGUq82T8T3K+nIFQuF6F+L+548=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.17.5 h1:+NS1BWvprx7nHcIk5o32LrZgifs/7Pm1V2nWjQgZ2H0=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.17.5/go.mod h1:H0cvPNDO3uExWts/9PDhD/0ne2esu1uaIulwn1vkwxM=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.10 h1:7gGcMQePejwiKoDWjB9cWnpfVdnz/e5JwJFuT6OrroI=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.10/go.mod h1:g5eIM5XRs/OzIIK81QMBl+dAuDyoLN0VYaLP+tBqEOk=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.11 h1:AjEmpSUVcsbUlZpanmBltYQmwGAXSafK3LI2hCczpao=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.11/go.mod h1:1wkE8zBGlQGXug8EavEvvPanUO985uWvK7BTBwfaPi8=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.12 h1:iShu6VaWZZZfUZvlGtRjl+g1lWk44g1QmiCTD4KS0jI=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.12/go.mod h1:vFHC2HifIWHebmoVsfpqliKuqbAY2LaVlvy03JzF4c4=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.13 h1:cuPzIsjKAWBUAAk8ZUR2l02Sxafl9hiaMsc7tlnjwAY=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.13/go.mod h1:9fDEemXizwXrxPU1MTzv69LP/9D8HVl5qHAQO9A9ikY=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.14 h1:AtVG/amkjbDBfnPr/tuW2IG18HGNznP6L12Dx0rLz+Q=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.14/go.mod h1:opAndTyq+YN7IpVG57z2CeNuXSQMqTYxGGlYH0m0RMY=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.16 h1:HXczS88Pg36j8dq0KSjtHBPFs8gdRyBSS1hueeG/rxA=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.16/go.mod h1:eLJ+j1lwQdHJ0c56tRoDWcgss1e/laVmvW2AaOicuAw=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.17 h1:htUjIJOQcvIUR0jC4eLkdis1DfaLL4EUbIKUFqh2WFA=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.17/go.mod h1:jd1mvJulXY7ccHvcSiJceYhv06yWIIRkJnwWEA4IX+g=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.18 h1:HF62tbhARhgLfvmfwUbL9qZ+dkbZYzbFdxBb3l5gr7Q=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.12.18/go.mod h1:O7n/CPagQ33rfG6h7vR/W02ammuc5CrsSM22cNZp9so=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9 h1:hz8tc+OW17YqxyFFPSkvfSikbqWcyyHRyPVSTzC0+aI=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9/go.mod h1:KDCCm4ONIdHtUloDcFvK2+vshZvx4Zmj7UMDfusuz5s=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.10 h1:x6v/oELu+w/USy9D6dmoPEzjyR4qj18lqKo16ACQZJI=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.10/go.mod h1:nWH+8PK9k4NLsOvOb3wtbFHiYeLXCxRokv4JnUN+wWs=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.11 h1:zZHPdM2x09/0F8D7XyVvQnP2/jaW7bEMmtcSCPYq/iI=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.11/go.mod h1:38Asv/UyQbDNpSXCurZRlDMjzIl6J+wUe8vY3TtUuzA=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.12 h1:wgJBHO58Pc1V1QAnzdVM3JK3WbE/6eUF0JxCZ+/izz0=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.12/go.mod h1:aZ4vZnyUuxedC7eD4JyEHpGnCz+O2sHQEx3VvAwklSE=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.13 h1:+uferi8SUDZtMloCDt24Zenyy/i71C/ua5mjUCpbpN0=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.13/go.mod h1:y0eXmsNBFIVjUE8ZBjES8myOHlMsXDz7qGT93+MVdjk=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.14 h1:NZwZFtxXGOEIiCd8jWN55lexakug543CaO68bTpoLwg=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.14/go.mod h1:5CU57SyF5jZLSIw4OOll0PG83ThXwNdkRFOc0EltD/0=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.15 h1:nkQ+aI0OCeYfzrBipL6ja/6VEbUnHQoZHBHtoK+Nzxw=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.15/go.mod h1:Oz2/qWINxIgSmoZT9adpxJy2UhpcOAI3TIyWgYMVSz0=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15 h1:bx5F2mr6H6FC7zNIQoDoUr8wEKnvmwRncujT3FYRtic=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15/go.mod h1:pWrr2OoHlT7M/Pd2y4HV3gJyPb3qj5qMmnPkKSNPYK4=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.16 h1:YVn7PaQ9La7tuTvKZGlXmzXkEHdbzHlKHeBrWCTtwtA=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.16/go.mod h1:GV1J/d4oB2fKCEoWRlYBOI6qzfpH8IXQN1d/caQGaMo=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.17 h1:U8DZvyFFesBmK62dYC6BRXm4Cd/wPP3aPcecu3xv/F4=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.17/go.mod h1:6qtGip7sJEyvgsLjphRZWF9qPe3xJf1mL/MM01E35Wc=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.18 h1:OmiwoVyLKEqqD5GvB683dbSqxiOfvx4U2lDZhG2Esc4=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.18/go.mod h1:348MLhzV1GSlZSMusdwQpXKbhD7X2gbI/TxwAPKkYZQ=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.19 h1:gC5mudiFrWGhzcdoWj1iCGUfrzCpQG0MQIQf0CXFFQQ=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.19/go.mod h1:llxE6bwUZhuCas0K7qGiu5OgMis3N7kdWtFSxoHmJ7E=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.20 h1:Rk8eqZSdFovt8Id+O+i2qT0c3CY13DPn2SfGOEVlxNs=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.20/go.mod h1:gdZ5gRUaxThXIZyZQ8MTtgYBk2jbHgp05BO3GcD9Cwc=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.21 h1:gRIXnmAVNyoRQywdNtpAkgY+f30QNzgF53Q5OobNZZs=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.21/go.mod h1:XsmHMV9c512xgsW01q7H0ut+UQQQpWX8QsFbdLHDwaU=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9 h1:5sbyznZC2TeFpa4fvtpvpcGbzeXEEs1l1Jo51ynUNsQ=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9/go.mod h1:08tUpeSGN33QKSO7fwxXczNfiwCpbj+GxK6XKwqWVv0=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.10 h1:m7pKEgyn/TI2pn2WehrmJO4CKBaKvpkSLgnDR4nckC0=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.10/go.mod h1:pucnblrb8XuRc/ZEi2S+jdQa3JVAfnwhytGgawh5pR4=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.11 h1:GMp98usVW5tzQhxd26KWhoNQPlR2noIlfbzqjVGBhLU=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.11/go.mod h1:cYAfnB+9ZkmZWpQWmPDsuIGm4EA+6k2ZVtxKjw/XJBY=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.12 h1:5mvQDtNWtI6H56+E4LUnLWEmATMB7oEh+Z9RurtIuC0=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.12/go.mod h1:ckaCVTEdGAxO6KwTGzgskxR1xM+iJW4lxMyDFVda2Fc=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.13 h1:qezY57na06d6kSE7uuB0N7XEflu914AXx/hg2L8Ykcw=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.13/go.mod h1:lB12mkZqCSo5PsdBFLNqc2M/OOYgNAy8UtaktyuWvE8=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.14 h1:6Yxuq9yrkoLYab5JXqJnto9tdRuIcYVdR+eiKjsJYWU=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.14/go.mod h1:GEV9jaDPIgayiU+uevxwozcvUOjc+P4aHE2BeSjm2vE=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.15 h1:noAhOo2mMDyYhTx99aYPvQw16T3fQ/DiKAv9fzpIKH8=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.15/go.mod h1:kjJ4CyD9M3Wq88GYg3IPfj67Rs0Uvz8aXK7MJ8BvE4I=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16 h1:f0ySVcmQhwmzn7zQozd8wBM3yuGBfzdpsOaKQ0/Epzw=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16/go.mod h1:CYmI+7x03jjJih8kBEEFKRQc40UjUokT0k7GbvrhhTc=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.17 h1:9afA9eNkHujiJHsV6OjbBdFon6R7XSFxi1H7jU6Q6u8=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.17/go.mod h1:2C5+mYysnLDg/irvoEVXcrnco/wPF6jWb/XA7V8bOqc=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.18 h1:/spg6h3tG4pefphbvhpgdMtFMegSajPPSEJd1t8lnpc=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.18/go.mod h1:hTHq8hL4bAxJyng364s9d4IUGXZOs7Y5LSqAhIiIQ2A=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.19 h1:g5qq9sgtEzt2szMaDqQO6fqKe026T6dHTFJp5NsPzkQ=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.19/go.mod h1:cVHo8KTuHjShb9V8/VjH3S/8+xPu16qx8fdGwmotJhE=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.20 h1:GvszACAU8GSV3+Tant5GutW6smY8WavrP8ZuRS9Ku4Q=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.20/go.mod h1:bfTcsThj5a9P5pIGRy0QudJ8k4+issxXX+O6Djnd5Cs=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.21 h1:lpwSbLKYTuABo6SyUoC25xAmfO3/TehGS2SmD1EtOL0=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.21/go.mod h1:Q0pktZjvRZk77TBto6yAvUAi7fcse1bdcMctBDVGgBw=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.22 h1:nF+E8HfYpOMw6M5oA9efB602VC00IHNQnB5CmFvZPvA=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.22/go.mod h1:tltHVGy977LrSOgRR5aV9+miyno/Gul/uJNPKS7FzP4=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9 h1:sHfDuhbOuuWSIAEDd3pma6p0JgUcR2iePxtCE8gfCxQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9/go.mod h1:yQowTpvdZkFVuHrLBXmczat4W+WJKg/PafBZnGBLga0=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.10 h1:tdaKsL5omHQk8u+gPJHJQzbENthfFJNthqVZa5VEdPY=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.10/go.mod h1:Jhhvc+D5yF/+Ajr/uW0ULcVDdSsUP+q59Me2AehVuUE=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.11 h1:GkYtp4gi4wdWUV+pPetjk5y2aDxbr0t8n5OjVBwZdII=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.11/go.mod h1:OEofCUKF7Hri4ShOCokF6k6hGq9PCB2sywt/9rLSXjY=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.12 h1:7iPTTX4SAI2U2VOogD7/gmHlsgnYSgoNHt7MSQXtG2M=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.12/go.mod h1:1TODGhheLWjpQWSuhYuAUWYTCKwEjx2iblIFKDHjeTc=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.13 h1:ObfthqDyhe7rMAOa7pqft6974VHIk8BAJB7kYdoIfTA=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.13/go.mod h1:V390DK4MQxLpDdXxFqizyz8KUxuWImkW/xzgXMz0yyk=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.14 h1:c5hJNN2DkK1gAytcKp7LkiKNDJeevFSboPezEHAM4Ro=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.14/go.mod h1:8qOLjqMzY/S1kh3myDXA1yxK5eD4uN8aOJgKpgvc4OM=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.15 h1:xlf0J6DUgAj/ocvKQxCmad8Bu1lJuRbt5Wu+4G1xw1g=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.15/go.mod h1:ZVJ7ejRl4+tkWMuCwjXoy0jd8fF5u3RCyWjSVjUIvQE=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.10 h1:FWqz8gnMN0aFjDEVk7uboh1QraNlS9hWcbDIgIunNVg=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.10/go.mod h1:sgPBWnS2NHUoCFihNw1z/4V/UCyx6SNQgL3sR7OHNFE=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.11 h1:GoccLfzTzXlmPcUSDGtP8U2sifUSPItUZbmnAqbK/BU=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.11/go.mod h1:PMYr4TAtFquU1zhyltf27xT2b0lymv1juVYXKgj5zPk=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.12 h1:3pfFSWjhwuNLbM+z5hLma3Xn+MxMNqQrFnIHezWT4QM=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.12/go.mod h1:3bOhHubcunvFa5Uqd/z+vhygXeawZxG7ZBeE6d3+aJ4=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.13 h1:nmgejCzBpJXmtA6IWFSWMLklKbq/28e8f0BKzXW9rfQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.13/go.mod h1:MVF1NzKU5VhUIDJ7UDaCbdFCCUgrLts2j51IPJWYRWg=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.14 h1:Bx6jmWWKnHj1Riw/xCIme+O8RcEB3xRMud3JCqquc/I=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.14/go.mod h1:cXydipCqtHaUSAFNBNTEeWg3y1OeyuDGCow3d+08pew=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.15 h1:HZwcYDkznb12iD/WetBKJuKaU89HCVjikznYrsY8LFk=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.15/go.mod h1:jr9D5h8DHUpBwBoKVNhVJc/kOaaswB34KRo5OWvMWRY=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.16 h1:F+1UqtImFZoJs48f4DO/usm8P+Ok5i6Ll5+T9csXXvU=
|
||||
github.com/aws/aws-sdk-go-v2/service/ses v1.14.16/go.mod h1:ufZIF0CTaAcA/Yammf5sQSGut2kLgXEOY5rssBpi9eE=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.10 h1:ZZuqucIwjbUEJqxxR++VDZX9BcMbX5ZcQaKoWul/ELk=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.10/go.mod h1:uITsRNVMeCB3MkWpXxXw0eDz8pW4TYLzj+eyQtbhSxM=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.11 h1:B3jCcpykJs4ndKC5BI+OtKSzSeY4e99LJrgwCGGCjOE=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.11/go.mod h1:cSl1/Vf+GZ6pWapND/9BUDV3ailIdpAyGWmh3bs1C1k=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.12 h1:vX2sBCHIaIcnHXC53wIlFKM/N/3Toq9X6+8AO+geVd8=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.12/go.mod h1:rp+/O/hnOcm3/vUeSRkF0oQb/zDyMCFYjaTlQoWe0+g=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.13 h1:sa8NDFztt68pihEfE31LhX+nJ1wDBJHcFh3T6crluDo=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.13/go.mod h1:yE3hE9v3YRRI9Rsl38kYJ4fyZ6vKSljaZ+28W5xzqgM=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.16 h1:G+L6P8f4jXbxQOoSgP8P1ehBu5oefeiYZKCYIk3Pbqc=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.16/go.mod h1:4WxvZBlY3vIqs/zNL7IJpP5SPf5rf2wncX8z9iJGRps=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.17 h1:VKMhV1kisP1oNtCZQ2b9Aj8Hx1vwCC/bLlg2rw4tW/0=
|
||||
github.com/aws/aws-sdk-go-v2/service/sns v1.17.17/go.mod h1:hygPv9etah0QZWMe7TEE+PCPe1VL+1tfwYvJZz478uc=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.13 h1:DQpf+al+aWozOEmVEdml67qkVZ6vdtGUi71BZZWw40k=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.13/go.mod h1:d7ptRksDDgvXaUvxyHZ9SYh+iMDymm94JbVcgvSYSzU=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.14 h1:X5LVih01aTPgROWK/ia7oVCKIoqzhcLLA+mFSO9GGUM=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.14/go.mod h1:4yS1oBBkGkvDWG4E+EQD+Nsy8iQNebPOz5VZy6nSYzU=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.15 h1:HaIE5/TtKr66qZTJpvMifDxH4lRt2JZawbkLYOo1F+Y=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.15/go.mod h1:dDVD4ElJRTQXx7dOQ59EkqGyNU9tnwy1RKln+oLIOTU=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.16 h1:YK8L7TNlGwMWHYqLs+i6dlITpxqzq08FqQUy26nm+T8=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.16/go.mod h1:mS5xqLZc/6kc06IpXn5vRxdLaED+jEuaSRv5BxtnsiY=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.17 h1:pXxu9u2z1UqSbjO9YA8kmFJBhFc1EVTDaf7A+S+Ivq8=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.17/go.mod h1:mS5xqLZc/6kc06IpXn5vRxdLaED+jEuaSRv5BxtnsiY=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.19 h1:WdCwfJmu23XiIDeZwclSyAorQe916M3LeHd53xqBjfA=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.19/go.mod h1:ytmEi5+qwcSNcV2pVA8PIb1DnKT/0Bu/K4nfJHwoM6c=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.20 h1:3raP0UC9rvRyY4/cc4o4F3jTrNo94AYiarNUGNnq6dU=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.20/go.mod h1:hPsROgDdgY/NQ1gPt7VJWG0GjSnalDC0DkkMfGEw2gc=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.21 h1:7jUFr+7F4MzIjCZzy7ygRtXFQcQ0kAbT0gUvtUeAdyU=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.21/go.mod h1:q8nYq51W3gpZempYsAD83fPRlrOTMCwN+Ahg4BKFTXQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.1 h1:p48IfndYbRk3iDsoQAmVXdCKEM5+7Y50JAPikjwk8gI=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.1/go.mod h1:NY+G+8PW0ISyJ7/6t5mgOe6qpJiwZa9Jix05WPscJjg=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.2 h1:/SYpdjjAtraymql+/r719OgjxezdanAQiLb/NMxDb04=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.2/go.mod h1:5cxfDYtY2mDOlmesy4yycb6lwyy1U/iAUOHKhQLKw/E=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.3 h1:UTTPNP3/WzZa7hoHP3Szb/Yl0bM3NoBrf5ABy1OArUM=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.3/go.mod h1:+IF75RMJh0+zqTGXGshyEGRsU2ImqWv6UuHGkHl6kEo=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.10 h1:7tquJrhjYz2EsCBvA9VTl+sBAAh1bv7h/sGASdZOGGo=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.10/go.mod h1:cftkHYN6tCDNfkSasAmclSfl4l7cySoay8vz7p/ce0E=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.11 h1:5FrOTv3WayyUZmCu2sZ/ek8ynKNAn5rhYV32DbhNldo=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.11/go.mod h1:9ADlDiYmHAsTrzCsPpGxXCcbC8mXwYKYqXPUPdriTk0=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.12 h1:YU9UHPukkCCnETHEExOptF/BxPvGJKXO/NBx+RMQ/2A=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.12/go.mod h1:b53qpmhHk7mTL2J/tfG6f38neZiyBQSiNXGCuNKq4+4=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.13 h1:dl8T0PJlN92rvEGOEUiD0+YPYdPEaCZK0TqHukvSfII=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.13/go.mod h1:Ru3QVMLygVs/07UQ3YDur1AQZZp2tUNje8wfloFttC0=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.15 h1:ApuR2BK9vf5/XXsImHBBsYJ6aUhmUhBHnZMPyhJo1jQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.15/go.mod h1:Y+BUV19q3OmQVqNUlbZ40zVi3NM6Biuxwkx/qdSD/CY=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.16 h1:otZvq9r+xjPL7qU/luX2QdBamiN+oSZURRi4sAKymO8=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.16/go.mod h1:Y9iBgT1w2vHtYzJEkwD6FqILjDSsvbxcW/+wIYxyse4=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.17 h1:LVM2jzEQ8mhb2dhrFl4PJ3sa5+KcKT01dsMk2Ma9/FU=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.17/go.mod h1:bQujK1n0V1D1Gz5uII1jaB1WDvhj4/T3tElsJnVXCR0=
|
||||
github.com/aws/smithy-go v1.12.0 h1:gXpeZel/jPoWQ7OEmLIgCUnhkFftqNfwWUwAHSlp1v0=
|
||||
github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
|
||||
github.com/aws/smithy-go v1.12.1 h1:yQRC55aXN/y1W10HgwHle01DRuV9Dpf31iGkotjt3Ag=
|
||||
github.com/aws/smithy-go v1.12.1/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
|
||||
github.com/aws/smithy-go v1.13.0 h1:YfyEmSJLo7fAv8FbuDK4R8F9aAmi9DZ88Zb/KJJmUl0=
|
||||
github.com/aws/smithy-go v1.13.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
|
||||
github.com/aws/smithy-go v1.13.1 h1:q09BdpUiaqpothcv393ACfWJJHzlzjB5HaNL1XHKmoQ=
|
||||
github.com/aws/smithy-go v1.13.1/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
|
||||
github.com/aws/smithy-go v1.13.2 h1:TBLKyeJfXTrTXRHmsv4qWt9IQGYyWThLYaJWSahTOGE=
|
||||
github.com/aws/smithy-go v1.13.2/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
|
||||
github.com/blinkbean/dingtalk v0.0.0-20210905093040-7d935c0f7e19 h1:pamuM2sgLJLoMWfchc6y071z8ifalajU7btZmZNhoH4=
|
||||
github.com/blinkbean/dingtalk v0.0.0-20210905093040-7d935c0f7e19/go.mod h1:9BaLuGSBqY3vT5hstValh48DbsKO7vaHaJnG9pXwbto=
|
||||
github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d h1:pVrfxiGfwelyab6n21ZBkbkmbevaf+WvMIiR7sr97hw=
|
||||
github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA=
|
||||
github.com/bwmarrin/discordgo v0.25.0 h1:NXhdfHRNxtwso6FPdzW2i3uBvvU7UIQTghmV2T4nqAs=
|
||||
github.com/bwmarrin/discordgo v0.25.0/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
|
||||
github.com/bwmarrin/discordgo v0.26.0 h1:/AdFmxHXSHInYAZ7K0O3VEIXlVjGpztk/nuCr9o+JCs=
|
||||
github.com/bwmarrin/discordgo v0.26.0/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
|
||||
github.com/bwmarrin/discordgo v0.26.1 h1:AIrM+g3cl+iYBr4yBxCBp9tD9jR3K7upEjl0d89FRkE=
|
||||
github.com/bwmarrin/discordgo v0.26.1/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
|
||||
github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4=
|
||||
@ -240,10 +64,6 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ=
|
||||
github.com/dghubble/go-twitter v0.0.0-20220716041154-837915ec2f79 h1:Z9wtGrNgCDhG7u+hVTlcBl9jeNdSfqzvg3piJNR4VX0=
|
||||
github.com/dghubble/go-twitter v0.0.0-20220716041154-837915ec2f79/go.mod h1:q7VYuSasPO79IE/QBNAMYVNlzZNy4Zr7vay6is50u5I=
|
||||
github.com/dghubble/go-twitter v0.0.0-20220815161542-b9435e8fec44 h1:t9+Zl0UrwhRnlFHjr6gtvKH36FxQ3VQ+aKeXG8yOQE8=
|
||||
github.com/dghubble/go-twitter v0.0.0-20220815161542-b9435e8fec44/go.mod h1:q7VYuSasPO79IE/QBNAMYVNlzZNy4Zr7vay6is50u5I=
|
||||
github.com/dghubble/go-twitter v0.0.0-20220816163853-8a0df96f1e6d h1:qiUGPQxwkgoeDXtYaBEioXLEHffmBsRkM/9eum0vLS4=
|
||||
github.com/dghubble/go-twitter v0.0.0-20220816163853-8a0df96f1e6d/go.mod h1:q7VYuSasPO79IE/QBNAMYVNlzZNy4Zr7vay6is50u5I=
|
||||
github.com/dghubble/oauth1 v0.7.1 h1:JjbOVSVVkms9A4h/sTQy5Jb2nFuAAVb2qVYgenJPyrE=
|
||||
@ -265,8 +85,6 @@ github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/go-lark/lark v1.7.2 h1:F2LlwbRrZVuHPs8lz1D7owDevUndPy88Hbw6ZXaho/A=
|
||||
github.com/go-lark/lark v1.7.2/go.mod h1:6ltbSztPZRT6IaO9ZIQyVaY5pVp/KeMizDYtfZkU+vM=
|
||||
github.com/go-lark/lark v1.7.3 h1:02PupA3383fc+Ym/nOhZC8g7OaYrDzXzl0zjDpgOR1k=
|
||||
github.com/go-lark/lark v1.7.3/go.mod h1:6ltbSztPZRT6IaO9ZIQyVaY5pVp/KeMizDYtfZkU+vM=
|
||||
github.com/go-redis/redis/v8 v8.11.6-0.20220405070650-99c79f7041fc h1:jZY+lpZB92nvBo2f31oPC/ivGll6NcsnEOORm8Fkr4M=
|
||||
@ -296,7 +114,6 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
||||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
|
||||
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
|
||||
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
@ -376,8 +193,6 @@ github.com/pkg/errors v0.8.1-0.20161029093637-248dadf4e906/go.mod h1:bwawxfHBFNV
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/plivo/plivo-go/v7 v7.10.0 h1:WJpIcVBeMrZgBHwmXvkpytgLeQhA+GnB1Yzn86RlTUk=
|
||||
github.com/plivo/plivo-go/v7 v7.10.0/go.mod h1:Jw1e16x0WjW334botVeKQT4hcMXMN55r4HH0XoGsR6Q=
|
||||
github.com/plivo/plivo-go/v7 v7.11.0 h1:nOaRybcTdCJc5C0apDTSbiGTUgp3NIy8r9aGuR7uUoE=
|
||||
github.com/plivo/plivo-go/v7 v7.11.0/go.mod h1:Jw1e16x0WjW334botVeKQT4hcMXMN55r4HH0XoGsR6Q=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
@ -395,8 +210,6 @@ github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs
|
||||
github.com/skip2/go-qrcode v0.0.0-20190110000554-dc11ecdae0a9/go.mod h1:PLPIyL7ikehBD1OAjmKKiOEhbvWyHGaNDjquXMcYABo=
|
||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
|
||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
|
||||
github.com/slack-go/slack v0.11.2 h1:IWl90Rk+jqPEVyiBytH27CSN/TFAg2vuDDfoPRog/nc=
|
||||
github.com/slack-go/slack v0.11.2/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
|
||||
github.com/slack-go/slack v0.11.3 h1:GN7revxEMax4amCc3El9a+9SGnjmBvSUobs0QnO6ZO8=
|
||||
github.com/slack-go/slack v0.11.3/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
|
||||
github.com/sony/sonyflake v1.0.0 h1:MpU6Ro7tfXwgn2l5eluf9xQvQJDROTBImNCfRXn/YeM=
|
||||
@ -462,10 +275,6 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde h1:ejfdSekXMDxDLbRrJMwUk6KnSLZ2McaUCVcIKM+N6jc=
|
||||
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220907140024-f12130a52804 h1:0SH2R3f1b1VmIMG7BXbEZCBUu2dKmHschSmjqGUrW8A=
|
||||
golang.org/x/sync v0.0.0-20220907140024-f12130a52804/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
|
21
send_test.go
21
send_test.go
@ -60,3 +60,24 @@ func TestNotifySend(t *testing.T) {
|
||||
t.Errorf("Send() with nil service panicked: %v", r)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSendMany(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
n := New()
|
||||
if n == nil {
|
||||
t.Fatal("New() returned nil")
|
||||
}
|
||||
|
||||
var services []Notifier
|
||||
|
||||
for i := 0; i < 10; i++ {
|
||||
services = append(services, mail.New("", ""))
|
||||
}
|
||||
|
||||
n.UseServices(services...)
|
||||
|
||||
if err := n.Send(context.Background(), "subject", "message"); err == nil {
|
||||
t.Errorf("Send() invalid mail returned no error: %v", err)
|
||||
}
|
||||
}
|
||||
|
@ -11,9 +11,17 @@ import (
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
//go:generate mockery --name=sesClient --output=. --case=underscore --inpackage
|
||||
type sesClient interface {
|
||||
SendEmail(ctx context.Context, params *ses.SendEmailInput, optFns ...func(options *ses.Options)) (*ses.SendEmailOutput, error)
|
||||
}
|
||||
|
||||
// Compile-time check to ensure that ses.Client implements the sesClient interface.
|
||||
var _ sesClient = new(ses.Client)
|
||||
|
||||
// AmazonSES struct holds necessary data to communicate with the Amazon Simple Email Service API.
|
||||
type AmazonSES struct {
|
||||
client *ses.Client
|
||||
client sesClient
|
||||
senderAddress *string
|
||||
receiverAddresses []string
|
||||
}
|
||||
|
115
service/amazonses/amazon_ses_test.go
Normal file
115
service/amazonses/amazon_ses_test.go
Normal file
@ -0,0 +1,115 @@
|
||||
package amazonses
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
"github.com/aws/aws-sdk-go-v2/service/ses"
|
||||
"github.com/aws/aws-sdk-go-v2/service/ses/types"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestAmazonSES_New(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
service, err := New("", "", "", "")
|
||||
assert.NotNil(service)
|
||||
assert.Nil(err)
|
||||
}
|
||||
|
||||
func TestAmazonSES_AddReceivers(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
service, err := New("", "", "", "")
|
||||
assert.NotNil(service)
|
||||
assert.Nil(err)
|
||||
|
||||
receivers := []string{"1", "2", "3", "4", "5"}
|
||||
service.AddReceivers(receivers...)
|
||||
|
||||
assert.Equal(service.receiverAddresses, receivers)
|
||||
|
||||
a6 := "6"
|
||||
receivers = append(receivers, a6)
|
||||
service.AddReceivers(a6)
|
||||
assert.Equal(service.receiverAddresses, receivers)
|
||||
}
|
||||
|
||||
func TestAmazonSES_Send(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
sender := "4"
|
||||
service, err := New("1", "2", "3", sender)
|
||||
assert.NotNil(service)
|
||||
assert.Nil(err)
|
||||
|
||||
// Example payload
|
||||
input := ses.SendEmailInput{
|
||||
Source: &sender,
|
||||
Destination: &types.Destination{
|
||||
ToAddresses: []string{},
|
||||
},
|
||||
Message: &types.Message{
|
||||
Body: &types.Body{
|
||||
Html: &types.Content{
|
||||
Data: aws.String("message"),
|
||||
},
|
||||
},
|
||||
Subject: &types.Content{
|
||||
Data: aws.String("subject"),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// No receivers added
|
||||
ctx := context.Background()
|
||||
|
||||
mockClient := newMockSesClient(t)
|
||||
mockClient.
|
||||
On("SendEmail", ctx, &input).
|
||||
Return(nil, nil)
|
||||
service.client = mockClient
|
||||
|
||||
err = service.Send(ctx, "subject", "message")
|
||||
assert.Nil(err)
|
||||
mockClient.AssertExpectations(t)
|
||||
|
||||
// Test with receivers
|
||||
receivers := []string{"1", "2"}
|
||||
input.Destination.ToAddresses = receivers
|
||||
service.AddReceivers(receivers...)
|
||||
|
||||
mockClient = newMockSesClient(t)
|
||||
mockClient.
|
||||
On("SendEmail", ctx, &input).
|
||||
Return(nil, nil)
|
||||
service.client = mockClient
|
||||
|
||||
err = service.Send(ctx, "subject", "message")
|
||||
assert.Nil(err)
|
||||
mockClient.AssertExpectations(t)
|
||||
|
||||
// Test with more receivers and error response
|
||||
receivers = []string{"1", "2", "3", "4", "5"}
|
||||
input.Destination.ToAddresses = receivers
|
||||
service.receiverAddresses = make([]string, 0)
|
||||
service.AddReceivers(receivers...)
|
||||
|
||||
mockClient = newMockSesClient(t)
|
||||
mockClient.
|
||||
On("SendEmail", ctx, &input).
|
||||
Return(nil, errors.New("some error"))
|
||||
service.client = mockClient
|
||||
|
||||
err = service.Send(ctx, "subject", "message")
|
||||
assert.NotNil(err)
|
||||
mockClient.AssertExpectations(t)
|
||||
}
|
60
service/amazonses/mock_ses_client.go
Normal file
60
service/amazonses/mock_ses_client.go
Normal file
@ -0,0 +1,60 @@
|
||||
// Code generated by mockery v2.14.0. DO NOT EDIT.
|
||||
|
||||
package amazonses
|
||||
|
||||
import (
|
||||
context "context"
|
||||
|
||||
ses "github.com/aws/aws-sdk-go-v2/service/ses"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
// mockSesClient is an autogenerated mock type for the sesClient type
|
||||
type mockSesClient struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
// SendEmail provides a mock function with given fields: ctx, params, optFns
|
||||
func (_m *mockSesClient) SendEmail(ctx context.Context, params *ses.SendEmailInput, optFns ...func(*ses.Options)) (*ses.SendEmailOutput, error) {
|
||||
_va := make([]interface{}, len(optFns))
|
||||
for _i := range optFns {
|
||||
_va[_i] = optFns[_i]
|
||||
}
|
||||
var _ca []interface{}
|
||||
_ca = append(_ca, ctx, params)
|
||||
_ca = append(_ca, _va...)
|
||||
ret := _m.Called(_ca...)
|
||||
|
||||
var r0 *ses.SendEmailOutput
|
||||
if rf, ok := ret.Get(0).(func(context.Context, *ses.SendEmailInput, ...func(*ses.Options)) *ses.SendEmailOutput); ok {
|
||||
r0 = rf(ctx, params, optFns...)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*ses.SendEmailOutput)
|
||||
}
|
||||
}
|
||||
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(context.Context, *ses.SendEmailInput, ...func(*ses.Options)) error); ok {
|
||||
r1 = rf(ctx, params, optFns...)
|
||||
} else {
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
type mockConstructorTestingTnewMockSesClient interface {
|
||||
mock.TestingT
|
||||
Cleanup(func())
|
||||
}
|
||||
|
||||
// newMockSesClient creates a new instance of mockSesClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
||||
func newMockSesClient(t mockConstructorTestingTnewMockSesClient) *mockSesClient {
|
||||
mock := &mockSesClient{}
|
||||
mock.Mock.Test(t)
|
||||
|
||||
t.Cleanup(func() { mock.AssertExpectations(t) })
|
||||
|
||||
return mock
|
||||
}
|
@ -7,9 +7,17 @@ import (
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
//go:generate mockery --name=discordSession --output=. --case=underscore --inpackage
|
||||
type discordSession interface {
|
||||
ChannelMessageSend(channelID string, content string) (*discordgo.Message, error)
|
||||
}
|
||||
|
||||
// Compile-time check to ensure that discordgo.Session implements the discordSession interface.
|
||||
var _ discordSession = new(discordgo.Session)
|
||||
|
||||
// Discord struct holds necessary data to communicate with the Discord API.
|
||||
type Discord struct {
|
||||
client *discordgo.Session
|
||||
client discordSession
|
||||
channelIDs []string
|
||||
}
|
||||
|
||||
|
96
service/discord/discord_test.go
Normal file
96
service/discord/discord_test.go
Normal file
@ -0,0 +1,96 @@
|
||||
package discord
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestNew(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
assert.NotNil(New())
|
||||
}
|
||||
|
||||
func TestDiscord_AddReceivers(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
service := New()
|
||||
assert.NotNil(service)
|
||||
|
||||
channels := []string{"1", "2", "3", "4", "5"}
|
||||
service.AddReceivers(channels...)
|
||||
assert.Equal(service.channelIDs, channels)
|
||||
}
|
||||
|
||||
func TestDiscord_Authenticate(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
service := New()
|
||||
assert.NotNil(service)
|
||||
|
||||
// Note: The following might look confusing, because the validation mechanism is not mocked and never returns an
|
||||
// error. The function name may be misleading because it is not actually testing the authentication mechanism. The
|
||||
// actual authentication only happens when the service is sends a message.
|
||||
|
||||
// OAuth2
|
||||
err := service.AuthenticateWithOAuth2Token("12345")
|
||||
assert.Nil(err)
|
||||
|
||||
err = service.AuthenticateWithOAuth2Token("")
|
||||
assert.Nil(err)
|
||||
|
||||
// Bot token
|
||||
err = service.AuthenticateWithBotToken("12345")
|
||||
assert.Nil(err)
|
||||
|
||||
err = service.AuthenticateWithBotToken("")
|
||||
assert.Nil(err)
|
||||
}
|
||||
|
||||
func TestDiscord_Send(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
service := New()
|
||||
assert.NotNil(service)
|
||||
|
||||
// No receivers added
|
||||
ctx := context.Background()
|
||||
err := service.Send(ctx, "subject", "message")
|
||||
assert.Nil(err)
|
||||
|
||||
// Test error response
|
||||
mockClient := newMockDiscordSession(t)
|
||||
mockClient.
|
||||
On("ChannelMessageSend", "1234", "subject\nmessage").
|
||||
Return(nil, errors.New("some error"))
|
||||
|
||||
service.client = mockClient
|
||||
service.AddReceivers("1234")
|
||||
err = service.Send(ctx, "subject", "message")
|
||||
assert.NotNil(err)
|
||||
mockClient.AssertExpectations(t)
|
||||
|
||||
// Test success response
|
||||
mockClient = newMockDiscordSession(t)
|
||||
mockClient.
|
||||
On("ChannelMessageSend", "1234", "subject\nmessage").
|
||||
Return(nil, nil)
|
||||
|
||||
mockClient.
|
||||
On("ChannelMessageSend", "5678", "subject\nmessage").
|
||||
Return(nil, nil)
|
||||
|
||||
service.client = mockClient
|
||||
service.AddReceivers("5678")
|
||||
err = service.Send(ctx, "subject", "message")
|
||||
assert.Nil(err)
|
||||
mockClient.AssertExpectations(t)
|
||||
}
|
51
service/discord/mock_discord_session.go
Normal file
51
service/discord/mock_discord_session.go
Normal file
@ -0,0 +1,51 @@
|
||||
// Code generated by mockery v2.14.0. DO NOT EDIT.
|
||||
|
||||
package discord
|
||||
|
||||
import (
|
||||
discordgo "github.com/bwmarrin/discordgo"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
// mockDiscordSession is an autogenerated mock type for the discordSession type
|
||||
type mockDiscordSession struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
// ChannelMessageSend provides a mock function with given fields: channelID, content
|
||||
func (_m *mockDiscordSession) ChannelMessageSend(channelID string, content string) (*discordgo.Message, error) {
|
||||
ret := _m.Called(channelID, content)
|
||||
|
||||
var r0 *discordgo.Message
|
||||
if rf, ok := ret.Get(0).(func(string, string) *discordgo.Message); ok {
|
||||
r0 = rf(channelID, content)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*discordgo.Message)
|
||||
}
|
||||
}
|
||||
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(string, string) error); ok {
|
||||
r1 = rf(channelID, content)
|
||||
} else {
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
type mockConstructorTestingTnewMockDiscordSession interface {
|
||||
mock.TestingT
|
||||
Cleanup(func())
|
||||
}
|
||||
|
||||
// newMockDiscordSession creates a new instance of mockDiscordSession. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
||||
func newMockDiscordSession(t mockConstructorTestingTnewMockDiscordSession) *mockDiscordSession {
|
||||
mock := &mockDiscordSession{}
|
||||
mock.Mock.Test(t)
|
||||
|
||||
t.Cleanup(func() { mock.AssertExpectations(t) })
|
||||
|
||||
return mock
|
||||
}
|
60
service/msteams/mock_teams_client.go
Normal file
60
service/msteams/mock_teams_client.go
Normal file
@ -0,0 +1,60 @@
|
||||
// Code generated by mockery v2.14.0. DO NOT EDIT.
|
||||
|
||||
package msteams
|
||||
|
||||
import (
|
||||
context "context"
|
||||
|
||||
goteamsnotify "github.com/atc0005/go-teams-notify/v2"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
// mockTeamsClient is an autogenerated mock type for the teamsClient type
|
||||
type mockTeamsClient struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
// SendWithContext provides a mock function with given fields: ctx, webhookURL, webhookMessage
|
||||
func (_m *mockTeamsClient) SendWithContext(ctx context.Context, webhookURL string, webhookMessage goteamsnotify.MessageCard) error {
|
||||
ret := _m.Called(ctx, webhookURL, webhookMessage)
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, goteamsnotify.MessageCard) error); ok {
|
||||
r0 = rf(ctx, webhookURL, webhookMessage)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// SkipWebhookURLValidationOnSend provides a mock function with given fields: skip
|
||||
func (_m *mockTeamsClient) SkipWebhookURLValidationOnSend(skip bool) goteamsnotify.API {
|
||||
ret := _m.Called(skip)
|
||||
|
||||
var r0 goteamsnotify.API
|
||||
if rf, ok := ret.Get(0).(func(bool) goteamsnotify.API); ok {
|
||||
r0 = rf(skip)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(goteamsnotify.API)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
type mockConstructorTestingTnewMockTeamsClient interface {
|
||||
mock.TestingT
|
||||
Cleanup(func())
|
||||
}
|
||||
|
||||
// newMockTeamsClient creates a new instance of mockTeamsClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
||||
func newMockTeamsClient(t mockConstructorTestingTnewMockTeamsClient) *mockTeamsClient {
|
||||
mock := &mockTeamsClient{}
|
||||
mock.Mock.Test(t)
|
||||
|
||||
t.Cleanup(func() { mock.AssertExpectations(t) })
|
||||
|
||||
return mock
|
||||
}
|
@ -3,13 +3,22 @@ package msteams
|
||||
import (
|
||||
"context"
|
||||
|
||||
goteamsnotify "github.com/atc0005/go-teams-notify/v2"
|
||||
teams "github.com/atc0005/go-teams-notify/v2"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
//go:generate mockery --name=teamsClient --output=. --case=underscore --inpackage
|
||||
type teamsClient interface {
|
||||
SendWithContext(ctx context.Context, webhookURL string, webhookMessage teams.MessageCard) error
|
||||
SkipWebhookURLValidationOnSend(skip bool) teams.API
|
||||
}
|
||||
|
||||
// Compile-time check to ensure that teams.Client implements the teamsClient interface.
|
||||
var _ teamsClient = teams.NewClient()
|
||||
|
||||
// MSTeams struct holds necessary data to communicate with the MSTeams API.
|
||||
type MSTeams struct {
|
||||
client goteamsnotify.API
|
||||
client teamsClient
|
||||
webHooks []string
|
||||
}
|
||||
|
||||
@ -18,7 +27,7 @@ type MSTeams struct {
|
||||
//
|
||||
// -> https://github.com/atc0005/go-teams-notify#example-basic
|
||||
func New() *MSTeams {
|
||||
client := goteamsnotify.NewClient()
|
||||
client := teams.NewClient()
|
||||
|
||||
m := &MSTeams{
|
||||
client: client,
|
||||
@ -49,7 +58,7 @@ func (m *MSTeams) AddReceivers(webHooks ...string) {
|
||||
//
|
||||
// -> https://github.com/atc0005/go-teams-notify#example-basic
|
||||
func (m MSTeams) Send(ctx context.Context, subject, message string) error {
|
||||
msgCard := goteamsnotify.NewMessageCard()
|
||||
msgCard := teams.NewMessageCard()
|
||||
msgCard.Title = subject
|
||||
msgCard.Text = message
|
||||
|
||||
|
86
service/msteams/ms_teams_test.go
Normal file
86
service/msteams/ms_teams_test.go
Normal file
@ -0,0 +1,86 @@
|
||||
package msteams
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
teams "github.com/atc0005/go-teams-notify/v2"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestNew(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
service := New()
|
||||
assert.NotNil(service)
|
||||
}
|
||||
|
||||
func TestMSTeams_AddReceivers(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
service := New()
|
||||
assert.NotNil(service)
|
||||
|
||||
service.AddReceivers("https://outlook.office.com/webhook/...")
|
||||
assert.Equal(1, len(service.webHooks))
|
||||
|
||||
service.AddReceivers("https://outlook.office.com/webhook/...", "https://outlook.office.com/webhook/...")
|
||||
assert.Equal(3, len(service.webHooks))
|
||||
|
||||
hooks := []string{"https://outlook.office.com/webhook/...", "https://outlook.office.com/webhook/..."}
|
||||
service.webHooks = []string{}
|
||||
service.AddReceivers(hooks...)
|
||||
|
||||
assert.Equal(service.webHooks, hooks)
|
||||
}
|
||||
|
||||
func TestMSTeams_Send(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
service := New()
|
||||
assert.NotNil(service)
|
||||
|
||||
// Test no receivers
|
||||
ctx := context.Background()
|
||||
err := service.Send(ctx, "subject", "message")
|
||||
assert.Nil(err)
|
||||
|
||||
// Test error response
|
||||
message := teams.NewMessageCard()
|
||||
message.Title = "subject"
|
||||
message.Text = "message"
|
||||
|
||||
mockClient := newMockTeamsClient(t)
|
||||
mockClient.
|
||||
On("SendWithContext", ctx, "1234", message).
|
||||
Return(errors.New("some error"))
|
||||
|
||||
service.client = mockClient
|
||||
service.AddReceivers("1234")
|
||||
err = service.Send(ctx, "subject", "message")
|
||||
assert.NotNil(err)
|
||||
mockClient.AssertExpectations(t)
|
||||
|
||||
// Test success response
|
||||
mockClient = newMockTeamsClient(t)
|
||||
mockClient.
|
||||
On("SendWithContext", ctx, "1234", message).
|
||||
Return(nil)
|
||||
|
||||
mockClient.
|
||||
On("SendWithContext", ctx, "5678", message).
|
||||
Return(nil)
|
||||
|
||||
service.client = mockClient
|
||||
service.AddReceivers("5678")
|
||||
err = service.Send(ctx, "subject", "message")
|
||||
assert.Nil(err)
|
||||
mockClient.AssertExpectations(t)
|
||||
}
|
65
service/slack/mock_slack_client.go
Normal file
65
service/slack/mock_slack_client.go
Normal file
@ -0,0 +1,65 @@
|
||||
// Code generated by mockery v2.14.0. DO NOT EDIT.
|
||||
|
||||
package slack
|
||||
|
||||
import (
|
||||
context "context"
|
||||
|
||||
slack_goslack "github.com/slack-go/slack"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
// mockSlackClient is an autogenerated mock type for the slackClient type
|
||||
type mockSlackClient struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
// PostMessageContext provides a mock function with given fields: ctx, channelID, options
|
||||
func (_m *mockSlackClient) PostMessageContext(ctx context.Context, channelID string, options ...slack_goslack.MsgOption) (string, string, error) {
|
||||
_va := make([]interface{}, len(options))
|
||||
for _i := range options {
|
||||
_va[_i] = options[_i]
|
||||
}
|
||||
var _ca []interface{}
|
||||
_ca = append(_ca, ctx, channelID)
|
||||
_ca = append(_ca, _va...)
|
||||
ret := _m.Called(_ca...)
|
||||
|
||||
var r0 string
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, ...slack_goslack.MsgOption) string); ok {
|
||||
r0 = rf(ctx, channelID, options...)
|
||||
} else {
|
||||
r0 = ret.Get(0).(string)
|
||||
}
|
||||
|
||||
var r1 string
|
||||
if rf, ok := ret.Get(1).(func(context.Context, string, ...slack_goslack.MsgOption) string); ok {
|
||||
r1 = rf(ctx, channelID, options...)
|
||||
} else {
|
||||
r1 = ret.Get(1).(string)
|
||||
}
|
||||
|
||||
var r2 error
|
||||
if rf, ok := ret.Get(2).(func(context.Context, string, ...slack_goslack.MsgOption) error); ok {
|
||||
r2 = rf(ctx, channelID, options...)
|
||||
} else {
|
||||
r2 = ret.Error(2)
|
||||
}
|
||||
|
||||
return r0, r1, r2
|
||||
}
|
||||
|
||||
type mockConstructorTestingTnewMockSlackClient interface {
|
||||
mock.TestingT
|
||||
Cleanup(func())
|
||||
}
|
||||
|
||||
// newMockSlackClient creates a new instance of mockSlackClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
||||
func newMockSlackClient(t mockConstructorTestingTnewMockSlackClient) *mockSlackClient {
|
||||
mock := &mockSlackClient{}
|
||||
mock.Mock.Test(t)
|
||||
|
||||
t.Cleanup(func() { mock.AssertExpectations(t) })
|
||||
|
||||
return mock
|
||||
}
|
@ -7,9 +7,17 @@ import (
|
||||
"github.com/slack-go/slack"
|
||||
)
|
||||
|
||||
//go:generate mockery --name=slackClient --output=. --case=underscore --inpackage
|
||||
type slackClient interface {
|
||||
PostMessageContext(ctx context.Context, channelID string, options ...slack.MsgOption) (string, string, error)
|
||||
}
|
||||
|
||||
// Compile-time check to ensure that slack.Client implements the slackClient interface.
|
||||
var _ slackClient = new(slack.Client)
|
||||
|
||||
// Slack struct holds necessary data to communicate with the Slack API.
|
||||
type Slack struct {
|
||||
client *slack.Client
|
||||
client slackClient
|
||||
channelIDs []string
|
||||
}
|
||||
|
||||
|
84
service/slack/slack_test.go
Normal file
84
service/slack/slack_test.go
Normal file
@ -0,0 +1,84 @@
|
||||
package slack
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/stretchr/testify/mock"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestNew(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
service := New("")
|
||||
assert.NotNil(service)
|
||||
}
|
||||
|
||||
func TestSlack_AddReceivers(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
service := New("")
|
||||
assert.NotNil(service)
|
||||
|
||||
service.AddReceivers("")
|
||||
assert.Len(service.channelIDs, 1)
|
||||
|
||||
service.AddReceivers("", "")
|
||||
assert.Len(service.channelIDs, 3)
|
||||
|
||||
service.channelIDs = []string{}
|
||||
receivers := []string{"", ""}
|
||||
service.AddReceivers(receivers...)
|
||||
|
||||
diff := cmp.Diff(service.channelIDs, receivers)
|
||||
assert.Equal("", diff)
|
||||
}
|
||||
|
||||
func TestSlack_Send(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
service := New("")
|
||||
assert.NotNil(service)
|
||||
|
||||
// No receivers added
|
||||
ctx := context.Background()
|
||||
err := service.Send(ctx, "subject", "message")
|
||||
assert.Nil(err)
|
||||
|
||||
// Test error response
|
||||
mockClient := newMockSlackClient(t)
|
||||
mockClient.
|
||||
On("PostMessageContext", ctx, "1234", mock.AnythingOfType("MsgOption")).
|
||||
Return("", "", errors.New("some error"))
|
||||
|
||||
service.client = mockClient
|
||||
service.AddReceivers("1234")
|
||||
err = service.Send(ctx, "subject", "message")
|
||||
assert.NotNil(err)
|
||||
mockClient.AssertExpectations(t)
|
||||
|
||||
// Test success response
|
||||
mockClient = newMockSlackClient(t)
|
||||
mockClient.
|
||||
On("PostMessageContext", ctx, "1234", mock.AnythingOfType("MsgOption")).
|
||||
Return("", "", nil)
|
||||
|
||||
mockClient.
|
||||
On("PostMessageContext", ctx, "5678", mock.AnythingOfType("MsgOption")).
|
||||
Return("", "", nil)
|
||||
|
||||
service.client = mockClient
|
||||
service.AddReceivers("5678")
|
||||
err = service.Send(ctx, "subject", "message")
|
||||
assert.Nil(err)
|
||||
mockClient.AssertExpectations(t)
|
||||
}
|
@ -40,11 +40,10 @@ func New() (*Service, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
s := &Service{
|
||||
return &Service{
|
||||
client: client,
|
||||
contacts: []string{},
|
||||
}
|
||||
return s, nil
|
||||
}, nil
|
||||
}
|
||||
|
||||
// LoginWithSessionCredentials provides helper for authentication using whatsapp.Session credentials.
|
||||
|
Loading…
x
Reference in New Issue
Block a user