Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/org/labkey/test/tests/SecurityTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -306,8 +306,20 @@ protected void guestTest()
@LogMethod
protected void disableGuestAccountTest()
{
// Guests hold Reader on the project, so the API is reachable as guest until the account is disabled
new ApiPermissionsHelper(this).setSiteGroupPermissions("Guests", READER_ROLE);
String apiUrl = buildURL("query", getProjectName(), "getSchemas");
checker().verifyEquals("Basic auth as 'guest' should succeed while guest account is enabled",
HttpStatus.SC_OK, getHttpResponse(apiUrl, "guest", "guest").getResponseCode());

OptionalFeatureHelper.setOptionalFeature(createDefaultConnection(), "disableGuestAccount", true);

checker().verifyEquals("Anonymous API request should be rejected when guest account is disabled",
HttpStatus.SC_UNAUTHORIZED, getHttpResponse(apiUrl, "GET", null, null, null).getResponseCode());
// Basic auth with the reserved "guest" username must not resurrect the guest account
checker().verifyEquals("Basic auth as 'guest' should be rejected when guest account is disabled",
HttpStatus.SC_UNAUTHORIZED, getHttpResponse(apiUrl, "guest", "guest").getResponseCode());

goToHome();
signOut();

Expand Down
5 changes: 4 additions & 1 deletion src/org/labkey/test/util/SimpleHttpResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import org.labkey.test.TestFileUtils;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.util.HashMap;
import java.util.List;
Expand All @@ -43,7 +44,9 @@ static SimpleHttpResponse readResponse(HttpURLConnection con) throws IOException
}
catch (IOException error)
{
response.responseBody = TestFileUtils.getStreamContentsAsString(con.getErrorStream());
// Error stream is null after a failed Basic auth retry
InputStream errorStream = con.getErrorStream();
response.responseBody = errorStream == null ? "" : TestFileUtils.getStreamContentsAsString(errorStream);
}
response.responseHeaderFields = new HashMap<>(con.getHeaderFields());

Expand Down