コード例 #1
0
        public async Task ShouldStoreMultipleCredentials()
        {
            // given
            await TokenProvider.GetAccessTokenForRequestAsync();

            var otherProvider = new CamundaCloudTokenProviderBuilder()
                                .UseAuthServer(_requestUri)
                                .UseClientId(_clientId         = "OTHERID")
                                .UseClientSecret(_clientSecret = "OTHERSECRET")
                                .UseAudience(_audience         = "OTHER_AUDIENCE")
                                .Build();

            otherProvider.SetHttpMessageHandler(MessageHandlerStub);
            otherProvider.TokenStoragePath = TokenStoragePath;
            Token = "OTHER_TOKEN";

            // when
            var token = await otherProvider.GetAccessTokenForRequestAsync();

            // then
            Assert.AreEqual("OTHER_TOKEN", token);
            var files = Directory.GetFiles(TokenStoragePath);

            Assert.AreEqual(1, files.Length);
            var tokenFile   = files[0];
            var content     = File.ReadAllText(tokenFile);
            var credentials = JsonConvert.DeserializeObject <Dictionary <string, CamundaCloudTokenProvider.AccessToken> >(content);

            Assert.AreEqual(credentials.Count, 2);
            Assert.AreEqual(token, credentials["OTHER_AUDIENCE"].Token);
            Assert.AreEqual("REQUESTED_TOKEN", credentials["AUDIENCE"].Token);
        }
コード例 #2
0
        public async Task ShouldRequestCredentials()
        {
            // given

            // when
            var token = await TokenProvider.GetAccessTokenForRequestAsync();

            // then
            Assert.AreEqual("REQUESTED_TOKEN", token);
            Assert.AreEqual(1, MessageHandlerStub.RequestCount);
        }
コード例 #3
0
        public async Task ShouldNotThrowObjectDisposedExceptionWhenTokenExpires()
        {
            // given
            ExpiresIn = 0;
            await TokenProvider.GetAccessTokenForRequestAsync();

            // when
            Assert.DoesNotThrowAsync(async() => await TokenProvider.GetAccessTokenForRequestAsync());

            // then
            Assert.AreEqual(2, MessageHandlerStub.RequestCount);
        }
コード例 #4
0
        public async Task ShouldUseCachedFile()
        {
            // given
            Token = "STORED_TOKEN";
            await TokenProvider.GetAccessTokenForRequestAsync();

            // re-init the TokenProvider
            Init();

            // when
            var token = await TokenProvider.GetAccessTokenForRequestAsync();

            // then
            Assert.AreEqual("STORED_TOKEN", token);
            Assert.AreEqual(0, MessageHandlerStub.RequestCount);
        }
コード例 #5
0
        public async Task ShouldRequestWhenCachedFileExpired()
        {
            // given
            ExpiresIn = 0;
            Token     = "STORED_TOKEN";
            await TokenProvider.GetAccessTokenForRequestAsync();

            // re-init the TokenProvider
            Init();

            // when
            var token = await TokenProvider.GetAccessTokenForRequestAsync();

            // then
            Assert.AreEqual("REQUESTED_TOKEN", token);
            Assert.AreEqual(1, MessageHandlerStub.RequestCount);
        }
コード例 #6
0
        public async Task ShouldGetTokenFromInMemory()
        {
            // given
            await TokenProvider.GetAccessTokenForRequestAsync();

            var files     = Directory.GetFiles(TokenStoragePath);
            var tokenFile = files[0];

            File.WriteAllText(tokenFile, "FILE_TOKEN");

            // when
            var token = await TokenProvider.GetAccessTokenForRequestAsync();

            // then
            Assert.AreEqual("REQUESTED_TOKEN", token);
            Assert.AreEqual(1, MessageHandlerStub.RequestCount);
        }
        public async Task ShouldNotThrowObjectDisposedExceptionWhenTokenExpires()
        {
            // given
            ExpiresIn = 0;
            var firstToken = await TokenProvider.GetAccessTokenForRequestAsync();

            var files     = Directory.GetFiles(TokenStoragePath);
            var tokenFile = files[0];
            await File.WriteAllTextAsync(tokenFile, "FILE_TOKEN");

            // when
            Token = "SECOND_TOKEN";
            Assert.DoesNotThrowAsync(async() => await TokenProvider.GetAccessTokenForRequestAsync());

            // then
            Assert.AreEqual(2, MessageHandlerStub.RequestCount);
        }
