• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kdash-rs / kdash / 3750513782

pending completion
3750513782

push

github

Deepu
fix tests

982 of 4441 branches covered (22.11%)

Branch coverage included in aggregate %.

2731 of 4724 relevant lines covered (57.81%)

8.14 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

86.27
/src/app/configmaps.rs
1
use std::collections::BTreeMap;
2

3
use k8s_openapi::{api::core::v1::ConfigMap, chrono::Utc};
4

5
use super::{models::KubeResource, utils};
6

7
#[derive(Clone, PartialEq, Debug)]
12✔
8
pub struct KubeConfigMap {
9
  pub name: String,
6✔
10
  pub namespace: String,
6!
11
  pub data: BTreeMap<String, String>,
6!
12
  pub age: String,
6!
13
  k8s_obj: ConfigMap,
6!
14
}
15

16
impl From<ConfigMap> for KubeConfigMap {
17
  fn from(cm: ConfigMap) -> Self {
6✔
18
    Self {
6✔
19
      name: cm.metadata.name.clone().unwrap_or_default(),
6✔
20
      namespace: cm.metadata.namespace.clone().unwrap_or_default(),
6✔
21
      age: utils::to_age(cm.metadata.creation_timestamp.as_ref(), Utc::now()),
6✔
22
      data: cm.data.clone().unwrap_or_default(),
6✔
23
      k8s_obj: utils::sanitize_obj(cm),
6✔
24
    }
25
  }
6✔
26
}
27

28
impl KubeResource<ConfigMap> for KubeConfigMap {
29
  fn get_k8s_obj(&self) -> &ConfigMap {
×
30
    &self.k8s_obj
×
31
  }
×
32
}
33

