Skip to content

Commit 062603f

Browse files
committed
tests: test get_trusted_execution_cluster
Signed-off-by: Jakob Naucke <jnaucke@redhat.com>
1 parent a91805c commit 062603f

9 files changed

Lines changed: 96 additions & 6 deletions

File tree

.github/workflows/rust.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
- name: "cargo build"
4747
run: cargo build --all-targets
4848
- name: "cargo test"
49-
run: cargo test --bins
49+
run: cargo test --bins --lib
5050
tests-release-stable:
5151
name: "Tests (release), stable toolchain"
5252
runs-on: "ubuntu-24.04"
@@ -70,7 +70,7 @@ jobs:
7070
- name: "cargo build (release)"
7171
run: cargo build --lib --release
7272
- name: "cargo test (release)"
73-
run: cargo test --bins --release
73+
run: cargo test --bins --lib --release
7474
tests-release-msrv:
7575
name: "Tests (release), minimum supported toolchain"
7676
runs-on: "ubuntu-24.04"
@@ -100,7 +100,7 @@ jobs:
100100
- name: "cargo build (release)"
101101
run: cargo build --lib --release
102102
- name: "cargo test (release)"
103-
run: cargo test --bins --release
103+
run: cargo test --bins --lib --release
104104
tests-other-channels:
105105
name: "Tests, unstable toolchain"
106106
runs-on: "ubuntu-24.04"
@@ -128,4 +128,4 @@ jobs:
128128
- name: "cargo build"
129129
run: cargo build --lib
130130
- name: "cargo test"
131-
run: cargo test --bins
131+
run: cargo test --bins --lib

Cargo.lock

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Containerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ COPY operator/src/lib.rs operator/src/
1818
# Set only required crates as members to minimize rebuilds upon changes.
1919
RUN sed -i 's/members = .*/members = ["lib", "operator"]/' Cargo.toml && \
2020
sed -i '/\[dev-dependencies\]/,$d' operator/Cargo.toml && \
21+
sed -i '/trusted-cluster-operator-test-utils/d' lib/Cargo.toml && \
2122
make crds-rs
2223

2324
# In debug builds, build dependencies to avoid full rebuild.

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,10 +204,10 @@ equal-conditions:
204204
lint: fmt-check clippy vet equal-conditions
205205

206206
test: crds-rs
207-
cargo test --workspace --bins
207+
cargo test --workspace --bins --lib
208208

209209
test-release: crds-rs
210-
cargo test --workspace --bins --release
210+
cargo test --workspace --bins --lib --release
211211

212212
integration-tests: generate trusted-cluster-gen crds-rs
213213
RUST_LOG=info REGISTRY=$(REGISTRY) TAG=$(TAG) \

attestation-key-register/Containerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ COPY attestation-key-register/src/lib.rs attestation-key-register/src/
1515

1616
# Set only required crates as members to minimize rebuilds upon changes.
1717
RUN sed -i 's/members =.*/members = ["lib", "attestation-key-register"]/' Cargo.toml && \
18+
sed -i '/trusted-cluster-operator-test-utils/d' lib/Cargo.toml && \
1819
make crds-rs
1920

2021
# In debug builds, build dependencies to avoid full rebuild.

compute-pcrs/Containerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ COPY compute-pcrs/src/lib.rs compute-pcrs/src/
1616

1717
# Set only required crates as members to minimize rebuilds upon changes.
1818
RUN sed -i 's/members =.*/members = ["compute-pcrs", "lib"]/' Cargo.toml && \
19+
sed -i '/trusted-cluster-operator-test-utils/d' lib/Cargo.toml && \
1920
git clone --depth 1 https://github.com/trusted-execution-clusters/reference-values && \
2021
make crds-rs
2122

lib/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,6 @@ serde_json.workspace = true
2121
[dev-dependencies]
2222
# Only a generate dependency, not a Rust dependency. Included here for auto-updates.
2323
kopium = "0.23.0"
24+
http.workspace = true
25+
tokio.workspace = true
26+
trusted-cluster-operator-test-utils = { path = "../test_utils" }

