Skip to content
Snippets Groups Projects

Ability to remove settings from db

@@ -42,18 +42,18 @@ describe('Wrap settings', () => {
})
it('wraps :mascots setting in group :assets', () => {
const settings = { ':assets': { ':mascots': [["keyword", "map"], {
':pleroma_fox_tan_shy': ['', { ':mime_type': "image/png", ':url': "/images/pleroma-fox-tan-shy.png" }],
':pleroma_fox_tan': ['', { ':mime_type': "image/png", ':url': "/images/pleroma-fox-tan-smol.png" }],
const settings = { ':assets': { ':mascots': [['keyword', 'map'], {
':pleroma_fox_tan_shy': ['', { ':mime_type': 'image/png', ':url': '/images/pleroma-fox-tan-shy.png' }],
':pleroma_fox_tan': ['', { ':mime_type': 'image/png', ':url': '/images/pleroma-fox-tan-smol.png' }],
}]}}
const state = { ':pleroma': { ':assets': {}}}
const result = wrapUpdatedSettings(':pleroma', settings, state)
const expectedResult = [{
group: ':pleroma',
key: ':assets',
value: [{ tuple: [":mascots", [
{ tuple: [":pleroma_fox_tan_shy", { ':mime_type': "image/png", ':url': "/images/pleroma-fox-tan-shy.png"}] },
{ tuple: [":pleroma_fox_tan", { ':mime_type': "image/png", ':url': "/images/pleroma-fox-tan-smol.png"}] }
value: [{ tuple: [':mascots', [
{ tuple: [':pleroma_fox_tan_shy', { ':mime_type': 'image/png', ':url': '/images/pleroma-fox-tan-shy.png'}] },
{ tuple: [':pleroma_fox_tan', { ':mime_type': 'image/png', ':url': '/images/pleroma-fox-tan-smol.png'}] }
]]}]
}]
expect(_.isEqual(result, expectedResult)).toBeTruthy()
@@ -61,30 +61,30 @@ describe('Wrap settings', () => {
it('wraps settings with type keyword', () => {
const settings1 = { 'Pleroma.Upload': { ':proxy_opts':
[ "keyword", {
':redirect_on_failure': ["boolean", true],
':http': ["keyword", { ':proxy_url': [["string", "tuple"], "localhost:3090" ]}]
[ 'keyword', {
':redirect_on_failure': ['boolean', true],
':http': ['keyword', { ':proxy_url': [['string', 'tuple'], 'localhost:3090' ]}]
}]
}}
const state1 = { ':pleroma': { 'Pleroma.Upload': {}}}
const result1 = wrapUpdatedSettings(':pleroma', settings1, state1)
const expectedResult1 = [{
group: ':pleroma',
key: "Pleroma.Upload",
value: [{ tuple: [":proxy_opts", [
{ tuple: [":redirect_on_failure", true] },
{ tuple: [":http", [{ tuple: [":proxy_url", "localhost:3090"] }]] }
key: 'Pleroma.Upload',
value: [{ tuple: [':proxy_opts', [
{ tuple: [':redirect_on_failure', true] },
{ tuple: [':http', [{ tuple: [':proxy_url', 'localhost:3090'] }]] }
]]}]
}]
const settings2 = { ':media_proxy': { ':proxy_opts':
["keyword", {
':max_body_length': ["integer", 26210000],
':http': ["keyword", {
':proxy_url': [["string", "tuple"], [":socks5", "127.0.0.1", "9020"]],
':adapter': ["keyword", {
':ssl_options': ["keyword", {
':versions': [["list", "atom"], [":tlsv1", ":tlsv1.1"]]
['keyword', {
':max_body_length': ['integer', 26210000],
':http': ['keyword', {
':proxy_url': [['string', 'tuple'], [':socks5', '127.0.0.1', '9020']],
':adapter': ['keyword', {
':ssl_options': ['keyword', {
':versions': [['list', 'atom'], [':tlsv1', ':tlsv1.1']]
}]
}]
}]
@@ -94,13 +94,13 @@ describe('Wrap settings', () => {
const result2 = wrapUpdatedSettings(':pleroma', settings2, state2)
const expectedResult2 = [{
group: ':pleroma',
key: ":media_proxy",
value: [{ tuple: [":proxy_opts", [
{ tuple: [":max_body_length", 26210000] },
{ tuple: [":http",
key: ':media_proxy',
value: [{ tuple: [':proxy_opts', [
{ tuple: [':max_body_length', 26210000] },
{ tuple: [':http',
[{ tuple: [ ':proxy_url', { tuple: [ ':socks5', '127.0.0.1', '9020' ] }]},
{ tuple: [":adapter",
[{ tuple: [":ssl_options", [{ tuple: [":versions", [":tlsv1", ":tlsv1.1"]]}]]}]
{ tuple: [':adapter',
[{ tuple: [':ssl_options', [{ tuple: [':versions', [':tlsv1', ':tlsv1.1']]}]]}]
]}]
]}
]]}]
@@ -112,36 +112,36 @@ describe('Wrap settings', () => {
it('wraps settings that includes keyword in type', () => {
const settings1 = { 'Oban': { ':queues': [
["keyword", "integer"],
{ ':activity_expiration': ["integer", 15],
':background': ["integer", 10],
':federator_incoming': ["integer", 30]}
['keyword', 'integer'],
{ ':activity_expiration': ['integer', 15],
':background': ['integer', 10],
':federator_incoming': ['integer', 30]}
]}}
const state1 = { ':pleroma': { 'Oban': {}}}
const result1 = wrapUpdatedSettings(':pleroma', settings1, state1)
const expectedResult1 = [{
group: ':pleroma',
key: "Oban",
value: [{ tuple: [":queues", [
{ tuple: [":activity_expiration", 15] },
{ tuple: [":background", 10] },
{ tuple: [":federator_incoming", 30]}
key: 'Oban',
value: [{ tuple: [':queues', [
{ tuple: [':activity_expiration', 15] },
{ tuple: [':background', 10] },
{ tuple: [':federator_incoming', 30]}
]]}]
}]
const settings2 = { ':emoji': { ':groups': [
["keyword", "string", ["list", "string"]],
{ ':custom': [["list"], ["/emoji/*.png", "/emoji/**/*.png"]],
':another_group': ["list", ["/custom_emoji/*.png"]]}
['keyword', 'string', ['list', 'string']],
{ ':custom': [['list'], ['/emoji/*.png', '/emoji/**/*.png']],
':another_group': ['list', ['/custom_emoji/*.png']]}
]}}
const state2 = { ':pleroma': { ':emoji': {}}}
const result2 = wrapUpdatedSettings(':pleroma', settings2, state2)
const expectedResult2 = [{
group: ':pleroma',
key: ":emoji",
value: [{ tuple: [":groups", [
{ tuple: [":custom", ["/emoji/*.png", "/emoji/**/*.png"]]},
{ tuple: [":another_group", ["/custom_emoji/*.png"]]}
key: ':emoji',
value: [{ tuple: [':groups', [
{ tuple: [':custom', ['/emoji/*.png', '/emoji/**/*.png']]},
{ tuple: [':another_group', ['/custom_emoji/*.png']]}
]]}]
}]
@@ -151,18 +151,18 @@ describe('Wrap settings', () => {
it('wraps :replace setting', () => {
const settings = { ':mrf_keyword': { ':replace': [
[["tuple", "string", "string"], ["tuple", "regex", "string"]],
{ 'pattern': ["list", "replacement"],
'/\w+/': ["list", "test_replacement"]}
[['tuple', 'string', 'string'], ['tuple', 'regex', 'string']],
{ 'pattern': ['list', 'replacement'],
'/\w+/': ['list', 'test_replacement']}
]}}
const state = { ':pleroma': { ':mrf_keyword': {}}}
const result = wrapUpdatedSettings(':pleroma', settings, state)
const expectedResult = [{
group: ':pleroma',
key: ":mrf_keyword",
value: [{ tuple: [":replace", [
{ tuple: ["pattern", "replacement"] },
{ tuple: ["/\w+/", "test_replacement"] }
key: ':mrf_keyword',
value: [{ tuple: [':replace', [
{ tuple: ['pattern', 'replacement'] },
{ tuple: ['/\w+/', 'test_replacement'] }
]]}]
}]
@@ -171,19 +171,19 @@ describe('Wrap settings', () => {
it('wraps settings with type atom', () => {
const settings = {
':ldap': { ':sslopts': [ "keyword", { ':verify': ["atom", "verify_peer"]}]},
':assets': { ':default_mascot': ["atom", "pleroma_fox_tan_test"]}
':ldap': { ':sslopts': [ 'keyword', { ':verify': ['atom', 'verify_peer']}]},
':assets': { ':default_mascot': ['atom', 'pleroma_fox_tan_test']}
}
const state = { ':pleroma': { ':sslopts': {}, ':assets': {}}}
const result = wrapUpdatedSettings(':pleroma', settings, state)
const expectedResult = [{
group: ':pleroma',
key: ':ldap',
value: [{ tuple: [":sslopts", [{tuple: [":verify", ":verify_peer"]}]]}]
value: [{ tuple: [':sslopts', [{tuple: [':verify', ':verify_peer']}]]}]
}, {
group: ':pleroma',
key: ':assets',
value: [{ tuple: [":default_mascot", ":pleroma_fox_tan_test"]}]
value: [{ tuple: [':default_mascot', ':pleroma_fox_tan_test']}]
}]
expect(_.isEqual(result, expectedResult)).toBeTruthy()
@@ -191,34 +191,34 @@ describe('Wrap settings', () => {
it('wraps settings with type string and tuple', () => {
const settings1 = { ':media_proxy': { ':proxy_opts':
["keyword", {
':http': ["keyword", { ':proxy_url': [["string", "tuple"], "localhost:9020"]}]
['keyword', {
':http': ['keyword', { ':proxy_url': [['string', 'tuple'], 'localhost:9020']}]
}]
}}
const state1 = { ':pleroma': { ':media_proxy': {}}}
const result1 = wrapUpdatedSettings(':pleroma', settings1, state1)
const expectedResult1 = [{
group: ':pleroma',
key: ":media_proxy",
value: [{ tuple: [":proxy_opts", [
{ tuple: [":http",
[{ tuple: [":proxy_url", "localhost:9020"] }]
key: ':media_proxy',
value: [{ tuple: [':proxy_opts', [
{ tuple: [':http',
[{ tuple: [':proxy_url', 'localhost:9020'] }]
]}
]]}]
}]
const settings2 = { ':media_proxy': { ':proxy_opts':
["keyword", {
':http': ["keyword", { ':proxy_url': [["string", "tuple"], [":socks5", "127.0.0.1", "9020"]]}]
['keyword', {
':http': ['keyword', { ':proxy_url': [['string', 'tuple'], [':socks5', '127.0.0.1', '9020']]}]
}]
}}
const state2 = { ':pleroma': { ':media_proxy': {}}}
const result2 = wrapUpdatedSettings(':pleroma', settings2, state2)
const expectedResult2 = [{
group: ':pleroma',
key: ":media_proxy",
value: [{ tuple: [":proxy_opts", [
{ tuple: [":http",
key: ':media_proxy',
value: [{ tuple: [':proxy_opts', [
{ tuple: [':http',
[{ tuple: [ ':proxy_url', { tuple: [':socks5', '127.0.0.1', '9020'] }]}]
]}
]]}]
@@ -228,28 +228,147 @@ describe('Wrap settings', () => {
expect(_.isEqual(result2, expectedResult2)).toBeTruthy()
})
it('wraps settings with type tuple and atom', () => {
const settings1 = { 'Oban': { ':prune': [["atom", "tuple"], ":disabled"]}}
it('wraps settings with type atom and tuple', () => {
const settings1 = { 'Oban': { ':prune': [['atom', 'tuple'], ':disabled']}}
const state1 = { ':pleroma': { 'Oban': {}}}
const result1 = wrapUpdatedSettings(':pleroma', settings1, state1)
const expectedResult1 = [{
group: ':pleroma',
key: "Oban",
value: [{ tuple: [":prune", ":disabled"]}]
key: 'Oban',
value: [{ tuple: [':prune', ':disabled']}]
}]
const settings2 = { 'Oban': { ':prune':
[["atom", "tuple"], [":maxlen", 1500]]
[['atom', 'tuple'], [':maxlen', 1500]]
}}
const state2 = { ':pleroma': { 'Oban': {}}}
const result2 = wrapUpdatedSettings(':pleroma', settings2, state2)
const expectedResult2 = [{
group: ':pleroma',
key: "Oban",
value: [{ tuple: [":prune", {tuple: [":maxlen", 1500]}]}]
key: 'Oban',
value: [{ tuple: [':prune', {tuple: [':maxlen', 1500]}]}]
}]
expect(_.isEqual(result1, expectedResult1)).toBeTruthy()
expect(_.isEqual(result2, expectedResult2)).toBeTruthy()
})
it('wraps settings with type map', () => {
const settings1 = { ':instance': { ':poll_limits': ['map', { ':min_expiration': ['integer', 100] }]}}
const state1 = { ':pleroma': { ':instance': { ':poll_limits': {
':max_expiration': 31536000,
':max_option_chars': 200,
':max_options': 20,
':min_expiration': 100
}}}}
const result1 = wrapUpdatedSettings(':pleroma', settings1, state1)
const expectedResult1 = [{
group: ':pleroma',
key: ':instance',
value: [{ tuple: [':poll_limits', {
':max_expiration': 31536000,
':max_option_chars': 200,
':max_options': 20,
':min_expiration': 100
}]}]
}]
const settings2 = { ':email_notifications': { ':digest': ['map', {
':active': ['boolean', true],
':schedule': ['string', '0 0 0'],
':inactivity_threshold': ['integer', 10]
}]}}
const state2 = { ':pleroma': { ':email_notifications': { ':digest': {
':active': true,
':inactivity_threshold': 10,
':interval': 7,
':schedule': '0 0 0'
}}}}
const result2 = wrapUpdatedSettings(':pleroma', settings2, state2)
const expectedResult2 = [{
group: ':pleroma',
key: ':email_notifications',
value: [{ tuple: [':digest', {
':active': true,
':inactivity_threshold': 10,
':interval': 7,
':schedule': '0 0 0'
}]}]
}]
const settings3 = { ':mrf_subchain': { ':match_actor': ['map', {
'~r/https:\/\/example.com/s': ['Elixir.Pleroma.Web.ActivityPub.MRF.DropPolicy'],
'~r/https:\/\/test.com': ['Elixir.Pleroma.Web.ActivityPub.MRF.TestPolicy']
}]}}
const state3 = { ':pleroma': { ':mrf_subchain': { ':match_actor': [
{ '~r/https:\/\/example.com/s': ['Elixir.Pleroma.Web.ActivityPub.MRF.DropPolicy'] },
{ '~r/https:\/\/test.com': ['Elixir.Pleroma.Web.ActivityPub.MRF.TestPolicy'] }
]
}}}
const result3 = wrapUpdatedSettings(':pleroma', settings3, state3)
const expectedResult3 = [{
group: ':pleroma',
key: ':mrf_subchain',
value: [{ tuple: [':match_actor', {
'~r/https:\/\/example.com/s': ['Elixir.Pleroma.Web.ActivityPub.MRF.DropPolicy'],
'~r/https:\/\/test.com': ['Elixir.Pleroma.Web.ActivityPub.MRF.TestPolicy']
}]}]
}]
expect(_.isEqual(result1, expectedResult1)).toBeTruthy()
expect(_.isEqual(result2, expectedResult2)).toBeTruthy()
expect(_.isEqual(result3, expectedResult3)).toBeTruthy()
})
it('wraps IP setting', () => {
const settings = { ':gopher': { ':ip': ['tuple', '127.0.0.1']}}
const state = { ':pleroma': { ':gopher': {}}}
const result = wrapUpdatedSettings(':pleroma', settings, state)
const expectedResult = [{
group: ':pleroma',
key: ':gopher',
value: [{ tuple: [':ip', { tuple: [127, 0, 0, 1] }]}]
}]
expect(_.isEqual(result, expectedResult)).toBeTruthy()
})
it('wraps args setting in Pleroma.Upload.Filter.Mogrify group', () => {
const settings = { 'Pleroma.Upload.Filter.Mogrify': { ':args': [
['string', ['list', 'string'], ['list', 'tuple']],
['strip', 'implode']
]}}
const state = { ':pleroma': { 'Pleroma.Upload.Filter.Mogrify': {}}}
const result = wrapUpdatedSettings(':pleroma', settings, state)
const expectedResult = [{
group: ':pleroma',
key: 'Pleroma.Upload.Filter.Mogrify',
value: [{tuple: [':args', ['strip', {tuple: ['implode', '1']}]]}]
}]
expect(_.isEqual(result, expectedResult)).toBeTruthy()
})
it('wraps regular settings', () => {
const settings = { ':http_security': {
':report_uri': ["string", "https://test.com"],
':ct_max_age': ["integer", 150000],
':sts': ["boolean", true],
':methods': [["list", "string"], ["POST", "PUT", "PATCH"]]
}}
const state = { ':pleroma': { ':http_security': {}}}
const result = wrapUpdatedSettings(':pleroma', settings, state)
const expectedResult = [{
group: ':pleroma',
key: ':http_security',
value: [
{ tuple: [":report_uri", "https://test.com"] },
{ tuple: [":ct_max_age", 150000] },
{ tuple: [":sts", true] },
{ tuple: [":methods", ["POST", "PUT", "PATCH"]] }
]
}]
expect(_.isEqual(result, expectedResult)).toBeTruthy()
})
})
Loading