public void ReturnScopesForRequestUrlWhoseScopesInformationNotAvailable() { // Arrange IMemoryCache _permissionsCache = Create.MockedMemoryCache(); PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration, _permissionsCache); // Act List <ScopeInformation> result = permissionsStore.GetScopesAsync(requestUrl: "/lorem/ipsum/{id}", method: "GET").GetAwaiter().GetResult(); // bogus permission whose scopes info are unavailable // Assert Assert.Collection(result, item => { Assert.Equal("LoremIpsum.Read.All", item.ScopeName); Assert.Equal("Consent name unavailable", item.DisplayName); Assert.Equal("Consent description unavailable", item.Description); Assert.False(item.IsAdmin); }, item => { Assert.Equal("LoremIpsum.ReadWrite.All", item.ScopeName); Assert.Equal("Consent name unavailable", item.DisplayName); Assert.Equal("Consent description unavailable", item.Description); Assert.False(item.IsAdmin); }); }
public void GetRequiredPermissionScopesGivenAnExistingRequestUrl() { // Arrange IMemoryCache _permissionsCache = Create.MockedMemoryCache(); PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration, _permissionsCache); // Act List <ScopeInformation> result = permissionsStore.GetScopesAsync(requestUrl: "/security/alerts/{alert_id}", method: "GET") .GetAwaiter().GetResult(); // Assert Assert.Collection(result, item => { Assert.Equal("SecurityEvents.Read.All", item.ScopeName); Assert.Equal("Read your organization's security events", item.DisplayName); Assert.Equal("Allows the app to read your organization's security events on your behalf.", item.Description); Assert.True(item.IsAdmin); }, item => { Assert.Equal("SecurityEvents.ReadWrite.All", item.ScopeName); Assert.Equal("Read and update your organization's security events", item.DisplayName); Assert.Equal("Allows the app to read your organization's security events on your behalf. Also allows you to update editable properties in security events.", item.Description); Assert.True(item.IsAdmin); }); }
public void ReturnLocalizedPermissionsDescriptionsForSupportedLanguage() { // Arrange IMemoryCache _permissionsCache = Create.MockedMemoryCache(); PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration, _permissionsCache); // Act List <ScopeInformation> result = permissionsStore.GetScopesAsync(requestUrl: "/security/alerts/{alert_id}", method: "GET", locale: "es-ES").GetAwaiter().GetResult(); // Assert Assert.Collection(result, item => { Assert.Equal("SecurityEvents.Read.All", item.ScopeName); Assert.Equal("Lea los eventos de seguridad de su organización.", item.DisplayName); Assert.Equal("Permite que la aplicación lea los eventos de seguridad de su organización en su nombre.", item.Description); Assert.True(item.IsAdmin); }, item => { Assert.Equal("SecurityEvents.ReadWrite.All", item.ScopeName); Assert.Equal("Lea y actualice los eventos de seguridad de su organización.", item.DisplayName); Assert.Equal("Permite que la aplicación lea los eventos de seguridad de su organización en su nombre. También le permite actualizar propiedades editables en eventos de seguridad.", item.Description); Assert.True(item.IsAdmin); }); }
public void ReturnScopesForRequestUrlWhoseScopesInformationNotAvailable() { // Arrange PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration); // Act List <ScopeInformation> result = permissionsStore.GetScopes("/lorem/ipsum/{id}"); // bogus permission whose scopes info are unavailable // Assert Assert.Collection(result, item => { Assert.Equal("LoremIpsum.Read.All", item.ScopeName); Assert.Equal("Undefined", item.DisplayName); Assert.Equal("Undefined", item.Description); Assert.False(item.IsAdmin); }, item => { Assert.Equal("LoremIpsum.ReadWrite.All", item.ScopeName); Assert.Equal("Undefined", item.DisplayName); Assert.Equal("Undefined", item.Description); Assert.False(item.IsAdmin); }); }
public void ThrowArgumentNullExceptionIfMethodIsNullOrEmptyAndRequestUrlHasValue() { // Arrange IMemoryCache _permissionsCache = Create.MockedMemoryCache(); PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration, _permissionsCache); // Act and Assert Assert.Throws <ArgumentNullException>(() => permissionsStore.GetScopesAsync(requestUrl: "/security/alerts/{alert_id}") .GetAwaiter().GetResult()); }
public void ReturnNullGivenANonExistentScopeType() { // Arrange PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration); // Act List <ScopeInformation> result = permissionsStore.GetScopes("/security/alerts/{alert_id}", "PATCH", "Foobar"); // non-existent scope type // Assert that returned result is null Assert.Null(result); }
public void ReturnEmptyArrayForEmptyPermissionScopes() { // Arrange PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration); // Act by requesting scopes for the 'DelegatedPersonal' scope type List <ScopeInformation> result = permissionsStore.GetScopes("/security/alerts/{alert_id}", "GET", "DelegatedPersonal"); // Assert that returned result is empty Assert.Empty(result); }
public void ReturnNullGivenANonExistentRequestUrl() { // Arrange PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration); // Act List <ScopeInformation> result = permissionsStore.GetScopes("/foo/bar/{alert_id}"); // non-existent request url // Assert that returned result is null Assert.Null(result); }
public PermissionsStoreShould() { _fileUtility = new FileUtilityMock(); _httpClientUtility = new FileUtilityMock(); _permissionsCache = Create.MockedMemoryCache(); _configuration = new ConfigurationBuilder() .AddJsonFile(".\\TestFiles\\appsettingstest-valid.json") .Build(); _permissionsStore = new PermissionsStore(_configuration, _httpClientUtility, _fileUtility, _permissionsCache); }
public void GetAllPermissionScopesGivenNoRequestUrl() { // Arrange IMemoryCache _permissionsCache = Create.MockedMemoryCache(); PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration, _permissionsCache); // Act List <ScopeInformation> result = permissionsStore.GetScopesAsync().GetAwaiter().GetResult(); // Assert Assert.NotEmpty(result); }
public void ReturnNullGivenANonExistentHttpVerb() { // Arrange IMemoryCache _permissionsCache = Create.MockedMemoryCache(); PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration, _permissionsCache); // Act List <ScopeInformation> result = permissionsStore.GetScopesAsync(requestUrl: "/security/alerts/{alert_id}", method: "Foobar") // non-existent http verb .GetAwaiter().GetResult(); // Assert that returned result is null Assert.Null(result); }
public void ReturnEmptyArrayForEmptyPermissionScopes() { // Arrange IMemoryCache _permissionsCache = Create.MockedMemoryCache(); PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration, _permissionsCache); // Act by requesting scopes for the 'DelegatedPersonal' scope type List <ScopeInformation> result = permissionsStore.GetScopesAsync(scopeType: "DelegatedPersonal", requestUrl: "/security/alerts/{alert_id}", method: "GET").GetAwaiter().GetResult(); // Assert that returned result is empty Assert.Empty(result); }
public void ThrowArgumentNullExceptionIfGetScopesRequestUrlParameterIsNullOrEmpty() { /* Arrange */ PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration); string nullRequestUrl = null; string emptyRequestUrl = string.Empty; /* Act and Assert */ Assert.Throws <ArgumentNullException>(() => permissionsStore.GetScopes(nullRequestUrl)); // null requestUrl arg. Assert.Throws <ArgumentNullException>(() => permissionsStore.GetScopes(emptyRequestUrl)); // empty requestUrl arg. }
public void ThrowInvalidOperationExceptionIfTablesNotPopulatedDueToEmptyPermissionsFile() { /* Arrange */ IConfigurationRoot configuration = new ConfigurationBuilder() .AddJsonFile(".\\TestFiles\\appsettingstest-empty.json") .Build(); PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, configuration); // Act and Assert Assert.Throws <InvalidOperationException>(() => permissionsStore.GetScopes("/security/alerts/{alert_id}")); }
public void ThrowInvalidOperationExceptionIfTablesNotPopulatedDueToEmptyPermissionsFile() { /* Arrange */ IConfigurationRoot configuration = new ConfigurationBuilder() .AddJsonFile(".\\TestFiles\\appsettingstest-empty.json") .Build(); PermissionsStore permissionsStore = new PermissionsStore(configuration, _httpClientUtility, _fileUtility, _permissionsCache); // Act and Assert Assert.Throws <InvalidOperationException>(() => permissionsStore.GetScopesAsync(requestUrl: "/security/alerts/{alert_id}") .GetAwaiter().GetResult()); }
public void ReturnScopesForRequestUrlsInEitherPermissionFilesProvided() { // Arrange IMemoryCache _permissionsCache = Create.MockedMemoryCache(); PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration, _permissionsCache); /* Act */ List <ScopeInformation> result1 = permissionsStore.GetScopesAsync(scopeType: "DelegatedWork", requestUrl: "/users/{id}/calendars/{id}", method: "GET").GetAwaiter().GetResult(); // permission in ver1 doc. List <ScopeInformation> result2 = permissionsStore.GetScopesAsync(scopeType: "DelegatedWork", requestUrl: "/anonymousipriskevents/{id}", method: "GET").GetAwaiter().GetResult(); // permission in ver2 doc. List <ScopeInformation> result3 = permissionsStore.GetScopesAsync(scopeType: "Application", requestUrl: "/security/alerts/{id}", method: "PATCH").GetAwaiter().GetResult(); // permission in ver1 doc. /* Assert */ Assert.Collection(result1, item => { Assert.Equal("Calendars.Read", item.ScopeName); Assert.Equal("Read your calendars ", item.DisplayName); Assert.Equal("Allows the app to read events in your calendars. ", item.Description); Assert.False(item.IsAdmin); }); Assert.Collection(result2, item => { Assert.Equal("IdentityRiskEvent.Read.All", item.ScopeName); Assert.Equal("Read identity risk event information", item.DisplayName); Assert.Equal("Allows the app to read identity risk event information for all users in your organization on behalf of the signed-in user. ", item.Description); Assert.True(item.IsAdmin); }); Assert.Collection(result3, item => { Assert.Equal("SecurityEvents.ReadWrite.All", item.ScopeName); Assert.Equal("Read and update your organization's security events", item.DisplayName); Assert.Equal("Allows the app to read your organization's security events without a signed-in user. Also allows the app to update editable properties in security events.", item.Description); Assert.False(item.IsAdmin); }); }
public void RemoveParameterParanthesesFromRequestUrlsDuringLoadingOfPermissionsFiles() { // Arrange PermissionsStore permissionsStore = new PermissionsStore(_fileUtility, _configuration); // Act // RequestUrl in permission file: "/workbook/worksheets/{id}/charts/{id}/image(width=640)" List <ScopeInformation> result = permissionsStore.GetScopes("/workbook/worksheets/{id}/charts/{id}/image", "GET", "DelegatedWork"); /* Assert */ Assert.Collection(result, item => { Assert.Equal("Files.ReadWrite", item.ScopeName); Assert.Equal("Have full access to your files", item.DisplayName); Assert.Equal("Allows the app to read, create, update, and delete your files.", item.Description); Assert.False(item.IsAdmin); }); }