Esempio n. 1
0
        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);
            });
        }
Esempio n. 2
0
        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);
            });
        }
Esempio n. 3
0
        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);
            });
        }
Esempio n. 4
0
        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);
            });
        }
Esempio n. 5
0
        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());
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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.
        }
Esempio n. 14
0
        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}"));
        }
Esempio n. 15
0
        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());
        }
Esempio n. 16
0
        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);
            });
        }
Esempio n. 17
0
        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);
            });
        }