mirror of
				https://github.com/nikoksr/notify.git
				synced 2025-10-30 23:57:57 +02:00 
			
		
		
		
	test(notify): add tests for Notify's core functions
This only adds tests for Notify itself, not for the list of supported services.
This commit is contained in:
		
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @@ -33,6 +33,8 @@ require ( | ||||
| 	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c | ||||
| ) | ||||
|  | ||||
| require github.com/google/go-cmp v0.5.7 | ||||
|  | ||||
| require ( | ||||
| 	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.3 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.9 // indirect | ||||
|   | ||||
							
								
								
									
										32
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								go.sum
									
									
									
									
									
								
							| @@ -50,52 +50,28 @@ github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwc | ||||
| github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= | ||||
| 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.1 h1:udzee98w8H6ikRgtFdVN9JzzYEbi/quFfSvduZETJIU= | ||||
| github.com/aws/aws-sdk-go-v2 v1.16.1/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU= | ||||
| github.com/aws/aws-sdk-go-v2 v1.16.2 h1:fqlCk6Iy3bnCumtrLz9r3mJ/2gUT0pJ0wLFVIdWh+JA= | ||||
| github.com/aws/aws-sdk-go-v2 v1.16.2/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.15.2 h1:4oGcm1yqqtTc2Z8YpwehwjSiBA3TR0iZbFCgNlXcVFQ= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.15.2/go.mod h1:S1p1xf7DGVp0srNq0BakyxfirOldPQeDVlx7+fllyok= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.15.3 h1:5AlQD0jhVXlGzwo+VORKiUuogkG7pQcLJNzIzK7eodw= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.15.3/go.mod h1:9YL3v07Xc/ohTsxFXzan9ZpFpdTOFl4X65BAKYaz8jg= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.11.1 h1:uR323+M7ca3v2GKXbFSwWbNA3kLjjFzaalL6W4rpB9s= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.11.1/go.mod h1:pYrHWfKUoWTmbr+xTf6ZoWeyyvLAQ5BPT3aL+nKlTpE= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.11.2 h1:RQQ5fzclAKJyY5TvF+fkjJEwzK4hnxQCLOu5JXzDmQo= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.11.2/go.mod h1:j8YsY9TXTm31k4eFhspiQicfXPLZ0gYXA50i4gxPE8g= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.2 h1:+AULPOLHEDjH2TcNKpixl4gt26hFOdlUuuisZUBFczA= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.2/go.mod h1:jmsqNRVo2XlUTNXG/NF7hM7o2gd2jhfg8vdJ135d4XA= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.3 h1:LWPg5zjHV9oz/myQr4wMs0gi4CjnDN/ILmyZUFYXZsU= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.3/go.mod h1:uk1vhHHERfSVCUnqSqz8O48LBYDSC+k6brng09jcMOk= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.8 h1:CDaO90VZVBAL1sK87S5oSPIrp7yZqORv1hPIi2UsTMk= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.8/go.mod h1:LnTQMTqbKsbtt+UI5+wPsB7jedW+2ZgozoPG8k6cMxg= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.9 h1:onz/VaaxZ7Z4V+WIN9Txly9XLTmoOh1oJ8XcAC3pako= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.9/go.mod h1:AnVH5pvai0pAF4lXRq0bmhbes1u9R8wTE+g+183bZNM= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.2 h1:XXR3cdOcKRCTZf6ctcqpMf+go1BdzTm6+T9Ul5zxcMI= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.2/go.mod h1:1x4ZP3Z8odssdhuLI+/1Tqw6Pt/VAaP4Tr8EUxHvPXE= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.3 h1:9stUQR/u2KXU6HkFJYlqnZEjBnbgrVbG6I5HN09xZh0= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.3/go.mod h1:ssOhaLpRlh88H3UmEcsBoVKq309quMvm3Ds8e9d4eJM= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.9 h1:8umg6LSQ/b0+ZTq+Ro8K7VLGVwd7kiYQtIACpf2N/Yo= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.9/go.mod h1:kASRBzoVW4I8KUmGCjsowAqVor9QU9DuTUABVducrTY= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.10 h1:by9P+oy3P/CwggN4ClnW2D4oL91QV7pBzBICi1chZvQ= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.10/go.mod h1:8DcYQcz0+ZJaSxANlHIsbbi6S+zMwjwdDqwW3r9AzaE= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.2 h1:RrN7V0r8+lUUKZM4OAoCOIZqjPLZPOl6wuwMd2QIryI= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.2/go.mod h1:7hwSi01X5Yj9H0qLQljrn8OSdLwwSym1aQCfGn1tDQQ= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.3 h1:Gh1Gpyh01Yvn7ilO/b/hr01WgNpaszfbKMUgqM186xQ= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.3/go.mod h1:wlY6SVjuwvh3TVRpTqdy4I1JpBFLX4UGeKZdWntaocw= | ||||
| github.com/aws/aws-sdk-go-v2/service/ses v1.14.2 h1:K5hJGfMhU7g+3akLDJIZgpMzCwL1Q0P5gJmkIY169hw= | ||||
| github.com/aws/aws-sdk-go-v2/service/ses v1.14.2/go.mod h1:xPjwSTJ7+h57gQeTUbsrQ6hvr7wjhfNaf3oK1AWuRvA= | ||||
| github.com/aws/aws-sdk-go-v2/service/ses v1.14.3 h1:SNFIa2NvkZ46nkkUS6DlTjgQItjjYCjrh+UCpD5mF4Y= | ||||
| github.com/aws/aws-sdk-go-v2/service/ses v1.14.3/go.mod h1:VPOcsfmvq+FyaT47LT8ReFGD0NXnPEbcJGbxm7mC3yg= | ||||
| github.com/aws/aws-sdk-go-v2/service/sns v1.17.3 h1:c4Xz9g2OwXVS65vHmnOa5SFHZZ5QNkoSxInC7UMn2p4= | ||||
| github.com/aws/aws-sdk-go-v2/service/sns v1.17.3/go.mod h1:PrZELgNG6JtNfXie2v033h5LznOiaAcI6jF2Fx6JDZM= | ||||
| github.com/aws/aws-sdk-go-v2/service/sns v1.17.4 h1:7TdmoJJBwLFyakXjfrGztejwY5Ie1JEto7YFfznCmAw= | ||||
| github.com/aws/aws-sdk-go-v2/service/sns v1.17.4/go.mod h1:kElt+uCcXxcqFyc+bQqZPFD9DME/eC6oHBXvFzQ9Bcw= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.11.2 h1:8fVz1c9B/63w7O0kxbrCTT69iV4DgXnFumarPCZ3Cns= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.11.2/go.mod h1:GdCj3+FzI3D5tauOzz8n3YjN70XvgZz82PVVtJXmDds= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.11.3 h1:frW4ikGcxfAEDfmQqWgMLp+F1n4nRo9sF39OcIb5BkQ= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.11.3/go.mod h1:7UQ/e69kU7LDPtY40OyoHYgRmgfGM4mgsLYtcObdveU= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.16.2 h1:qgK5htfKByTiPxS/diZ/mTCfDwGAVuyjRdqu6VoCh80= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.16.2/go.mod h1:RoMljzynmRe3jyOsRgqIMTzyhpAv6XNxu549M1X4Mdo= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.16.3 h1:cJGRyzCSVwZC7zZZ1xbx9m32UnrKydRYhOvcD1NYP9Q= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.16.3/go.mod h1:bfBj0iVmsUyUg4weDB4NxktD9rDGeKSVWnjTnwbx9b8= | ||||
| github.com/aws/smithy-go v1.11.2 h1:eG/N+CcUMAvsdffgMvjMKwfyDzIkjM6pfxMJ8Mzc6mE= | ||||
| @@ -105,12 +81,8 @@ github.com/blinkbean/dingtalk v0.0.0-20210905093040-7d935c0f7e19/go.mod h1:9BaLu | ||||
| github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= | ||||
| 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.24.0 h1:Gw4MYxqHdvhO99A3nXnSLy97z5pmIKHZVJ1JY5ZDPqY= | ||||
| github.com/bwmarrin/discordgo v0.24.0/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY= | ||||
| github.com/bwmarrin/discordgo v0.25.0 h1:NXhdfHRNxtwso6FPdzW2i3uBvvU7UIQTghmV2T4nqAs= | ||||
| github.com/bwmarrin/discordgo v0.25.0/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY= | ||||
| github.com/cenkalti/backoff/v4 v4.1.2 h1:6Yo7N8UP2K6LWZnW94DLVSSrbobcWdVzAYOisuDPIFo= | ||||
| github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= | ||||
| github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= | ||||
| github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= | ||||
| github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||
| @@ -126,8 +98,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-20220319054129-995614af6514 h1:ddbCPZ9QZRZXVKONtHFEULOYo0gR5fvRGY/laH/3hWA= | ||||
| github.com/dghubble/go-twitter v0.0.0-20220319054129-995614af6514/go.mod h1:qPG2N91lrezEUoU/9eem10s7fVt+ohhDh0LFv2tq0Og= | ||||
| github.com/dghubble/go-twitter v0.0.0-20220413154426-14d8abde2e80 h1:pq636dbda5rkQyrFUOeADrGeKQGlCHBvcpGKqsVZ4ZQ= | ||||
| github.com/dghubble/go-twitter v0.0.0-20220413154426-14d8abde2e80/go.mod h1:7vl8uM4He/dTj20TDHBwvkKEBPUm60re8htWb7YRo+Q= | ||||
| github.com/dghubble/oauth1 v0.7.1 h1:JjbOVSVVkms9A4h/sTQy5Jb2nFuAAVb2qVYgenJPyrE= | ||||
| @@ -251,8 +221,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||
| github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||||
| github.com/line/line-bot-sdk-go v7.8.0+incompatible h1:Uf9/OxV0zCVfqyvwZPH8CrdiHXXmMRa/L91G3btQblQ= | ||||
| github.com/line/line-bot-sdk-go v7.8.0+incompatible/go.mod h1:0RjLjJEAU/3GIcHkC3av6O4jInAbt25nnZVmOFUgDBg= | ||||
| github.com/mailgun/mailgun-go/v4 v4.6.0 h1:qSrgT3wP5fU7wF/tNUp4xeYe8wSUy+8V5NJPYnB6Hxo= | ||||
| github.com/mailgun/mailgun-go/v4 v4.6.0/go.mod h1:FJlF9rI5cQT+mrwujtJjPMbIVy3Ebor9bKTVsJ0QU40= | ||||
| github.com/mailgun/mailgun-go/v4 v4.6.1 h1:ETvvkcHd6I+FwFgAwZSf02RXKFA0Rg3djOFic//RAu0= | ||||
| github.com/mailgun/mailgun-go/v4 v4.6.1/go.mod h1:FJlF9rI5cQT+mrwujtJjPMbIVy3Ebor9bKTVsJ0QU40= | ||||
| github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= | ||||
|   | ||||
							
								
								
									
										66
									
								
								notify_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								notify_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| package notify | ||||
|  | ||||
| import ( | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/google/go-cmp/cmp" | ||||
| ) | ||||
|  | ||||
| func TestNew(t *testing.T) { | ||||
| 	t.Parallel() | ||||
|  | ||||
| 	n1 := New() | ||||
| 	if n1 == nil { | ||||
| 		t.Fatal("New() returned nil") | ||||
| 	} | ||||
| 	if n1.Disabled { | ||||
| 		t.Fatal("New() returned disabled Notifier") | ||||
| 	} | ||||
|  | ||||
| 	n2 := NewWithOptions() | ||||
| 	if n2 == nil { | ||||
| 		t.Fatal("NewWithOptions() returned nil") | ||||
| 	} | ||||
| 	diff := cmp.Diff(n1, n2, cmp.AllowUnexported(Notify{})) | ||||
| 	if diff != "" { | ||||
| 		t.Errorf("New() and NewWithOptions() returned different Notifiers:\n%s", diff) | ||||
| 	} | ||||
|  | ||||
| 	n3 := NewWithOptions(Disable) | ||||
| 	if !n3.Disabled { | ||||
| 		t.Error("NewWithOptions(Disable) did not disable Notifier") | ||||
| 	} | ||||
|  | ||||
| 	n3.WithOptions(Enable) | ||||
| 	if n3.Disabled { | ||||
| 		t.Error("WithOptions(Enable) did not enable Notifier") | ||||
| 	} | ||||
|  | ||||
| 	n3Copy := *n3 | ||||
| 	n3.WithOptions() | ||||
| 	diff = cmp.Diff(n3, &n3Copy, cmp.AllowUnexported(Notify{})) | ||||
| 	if diff != "" { | ||||
| 		t.Errorf("WithOptions() altered the Notifier:\n%s", diff) | ||||
| 	} | ||||
|  | ||||
| 	n3.WithOptions(nil) | ||||
| 	if r := recover(); r != nil { | ||||
| 		t.Errorf("WithOptions(nil) panicked: %v", r) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestDefault(t *testing.T) { | ||||
| 	t.Parallel() | ||||
|  | ||||
| 	n := Default() | ||||
| 	if n == nil { | ||||
| 		t.Fatal("Default() returned nil") | ||||
| 	} | ||||
| 	if n.Disabled { | ||||
| 		t.Fatal("Default() returned disabled Notifier") | ||||
| 	} | ||||
| 	// Compare addresses on purpose. | ||||
| 	if n != std { | ||||
| 		t.Error("Default() did not return the default Notifier") | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										40
									
								
								send_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								send_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| package notify | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/nikoksr/notify/service/mail" | ||||
| ) | ||||
|  | ||||
| func TestNotifySend(t *testing.T) { | ||||
| 	t.Parallel() | ||||
|  | ||||
| 	n := New() | ||||
| 	if n == nil { | ||||
| 		t.Fatal("New() returned nil") | ||||
| 	} | ||||
| 	if n.Disabled { | ||||
| 		t.Fatal("New() returned disabled Notifier") | ||||
| 	} | ||||
|  | ||||
| 	// Nil context | ||||
| 	if err := n.Send(nil, "subject", "message"); err != nil { | ||||
| 		t.Errorf("Send() returned error: %v", err) | ||||
| 	} | ||||
| 	if r := recover(); r != nil { | ||||
| 		t.Errorf("Send() panicked: %v", r) | ||||
| 	} | ||||
|  | ||||
| 	ctx := context.Background() | ||||
| 	if err := n.Send(ctx, "subject", "message"); err != nil { | ||||
| 		t.Errorf("Send() returned error: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	// This is not meant to test the mail service, but rather the general capability of the Send() function to catch | ||||
| 	// errors. | ||||
| 	n.UseServices(mail.New("", "")) | ||||
| 	if err := n.Send(ctx, "subject", "message"); err == nil { | ||||
| 		t.Errorf("Send() invalid mail returned no error: %v", err) | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										39
									
								
								use_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								use_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| package notify | ||||
|  | ||||
| import ( | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/nikoksr/notify/service/mail" | ||||
| ) | ||||
|  | ||||
| func TestUseServices(t *testing.T) { | ||||
| 	t.Parallel() | ||||
|  | ||||
| 	n := New() | ||||
| 	if n == nil { | ||||
| 		t.Fatal("New() returned nil") | ||||
| 	} | ||||
| 	if len(n.notifiers) != 0 { | ||||
| 		t.Fatalf("Expected len(n.notifiers) == 0, got %d", len(n.notifiers)) | ||||
| 	} | ||||
|  | ||||
| 	n.UseServices(mail.New("", "")) | ||||
|  | ||||
| 	if len(n.notifiers) != 1 { | ||||
| 		t.Errorf("Expected len(n.notifiers) == 1, got %d", len(n.notifiers)) | ||||
| 	} | ||||
|  | ||||
| 	n.UseServices( | ||||
| 		mail.New("", ""), | ||||
| 		mail.New("", ""), | ||||
| 	) | ||||
|  | ||||
| 	if len(n.notifiers) != 3 { | ||||
| 		t.Errorf("Expected len(n.notifiers) == 3, got %d", len(n.notifiers)) | ||||
| 	} | ||||
|  | ||||
| 	n.UseServices(nil) | ||||
| 	if r := recover(); r != nil { | ||||
| 		t.Errorf("Expected no panic, got %v", r) | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user