Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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
4 changes: 2 additions & 2 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@ jobs:
echo TEST_REUSABLE_TOKEN=${{ secrets.TEST_REUSABLE_TOKEN }} >> v3/.env

- name: Build & Run tests with Maven
run: mvn -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean test jacoco:report -pl v3 -am -Dmaven.javadoc.skip=true
run: mvn -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean compile test jacoco:report -pl v3 -am -Dmaven.javadoc.skip=true

- name: Codecov
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_REPO_UPLOAD_TOKEN }}
files: v3/target/site/jacoco/jacoco.xml
Expand Down
117 changes: 116 additions & 1 deletion v3/src/test/java/com/skyflow/SkyflowTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,14 @@
import com.skyflow.errors.ErrorCode;
import com.skyflow.errors.ErrorMessage;
import com.skyflow.errors.SkyflowException;
import com.skyflow.vault.controller.VaultController;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

import java.lang.reflect.Field;
import java.util.LinkedHashMap;

public class SkyflowTests {
private static final String INVALID_EXCEPTION_THROWN = "Should not have thrown any exception";
private static final String EXCEPTION_NOT_THROWN = "Should have thrown an exception";
Expand Down Expand Up @@ -89,4 +93,115 @@ public void testUpdatingValidVaultConfig() {
Assert.fail(INVALID_EXCEPTION_THROWN);
}
}
}

@Test
public void testVaultWithoutConfigThrows() {
try {
Skyflow skyflow = Skyflow.builder().build();
skyflow.vault();
Assert.fail(EXCEPTION_NOT_THROWN);
} catch (SkyflowException e) {
Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode());
Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage());
}
}

@Test
public void testVaultNullControllerThrows() {
try {
VaultConfig config = new VaultConfig();
config.setVaultId(vaultID);
config.setClusterId(clusterID);
config.setEnv(Env.SANDBOX);

Skyflow skyflow = Skyflow.builder().addVaultConfig(config).build();

Object builder = getField(skyflow, "builder");
@SuppressWarnings("unchecked")
LinkedHashMap<String, VaultController> clients =
(LinkedHashMap<String, VaultController>) getField(builder, "vaultClientsMap");
clients.put(vaultID, null);

skyflow.vault();
Assert.fail(EXCEPTION_NOT_THROWN);
} catch (SkyflowException e) {
Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode());
Assert.assertEquals(ErrorMessage.VaultIdNotInConfigList.getMessage(), e.getMessage());
} catch (Exception e) {
Assert.fail("Unexpected exception: " + e.getMessage());
}
}

@Test
public void testVaultReturnsController() {
try {
VaultConfig config = new VaultConfig();
config.setVaultId(vaultID);
config.setClusterId(clusterID);
config.setEnv(Env.SANDBOX);

Skyflow skyflow = Skyflow.builder().addVaultConfig(config).build();
VaultController controller = skyflow.vault();
Assert.assertNotNull(controller);
} catch (SkyflowException e) {
Assert.fail(INVALID_EXCEPTION_THROWN);
}
}

@Test
public void testAddSkyflowCredentialsClonesAndSets() {
try {
VaultConfig config = new VaultConfig();
config.setVaultId(vaultID);
config.setClusterId(clusterID);
config.setEnv(Env.SANDBOX);

Credentials creds = new Credentials();
creds.setToken(token);

Skyflow skyflow = Skyflow.builder()
.addVaultConfig(config)
.addSkyflowCredentials(creds)
.build();

creds.setToken("mutated");

Object builder = getField(skyflow, "builder");
Credentials storedCreds = (Credentials) getField(builder.getClass().getSuperclass(), builder, "skyflowCredentials");

Assert.assertEquals(token, storedCreds.getToken());
Assert.assertNotEquals(creds.getToken(), storedCreds.getToken());
} catch (Exception e) {
Assert.fail("Unexpected exception: " + e.getMessage());
}
}

@Test
public void testSetLogLevelReturnsBuilder() {
try {
Skyflow.SkyflowClientBuilder builder = Skyflow.builder();
Skyflow.SkyflowClientBuilder returned = builder.setLogLevel(LogLevel.INFO);
Assert.assertSame(builder, returned);

VaultConfig config = new VaultConfig();
config.setVaultId(vaultID);
config.setClusterId(clusterID);
config.setEnv(Env.SANDBOX);
returned.addVaultConfig(config).build();
} catch (Exception e) {
Assert.fail("Unexpected exception: " + e.getMessage());
}
}

private Object getField(Object instance, String fieldName) throws Exception {
Field f = instance.getClass().getDeclaredField(fieldName);
f.setAccessible(true);
return f.get(instance);
}

private Object getField(Class<?> declaring, Object instance, String fieldName) throws Exception {
Field f = declaring.getDeclaredField(fieldName);
f.setAccessible(true);
return f.get(instance);
}
}
Loading
Loading