use of com.artipie.http.auth.BasicAuthSlice in project artipie by artipie.
the class AuthAndPermissionsTest method johnCanDelete.
@Test
void johnCanDelete() throws IOException {
final RsStatus status = RsStatus.NO_CONTENT;
MatcherAssert.assertThat(new BasicAuthSlice(new SliceSimple(new RsWithStatus(status)), new AuthFromYaml(this.credentials()), new Permission.ByName("delete", this.permissions())).response(new RequestLine("PUT", "/foo", "HTTP/1.2").toString(), new ListOf<Map.Entry<String, String>>(new Authorization(String.format("Basic %s", new Base64Encoded("john:123").asString()))), Flowable.empty()), new RsHasStatus(status));
}
use of com.artipie.http.auth.BasicAuthSlice in project artipie by artipie.
the class AuthAndPermissionsTest method publicRepoWorksWithAuth.
@Test
void publicRepoWorksWithAuth() throws IOException {
final RsStatus status = RsStatus.OK;
MatcherAssert.assertThat(new BasicAuthSlice(new SliceSimple(new RsWithStatus(status)), new AuthFromYaml(this.credentials()), new Permission.ByName("delete", this.allAllowedPermissions())).response(new RequestLine("GET", "/foo", "HTTP/1.2").toString(), new ListOf<Map.Entry<String, String>>(new Authorization(String.format("Basic %s", new Base64Encoded("admin:abc").asString()))), Flowable.empty()), new RsHasStatus(status));
}
use of com.artipie.http.auth.BasicAuthSlice in project artipie by artipie.
the class AuthAndPermissionsTest method authIsNotRequiredForPublicRepo.
@Test
void authIsNotRequiredForPublicRepo() {
final RsStatus status = RsStatus.ACCEPTED;
MatcherAssert.assertThat(new BasicAuthSlice(new SliceSimple(new RsWithStatus(status)), new AuthFromYaml(this.credentials()), new Permission.ByName("install", this.allAllowedPermissions())).response(new RequestLine("GET", "/foo", "HTTP/1.2").toString(), Collections.emptyList(), Flowable.empty()), new RsHasStatus(status));
}
use of com.artipie.http.auth.BasicAuthSlice in project artipie by artipie.
the class AuthAndPermissionsTest method adminCanDeploy.
@Test
void adminCanDeploy() throws IOException {
final RsStatus status = RsStatus.ACCEPTED;
MatcherAssert.assertThat(new BasicAuthSlice(new SliceSimple(new RsWithStatus(status)), new AuthFromYaml(this.credentials()), new Permission.ByName("deploy", this.permissions())).response(new RequestLine("PUT", "/foo", "HTTP/1.2").toString(), new ListOf<Map.Entry<String, String>>(new Authorization(String.format("Basic %s", new Base64Encoded("admin:abc").asString()))), Flowable.empty()), new RsHasStatus(status));
}
use of com.artipie.http.auth.BasicAuthSlice in project artipie by artipie.
the class DockerRoutingSlice method response.
@Override
public Response response(final String line, final Iterable<Map.Entry<String, String>> headers, final Publisher<ByteBuffer> body) {
final RequestLineFrom req = new RequestLineFrom(line);
final String path = req.uri().getPath();
final Matcher matcher = PTN_PATH.matcher(path);
final Response rsp;
if (matcher.matches()) {
final String group = matcher.group(1);
if (group.isEmpty() || group.equals("/")) {
rsp = new AsyncResponse(this.settings.auth().thenApply(auth -> new BasicAuthSlice(new BaseEntity(), auth, user -> !user.equals(Permissions.ANY_USER)).response(line, headers, body)));
} else {
rsp = this.origin.response(new RequestLine(req.method().toString(), new URIBuilder(req.uri()).setPath(group).toString(), req.version()).toString(), new Headers.From(headers, DockerRoutingSlice.HDR_REAL_PATH, path), body);
}
} else {
rsp = this.origin.response(line, headers, body);
}
return rsp;
}
Aggregations