From eb207cecfddbdf79d427dd6c4378a8fab4d64af8 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 30 Aug 2018 09:47:33 +0200 Subject: [PATCH] fix errors with null values for array types --- scm-ui/src/config/modules/config.js | 16 +++++++++- scm-ui/src/config/modules/config.test.js | 37 ++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/scm-ui/src/config/modules/config.js b/scm-ui/src/config/modules/config.js index 6fe1594236..5cf331c324 100644 --- a/scm-ui/src/config/modules/config.js +++ b/scm-ui/src/config/modules/config.js @@ -117,12 +117,26 @@ export function modifyConfigReset() { //reducer +function removeNullValues(config: Config) { + if (!config.adminGroups) { + config.adminGroups = []; + } + if (!config.adminUsers) { + config.adminUsers = []; + } + if (!config.proxyExcludes) { + config.proxyExcludes = []; + } + return config; +} + function reducer(state: any = {}, action: any = {}) { switch (action.type) { case FETCH_CONFIG_SUCCESS: + const config = removeNullValues(action.payload); return { ...state, - entries: action.payload, + entries: config, configUpdatePermission: action.payload._links.update ? true : false }; default: diff --git a/scm-ui/src/config/modules/config.test.js b/scm-ui/src/config/modules/config.test.js index d991bd929a..09d794dcb0 100644 --- a/scm-ui/src/config/modules/config.test.js +++ b/scm-ui/src/config/modules/config.test.js @@ -56,6 +56,35 @@ const config = { } }; +const configWithNullValues = { + proxyPassword: null, + proxyPort: 8080, + proxyServer: "proxy.mydomain.com", + proxyUser: null, + enableProxy: false, + realmDescription: "SONIA :: SCM Manager", + enableRepositoryArchive: false, + disableGroupingGrid: false, + dateFormat: "YYYY-MM-DD HH:mm:ss", + anonymousAccessEnabled: false, + adminGroups: null, + adminUsers: null, + baseUrl: "http://localhost:8081/scm", + forceBaseUrl: false, + loginAttemptLimit: -1, + proxyExcludes: null, + skipFailedAuthenticators: false, + pluginUrl: + "http://plugins.scm-manager.org/scm-plugin-backend/api/{version}/plugins?os={os}&arch={arch}&snapshot=false", + loginAttemptLimitTimeout: 300, + enabledXsrfProtection: true, + defaultNamespaceStrategy: "sonia.scm.repository.DefaultNamespaceStrategy", + _links: { + self: { href: "http://localhost:8081/scm/api/rest/v2/config" }, + update: { href: "http://localhost:8081/scm/api/rest/v2/config" } + } +}; + const responseBody = { entries: config, configUpdatePermission: false @@ -175,6 +204,14 @@ describe("config reducer", () => { const newState = reducer({}, fetchConfigSuccess(config)); expect(newState.entries).toBe(config); }); + + it("should return empty arrays for null values", () => { + const config = reducer({}, fetchConfigSuccess(configWithNullValues)) + .entries; + expect(config.adminUsers).toEqual([]); + expect(config.adminGroups).toEqual([]); + expect(config.proxyExcludes).toEqual([]); + }); }); describe("selector tests", () => {