github.com/nats-io/nsc@v0.0.0-20221206222106-35db9400b257/cmd/revoke_listusers_test.go (about) 1 /* 2 * Copyright 2018-2020 The NATS Authors 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 package cmd 17 18 import ( 19 "strings" 20 "testing" 21 "time" 22 23 "github.com/nats-io/jwt" 24 25 "github.com/stretchr/testify/require" 26 ) 27 28 func TestRevokeListUsers(t *testing.T) { 29 ts := NewTestStore(t, "revoke_clear_user") 30 defer ts.Done(t) 31 32 ts.AddAccount(t, "A") 33 ts.AddUser(t, "A", "one") 34 ts.AddUser(t, "A", "two") 35 ts.AddUser(t, "A", "three") 36 37 _, _, err := ExecuteCmd(createRevokeUserCmd(), "--name", "one", "--at", "1001") 38 require.NoError(t, err) 39 40 _, _, err = ExecuteCmd(createRevokeUserCmd(), "--name", "two", "--at", "2001") 41 require.NoError(t, err) 42 43 stdout, _, err := ExecuteCmd(createRevokeListUsersCmd()) 44 require.NoError(t, err) 45 46 u, err := ts.Store.ReadUserClaim("A", "one") 47 require.NoError(t, err) 48 require.True(t, strings.Contains(stdout, u.Subject)) 49 require.True(t, strings.Contains(stdout, time.Unix(1001, 0).Format(time.RFC1123))) 50 51 u, err = ts.Store.ReadUserClaim("A", "two") 52 require.NoError(t, err) 53 require.True(t, strings.Contains(stdout, u.Subject)) 54 require.True(t, strings.Contains(stdout, time.Unix(2001, 0).Format(time.RFC1123))) 55 } 56 57 func TestRevokeListUsersNoAccount(t *testing.T) { 58 ts := NewTestStore(t, "revoke_clear_user") 59 defer ts.Done(t) 60 _, _, err := ExecuteInteractiveCmd(createRevokeListUsersCmd(), []interface{}{}) 61 require.Error(t, err) 62 require.Contains(t, err.Error(), "no accounts defined") 63 } 64 65 func TestRevokeListUsersNoRevocations(t *testing.T) { 66 ts := NewTestStore(t, "revoke_clear_user") 67 defer ts.Done(t) 68 ts.AddAccount(t, "A") 69 _, _, err := ExecuteCmd(createRevokeListUsersCmd()) 70 require.Error(t, err) 71 require.Contains(t, err.Error(), "does not have revoked users") 72 } 73 74 func TestRevokeListUsersAllUsers(t *testing.T) { 75 ts := NewTestStore(t, "revoke_clear_user") 76 defer ts.Done(t) 77 ts.AddAccount(t, "A") 78 _, _, err := ExecuteCmd(createRevokeUserCmd(), "-u", "*") 79 require.NoError(t, err) 80 81 ac, err := ts.Store.ReadAccountClaim("A") 82 require.NoError(t, err) 83 require.Contains(t, ac.Revocations, jwt.All) 84 85 stdout, _, err := ExecuteCmd(createRevokeListUsersCmd()) 86 require.NoError(t, err) 87 require.Contains(t, stdout, "* [All Users]") 88 }