-
Notifications
You must be signed in to change notification settings - Fork 159
Expand file tree
/
Copy pathPropertyFileBufferAuthenticationTest.java
More file actions
95 lines (86 loc) · 3.45 KB
/
Copy pathPropertyFileBufferAuthenticationTest.java
File metadata and controls
95 lines (86 loc) · 3.45 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
/********************************************************************************
* Copyright (c) 2019 Stephane Bastian
*
* This program and the accompanying materials are made available under the 2
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors: 4
* Stephane Bastian - initial API and implementation
********************************************************************************/
package io.vertx.tests;
import io.vertx.core.buffer.Buffer;
import io.vertx.ext.auth.authentication.AuthenticationProvider;
import io.vertx.ext.auth.authentication.Credentials;
import io.vertx.ext.auth.authentication.UsernamePasswordCredentials;
import io.vertx.ext.auth.authorization.AuthorizationContext;
import io.vertx.ext.auth.authorization.AuthorizationProvider;
import io.vertx.ext.auth.authorization.PermissionBasedAuthorization;
import io.vertx.ext.auth.authorization.RoleBasedAuthorization;
import io.vertx.ext.auth.properties.PropertyFileAuthentication;
import io.vertx.ext.auth.properties.PropertyFileAuthorization;
import io.vertx.ext.unit.Async;
import io.vertx.ext.unit.TestContext;
import io.vertx.ext.unit.junit.RunTestOnContext;
import io.vertx.ext.unit.junit.VertxUnitRunner;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(VertxUnitRunner.class)
public class PropertyFileBufferAuthenticationTest {
private static final Buffer CONTENT = Buffer.buffer(
"user.tim=sausages,morris_dancer,developer\n" +
"role.morris_dancer=bang_sticks\n" +
"role.developer=do_actual_work\n");
@Rule
public final RunTestOnContext rule = new RunTestOnContext();
private AuthenticationProvider authn;
private AuthorizationProvider authz;
@Before
public void setUp() throws Exception {
authn = PropertyFileAuthentication.create(rule.vertx(), CONTENT);
authz = PropertyFileAuthorization.create(rule.vertx(), CONTENT);
}
@Test
public void testSimpleAuthenticate(TestContext should) {
final Async test = should.async();
Credentials authInfo = new UsernamePasswordCredentials("tim", "sausages");
authn.authenticate(authInfo)
.onFailure(should::fail)
.onSuccess(user -> {
should.assertNotNull(user);
should.assertEquals("tim", user.principal().getString("username"));
test.complete();
});
}
@Test
public void testSimpleAuthenticateFailWrongPassword(TestContext should) {
final Async test = should.async();
Credentials authInfo = new UsernamePasswordCredentials("tim", "wrongpassword");
authn.authenticate(authInfo)
.onSuccess(user -> should.fail("Not Expected"))
.onFailure(thr -> {
should.assertNotNull(thr);
test.complete();
});
}
@Test
public void testHasRoleAndPermission(TestContext should) {
final Async test = should.async();
Credentials authInfo = new UsernamePasswordCredentials("tim", "sausages");
authn.authenticate(authInfo)
.onFailure(should::fail)
.onSuccess(user -> authz.getAuthorizations(user)
.onFailure(should::fail)
.onSuccess(v -> {
should.assertTrue(
RoleBasedAuthorization.create("morris_dancer").match(AuthorizationContext.create(user)));
should.assertTrue(
PermissionBasedAuthorization.create("do_actual_work").match(AuthorizationContext.create(user)));
test.complete();
}));
}
}