Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fideslang 3.0 upgrades (language changes only, no pydantic updates!) #4502

Merged
merged 10 commits into from
Dec 15, 2023
811 changes: 1 addition & 810 deletions .fides/db_dataset.yml

Large diffs are not rendered by default.

3 changes: 1 addition & 2 deletions .fides/policies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,4 @@ policy:
data_subjects:
matches: ANY
values:
- customer
data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
- customer
4 changes: 0 additions & 4 deletions .fides/redis_dataset.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@ dataset:
fields:
- name: EN_ACCESS_GRAPH__<privacy_request_id>
description: This graph is summarized and sent to Fideslog to create high level insight into how graphs change between retries to inform future features.
data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
fidesops_meta:
data_type: object # Stores an encrypted representation of the fidesops graph that executes the privacy requests.
fields:
- name: <dataset_name>:<collection_name> # The current collection
data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
fidesops_meta:
data_type: object
fields:
Expand All @@ -22,12 +20,10 @@ dataset:
data_type: string[] # List of edges between the upstream collection and the current collection
- name: EN_DATA_USE_MAP__<privacy_request_id>
description: This map of traversed `Collection`s to associated `DataUse`s is stored and retrieved to be included in access request output packages.
data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
fidesops_meta:
data_type: object # Dict mapping `Collection` addresses -> set of associated `DataUse`s
fields:
- name: <dataset_name>:<collection_name> # `Collection` address
data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
data_categories: [system.operations]
fidesops_meta:
data_type: string[] # set of `DataUse`s associated with this `Collection`
Expand Down
24 changes: 0 additions & 24 deletions .fides/systems.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,6 @@ system:
description: Privacy annotations as code.
system_type: Service
# RoPA Info - these need to exist to pass an audit
data_responsibility_title: Controller
data_protection_impact_assessment:
is_required: false
progress: null
link: null
joint_controller: null
third_country_transfers: null
administrating_department: Not defined
# Privacy Declarations
privacy_declarations:
Expand All @@ -21,7 +14,6 @@ system:
- system.operations
- user.contact
data_use: functional.service.improve
data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
data_subjects:
- anonymous_user
dataset_references:
Expand All @@ -34,13 +26,6 @@ system:
description: Privacy request fufillment.
system_type: Application
# RoPA Info - these need to exist to pass an audit
data_responsibility_title: Controller
data_protection_impact_assessment:
is_required: false
progress: null
link: null
joint_controller: null
third_country_transfers: null
administrating_department: Not defined
# Privacy Declarations
privacy_declarations:
Expand All @@ -49,7 +34,6 @@ system:
data_use: essential.service
data_subjects:
- customer
data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
dataset_references:
- fides_db
- fides_cache
Expand All @@ -61,13 +45,6 @@ system:
description: Fides administration UI.
system_type: Application
# RoPA Info - these need to exist to pass an audit
data_responsibility_title: Controller
data_protection_impact_assessment:
is_required: false
progress: null
link: null
joint_controller: null
third_country_transfers: null
administrating_department: Not defined
# Privacy Declarations
privacy_declarations:
Expand All @@ -76,7 +53,6 @@ system:
data_use: essential.service
data_subjects:
- employee
data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
dataset_references:
- fides_db
# Specific tables for reference
Expand Down
2 changes: 0 additions & 2 deletions clients/admin-ui/cypress/e2e/systems-plus.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ describe("System management with Plus features", () => {
...dictSystem,
fides_key: origSystem.fides_key,
customFieldValues: undefined,
data_protection_impact_assessment: undefined,
},
}
).as("getDictSystem");
Expand Down Expand Up @@ -101,7 +100,6 @@ describe("System management with Plus features", () => {
...dictSystem,
fides_key: origSystem.fides_key,
customFieldValues: undefined,
data_protection_impact_assessment: undefined,
},
}
).as("getDictSystem");
Expand Down
61 changes: 1 addition & 60 deletions clients/admin-ui/cypress/e2e/systems.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -318,22 +318,10 @@ describe("System management page", () => {
"have.value",
"Software that functionally applies Fides."
);
cy.getByTestId("input-data_responsibility_title").should(
"contain",
"Controller"
);
cy.getByTestId("input-administrating_department").should(
"have.value",
"Not defined"
);
// add something for joint controller
const controllerName = "Sally Controller";
cy.getByTestId("input-joint_controller.name").type(controllerName);
cy.getByTestId("save-btn").click();
cy.wait("@putSystem").then((interception) => {
const { body } = interception.request;
expect(body.joint_controller.name).to.eql(controllerName);
});
cy.wait("@getFidesctlSystem");

// Switch to the Data Uses tab
Expand Down Expand Up @@ -381,54 +369,15 @@ describe("System management page", () => {
const system = {
fides_key: "fidesctl_system",
system_type: "cool system",
data_responsibility_title: "Sub-Processor",

organization_fides_key: "default_organization",
administrating_department: "department",
third_country_transfers: ["USA"],
joint_controller: {
name: "bob",
email: "[email protected]",
},
data_protection_impact_assessment: {
is_required: true,
progress: "in progress",
link: "http://www.ethyca.com",
},
};
cy.getByTestId("system-fidesctl_system").within(() => {
cy.getByTestId("more-btn").click();
cy.getByTestId("edit-btn").click();
});

// input extra fields
cy.getByTestId("input-data_responsibility_title").click();
cy.getByTestId("input-data_responsibility_title").within(() => {
cy.contains(system.data_responsibility_title).click();
});
cy.getByTestId("input-administrating_department")
.clear()
.type(system.administrating_department);
cy.getByTestId("input-third_country_transfers").type(
"United States of America{enter}"
);
cy.getByTestId("input-joint_controller.name").type(
system.joint_controller.name
);
cy.getByTestId("input-joint_controller.email").type(
system.joint_controller.email
);
cy.getByTestId(
"input-data_protection_impact_assessment.is_required"
).within(() => {
cy.getByTestId("option-true").click();
});
cy.getByTestId("input-data_protection_impact_assessment.progress").type(
system.data_protection_impact_assessment.progress
);
cy.getByTestId("input-data_protection_impact_assessment.link").type(
system.data_protection_impact_assessment.link
);

cy.getByTestId("save-btn").click();
cy.wait("@putSystem").then((interception) => {
const { body } = interception.request;
Expand All @@ -437,7 +386,6 @@ describe("System management page", () => {
tags,
fidesctl_meta: fidesctlMeta,
meta,
registry_id: registryid,
...edited
} = body;
expect(edited).to.eql({
Expand All @@ -448,12 +396,7 @@ describe("System management page", () => {
system_type: "Service",
egress: [],
ingress: [],
third_country_transfers: ["USA"],
administrating_department: system.administrating_department,
data_responsibility_title: system.data_responsibility_title,
joint_controller: system.joint_controller,
data_protection_impact_assessment:
system.data_protection_impact_assessment,
});
});
});
Expand Down Expand Up @@ -571,8 +514,6 @@ describe("System management page", () => {
name: "Second data use",
data_categories: ["user.biometric"],
data_use: "collect",
data_qualifier:
"aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified",
data_subjects: ["anonymous"],
dataset_references: [],
};
Expand Down
48 changes: 0 additions & 48 deletions clients/admin-ui/cypress/e2e/taxonomy.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,6 @@ describe("Taxonomy management page", () => {
cy.intercept("PUT", "/api/v1/data_subject*", taxonomyPayload).as(
"putDataSubject"
);
cy.intercept("PUT", "/api/v1/data_qualifier*", taxonomyPayload).as(
"putDataQualifier"
);
});

it("Can open an edit form for each taxonomy entity", () => {
Expand Down Expand Up @@ -189,36 +186,6 @@ describe("Taxonomy management page", () => {
"mouseover"
);
cy.getByTestId("edit-btn").click();
cy.getByTestId("input-legal_basis").should(
"contain",
"Legitimate Interests"
);
cy.getByTestId("input-special_category").should(
"contain",
"Vital Interests"
);
cy.getByTestId("input-recipients").should("contain", "marketing team");
cy.getByTestId("input-recipients").should("contain", "dog shelter");
cy.getByTestId("input-legitimate_interest").within(() => {
cy.getByTestId("option-false").should("have.attr", "data-checked");
cy.getByTestId("option-true").click();
cy.getByTestId("option-true").should("have.attr", "data-checked");
cy.getByTestId("option-false").should("not.have.attr", "data-checked");
});

cy.getByTestId("input-legitimate_interest_impact_assessment").should(
"have.value",
"https://example.org/legitimate_interest_assessment"
);

cy.getByTestId("input-legitimate_interest_impact_assessment")
.clear()
.type("foo");
// Test clearable single-select.
cy.getByTestId("input-legal_basis").within(() => {
cy.get('[aria-label="Clear selected options"]').click();
});
cy.getByTestId("input-special_category").click().type("{backspace}{esc}");
// trigger a PUT
cy.getByTestId("submit-btn").click();
cy.wait("@putDataUse").then((interception) => {
Expand All @@ -229,9 +196,6 @@ describe("Taxonomy management page", () => {
description:
"Provide, give, or make available the product, service, application or system.",
is_default: true,
recipients: ["marketing team", "dog shelter"],
legitimate_interest: true,
legitimate_interest_impact_assessment: "foo",
};
expect(body).to.eql(expected);
});
Expand All @@ -241,12 +205,6 @@ describe("Taxonomy management page", () => {
"mouseover"
);
cy.getByTestId("edit-btn").click();
cy.getByTestId("input-legal_basis").should("contain", "Select...");
cy.getByTestId("input-special_category").should("contain", "Select...");
cy.getByTestId("input-recipients").should("contain", "Select...");
cy.getByTestId("input-legitimate_interest_impact_assessment").should(
"not.exist"
);
});

it("Can render an extended form for Data Subjects", () => {
Expand Down Expand Up @@ -346,9 +304,6 @@ describe("Taxonomy management page", () => {
cy.intercept("POST", "/api/v1/data_subject*", taxonomyPayload).as(
"postDataSubject"
);
cy.intercept("POST", "/api/v1/data_qualifier*", taxonomyPayload).as(
"postDataQualifier"
);
});

it("Can open a create form for each taxonomy entity", () => {
Expand Down Expand Up @@ -473,9 +428,6 @@ describe("Taxonomy management page", () => {
cy.intercept("DELETE", "/api/v1/data_subject/*", taxonomyPayload).as(
"deleteDataSubject"
);
cy.intercept("DELETE", "/api/v1/data_qualifier/*", taxonomyPayload).as(
"deleteDataQualifier"
);
});

it("Only renders delete button on custom fields", () => {
Expand Down
Loading