コード例 #8
0
        public async Task ShouldStoreCredentials()
        {
            // given

            // when
            var token = await TokenProvider.GetAccessTokenForRequestAsync();

            // then
            Assert.AreEqual("REQUESTED_TOKEN", token);
            var files = Directory.GetFiles(TokenStoragePath);

            Assert.AreEqual(1, files.Length);
            var tokenFile = files[0];
            var content   = File.ReadAllText(tokenFile);
            var fileToken = JsonConvert.DeserializeObject <CamundaCloudTokenProvider.AccessToken>(content);

            Assert.AreEqual(token, fileToken.Token);
        }
コード例 #9
0
        public async Task ShouldRequestNewTokenWhenExpired()
        {
            // given
            ExpiresIn = 0;
            var firstToken = await TokenProvider.GetAccessTokenForRequestAsync();

            var files     = Directory.GetFiles(TokenStoragePath);
            var tokenFile = files[0];

            File.WriteAllText(tokenFile, "FILE_TOKEN");

            // when
            Token = "SECOND_TOKEN";
            var secondToken = await TokenProvider.GetAccessTokenForRequestAsync();

            // then
            Assert.AreEqual("REQUESTED_TOKEN", firstToken);
            Assert.AreNotEqual(secondToken, firstToken);
            Assert.AreEqual("SECOND_TOKEN", secondToken);
            Assert.AreEqual(2, MessageHandlerStub.RequestCount);
        }
コード例 #10
0
        public async Task ShouldUseCachedFileAndAfterwardsInMemory()
        {
            // given
            Token = "STORED_TOKEN";
            await TokenProvider.GetAccessTokenForRequestAsync();

            // re-init the TokenProvider
            Init();

            // when
            await TokenProvider.GetAccessTokenForRequestAsync();

            var files     = Directory.GetFiles(TokenStoragePath);
            var tokenFile = files[0];

            File.WriteAllText(tokenFile, "FILE_TOKEN");
            var token = await TokenProvider.GetAccessTokenForRequestAsync();

            // then
            Assert.AreEqual("STORED_TOKEN", token);
            Assert.AreEqual(0, MessageHandlerStub.RequestCount);
        }
コード例 #11
0
        public async Task ShouldNotUseCachedFileForOtherAudience()
        {
            // given
            Token = "STORED_TOKEN";
            await TokenProvider.GetAccessTokenForRequestAsync();

            var otherProvider = new CamundaCloudTokenProviderBuilder()
                                .UseAuthServer(_requestUri)
                                .UseClientId(_clientId         = "OTHERID")
                                .UseClientSecret(_clientSecret = "OTHERSECRET")
                                .UseAudience(_audience         = "OTHER_AUDIENCE")
                                .Build();

            otherProvider.SetHttpMessageHandler(MessageHandlerStub);
            otherProvider.TokenStoragePath = TokenStoragePath;
            Token = "OTHER_TOKEN";

            // when
            var token = await otherProvider.GetAccessTokenForRequestAsync();

            // then
            Assert.AreEqual("OTHER_TOKEN", token);
        }
コード例 #12
0
        public async Task ShouldExpireInOneSecond()
        {
            // given
            ExpiresIn = 1;
            var firstToken = await TokenProvider.GetAccessTokenForRequestAsync();

            var files     = Directory.GetFiles(TokenStoragePath);
            var tokenFile = files[0];

            File.WriteAllText(tokenFile, "FILE_TOKEN");

            // when
            Token = "NEW_TOKEN";
            var secondToken = await TokenProvider.GetAccessTokenForRequestAsync();

            Thread.Sleep(1_000);
            var thirdToken = await TokenProvider.GetAccessTokenForRequestAsync();

            // then
            Assert.AreEqual("REQUESTED_TOKEN", firstToken);
            Assert.AreEqual(secondToken, firstToken);
            Assert.AreEqual("NEW_TOKEN", thirdToken);
            Assert.AreEqual(2, MessageHandlerStub.RequestCount);
        }