diff --git a/tests/tests.pro b/tests/tests.pro
index 371c9cc..aa27217 100644
--- a/tests/tests.pro
+++ b/tests/tests.pro
@@ -3,6 +3,7 @@ CONFIG += qt ordered coverage debug
SUBDIRS = \
sandbox \
ut_settings \
+ ut_ssuurlresolver \
ut_urlresolver \
ut_variables \
diff --git a/tests/tests.xml b/tests/tests.xml
index edf7c4e..7adde66 100644
--- a/tests/tests.xml
+++ b/tests/tests.xml
@@ -8,6 +8,11 @@
/opt/tests/ssu/ut_settings
+
+
+ /opt/tests/ssu/ut_ssuurlresolver
+
+
/opt/tests/ssu/ut_urlresolver
diff --git a/tests/ut_ssuurlresolver/main.cpp b/tests/ut_ssuurlresolver/main.cpp
new file mode 100644
index 0000000..7eee5a1
--- /dev/null
+++ b/tests/ut_ssuurlresolver/main.cpp
@@ -0,0 +1,19 @@
+/**
+ * @file main.cpp
+ * @copyright 2012 Jolla Ltd.
+ * @author Martin Kampas
+ * @date 2012
+ */
+
+#include
+
+#include "ssuurlresolvertest.h"
+
+int main(int argc, char **argv){
+ SsuUrlResolverTest ssuUrlResolverTest;
+
+ if (QTest::qExec(&ssuUrlResolverTest, argc, argv))
+ return 1;
+
+ return 0;
+}
diff --git a/tests/ut_ssuurlresolver/ssuurlresolvertest.cpp b/tests/ut_ssuurlresolver/ssuurlresolvertest.cpp
new file mode 100644
index 0000000..287d2de
--- /dev/null
+++ b/tests/ut_ssuurlresolver/ssuurlresolvertest.cpp
@@ -0,0 +1,45 @@
+/**
+ * @file ssuurlresolvertest.cpp
+ * @copyright 2013 Jolla Ltd.
+ * @author Martin Kampas
+ * @date 2013
+ */
+
+#include "ssuurlresolvertest.h"
+
+#include
+#include
+
+#include
+
+/**
+ * @class SsuUrlResolverTest
+ * @brief Tests libzypp UrlResolverPlugin plugin compatibility
+ *
+ * This test verifies the UrlResolverPlugin works well with installed version of libzypp.
+ */
+
+void SsuUrlResolverTest::initTestCase(){
+ setenv("LD_PRELOAD", qPrintable(QString("%1/libsandboxhook.so").arg(TESTS_PATH)), 1);
+ setenv("SSU_TESTS_SANDBOX", qPrintable(QString("%1/configroot").arg(TESTS_DATA_PATH)), 1);
+}
+
+void SsuUrlResolverTest::test_data(){
+ QTest::addColumn("input");
+ QTest::addColumn("expected");
+
+ QTest::newRow("basic")
+ << "plugin:ssu?repo=mer-core&debug&arch=i586"
+ << "https://packages.testing.com//mer/i586/debug/?credentials=example";
+}
+
+void SsuUrlResolverTest::test(){
+ QFETCH(QString, input);
+ QFETCH(QString, expected);
+
+ zypp::media::UrlResolverPlugin::HeaderList customHeaders;
+ const QString resolved = QString::fromStdString(
+ zypp::media::UrlResolverPlugin::resolveUrl(input.toStdString(), customHeaders).asString());
+
+ QCOMPARE(resolved, expected);
+}
diff --git a/tests/ut_ssuurlresolver/ssuurlresolvertest.h b/tests/ut_ssuurlresolver/ssuurlresolvertest.h
new file mode 100644
index 0000000..81322c8
--- /dev/null
+++ b/tests/ut_ssuurlresolver/ssuurlresolvertest.h
@@ -0,0 +1,24 @@
+/**
+ * @file ssuurlresolvertest.h
+ * @copyright 2013 Jolla Ltd.
+ * @author Martin Kampas
+ * @date 2013
+ */
+
+#ifndef _SSUURLRESOLVERTEST_H
+#define _SSUURLRESOLVERTEST_H
+
+#include
+
+class SsuUrlResolverTest: public QObject {
+ Q_OBJECT
+
+ private slots:
+ void initTestCase();
+ void test_data();
+ void test();
+
+ private:
+};
+
+#endif
diff --git a/tests/ut_ssuurlresolver/testdata/board-mappings.ini b/tests/ut_ssuurlresolver/testdata/board-mappings.ini
new file mode 100644
index 0000000..49c0e66
--- /dev/null
+++ b/tests/ut_ssuurlresolver/testdata/board-mappings.ini
@@ -0,0 +1,32 @@
+[file.exists]
+SDK=/mer-sdk-chroot
+
+[systeminfo.equals]
+
+[cpuinfo.contains]
+N900=Nokia RX-51 board
+N950=Nokia RM-680 board
+N9=Nokia RM-696 board
+
+[arch.equals]
+generic-x86=i586
+
+[variants]
+N950=N9
+
+[N9]
+family=n950-n9
+adaptation-repos=n9xx-common,n950-n9
+
+[N900]
+family=n900
+adaptation-repos=n9xx-common,n900
+
+[SDK]
+
+[generic-x86]
+family=x86
+adaptation-repos=x86
+
+[UNKNOWN]
+family=UNKNOWN
diff --git a/tests/ut_ssuurlresolver/testdata/repos.ini b/tests/ut_ssuurlresolver/testdata/repos.ini
new file mode 100644
index 0000000..60744db
--- /dev/null
+++ b/tests/ut_ssuurlresolver/testdata/repos.ini
@@ -0,0 +1,32 @@
+[all]
+credentials=jolla
+credentials-url=https://%(ssuRegDomain)/%(ssuRegPath)/%1/credentials.xml
+register-url=https://%(ssuRegDomain)/%(ssuRegPath)/%1/register.xml
+
+[release]
+mer-core=https://%(packagesDomain)/%(release)/mer/%(arch)/%(debugSplit)/
+
+[rnd]
+mer-core=https://%(packagesDomain)/mer/%(release)/builds/%(arch)/%(debugSplit)/
+
+[devel-flavour]
+flavour-pattern=
+
+[release-flavour]
+flavour-pattern=:/release
+
+[testing-flavour]
+flavour-pattern=:/testing
+
+[example-domain]
+dumpDomain=dump.example.com
+packagesDomain=packages.example.com
+ssuRegDomain=ssu.example.com
+ssuRegPath=ssu/device
+
+# fallback if domain is not matched or not set
+[default-domain]
+dumpDomain=dump.testing.com
+packagesDomain=packages.testing.com
+ssuRegDomain=ssu.testing.com
+ssuRegPath=ssu/device
diff --git a/tests/ut_ssuurlresolver/testdata/ssu-defaults.ini b/tests/ut_ssuurlresolver/testdata/ssu-defaults.ini
new file mode 100644
index 0000000..1bb8bf6
--- /dev/null
+++ b/tests/ut_ssuurlresolver/testdata/ssu-defaults.ini
@@ -0,0 +1 @@
+# empty
diff --git a/tests/ut_ssuurlresolver/testdata/ssu.ini b/tests/ut_ssuurlresolver/testdata/ssu.ini
new file mode 100644
index 0000000..aa00c46
--- /dev/null
+++ b/tests/ut_ssuurlresolver/testdata/ssu.ini
@@ -0,0 +1,13 @@
+[General]
+initialized=true
+flavour=testing
+registered=false
+rndRelease=latest
+release=
+adaptation=
+ca-certificate=
+credentials-scope=example
+
+[repository-urls]
+
+[repository-url-variables]
diff --git a/tests/ut_ssuurlresolver/ut_ssuurlresolver.pro b/tests/ut_ssuurlresolver/ut_ssuurlresolver.pro
new file mode 100644
index 0000000..b57aeff
--- /dev/null
+++ b/tests/ut_ssuurlresolver/ut_ssuurlresolver.pro
@@ -0,0 +1,37 @@
+HEADERS = \
+ ssuurlresolvertest.h \
+
+SOURCES = \
+ main.cpp \
+ ssuurlresolvertest.cpp \
+
+TEMPLATE = app
+TARGET = ut_ssuurlresolver
+
+LIBS += \
+ -lssu \
+ -lzypp \
+
+CONFIG -= app_bundle
+CONFIG += console qtestlib
+QT -= gui
+QT += network testlib
+
+!include( ../tests.pri ) { error("Unable to find tests include") }
+
+unix:target.path = $${PREFIX}/$$TESTS_PATH
+INSTALLS += target
+
+test_data_etc.path = $${TESTS_DATA_PATH}/configroot/etc/ssu
+test_data_etc.files = \
+ $${PWD}/testdata/ssu.ini \
+
+test_data_usr_share.path = $${TESTS_DATA_PATH}/configroot/usr/share/ssu
+test_data_usr_share.files = \
+ $${PWD}/testdata/ssu-defaults.ini \
+ $${PWD}/testdata/repos.ini \
+ $${PWD}/testdata/board-mappings.ini \
+
+INSTALLS += test_data_etc test_data_usr_share
+
+!include( ../../buildpath.pri ) { error("Unable to find build path specification") }