• 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

83.87
/src/app/secrets.rs
1
use std::collections::BTreeMap;
2

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

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

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

17
impl From<Secret> for KubeSecret {
18
  fn from(secret: Secret) -> Self {
2✔
19
    KubeSecret {
2✔
20
      name: secret.metadata.name.clone().unwrap_or_default(),
2✔
21
      namespace: secret.metadata.namespace.clone().unwrap_or_default(),
2✔
22
      type_: secret.type_.clone().unwrap_or_default(),
2✔
23
      age: utils::to_age(secret.metadata.creation_timestamp.as_ref(), Utc::now()),
2✔
24
      data: secret.data.clone().unwrap_or_default(),
2✔
25
      k8s_obj: utils::sanitize_obj(secret),
2✔
26
    }
27
  }
2✔
28
}
29
impl KubeResource<Secret> for KubeSecret {
30
  fn get_k8s_obj(&self) -> &Secret {
×
31
    &self.k8s_obj
32
  }
×
33
}
34

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

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

42
  #[test]
43
  fn test_config_map_from_api() {
2✔
44
    let (secrets, secret_list): (Vec<KubeSecret>, Vec<_>) = convert_resource_from_file("secrets");
1✔
45

46
    assert_eq!(secrets.len(), 2);
1!
47
    assert_eq!(
1✔
48
      secrets[0],
1✔
49
      KubeSecret {
1✔
50
        name: "default-token-rxd8v".into(),
1✔
51
        namespace: "kube-public".into(),
1✔
52
        type_: "kubernetes.io/service-account-token".into(),
1✔
53
        data: map_string_object! {
4✔
54
            "ca.crt" => ByteString("-----BEGIN CERTIFICATE-----\nMIIBeDCCAR2gAwIBAgIBADAKBggqhkjOPQQDAjAjMSEwHwYDVQQDDBhrM3Mtc2Vy\ndmVyLWNhQDE2MjU0Nzc3NTkwHhcNMjEwNzA1MDkzNTU5WhcNMzEwNzAzMDkzNTU5\nWjAjMSEwHwYDVQQDDBhrM3Mtc2VydmVyLWNhQDE2MjU0Nzc3NTkwWTATBgcqhkjO\nPQIBBggqhkjOPQMBBwNCAARI13csf0c5dEbU/0cnZipIrttsmn5UJFUwdLy8ONw0\nFUoK57PeVI6gmqNtnoycpja9n/SuJA+lWqqPNogbiQO7o0IwQDAOBgNVHQ8BAf8E\nBAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUQJAgrpGYs7lMKt9PWrjh\nyRuhaKwwCgYIKoZIzj0EAwIDSQAwRgIhAIS7h2bW4seeELupl6JhXWgicJK15Jbl\nAAdjs5mfHccqAiEAmaVLQt2V50C8ZLOsR5Lf3FlFH7qpFt3RMto0peGFqB4=\n-----END CERTIFICATE-----\n".as_bytes().into()),
1✔
55
            "namespace" => ByteString("kube-public".as_bytes().into()),
1✔
56
            "token" => ByteString("eyJhbGciOiJSUzI1NiIsImtpZCI6Imp0U29OeTE4V0FrdC1FUDU5N05RaUdBQVZkdHdZT1k3dW5rbGVLWDhjME0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXB1YmxpYyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXJ4ZDh2Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJkNGJjYjVkOC1jYjU1LTRiYzEtYTdmZC0xNzNlOTIwOTc2MDIiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1wdWJsaWM6ZGVmYXVsdCJ9.Hmq3BhdapUIds2MKpTNtnl_yq5jTYpodeJ-MJD6IpdsWLUnhvktLuDy-yfDgMo_55XOOSp4MaTqbt07unh_yGrGacmd8o7PzMTiPDkONnGjN3XJUB2jg5ww9XQ0C5C_wcOzgOO4nrPMisYDsDGc_DNzZf5FwBM6z-x93OLq2URVfv-vv4ceC05d-1TSDLEyT51LqvJ9u0M7qinYbzJsizdW8UM6mc56Ma52gSELC5DljZVugXL9Hoj7nD6ZAUHdjrxdrqk0mVKNeZQKEmbLJXsGGg3c-fv6EO462AvlQvE0gXa-TrwIUvesAxG4fT6D1c0O17n0RNp76meAfCGOu0w".as_bytes().into()),
1✔
57
        },
58
        age: utils::to_age(Some(&get_time("2021-07-05T09:36:17Z")), Utc::now()),
1✔
59
        k8s_obj: secret_list[0].clone()
1!
60
      }
61
    );
62
    assert_eq!(
1✔
63
      secrets[1],
1✔
64
      KubeSecret {
1✔
65
        name: "default-token-rrxdm".into(),
1✔
66
        namespace: "default".into(),
1✔
67
        type_: "kubernetes.io/service-account-token".into(),
1✔
68
        data: map_string_object! {
4✔
69
            "ca.crt" => ByteString("-----BEGIN CERTIFICATE-----\nMIIBeDCCAR2gAwIBAgIBADAKBggqhkjOPQQDAjAjMSEwHwYDVQQDDBhrM3Mtc2Vy\ndmVyLWNhQDE2MjU0Nzc3NTkwHhcNMjEwNzA1MDkzNTU5WhcNMzEwNzAzMDkzNTU5\nWjAjMSEwHwYDVQQDDBhrM3Mtc2VydmVyLWNhQDE2MjU0Nzc3NTkwWTATBgcqhkjO\nPQIBBggqhkjOPQMBBwNCAARI13csf0c5dEbU/0cnZipIrttsmn5UJFUwdLy8ONw0\nFUoK57PeVI6gmqNtnoycpja9n/SuJA+lWqqPNogbiQO7o0IwQDAOBgNVHQ8BAf8E\nBAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUQJAgrpGYs7lMKt9PWrjh\nyRuhaKwwCgYIKoZIzj0EAwIDSQAwRgIhAIS7h2bW4seeELupl6JhXWgicJK15Jbl\nAAdjs5mfHccqAiEAmaVLQt2V50C8ZLOsR5Lf3FlFH7qpFt3RMto0peGFqB4=\n-----END CERTIFICATE-----\n".as_bytes().into()),
1✔
70
            "namespace" => ByteString("default".as_bytes().into()),
1✔
71
            "token" => ByteString("eyJhbGciOiJSUzI1NiIsImtpZCI6Imp0U29OeTE4V0FrdC1FUDU5N05RaUdBQVZkdHdZT1k3dW5rbGVLWDhjME0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRlZmF1bHQtdG9rZW4tcnJ4ZG0iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVmYXVsdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjFmZDFiOTc1LTlmZTEtNDdiOC1iNzE3LTIwZmY5ODI5OTBlMyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmRlZmF1bHQifQ.6Tccp-EaoyVcP6y3VaJLGSDpYtYdXBdwhO26G7FxdIksRrRPAi6CgQw52FO8-mvJP3L3GRpbs34yzMBYmoYeVwjZ3UFL51I8exL332g9PbEs85Fafq8WkhNylnsYnZk0nJ81Wj-53_AkRl0Bt0f4Q4tU9EJUOl2uRjZWYyQmB91M_8vzCNSKNjUMwjRabPVXJzg8sY8JR0xuY7dZlc5h7gNP7HJFX0AyqKuFTqsG8Crb3tixC0bXhyXa_dM04SjXz_OCfLC-vZBOzQ5E1lPBzm3nhuZIQrr_eZaJJYgw7CieYe2qq2QmwXTve-0_n3LgUNDUcKMp-BUQbm6zxXJqBA".as_bytes().into()),
1✔
72
        },
73
        age: utils::to_age(Some(&get_time("2021-07-05T09:36:17Z")), Utc::now()),
1✔
74
        k8s_obj: secret_list[1].clone()
1!
75
      }
76
    );
77
  }
2✔
78
}
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