Skip to content

Commit c1ef883

Browse files
committed
Add comparator
1 parent cd1961b commit c1ef883

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

API.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5984,6 +5984,8 @@ new CIATriad(props: CIATriadProps)
59845984
| **Name** | **Description** |
59855985
| --- | --- |
59865986
| <code><a href="#cdktg.CIATriad.hasHigherAvailabilty">hasHigherAvailabilty</a></code> | *No description.* |
5987+
| <code><a href="#cdktg.CIATriad.hasHigherConfidentiality">hasHigherConfidentiality</a></code> | *No description.* |
5988+
| <code><a href="#cdktg.CIATriad.hasHigherIntegrity">hasHigherIntegrity</a></code> | *No description.* |
59875989

59885990
---
59895991

@@ -5999,6 +6001,30 @@ public hasHigherAvailabilty(availability: Availability): boolean
59996001

60006002
---
60016003

6004+
##### `hasHigherConfidentiality` <a name="hasHigherConfidentiality" id="cdktg.CIATriad.hasHigherConfidentiality"></a>
6005+
6006+
```typescript
6007+
public hasHigherConfidentiality(confidentiality: Confidentiality): boolean
6008+
```
6009+
6010+
###### `confidentiality`<sup>Required</sup> <a name="confidentiality" id="cdktg.CIATriad.hasHigherConfidentiality.parameter.confidentiality"></a>
6011+
6012+
- *Type:* <a href="#cdktg.Confidentiality">Confidentiality</a>
6013+
6014+
---
6015+
6016+
##### `hasHigherIntegrity` <a name="hasHigherIntegrity" id="cdktg.CIATriad.hasHigherIntegrity"></a>
6017+
6018+
```typescript
6019+
public hasHigherIntegrity(integrity: Integrity): boolean
6020+
```
6021+
6022+
###### `integrity`<sup>Required</sup> <a name="integrity" id="cdktg.CIATriad.hasHigherIntegrity.parameter.integrity"></a>
6023+
6024+
- *Type:* <a href="#cdktg.Integrity">Integrity</a>
6025+
6026+
---
6027+
60026028

60036029
#### Properties <a name="Properties" id="Properties"></a>
60046030

src/cia-triad.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,36 @@ export class CIATriad {
1818
this.justification = props.justification;
1919
}
2020

21+
public hasHigherConfidentiality(confidentiality: Confidentiality): boolean {
22+
const confidentialityRank: Record<Confidentiality, number> = {
23+
[Confidentiality.PUBLIC]: 0,
24+
[Confidentiality.INTERNAL]: 1,
25+
[Confidentiality.RESTRICTED]: 2,
26+
[Confidentiality.CONFIDENTIAL]: 3,
27+
[Confidentiality.STRICTLY_CONFIDENTIAL]: 4,
28+
};
29+
30+
const thisRank = confidentialityRank[this.confidentiality];
31+
const thatRank = confidentialityRank[confidentiality];
32+
33+
return thisRank > thatRank;
34+
}
35+
36+
public hasHigherIntegrity(integrity: Integrity): boolean {
37+
const integrityRank: Record<Integrity, number> = {
38+
[Integrity.ARCHIVE]: 0,
39+
[Integrity.OPERATIONAL]: 1,
40+
[Integrity.IMPORTANT]: 2,
41+
[Integrity.CRITICAL]: 3,
42+
[Integrity.MISSION_CRITICAL]: 4,
43+
};
44+
45+
const thisRank = integrityRank[this.integrity];
46+
const thatRank = integrityRank[integrity];
47+
48+
return thisRank > thatRank;
49+
}
50+
2151
public hasHigherAvailabilty(availability: Availability): boolean {
2252
const availabilityRank: Record<Availability, number> = {
2353
[Availability.ARCHIVE]: 0,

test/cia-triad.test.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { Availability, CIATriad, Confidentiality, Integrity } from "../src";
2+
3+
test("hasHigherConfidentiality", () => {
4+
const ciaTriad = new CIATriad({
5+
confidentiality: Confidentiality.INTERNAL,
6+
availability: Availability.CRITICAL,
7+
integrity: Integrity.IMPORTANT,
8+
});
9+
10+
expect(ciaTriad.hasHigherConfidentiality(Confidentiality.PUBLIC)).toBe(true);
11+
expect(ciaTriad.hasHigherConfidentiality(Confidentiality.INTERNAL)).toBe(
12+
false
13+
);
14+
expect(
15+
ciaTriad.hasHigherConfidentiality(Confidentiality.STRICTLY_CONFIDENTIAL)
16+
).toBe(false);
17+
});
18+
19+
test("hasHigherIntegrity", () => {
20+
const ciaTriad = new CIATriad({
21+
confidentiality: Confidentiality.INTERNAL,
22+
availability: Availability.CRITICAL,
23+
integrity: Integrity.IMPORTANT,
24+
});
25+
26+
expect(ciaTriad.hasHigherIntegrity(Integrity.ARCHIVE)).toBe(true);
27+
expect(ciaTriad.hasHigherIntegrity(Integrity.IMPORTANT)).toBe(false);
28+
expect(ciaTriad.hasHigherIntegrity(Integrity.MISSION_CRITICAL)).toBe(false);
29+
});
30+
31+
test("hasHigherAvailabilty", () => {
32+
const ciaTriad = new CIATriad({
33+
confidentiality: Confidentiality.INTERNAL,
34+
availability: Availability.CRITICAL,
35+
integrity: Integrity.IMPORTANT,
36+
});
37+
38+
expect(ciaTriad.hasHigherAvailabilty(Availability.OPERATIONAL)).toBe(true);
39+
expect(ciaTriad.hasHigherAvailabilty(Availability.CRITICAL)).toBe(false);
40+
expect(ciaTriad.hasHigherAvailabilty(Availability.MISSION_CRITICAL)).toBe(
41+
false
42+
);
43+
});

0 commit comments

Comments
 (0)