My fork of airsonic with experimental fixes and improvements. See branch "custom"
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
airsonic-custom/airsonic-main/src/test/java/org/airsonic/player/service/JWTSecurityServiceTest.java

62 lines
2.1 KiB

package org.airsonic.player.service;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.springframework.web.util.UriComponentsBuilder;
import java.util.Arrays;
import java.util.Collection;
import static org.junit.Assert.assertEquals;
@RunWith(Parameterized.class)
public class JWTSecurityServiceTest {
private final String key = "someKey";
private final JWTSecurityService service = new JWTSecurityService(settingsWithKey(key));
private final String uriString;
private final Algorithm algorithm = JWTSecurityService.getAlgorithm(key);
private final JWTVerifier verifier = JWT.require(algorithm).build();
private final String expectedClaimString;
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ "http://localhost:8080/airsonic/stream?id=4", "/airsonic/stream?id=4" },
{ "/airsonic/stream?id=4", "/airsonic/stream?id=4" },
});
}
public JWTSecurityServiceTest(String uriString, String expectedClaimString) {
this.uriString = uriString;
this.expectedClaimString = expectedClaimString;
}
@Test
public void addJWTToken() {
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(uriString);
String actualUri = service.addJWTToken(builder).build().toUriString();
String jwtToken = UriComponentsBuilder.fromUriString(actualUri).build().getQueryParams().getFirst(
JWTSecurityService.JWT_PARAM_NAME);
DecodedJWT verify = verifier.verify(jwtToken);
Claim claim = verify.getClaim(JWTSecurityService.CLAIM_PATH);
assertEquals(expectedClaimString, claim.asString());
}
private SettingsService settingsWithKey(String jwtKey) {
return new SettingsService() {
@Override
public String getJWTKey() {
return jwtKey;
}
};
}
}