diff --git a/extensions/azurecore/src/test/account-provider/auths/azureAuth.test.ts b/extensions/azurecore/src/test/account-provider/auths/azureAuth.test.ts index 82cc7f4612..0929ca5006 100644 --- a/extensions/azurecore/src/test/account-provider/auths/azureAuth.test.ts +++ b/extensions/azurecore/src/test/account-provider/auths/azureAuth.test.ts @@ -97,6 +97,39 @@ describe('Azure Authentication', function () { await azureAuthCodeGrant.object.getAccountSecurityToken(mockAccount, 'invalid_tenant', AzureResource.MicrosoftResourceManagement).should.be.rejected(); }); + it('token recieved for ossRdbmns resource', async function () { + azureAuthCodeGrant.setup(x => x.getTenants(mockToken)).returns(() => { + return Promise.resolve([ + mockTenant + ]); + }); + azureAuthCodeGrant.setup(x => x.getTokenHelper(mockTenant, provider.settings.ossRdbmsResource, TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns(() => { + return Promise.resolve({ + accessToken: mockAccessToken + } as OAuthTokenResponse); + }); + + azureAuthCodeGrant.setup(x => x.refreshToken(mockTenant, provider.settings.ossRdbmsResource, mockRefreshToken)).returns((): Promise => { + const mockToken: AccessToken = JSON.parse(JSON.stringify(mockAccessToken)); + delete (mockToken as any).invalidData; + return Promise.resolve({ + accessToken: mockToken + } as OAuthTokenResponse); + }); + + azureAuthCodeGrant.setup(x => x.getSavedToken(mockTenant, provider.settings.ossRdbmsResource, mockAccount.key)).returns((): Promise<{ accessToken: AccessToken, refreshToken: RefreshToken, expiresOn: string }> => { + return Promise.resolve({ + accessToken: mockAccessToken, + refreshToken: mockRefreshToken, + expiresOn: `${(new Date().getTime() / 1000) + (10 * 60)}` + }); + }); + + const securityToken = await azureAuthCodeGrant.object.getAccountSecurityToken(mockAccount, mockTenant.id, AzureResource.OssRdbms); + should(securityToken.token).be.equal(mockAccessToken.token, 'Token are not similar'); + + }); + it('saved token exists and can be reused', async function () { delete (mockAccessToken as any).tokenType; azureAuthCodeGrant.setup(x => x.getSavedToken(mockTenant, provider.settings.microsoftResource, mockAccount.key)).returns((): Promise<{ accessToken: AccessToken, refreshToken: RefreshToken, expiresOn: string }> => { @@ -104,11 +137,11 @@ describe('Azure Authentication', function () { accessToken: mockAccessToken, refreshToken: mockRefreshToken, expiresOn: `${(new Date().getTime() / 1000) + (10 * 60)}` - }) + }); }); const securityToken = await azureAuthCodeGrant.object.getAccountSecurityToken(mockAccount, mockTenant.id, AzureResource.MicrosoftResourceManagement); - should(securityToken.tokenType).be.equal('Bearer', 'tokenType should be bearer on a successful getSecurityToken from cache') + should(securityToken.tokenType).be.equal('Bearer', 'tokenType should be bearer on a successful getSecurityToken from cache'); }); @@ -132,7 +165,7 @@ describe('Azure Authentication', function () { const securityToken = await azureAuthCodeGrant.object.getAccountSecurityToken(mockAccount, mockTenant.id, AzureResource.MicrosoftResourceManagement); should((securityToken as any).invalidData).be.undefined(); // Ensure its a new one - should(securityToken.tokenType).be.equal('Bearer', 'tokenType should be bearer on a successful getSecurityToken from cache') + should(securityToken.tokenType).be.equal('Bearer', 'tokenType should be bearer on a successful getSecurityToken from cache'); azureAuthCodeGrant.verify(x => x.refreshToken(mockTenant, provider.settings.microsoftResource, mockRefreshToken), TypeMoq.Times.once()); }); @@ -171,7 +204,7 @@ describe('Azure Authentication', function () { }); const securityToken: Token = await azureAuthCodeGrant.object.getAccountSecurityToken(mockAccount, mockTenant.id, AzureResource.MicrosoftResourceManagement); - should(securityToken.tokenType).be.equal('Bearer', 'tokenType should be bearer on a successful getSecurityToken from cache') + should(securityToken.tokenType).be.equal('Bearer', 'tokenType should be bearer on a successful getSecurityToken from cache'); }); });