lib/src/lib.rs

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,83 @@ pub async fn get_trusted_execution_cluster(client: Client) -> Result<TrustedExec
150150
);
151151
cluster.and_then(|c| c.ok_or(err))
152152
}
153+
154+
#[cfg(test)]
155+
mod tests {
156+
use super::*;
157+
use http::StatusCode;
158+
use kube::api::ObjectList;
159+
use trusted_cluster_operator_test_utils::mock_client::*;
160+
161+
#[tokio::test]
162+
async fn test_get_some_trusted_execution_cluster() {
163+
let clos = async |_, _| {
164+
let object_list = ObjectList {
165+
items: vec![dummy_cluster()],
166+
types: Default::default(),
167+
metadata: Default::default(),
168+
};
169+
Ok(serde_json::to_string(&object_list).unwrap())
170+
};
171+
count_check!(1, clos, |client| {
172+
let res = get_opt_trusted_execution_cluster(client).await;
173+
assert!(res.unwrap().is_some());
174+
});
175+
}
176+
177+
#[tokio::test]
178+
async fn test_get_none_trusted_execution_cluster() {
179+
let clos = async |_, _| {
180+
let object_list = ObjectList::<TrustedExecutionCluster> {
181+
items: vec![],
182+
types: Default::default(),
183+
metadata: Default::default(),
184+
};
185+
Ok(serde_json::to_string(&object_list).unwrap())
186+
};
187+
count_check!(1, clos, |client| {
188+
let res = get_opt_trusted_execution_cluster(client).await;
189+
assert!(res.unwrap().is_none());
190+
});
191+
}
192+
193+
#[tokio::test]
194+
async fn test_non_unique_trusted_execution_cluster() {
195+
let clos = async |_, _| {
196+
let object_list = ObjectList {
197+
items: vec![dummy_cluster(), dummy_cluster()],
198+
types: Default::default(),
199+
metadata: Default::default(),
200+
};
201+
Ok(serde_json::to_string(&object_list).unwrap())
202+
};
203+
count_check!(1, clos, |client| {
204+
let err = get_opt_trusted_execution_cluster(client).await.unwrap_err();
205+
assert!(err.to_string().contains("More than one"));
206+
});
207+
}
208+
209+
#[tokio::test]
210+
async fn test_get_opt_trusted_execution_cluster_error() {
211+
let clos = async |_, _| Err(StatusCode::INTERNAL_SERVER_ERROR);
212+
count_check!(1, clos, |client| {
213+
assert!(get_opt_trusted_execution_cluster(client).await.is_err());
214+
});
215+
}
216+
217+
#[tokio::test]
218+
async fn test_get_no_trusted_execution_cluster() {
219+
let clos = async |_, _| {
220+
let object_list = ObjectList::<TrustedExecutionCluster> {
221+
items: vec![],
222+
types: Default::default(),
223+
metadata: Default::default(),
224+
};
225+
Ok(serde_json::to_string(&object_list).unwrap())
226+
};
227+
count_check!(1, clos, |client| {
228+
let err = get_trusted_execution_cluster(client).await.unwrap_err();
229+
assert!(err.to_string().contains("No TrustedExecutionCluster found"));
230+
});
231+
}
232+
}

register-server/Containerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ COPY register-server/src/lib.rs register-server/src/
1616
# Set only required crates as members to minimize rebuilds upon changes.
1717
RUN sed -i 's/members =.*/members = ["lib", "register-server"]/' Cargo.toml && \
1818
sed -i '/\[dev-dependencies\]/,$d' register-server/Cargo.toml && \
19+
sed -i '/trusted-cluster-operator-test-utils/d' lib/Cargo.toml && \
1920
make crds-rs
2021

2122
# In debug builds, build dependencies to avoid full rebuild.

0 commit comments

Comments
 (0)