Skip to content

Commit

Permalink
Merge pull request #46412 from benoitdm-oslandia/backport-46401-to-qu…
Browse files Browse the repository at this point in the history
…eued_ltr_backports

fix percent encoding in wms server parameter
  • Loading branch information
lbartoletti committed Dec 8, 2021
2 parents 701bced + 9a91d75 commit 1249c70
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/server/qgsserverparameters.cpp
Expand Up @@ -441,7 +441,8 @@ QUrlQuery QgsServerParameters::urlQuery() const

for ( auto param : toMap().toStdMap() )
{
query.addQueryItem( param.first, param.second );
const QString value = QUrl::toPercentEncoding( QString( param.second ) );
query.addQueryItem( param.first, value );
}
}

Expand Down
22 changes: 22 additions & 0 deletions tests/src/server/wms/test_qgsserver_wms_parameters.cpp
Expand Up @@ -29,6 +29,8 @@ class TestQgsServerWmsParameters : public QObject
void cleanupTestCase();

void external_layers();

void percent_encoding();
};

void TestQgsServerWmsParameters::initTestCase()
Expand Down Expand Up @@ -75,5 +77,25 @@ void TestQgsServerWmsParameters::external_layers()
QCOMPARE( layers_params[2].mOpacity, 125 );
}

void TestQgsServerWmsParameters::percent_encoding()
{
// '+' in its encoded ('%2B') form is transformed in '+' sign and
// forwarded to parameters subclasses
QUrlQuery query;
query.addQueryItem( "MYPARAM", QString( "a%2Cb%2Cc%2C%C3%A4%C3%B6s+%2B+%25%26%23" ) );

QgsServerParameters params;
params.load( query );
QCOMPARE( params.value( "MYPARAM" ), QString( "a,b,c,äös + %&#" ) );

const QgsWms::QgsWmsParameters wmsParams( params );
QCOMPARE( wmsParams.value( "MYPARAM" ), QString( "a,b,c,äös + %&#" ) );

// back to urlQuery
QgsServerParameters params2;
params2.load( params.urlQuery() );
QCOMPARE( params2.value( "MYPARAM" ), QString( "a,b,c,äös + %&#" ) );
}

QGSTEST_MAIN( TestQgsServerWmsParameters )
#include "test_qgsserver_wms_parameters.moc"

0 comments on commit 1249c70

Please sign in to comment.