diff --git a/cekit/tools.py b/cekit/tools.py
index cba0a21..32e6567 100644
--- a/cekit/tools.py
+++ b/cekit/tools.py
@@ -122,7 +122,7 @@ def get_brew_url(md5):
         url = 'http://download.devel.redhat.com/brewroot/packages/' + package + '/' + \
             version.replace('-', '_') + '/' + release + '/maven/' + \
             group_id.replace('.', '/') + '/' + \
-            artifact_id.replace('.', '/') + '/' + version + '/' + filename
+            artifact_id + '/' + version + '/' + filename
     except subprocess.CalledProcessError as ex:
         LOGGER.error("Can't fetch artifacts details from brew: '%s'." %
                      ex.output)

Dots in artifact names cause issues in generating proper fetch-artifacts-url.yaml file
**Describe the bug**
When an artifact contains dot in the name and it is used 
in the fetch-artifacts-url.yaml, the generated URL
is wrong and instead of preserving the dot it is converted to a slash.

Example artifact that is causeing troubles:

```
/usr/bin/brew call --json-output listArchives checksum=569870f975deeeb6691fcb9bc02a9555 type=maven
[
  {
    "build_id": 410568,
    "version": "1.0.4",
    "type_name": "jar",
    "artifact_id": "javax.json",
    "type_id": 1,
    "checksum": "569870f975deeeb6691fcb9bc02a9555",
    "extra": null,
    "filename": "javax.json-1.0.4.jar",
    "type_description": "Jar file",
    "metadata_only": false,
    "type_extensions": "jar war rar ear sar kar jdocbook jdocbook-style plugin",
    "btype": "maven",
    "checksum_type": 0,
    "btype_id": 2,
    "group_id": "org.glassfish",
    "buildroot_id": null,
    "id": 863130,
    "size": 85147
  }
]
```
diff --git a/tests/test_unit_tools.py b/tests/test_unit_tools.py
index 24ffe42..117de4d 100644
--- a/tests/test_unit_tools.py
+++ b/tests/test_unit_tools.py
@@ -180,23 +180,114 @@ def test_merge_run_cmd():
 def brew_call_ok(*args, **kwargs):
     if 'listArchives' in args[0]:
         return """
-        [
-          {
-            "build_id": "build_id",
-            "filename": "filename",
-            "group_id": "group_id",
-            "artifact_id": "artifact_id",
-            "version": "version",
-          }
-        ]""".encode("utf8")
+            [
+            {
+                "build_id": 179262,
+                "version": "20100527",
+                "type_name": "jar",
+                "artifact_id": "oauth",
+                "type_id": 1,
+                "checksum": "91c7c70579f95b7ddee95b2143a49b41",
+                "extra": null,
+                "filename": "oauth-20100527.jar",
+                "type_description": "Jar file",
+                "metadata_only": false,
+                "type_extensions": "jar war rar ear sar kar jdocbook jdocbook-style plugin",
+                "btype": "maven",
+                "checksum_type": 0,
+                "btype_id": 2,
+                "group_id": "net.oauth.core",
+                "buildroot_id": null,
+                "id": 105858,
+                "size": 44209
+            }
+            ]""".encode("utf8")
     if 'getBuild' in args[0]:
         return """
