]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/smb: add unit tests for share login_control attribute
authorJohn Mulligan <jmulligan@redhat.com>
Mon, 6 May 2024 23:20:45 +0000 (19:20 -0400)
committerJohn Mulligan <jmulligan@redhat.com>
Wed, 19 Jun 2024 13:29:42 +0000 (09:29 -0400)
Signed-off-by: John Mulligan <jmulligan@redhat.com>
src/pybind/mgr/smb/tests/test_resources.py

index 82446876a7c71d9dd4b5432dd2d45c1363ebefb7..1324fae861d3d634d63ed670b4189d2de1e42914 100644 (file)
@@ -447,6 +447,58 @@ user_group_settings:
             "exc_type": ValueError,
             "error": "reference value must be",
         },
+        # missing name field in login_control
+        {
+            "yaml": """
+resource_type: ceph.smb.share
+cluster_id: floop
+share_id: ploof
+cephfs:
+  volume: abc
+  path: /share1
+  subvolume: foo
+login_control:
+  - nmae: frink
+    access: r
+""",
+            "exc_type": ValueError,
+            "error": "field: name",
+        },
+        # bad value in access field in login_control
+        {
+            "yaml": """
+resource_type: ceph.smb.share
+cluster_id: floop
+share_id: ploof
+cephfs:
+  volume: abc
+  path: /share1
+  subvolume: foo
+login_control:
+  - name: frink
+    access: rwx
+""",
+            "exc_type": ValueError,
+            "error": "rwx",
+        },
+        # bad value in category field in login_control
+        {
+            "yaml": """
+resource_type: ceph.smb.share
+cluster_id: floop
+share_id: ploof
+cephfs:
+  volume: abc
+  path: /share1
+  subvolume: foo
+login_control:
+  - category: admins
+    name: frink
+    access: admin
+""",
+            "exc_type": ValueError,
+            "error": "admins",
+        },
     ],
 )
 def test_load_error(params):
@@ -519,3 +571,74 @@ placement:
     assert sd
     assert 'placement' in sd
     assert sd['placement'] == {'count': 3, 'label': 'ilovesmb'}
+
+
+def test_share_with_login_control_1():
+    import yaml
+
+    yaml_str = """
+resource_type: ceph.smb.share
+cluster_id: rhumba
+share_id: shake
+name: Shake It
+cephfs:
+  volume: abc
+  path: /shake1
+  subvolume: foo
+login_control:
+  - name: bob
+    access: read
+"""
+    data = yaml.safe_load_all(yaml_str)
+    loaded = smb.resources.load(data)
+    assert loaded
+    share = loaded[0]
+    assert share.login_control
+    assert len(share.login_control) == 1
+    assert share.login_control[0].name == 'bob'
+    assert share.login_control[0].category == enums.LoginCategory.USER
+    assert share.login_control[0].access == enums.LoginAccess.READ_ONLY
+
+
+def test_share_with_login_control_2():
+    import yaml
+
+    yaml_str = """
+resource_type: ceph.smb.share
+cluster_id: rhumba
+share_id: shake
+name: Shake It
+cephfs:
+  volume: abc
+  path: /shake1
+  subvolume: foo
+login_control:
+  - name: alice
+    access: r
+  - name: itstaff
+    category: group
+    access: rw
+  - name: caldor
+    category: user
+    access: admin
+  - name: delbard
+    access: none
+"""
+    data = yaml.safe_load_all(yaml_str)
+    loaded = smb.resources.load(data)
+    assert loaded
+    share = loaded[0]
+    assert share.login_control
+    assert len(share.login_control) == 4
+    assert share.login_control[0].name == 'alice'
+    assert share.login_control[0].category == enums.LoginCategory.USER
+    assert share.login_control[0].access == enums.LoginAccess.READ_ONLY
+    assert share.login_control[1].name == 'itstaff'
+    assert share.login_control[1].category == enums.LoginCategory.GROUP
+    assert share.login_control[1].access == enums.LoginAccess.READ_WRITE
+    assert share.login_control[2].name == 'caldor'
+    assert share.login_control[2].category == enums.LoginCategory.USER
+    assert share.login_control[2].access == enums.LoginAccess.ADMIN
+    assert share.login_control[3].name == 'delbard'
+    assert share.login_control[3].category == enums.LoginCategory.USER
+    assert share.login_control[3].access == enums.LoginAccess.NONE