forked from milvus-io/milvus-sdk-rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathauthentication.rs
More file actions
146 lines (142 loc) · 5.2 KB
/
authentication.rs
File metadata and controls
146 lines (142 loc) · 5.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
use milvus::client::{Client, ClientBuilder};
use milvus::error::Result;
#[tokio::main]
async fn main() -> Result<()> {
let client = ClientBuilder::new("http://localhost:19530")
.username("root")
.password("Milvus")
.build()
.await?;
//user test
user_test(&client).await?;
//role test
role_test(&client).await?;
//privilege test
privilege_test(&client).await?;
Ok(())
}
async fn user_test(client: &Client) -> Result<()> {
let user_name_a = "test_user_A";
let user_name_b = "test_user_B";
let password = "test_password";
let new_password = "new_password";
let old_password = "test_password";
println!("========== Start user test ==========");
//create user
client.create_user(user_name_a, password).await?;
client.create_user(user_name_b, password).await?;
let res = client.list_users().await?;
println!("After create users: {:?}", res);
//describe user
let res = client.describe_user(user_name_a).await?;
println!("Describe user_a: {:?}", res);
//update password
client
.update_password(user_name_a, old_password, new_password)
.await?;
//describe user
let res = client.describe_user(user_name_a).await?;
println!("After update password: {:?}", res);
//drop user
client.drop_user(user_name_a).await?;
client.drop_user(user_name_b).await?;
let res = client.list_users().await?;
println!("After drop users: {:?}", res);
println!("========== End user test ==========\n");
Ok(())
}
async fn role_test(client: &Client) -> Result<()> {
let user_name_a = "test_user_a";
let role_name_a = "test_role_A";
let role_name_b = "test_role_B";
let password = "test_password";
println!("========== Start role test ==========");
//create role
client.create_role(role_name_a).await?;
client.create_role(role_name_b).await?;
let res = client.list_roles().await?;
println!("After create roles: {:?}", res);
//describe role
let res = client.describe_role(role_name_a).await?;
println!("Describe role_a: {:?}", res);
//grant role
client.create_user(user_name_a, password).await?;
client.grant_role(user_name_a, role_name_a).await?;
let res = client.describe_user(user_name_a).await?;
println!("Grant role to user: {:?}", res);
//revoke role
client.revoke_role(user_name_a, role_name_a).await?;
let res = client.describe_user(user_name_a).await?;
println!("Revoke role from user: {:?}", res);
//drop role
client.drop_role(role_name_a, true).await?;
client.drop_role(role_name_b, true).await?;
let res = client.list_roles().await?;
println!("After drop roles: {:?}", res);
//drop user
client.drop_user(user_name_a).await?;
println!("========== End role test ==========\n");
Ok(())
}
async fn privilege_test(client: &Client) -> Result<()> {
let privilege_group_name = "test_privilege_group";
let privilege_name = "ShowCollections";
let role_name = "test_role";
let user_name = "test_user";
let password = "test_password";
println!("========== Start privilege test ==========");
//create privilege group
if client
.list_privilege_groups()
.await?
.contains_key(&privilege_group_name.to_string())
{
client.drop_privilege_group(privilege_group_name).await?;
}
client.create_privilege_group(privilege_group_name).await?;
let res = client.list_privilege_groups().await?;
println!("After create privilege group: {:#?}", res);
//create role
if client.list_roles().await?.contains(&role_name.to_string()) {
client.drop_role(role_name, true).await?;
}
client.create_role(role_name).await?;
//create user
if client.list_users().await?.contains(&user_name.to_string()) {
client.drop_user(user_name).await?;
}
client.create_user(user_name, password).await?;
//grant privilege
client
.grant_privilege(role_name, privilege_name, "Global", "*", None)
.await?;
let res = client.describe_role(role_name).await?;
println!("After grant privilege: {:#?}", res);
//add privilege to group
client
.add_privilege_to_group(privilege_group_name, vec![privilege_name.to_string()])
.await?;
let res = client.list_privilege_groups().await?;
println!("After add privilege to group: {:#?}", res);
//revoke privilege from group
client
.revoke_privilege_from_group(privilege_group_name, vec![privilege_name.to_string()])
.await?;
let res = client.list_privilege_groups().await?;
println!("After revoke privilege from group: {:#?}", res);
//revoke privilege
client
.revoke_privilege(role_name, "Global", "ShowCollections", "*", None)
.await?;
let res = client.describe_role(role_name).await?;
println!("After revoke privilege: {:#?}", res);
//drop privilege group
client.drop_privilege_group(privilege_group_name).await?;
let res = client.list_privilege_groups().await?;
println!("After drop privilege group: {:#?}", res);
//drop role
client.drop_role(role_name, true).await?;
client.drop_user(user_name).await?;
println!("========== End privilege test ==========\n");
Ok(())
}