57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
// Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan.
|
|
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
|
|
//!+test
|
|
package storage
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestCheckQuotaNotifiesUser(t *testing.T) {
|
|
var notifiedUser, notifiedMsg string
|
|
notifyUser = func(user, msg string) {
|
|
notifiedUser, notifiedMsg = user, msg
|
|
}
|
|
|
|
const user = "joe@example.org"
|
|
|
|
// Simulate a 980MB-used condition for this user.
|
|
// NOTE: this differs slightly from the printed version.
|
|
usage["joe@example.org"] = 980000000
|
|
|
|
CheckQuota(user)
|
|
if notifiedUser == "" && notifiedMsg == "" {
|
|
t.Fatalf("notifyUser not called")
|
|
}
|
|
if notifiedUser != user {
|
|
t.Errorf("wrong user (%s) notified, want %s",
|
|
notifiedUser, user)
|
|
}
|
|
const wantSubstring = "98% of your quota"
|
|
if !strings.Contains(notifiedMsg, wantSubstring) {
|
|
t.Errorf("unexpected notification message <<%s>>, "+
|
|
"want substring %q", notifiedMsg, wantSubstring)
|
|
}
|
|
}
|
|
|
|
//!-test
|
|
|
|
/*
|
|
//!+defer
|
|
func TestCheckQuotaNotifiesUser(t *testing.T) {
|
|
// Save and restore original notifyUser.
|
|
saved := notifyUser
|
|
defer func() { notifyUser = saved }()
|
|
|
|
// Install the test's fake notifyUser.
|
|
var notifiedUser, notifiedMsg string
|
|
notifyUser = func(user, msg string) {
|
|
notifiedUser, notifiedMsg = user, msg
|
|
}
|
|
// ...rest of test...
|
|
}
|
|
//!-defer
|
|
*/
|