123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package cmd
- import (
- "fmt"
- "github.com/stretchr/testify/require"
- "github.com/urfave/cli/v2"
- "heckel.io/ntfy/server"
- "heckel.io/ntfy/test"
- "testing"
- )
- func TestCLI_Access_Show(t *testing.T) {
- s, conf, port := newTestServerWithAuth(t)
- defer test.StopServer(t, s, port)
- app, _, _, stderr := newTestApp()
- require.Nil(t, runAccessCommand(app, conf))
- require.Contains(t, stderr.String(), "user * (anonymous)\n- no topic-specific permissions\n- no access to any (other) topics (server config)")
- }
- func TestCLI_Access_Grant_And_Publish(t *testing.T) {
- s, conf, port := newTestServerWithAuth(t)
- defer test.StopServer(t, s, port)
- app, stdin, _, _ := newTestApp()
- stdin.WriteString("philpass\nphilpass\nbenpass\nbenpass")
- require.Nil(t, runUserCommand(app, conf, "add", "--role=admin", "phil"))
- require.Nil(t, runUserCommand(app, conf, "add", "ben"))
- require.Nil(t, runAccessCommand(app, conf, "ben", "announcements", "rw"))
- require.Nil(t, runAccessCommand(app, conf, "ben", "sometopic", "read"))
- require.Nil(t, runAccessCommand(app, conf, "everyone", "announcements", "read"))
- app, _, _, stderr := newTestApp()
- require.Nil(t, runAccessCommand(app, conf))
- expected := `user phil (admin)
- - read-write access to all topics (admin role)
- user ben (user)
- - read-write access to topic announcements
- - read-only access to topic sometopic
- user * (anonymous)
- - read-only access to topic announcements
- - no access to any (other) topics (server config)
- `
- require.Equal(t, expected, stderr.String())
- // See if access permissions match
- app, _, _, _ = newTestApp()
- require.Error(t, app.Run([]string{
- "ntfy",
- "publish",
- fmt.Sprintf("http://127.0.0.1:%d/announcements", port),
- }))
- require.Nil(t, app.Run([]string{
- "ntfy",
- "publish",
- "-u", "ben:benpass",
- fmt.Sprintf("http://127.0.0.1:%d/announcements", port),
- }))
- require.Nil(t, app.Run([]string{
- "ntfy",
- "publish",
- "-u", "phil:philpass",
- fmt.Sprintf("http://127.0.0.1:%d/announcements", port),
- }))
- require.Nil(t, app.Run([]string{
- "ntfy",
- "subscribe",
- "--poll",
- fmt.Sprintf("http://127.0.0.1:%d/announcements", port),
- }))
- require.Error(t, app.Run([]string{
- "ntfy",
- "subscribe",
- "--poll",
- fmt.Sprintf("http://127.0.0.1:%d/something-else", port),
- }))
- }
- func runAccessCommand(app *cli.App, conf *server.Config, args ...string) error {
- userArgs := []string{
- "ntfy",
- "access",
- "--auth-file=" + conf.AuthFile,
- "--auth-default-access=" + confToDefaultAccess(conf),
- }
- return app.Run(append(userArgs, args...))
- }
|