Skip to content

Commit

Permalink
Test all anonymous/guest config combinations
Browse files Browse the repository at this point in the history
  • Loading branch information
hierynomus committed Aug 14, 2023
1 parent 63b7a8a commit 44f7401
Showing 1 changed file with 38 additions and 7 deletions.
45 changes: 38 additions & 7 deletions src/it/java/com/hierynomus/smbj/AnonymousIntegrationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
package com.hierynomus.smbj;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

import com.hierynomus.mssmb2.SMB2Dialect;
import com.hierynomus.security.bc.BCSecurityProvider;
Expand All @@ -26,16 +29,43 @@
import com.hierynomus.smbj.share.Share;

import static org.junit.jupiter.api.Assertions.*;

import java.util.stream.Stream;

import static com.hierynomus.smbj.testing.TestingUtils.*;

public class AnonymousIntegrationTest {

private SmbConfig base = SmbConfig.builder().withDialects(SMB2Dialect.SMB_3_1_1).withEncryptData(true).withSigningRequired(false).withMultiProtocolNegotiate(true).withDfsEnabled(true).withSecurityProvider(new BCSecurityProvider()).build();
private SmbConfig base = SmbConfig.builder().withDialects(SMB2Dialect.SMB_3_0).withEncryptData(true).withSigningRequired(false).withMultiProtocolNegotiate(true).withDfsEnabled(true).withSecurityProvider(new BCSecurityProvider()).build();

@Test
public void shouldAuthenticateAnonymous() throws Exception {
static Stream<Arguments> connectWith() {
return Stream.of(
Arguments.of(config(SMB2Dialect.SMB_2_1, false, false), AuthenticationContext.anonymous()),
Arguments.of(config(SMB2Dialect.SMB_3_0, false, false), AuthenticationContext.anonymous()),
Arguments.of(config(SMB2Dialect.SMB_3_0, true, false), AuthenticationContext.anonymous()),
Arguments.of(config(SMB2Dialect.SMB_3_0_2, false, false), AuthenticationContext.anonymous()),
Arguments.of(config(SMB2Dialect.SMB_3_0_2, true, false), AuthenticationContext.anonymous()),
Arguments.of(config(SMB2Dialect.SMB_3_1_1, false, false), AuthenticationContext.anonymous()),
Arguments.of(config(SMB2Dialect.SMB_3_1_1, true, false), AuthenticationContext.anonymous()),
Arguments.of(config(SMB2Dialect.SMB_2_1, false, false), AuthenticationContext.guest()),
Arguments.of(config(SMB2Dialect.SMB_3_0, false, false), AuthenticationContext.guest()),
Arguments.of(config(SMB2Dialect.SMB_3_0, true, false), AuthenticationContext.guest()),
Arguments.of(config(SMB2Dialect.SMB_3_0_2, false, false), AuthenticationContext.guest()),
Arguments.of(config(SMB2Dialect.SMB_3_0_2, true, false), AuthenticationContext.guest()),
Arguments.of(config(SMB2Dialect.SMB_3_1_1, false, false), AuthenticationContext.guest()),
Arguments.of(config(SMB2Dialect.SMB_3_1_1, true, false), AuthenticationContext.guest())
);
}

private static SmbConfig config(SMB2Dialect dialect, boolean encrypt, boolean signing) {
return SmbConfig.builder().withDialects(dialect).withEncryptData(encrypt).withSigningRequired(signing).withMultiProtocolNegotiate(true).withDfsEnabled(true).withSecurityProvider(new BCSecurityProvider()).build();
}

@ParameterizedTest
@MethodSource("connectWith")
public void shouldAuthenticate(SmbConfig base, AuthenticationContext authContext) throws Exception {
withConnectedClient(base, (connection) -> {
try (Session session = connection.authenticate(AuthenticationContext.anonymous())) {
try (Session session = connection.authenticate(authContext)) {
assertNotNull(session.getSessionId());
}
});
Expand All @@ -51,10 +81,11 @@ public void shouldFailConnectingAnonymousWhenSigningRequired() throws Exception
}));
}

@Test
public void shouldConnectToPublicShare() throws Exception {
@ParameterizedTest
@MethodSource("connectWith")
public void shouldConnectToPublicShare(SmbConfig base, AuthenticationContext authContext) throws Exception {
withConnectedClient(base, (connection) -> {
try (Session session = connection.authenticate(AuthenticationContext.anonymous())) {
try (Session session = connection.authenticate(authContext)) {
try (Share share = session.connectShare("public")) {
assertInstanceOf(DiskShare.class, share);
assertTrue(share.isConnected());
Expand Down

0 comments on commit 44f7401

Please sign in to comment.