-        {
-          "package_name": "package_name",
-          "release": "release",
-          "state": 1
-        }
-        """.encode("utf8")
+            {
+            "package_name": "net.oauth.core-oauth",
+            "extra": null,
+            "creation_time": "2011-09-12 05:38:16.978647",
+            "completion_time": "2011-09-12 05:38:16.978647",
+            "package_id": 18782,
+            "id": 179262,
+            "build_id": 179262,
+            "epoch": null,
+            "source": null,
+            "state": 1,
+            "version": "20100527",
+            "completion_ts": 1315805896.97865,
+            "owner_id": 1515,
+            "owner_name": "hfnukal",
+            "nvr": "net.oauth.core-oauth-20100527-1",
+            "start_time": null,
+            "creation_event_id": 4204830,
+            "start_ts": null,
+            "volume_id": 8,
+            "creation_ts": 1315805896.97865,
+            "name": "net.oauth.core-oauth",
+            "task_id": null,
+            "volume_name": "rhel-7",
+            "release": "1"
+            }
+            """.encode("utf8")
+    return "".encode("utf8")
+
+
+def brew_call_ok_with_dot(*args, **kwargs):
+    if 'listArchives' in args[0]:
+        return """
+            [
+            {
+                "build_id": 410568,
+                "version": "1.0.4",
+                "type_name": "jar",
+                "artifact_id": "javax.json",
+                "type_id": 1,
+                "checksum": "569870f975deeeb6691fcb9bc02a9555",
+                "extra": null,
+                "filename": "javax.json-1.0.4.jar",
+                "type_description": "Jar file",
+                "metadata_only": false,
+                "type_extensions": "jar war rar ear sar kar jdocbook jdocbook-style plugin",
+                "btype": "maven",
+                "checksum_type": 0,
+                "btype_id": 2,
+                "group_id": "org.glassfish",
+                "buildroot_id": null,
+                "id": 863130,
+                "size": 85147
+            }
+            ]""".encode("utf8")
+    if 'getBuild' in args[0]:
+        return """
+            {
+            "package_name": "org.glassfish-javax.json",
+            "extra": null,
+            "creation_time": "2015-01-10 16:28:59.105878",
+            "completion_time": "2015-01-10 16:28:59.105878",
+            "package_id": 49642,
+            "id": 410568,
+            "build_id": 410568,
+            "epoch": null,
+            "source": null,
+            "state": 1,
+            "version": "1.0.4",
+            "completion_ts": 1420907339.10588,
+            "owner_id": 2679,
+            "owner_name": "pgallagh",
+            "nvr": "org.glassfish-javax.json-1.0.4-1",
+            "start_time": null,
+            "creation_event_id": 10432034,
+            "start_ts": null,
+            "volume_id": 8,
+            "creation_ts": 1420907339.10588,
+            "name": "org.glassfish-javax.json",
+            "task_id": null,
+            "volume_name": "rhel-7",
+            "release": "1"
+            }
+            """.encode("utf8")
     return "".encode("utf8")
 
 
@@ -226,8 +317,7 @@ def brew_call_removed(*args, **kwargs):
 def test_get_brew_url(mocker):
     mocker.patch('subprocess.check_output', side_effect=brew_call_ok)
     url = tools.get_brew_url('aa')
-    assert url == "http://download.devel.redhat.com/brewroot/packages/package_name/" + \
-        "version/release/maven/group_id/artifact_id/version/filename"
+    assert url == "http://download.devel.redhat.com/brewroot/packages/net.oauth.core-oauth/20100527/1/maven/net/oauth/core/oauth/20100527/oauth-20100527.jar"
 
 
 def test_get_brew_url_when_build_was_removed(mocker):
@@ -256,6 +346,13 @@ def test_get_brew_url_no_kerberos(mocker, caplog):
     assert "Brew authentication failed, please make sure you have a valid Kerberos ticket" in caplog.text
 
 
