Files
photoprism/internal/commands/clients_mod_test.go
2025-09-18 17:10:39 +02:00

108 lines
3.9 KiB
Go

package commands
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestClientsModCommand(t *testing.T) {
t.Run("ModNotExistingClient", func(t *testing.T) {
output, err := RunWithTestContext(ClientsModCommand, []string{"mod", "--name=New", "--scope=test", "cs5cpu17n6gjxxxx"})
// Check command output for plausibility.
assert.Error(t, err)
assert.Empty(t, output)
})
t.Run("DisableEnableAuth", func(t *testing.T) {
// Run command with test context.
output0, err := RunWithTestContext(ClientsShowCommand, []string{"show", "cs7pvt5h8rw9aaqj"})
// Check command output for plausibility.
//t.Logf(output0)
assert.NoError(t, err)
assert.Contains(t, output0, "AuthEnabled │ true")
assert.Contains(t, output0, "oauth2")
// Run command with test context.
output, err := RunWithTestContext(ClientsModCommand, []string{"mod", "--disable", "cs7pvt5h8rw9aaqj"})
// Check command output for plausibility.
//t.Logf(output)
assert.NoError(t, err)
assert.Empty(t, output)
// Run command with test context.
output1, err := RunWithTestContext(ClientsShowCommand, []string{"show", "cs7pvt5h8rw9aaqj"})
// Check command output for plausibility.
//t.Logf(output1)
assert.NoError(t, err)
assert.Contains(t, output1, "AuthEnabled │ false")
// Run command with test context.
output2, err := RunWithTestContext(ClientsModCommand, []string{"mod", "--enable", "cs7pvt5h8rw9aaqj"})
// Check command output for plausibility.
assert.NoError(t, err)
assert.Empty(t, output2)
// Run command with test context.
output3, err := RunWithTestContext(ClientsShowCommand, []string{"show", "cs7pvt5h8rw9aaqj"})
// Check command output for plausibility.
//t.Logf(output3)
assert.NoError(t, err)
assert.Contains(t, output3, "│ AuthEnabled │ true ")
})
t.Run("RegenerateSecret", func(t *testing.T) {
// Run command with test context.
output, err := RunWithTestContext(ClientsModCommand, []string{"mod", "--regenerate", "cs7pvt5h8rw9aaqj"})
// Check command output for plausibility.
//t.Logf(output)
assert.NoError(t, err)
assert.Contains(t, output, "Client Secret")
})
}
func TestClientsModCommand_ModRoleScopeLimits(t *testing.T) {
// Modify existing fixture client "analytics" (cs7pvt5h8rw9aaqj).
out0, err := RunWithTestContext(ClientsShowCommand, []string{"show", "cs7pvt5h8rw9aaqj"})
assert.NoError(t, err)
assert.Contains(t, out0, "ClientRole")
// Apply changes.
_, err = RunWithTestContext(ClientsModCommand, []string{"mod", "--role=portal", "--scope=audit metrics", "--expires=600", "--tokens=3", "cs7pvt5h8rw9aaqj"})
assert.NoError(t, err)
// Verify via show.
out1, err := RunWithTestContext(ClientsShowCommand, []string{"show", "cs7pvt5h8rw9aaqj"})
assert.NoError(t, err)
assert.Contains(t, out1, "ClientRole │ \"portal\"")
assert.Contains(t, out1, "AuthScope │ \"audit metrics\"")
assert.Contains(t, out1, "AuthExpires │ 600")
assert.Contains(t, out1, "AuthTokens │ 3")
}
func TestClientsModCommand_ModRoleToNoneAndEmpty(t *testing.T) {
// Set to explicit none
_, err := RunWithTestContext(ClientsModCommand, []string{"mod", "--role=none", "cs7pvt5h8rw9aaqj"})
assert.NoError(t, err)
out1, err := RunWithTestContext(ClientsShowCommand, []string{"show", "cs7pvt5h8rw9aaqj"})
assert.NoError(t, err)
// Expect empty string value for ClientRole in report output
assert.Contains(t, out1, "ClientRole │ \"\"")
// Set to explicit empty string (treated as none)
_, err = RunWithTestContext(ClientsModCommand, []string{"mod", "--role=", "cs7pvt5h8rw9aaqj"})
assert.NoError(t, err)
out2, err := RunWithTestContext(ClientsShowCommand, []string{"show", "cs7pvt5h8rw9aaqj"})
assert.NoError(t, err)
assert.Contains(t, out2, "ClientRole │ \"\"")
// Restore to client for other tests
_, err = RunWithTestContext(ClientsModCommand, []string{"mod", "--role=client", "cs7pvt5h8rw9aaqj"})
assert.NoError(t, err)
}