2023-02-07 17:02:25 +00:00
|
|
|
package cmd
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
|
|
"heckel.io/ntfy/server"
|
|
|
|
"heckel.io/ntfy/test"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestCLI_Tier_AddListChangeDelete(t *testing.T) {
|
|
|
|
s, conf, port := newTestServerWithAuth(t)
|
|
|
|
defer test.StopServer(t, s, port)
|
|
|
|
|
|
|
|
app, _, _, stderr := newTestApp()
|
|
|
|
require.Nil(t, runTierCommand(app, conf, "add", "--name", "Pro", "--message-limit", "1234", "pro"))
|
|
|
|
require.Contains(t, stderr.String(), "tier added\n\ntier pro (id: ti_")
|
|
|
|
|
|
|
|
err := runTierCommand(app, conf, "add", "pro")
|
|
|
|
require.NotNil(t, err)
|
|
|
|
require.Equal(t, "tier pro already exists", err.Error())
|
|
|
|
|
|
|
|
app, _, _, stderr = newTestApp()
|
|
|
|
require.Nil(t, runTierCommand(app, conf, "list"))
|
|
|
|
require.Contains(t, stderr.String(), "tier pro (id: ti_")
|
|
|
|
require.Contains(t, stderr.String(), "- Name: Pro")
|
|
|
|
require.Contains(t, stderr.String(), "- Message limit: 1234")
|
|
|
|
|
|
|
|
app, _, _, stderr = newTestApp()
|
2023-02-09 20:24:12 +00:00
|
|
|
require.Nil(t, runTierCommand(app, conf, "change",
|
|
|
|
"--message-limit=999",
|
|
|
|
"--message-expiry-duration=99h",
|
|
|
|
"--email-limit=91",
|
|
|
|
"--reservation-limit=98",
|
|
|
|
"--attachment-file-size-limit=100m",
|
|
|
|
"--attachment-expiry-duration=7h",
|
|
|
|
"--attachment-total-size-limit=10G",
|
|
|
|
"--attachment-bandwidth-limit=100G",
|
2023-02-22 03:44:30 +00:00
|
|
|
"--stripe-monthly-price-id=price_991",
|
|
|
|
"--stripe-yearly-price-id=price_992",
|
2023-02-09 20:24:12 +00:00
|
|
|
"pro",
|
|
|
|
))
|
2023-02-07 17:02:25 +00:00
|
|
|
require.Contains(t, stderr.String(), "- Message limit: 999")
|
2023-02-09 20:24:12 +00:00
|
|
|
require.Contains(t, stderr.String(), "- Message expiry duration: 99h")
|
|
|
|
require.Contains(t, stderr.String(), "- Email limit: 91")
|
|
|
|
require.Contains(t, stderr.String(), "- Reservation limit: 98")
|
|
|
|
require.Contains(t, stderr.String(), "- Attachment file size limit: 100.0 MB")
|
|
|
|
require.Contains(t, stderr.String(), "- Attachment expiry duration: 7h")
|
|
|
|
require.Contains(t, stderr.String(), "- Attachment total size limit: 10.0 GB")
|
2023-02-22 03:44:30 +00:00
|
|
|
require.Contains(t, stderr.String(), "- Stripe prices (monthly/yearly): price_991 / price_992")
|
2023-02-07 17:02:25 +00:00
|
|
|
|
|
|
|
app, _, _, stderr = newTestApp()
|
|
|
|
require.Nil(t, runTierCommand(app, conf, "remove", "pro"))
|
|
|
|
require.Contains(t, stderr.String(), "tier pro removed")
|
|
|
|
}
|
|
|
|
|
|
|
|
func runTierCommand(app *cli.App, conf *server.Config, args ...string) error {
|
|
|
|
userArgs := []string{
|
|
|
|
"ntfy",
|
2023-02-08 20:20:44 +00:00
|
|
|
"--log-level=ERROR",
|
2023-02-07 17:02:25 +00:00
|
|
|
"tier",
|
2023-02-08 20:20:44 +00:00
|
|
|
"--config=" + conf.File, // Dummy config file to avoid lookups of real file
|
2023-02-07 17:02:25 +00:00
|
|
|
"--auth-file=" + conf.AuthFile,
|
|
|
|
"--auth-default-access=" + conf.AuthDefault.String(),
|
|
|
|
}
|
|
|
|
return app.Run(append(userArgs, args...))
|
|
|
|
}
|