+# https://github.com/cekit/cekit/issues/531
+def test_get_brew_url_with_artifact_containing_dot(mocker):
+    mocker.patch('subprocess.check_output', side_effect=brew_call_ok_with_dot)
+    url = tools.get_brew_url('aa')
+    assert url == "http://download.devel.redhat.com/brewroot/packages/org.glassfish-javax.json/1.0.4/1/maven/org/glassfish/javax.json/1.0.4/javax.json-1.0.4.jar"
+
+
 @contextmanager
 def mocked_dependency_handler(mocker, data="ID=fedora\nNAME=somefedora\nVERSION=123"):
     dh = None

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio
apt-get update apt-get install -y gcc
3.6
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
-e git+https://github.com/cekit/cekit.git@9455ee0b01c68cddb5aaad1fa1dbe8a85f0fb1f3#egg=cekit
certifi==2021.5.30
click==8.0.4
colorlog==6.9.0
coverage==6.2
docopt==0.6.2
execnet==1.9.0
importlib-metadata==4.8.3
iniconfig==1.1.1
Jinja2==3.0.3
MarkupSafe==2.0.1
packaging==21.3
pluggy==1.0.0
py==1.11.0
pykwalify==1.8.0
pyparsing==3.1.4
pytest==7.0.1
pytest-asyncio==0.16.0
pytest-cov==4.0.0
pytest-mock==3.6.1
pytest-xdist==3.0.2
python-dateutil==2.9.0.post0
PyYAML==6.0.1
ruamel.yaml==0.18.3
ruamel.yaml.clib==0.2.8
six==1.17.0
tomli==1.2.3
typing_extensions==4.1.1
zipp==3.6.0

name: cekit
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - click==8.0.4
      - colorlog==6.9.0
      - coverage==6.2
      - docopt==0.6.2
      - execnet==1.9.0
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - jinja2==3.0.3
      - markupsafe==2.0.1
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pykwalify==1.8.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-asyncio==0.16.0
      - pytest-cov==4.0.0
      - pytest-mock==3.6.1
      - pytest-xdist==3.0.2
      - python-dateutil==2.9.0.post0
      - pyyaml==6.0.1
      - ruamel-yaml==0.18.3
      - ruamel-yaml-clib==0.2.8
      - six==1.17.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - zipp==3.6.0
prefix: /opt/conda/envs/cekit

tests/test_unit_tools.py::test_get_brew_url_with_artifact_containing_dot
tests/test_unit_tools.py::test_dependency_handler_handle_dependencies_with_library_only
tests/test_unit_tools.py::test_merging_description_image tests/test_unit_tools.py::test_merging_description_modules tests/test_unit_tools.py::test_merging_description_override tests/test_unit_tools.py::test_merging_plain_descriptors tests/test_unit_tools.py::test_merging_emdedded_descriptors tests/test_unit_tools.py::test_merging_plain_lists tests/test_unit_tools.py::test_merging_plain_list_of_list tests/test_unit_tools.py::test_merging_list_of_descriptors tests/test_unit_tools.py::test_merge_run_cmd tests/test_unit_tools.py::test_get_brew_url tests/test_unit_tools.py::test_get_brew_url_when_build_was_removed tests/test_unit_tools.py::test_get_brew_url_no_kerberos tests/test_unit_tools.py::test_dependency_handler_init_on_unknown_env_with_os_release_file tests/test_unit_tools.py::test_dependency_handler_on_rhel_7 tests/test_unit_tools.py::test_dependency_handler_on_rhel_8 tests/test_unit_tools.py::test_dependency_handler_init_on_known_env tests/test_unit_tools.py::test_dependency_handler_init_on_unknown_env_without_os_release_file tests/test_unit_tools.py::test_dependency_handler_handle_dependencies_doesnt_fail_without_deps tests/test_unit_tools.py::test_dependency_handler_handle_dependencies_with_executable_only tests/test_unit_tools.py::test_dependency_handler_handle_dependencies_with_executable_only_failed tests/test_unit_tools.py::test_dependency_handler_handle_dependencies_with_executable_and_package_on_known_platform tests/test_unit_tools.py::test_dependency_handler_handle_dependencies_with_platform_specific_package tests/test_unit_tools.py::test_dependency_handler_check_for_executable_with_executable_only tests/test_unit_tools.py::test_dependency_handler_check_for_executable_with_executable_fail tests/test_unit_tools.py::test_dependency_handler_check_for_executable_with_executable_fail_with_package
cekit/tools.py
cekit/tools.py