34
#[cfg(test)]
35
mod tests {
36
  use k8s_openapi::chrono::Utc;
37

38
  use super::*;
39
  use crate::{app::test_utils::*, map_string_object};
40

41
  #[test]
42
  fn test_config_map_from_api() {
2✔
43
    let (cms, cm_list): (Vec<KubeConfigMap>, Vec<_>) = convert_resource_from_file("cm");
1✔
44

45
    assert_eq!(cms.len(), 6);
1!
46
    assert_eq!(
1✔
47
      cms[0],
1✔
48
      KubeConfigMap {
1✔
49
        name: "extension-apiserver-authentication".into(),
1✔
50
        namespace: "kube-system".into(),
1✔
51
        data: map_string_object! {
7✔
52
            "client-ca-file" => "-----BEGIN CERTIFICATE-----\nMIIBdjCCAR2gAwIBAgIBADAKBggqhkjOPQQDAjAjMSEwHwYDVQQDDBhrM3MtY2xp\nZW50LWNhQDE2MjA2ODMyNzkwHhcNMjEwNTEwMjE0NzU5WhcNMzEwNTA4MjE0NzU5\nWjAjMSEwHwYDVQQDDBhrM3MtY2xpZW50LWNhQDE2MjA2ODMyNzkwWTATBgcqhkjO\nPQIBBggqhkjOPQMBBwNCAATQnQ4/3PQe/VdAfIjWoaDxN2vX7hMpHr5uOTW8V+GR\nzRxwLHNB2h4b3bbfDwkCjXg0HJWv4KQB3KyQ1GBND6ZAo0IwQDAOBgNVHQ8BAf8E\nBAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUy/tsudG9dX/Y1pa+jfnM\nT3yXZfkwCgYIKoZIzj0EAwIDRwAwRAIgdTf7esWYeszzj3riNNqYytXpTsZK3prb\ngGu/jkVqvaICIDQCAM/1NyHHgpdtntOgeDVEeWNomHHb8TZmXbDcx+XX\n-----END CERTIFICATE-----\n".to_string(),
1✔
53
            "requestheader-allowed-names" => "[\"system:auth-proxy\"]".to_string(),
1✔
54
            "requestheader-client-ca-file"=> "-----BEGIN CERTIFICATE-----\nMIIBhzCCAS2gAwIBAgIBADAKBggqhkjOPQQDAjArMSkwJwYDVQQDDCBrM3MtcmVx\ndWVzdC1oZWFkZXItY2FAMTYyMDY4MzI3OTAeFw0yMTA1MTAyMTQ3NTlaFw0zMTA1\nMDgyMTQ3NTlaMCsxKTAnBgNVBAMMIGszcy1yZXF1ZXN0LWhlYWRlci1jYUAxNjIw\nNjgzMjc5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJTPbt57KGef9LeZlR2DA\njYUaMdhXM8xnwQW9cIiH5dlJIQaEgOVEEiHYx0EmhSj9nhPxTTBRwiBrTVMembXR\nK6NCMEAwDgYDVR0PAQH/BAQDAgKkMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\nFPmlBLfAmlxF5H4snC7wB8Zd1iDzMAoGCCqGSM49BAMCA0gAMEUCIQCKwv/4dJH9\nJqtnv35balKAtG+bJyIVop73W18t9ZaatAIgU3h5i3IQp+cgVjQhi4ZvRXUA6c3l\nDSZ1C2gMf1ONFJQ=\n-----END CERTIFICATE-----\n".to_string(),
1✔
55
            "requestheader-extra-headers-prefix"=> "[\"X-Remote-Extra-\"]".to_string(),
1✔
56
            "requestheader-group-headers"=> "[\"X-Remote-Group\"]".to_string(),
1✔
57
            "requestheader-username-headers" => "[\"X-Remote-User\"]".to_string()
1✔
58
        },
59
        age: utils::to_age(Some(&get_time("2021-05-10T21:48:02Z")), Utc::now()),
1✔
60
        k8s_obj: cm_list[0].clone()
1!
61
      }
62
    );
63
    assert_eq!(
1✔
64
      cms[1],
1✔
65
      KubeConfigMap {
1✔
66
        name: "cluster-dns".into(),
1✔
67
        namespace: "kube-system".into(),
1✔
68
        data: map_string_object! {"clusterDNS" => "10.43.0.10".to_string(), "clusterDomain" => "cluster.local".to_string()},
1✔
69
        age: utils::to_age(Some(&get_time("2021-05-10T21:48:06Z")), Utc::now()),
1✔
70
        k8s_obj: cm_list[1].clone()
1!
71
      }
72
    );
73
    assert_eq!(
1✔
74
      cms[2],
1✔
75
      KubeConfigMap {
1✔
76
        name: "local-path-config".into(),
1✔
77
        namespace: "kube-system".into(),
1✔
78
        data: map_string_object! {
5✔
79
        "config.json"=> "{\n  \"nodePathMap\":[\n  {\n    \"node\":\"DEFAULT_PATH_FOR_NON_LISTED_NODES\",\n    \"paths\":[\"/var/lib/rancher/k3s/storage\"]\n  }\n  ]\n}".to_string(),
1✔
80
        "helperPod.yaml"=> "apiVersion: v1\nkind: Pod\nmetadata:\n  name: helper-pod\nspec:\n  containers:\n  - name: helper-pod\n    image: rancher/library-busybox:1.32.1".to_string(),
1✔
81
        "setup"=> "#!/bin/sh\nwhile getopts \"m:s:p:\" opt\ndo\n    case $opt in\n        p)\n        absolutePath=$OPTARG\n        ;;\n        s)\n        sizeInBytes=$OPTARG\n        ;;\n        m)\n        volMode=$OPTARG\n        ;;\n    esac\ndone\nmkdir -m 0777 -p ${absolutePath}".to_string(),
1✔
82
        "teardown"=> "#!/bin/sh\nwhile getopts \"m:s:p:\" opt\ndo\n    case $opt in\n        p)\n        absolutePath=$OPTARG\n        ;;\n        s)\n        sizeInBytes=$OPTARG\n        ;;\n        m)\n        volMode=$OPTARG\n        ;;\n    esac\ndone\nrm -rf ${absolutePath}".to_string()
1✔
83
        },
84
        age: utils::to_age(Some(&get_time("2021-05-10T21:48:06Z")), Utc::now()),
1✔
85
        k8s_obj: cm_list[2].clone()
1!
86
      }
87
    );
88
    assert_eq!(
1✔
89
      cms[3],
1✔
90
      KubeConfigMap {
1✔
91
        name: "chart-content-traefik".into(),
1✔
92
        namespace: "kube-system".into(),
1✔
93
        data: map_string_object! {},
1✔
94
        age: utils::to_age(Some(&get_time("2021-05-10T21:48:06Z")), Utc::now()),
1✔
95
        k8s_obj: cm_list[3].clone()
1!
96
      }
97
    );
98
    assert_eq!(
1✔
99
      cms[4],
1✔
100
      KubeConfigMap {
1✔
101
        name: "kube-root-ca.crt".into(),
1✔
102
        namespace: "default".into(),
1✔
103
        data: map_string_object! {
2✔
104
            "ca.crt"=> "-----BEGIN CERTIFICATE-----\nMIIBeDCCAR2gAwIBAgIBADAKBggqhkjOPQQDAjAjMSEwHwYDVQQDDBhrM3Mtc2Vy\ndmVyLWNhQDE2MjA2ODMyNzkwHhcNMjEwNTEwMjE0NzU5WhcNMzEwNTA4MjE0NzU5\nWjAjMSEwHwYDVQQDDBhrM3Mtc2VydmVyLWNhQDE2MjA2ODMyNzkwWTATBgcqhkjO\nPQIBBggqhkjOPQMBBwNCAAR5RMn6pUUsQDIRhe0lEtKcBnXfOVhby2gu6lrOtVE6\nYMvSHyUKsOpye4vv5qxJG851ujHdAgchXAAI4WqyEiU5o0IwQDAOBgNVHQ8BAf8E\nBAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5KVzmsOvs4GYd9M4lW4q\nwZfQ2UwwCgYIKoZIzj0EAwIDSQAwRgIhAOqpzcIevpC2nUO9yes9VJmF3ij3s7B2\n4rJrJp9ZXJGwAiEA325UlEKQGC/JuVD1HzhgLLQTgfaXB7E4p/JShnIrrfk=\n-----END CERTIFICATE-----\n".to_string()
1✔
105
        },
106
        age: utils::to_age(Some(&get_time("2021-05-10T21:48:19Z")), Utc::now()),
1✔
107
        k8s_obj: cm_list[4].clone()
1!
108
      }
109
    );
110
    assert_eq!(
1✔
111
      cms[5],
1✔
112
      KubeConfigMap {
1✔
113
        name: "traefik-test".into(),
1✔
114
        namespace: "kube-system".into(),
1✔
115
        data: map_string_object! {"run.sh"=> "@test \"Test Access\" {\n  curl -D - http://traefik/\n}".to_string()},
1✔
116
        age: utils::to_age(Some(&get_time("2021-05-10T21:48:35Z")), Utc::now()),
1✔
117
        k8s_obj: cm_list[5].clone()
1!
118
      }
119
    );
120
  }
2✔
121
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc