/** * Copyright (C) 2015 Zalando SE (http://tech.zalando.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.zalando.stups.tokens.fs; import java.net.URI; import java.util.concurrent.TimeUnit; import org.assertj.core.api.Assertions; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.zalando.stups.tokens.AccessTokens; import org.zalando.stups.tokens.Secrets; import org.zalando.stups.tokens.Tokens; public class FilesystemSecretRefresherTest { @Before public void setup() { System.getProperties().put("CREDENTIALS_DIR", "fs"); } @After public void tearDown() { System.getProperties().remove("CREDENTIALS_DIR"); } //@formatter:off @Test public void test() throws InterruptedException { AccessTokens at = Tokens.createAccessTokensWithUri(URI.create("http://we.use.filesystemsecrets.and.do.not.care.about.this")) .manageToken("noexistent") .addScope("read::all") .done() .start(); TimeUnit.SECONDS.sleep(10); at.stop(); } //@formatter:on //@formatter:off @Test public void testShouldThrowTokenMissingException() throws InterruptedException { try{ Tokens.createAccessTokensWithUri(URI.create("http://we.use.filesystemsecrets.and.do.not.care.about.this")) .manageToken("noexistent") .addScope("read::all") .done() .manageToken("myfirst") .addScope("read::all") .done() .manageToken("nonexistent-2") .addScope("read::all") .done() .whenUsingFilesystemSecrets() .validateTokensOnStartup() .done() .start(); Assertions.fail("Exception expected"); }catch(TokensMissingException e){ Assertions.assertThat(e.getMessage()).startsWith("The following token-configurations couldn't be found : "); Assertions.assertThat(e.getMissingTokensCount()).isEqualTo(2); } } //@formatter:on //@formatter:off @Test public void testPolymorph() throws InterruptedException { AccessTokens at = Tokens.createAccessTokensWithUri(URI.create("http://we.use.filesystemsecrets.and.do.not.care.about.this")) .manageToken("noexistent") .addScope("read::all") .done() .start(); Assertions.assertThat(at).isInstanceOfAny(AccessTokens.class, Secrets.class); TimeUnit.SECONDS.sleep(2); Assertions.assertThat(((Secrets)at).getClient("kio")).isNotNull(); at.stop(); } //@formatter:on }