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

Merge project changes again #1039

Merged
merged 80 commits into from
Sep 2, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
36a8e47
Bump next-auth from 4.9.0 to 4.10.3 in /clients/ops/privacy-center (#…
dependabot[bot] Aug 16, 2022
85daf69
Bump fideslib (#1092)
sanders41 Aug 16, 2022
367613f
983 Adds infra for email config and dispatch (#1059)
eastandwestwind Aug 17, 2022
80c8266
Create a Saas Connector from a Template [#814] (#1076)
galvana Aug 17, 2022
f7011e1
Update the "instantiate_connection_from_template" to return a portion…
pattisdr Aug 17, 2022
cef5901
Adds `AuditLog` and `ExecutionLog`s to `seed_test_data` command (#1097)
Aug 17, 2022
fc644d9
Reduce Idle Connections from Health Checks [#1102] (#1107)
pattisdr Aug 17, 2022
df98af5
Escape redis user and password (#1104)
sanders41 Aug 18, 2022
d19d556
pass in analytics id env to worker (#1113)
eastandwestwind Aug 19, 2022
4d9efb6
Adds tests for email endpoints and dispatch service (#1112)
eastandwestwind Aug 19, 2022
9dbe9ef
Endpoint to Verify User Identity [#1062] (#1111)
pattisdr Aug 19, 2022
bc3d8f2
Bump hashicorp/vault-action from 2.4.1 to 2.4.2 (#1119)
dependabot[bot] Aug 22, 2022
324e9d8
Bump fastapi[all] from 0.79.0 to 0.79.1 (#1120)
dependabot[bot] Aug 22, 2022
d2a7a2f
Bump types-urllib3 from 1.26.22 to 1.26.23 (#1117)
dependabot[bot] Aug 22, 2022
b376762
Bump nox from 2022.1.7 to 2022.8.7 (#1118)
dependabot[bot] Aug 22, 2022
219f3b5
Bump faker from 14.0.0 to 14.1.0 (#1122)
dependabot[bot] Aug 22, 2022
46c7988
Bump sqlalchemy-redshift from 0.8.10 to 0.8.11 (#1121)
dependabot[bot] Aug 22, 2022
58b6c51
POC for dynamic routing (#1033)
TheAndrewJackson Aug 22, 2022
a165f54
Add Sass connector configuration (#1099)
chriscalhoun1974 Aug 22, 2022
8947239
1128-Add Retry button back into the subject request detail view (#1131)
chriscalhoun1974 Aug 23, 2022
36cc41e
Fix localhost setting for non-endpoint analytics calls [#1029] (#1130)
pattisdr Aug 23, 2022
62441f8
Add email_templates module (#1123)
TheAndrewJackson Aug 23, 2022
3eea294
Formatting Issues in Webhooks Documentation (#1114)
RobertKeyser Aug 23, 2022
7193f3c
Send Identity Verification Email [#1010] (#1115)
pattisdr Aug 23, 2022
39c3782
Support case-insensitive connection type search [Unticketed] (#1133)
pattisdr Aug 23, 2022
74717fb
Add option to login as root user from config (#1116)
sanders41 Aug 23, 2022
16c48d3
Move logging to %-style formatting [#837] (#1132)
pattisdr Aug 24, 2022
6f569bb
Add future annotations for backwards compatibility (#1136)
sanders41 Aug 24, 2022
1abdbed
Release 1.7.1 (#1141)
Aug 24, 2022
5f7b046
Fix docs build in CI (#1138)
sanders41 Aug 24, 2022
8a88a0f
fix command syntax (#1143)
Aug 24, 2022
607708d
Prevent modifying default taxonomy fields (#990)
allisonking Aug 25, 2022
565a212
hook up API request to logout action [Unticketed] (#1139)
Aug 25, 2022
dfab87f
Update hubspot users and owners configurations (#1091)
earmenda Aug 25, 2022
70adac8
Update CHANGELOG.md
Kelsey-Ethyca Aug 25, 2022
72642cf
Delete taxonomy UI (#1006)
allisonking Aug 25, 2022
1d7b896
Update cypress fixtures (#1022)
allisonking Aug 26, 2022
ba09cec
Add taxonomy entity form (#1019)
allisonking Aug 26, 2022
19fbe93
SaaS Connector Template Creation Fix: Integer fides_key (#1166)
pattisdr Aug 26, 2022
8ed11fa
Start a new "email" ConnectionConfig type [#1134] (#1142)
pattisdr Aug 26, 2022
68fce61
Revert "SaaS Connector Template Creation Fix: Integer fides_key (#116…
Aug 26, 2022
908e5af
Fix analytics opt out environment variable name (#1170)
sanders41 Aug 29, 2022
3210847
1004 OAuth2 client credentials flow (#1159)
galvana Aug 29, 2022
6f0c3d2
update Subject Request detail page (#1164)
conceptualshark Aug 29, 2022
f46cd68
Bump fastapi[all] from 0.79.1 to 0.81.0 (#1178)
dependabot[bot] Aug 29, 2022
362fac9
Add check for is_default before rendering delete button (#1023)
allisonking Aug 30, 2022
92dfd79
Build docker image for privacy center (#1165)
sanders41 Aug 30, 2022
6cba544
Update `StorageConfig` to handle multiple auth methods (#1140)
TheAndrewJackson Aug 30, 2022
b4e832b
1009 id verification required endpoint (#1221)
eastandwestwind Aug 30, 2022
d4876d1
fix reference in data categories upgrade migration (#1223)
Aug 30, 2022
0079c9e
Fix mypy error (#1030)
sanders41 Aug 31, 2022
4297072
Publish on every release (#1226)
sanders41 Aug 31, 2022
4e59d69
Make log send async (#1174)
sanders41 Aug 31, 2022
1e5d568
1106 saas config shopify access endpoints (#1220)
Aug 31, 2022
343f045
Custom label for user defined taxonomy fields (#1027)
allisonking Aug 31, 2022
6e9ba83
Adds email communications guide to docs, exposes other hidden guides …
eastandwestwind Aug 31, 2022
1ae809a
Add boolean fields and use them in taxonomy forms (#1028)
allisonking Aug 31, 2022
0e6b544
Fix version number (#1232)
sanders41 Aug 31, 2022
9aa7ac3
remove exclude_unset=True to return clean diff (#1026)
SteveDMurphy Sep 1, 2022
b3869da
Merge project changes again
ThomasLaPiana Sep 1, 2022
79c5000
Merge remote-tracking branch 'origin/main' into ThomasLaPiana-another…
ThomasLaPiana Sep 1, 2022
e069adf
fix pylint issue
ThomasLaPiana Sep 1, 2022
0c35117
Bump pylint from 2.14.5 to 2.15.0 (#1182)
dependabot[bot] Sep 1, 2022
e8c8f71
Bump fideslib (#1236)
Sep 1, 2022
dd141ca
Email Connector: Build Masking Instructions (#1168)
pattisdr Sep 1, 2022
11f8e4c
Adds email scopes to postman collection (#1241)
eastandwestwind Sep 1, 2022
bb7a99e
Bump black from 22.6.0 to 22.8.0 (#1238)
dependabot[bot] Sep 1, 2022
2b6f303
Rename fidesops-privacy-center image to fides-privacy-center (#1237)
Sep 1, 2022
d0078fa
Bump eslint from 8.9.0 to 8.23.0 in /clients/ops/privacy-center (#1180)
dependabot[bot] Sep 1, 2022
12de691
#1008 User identity verification flow (#1231)
TheAndrewJackson Sep 1, 2022
e0505c1
Bump @chakra-ui/utils from 1.10.4 to 2.0.9 in /clients/ops/admin-ui (…
dependabot[bot] Sep 1, 2022
ce99b3b
fix broken ctl tests
ThomasLaPiana Sep 2, 2022
15cf305
Merge remote-tracking branch 'fidesops/main' into ThomasLaPiana-anoth…
ThomasLaPiana Sep 2, 2022
fc0a446
static checks passing
ThomasLaPiana Sep 2, 2022
945295d
merge the updated ops files into their ctl counterparts
ThomasLaPiana Sep 2, 2022
dd0c62a
remove the deprecated apply command
ThomasLaPiana Sep 2, 2022
808e884
get the server running
ThomasLaPiana Sep 2, 2022
c882362
get static checks passing
ThomasLaPiana Sep 2, 2022
9226257
fix ops unit tests except for two new identity verification tests
ThomasLaPiana Sep 2, 2022
01ba625
fix the failing identity_verification tests
ThomasLaPiana Sep 2, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .fides/fides.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ root_password = "Testpassword1!"
masking_strict = true
require_manual_request_approval = false
task_retry_backoff = 1
subject_identity_verification_required = false
task_retry_count = 0
task_retry_delay = 1
worker_enabled = false
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish_docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ env:
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}

jobs:
push-fidesctl:
push-fides:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
Expand Down
36 changes: 36 additions & 0 deletions .github/workflows/publish_privacy_center_to_dockerhub.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Docker Build & Push Privacy Center

on:
push:
tags:
- "*"

env:
DOCKER_USER: ethycaci
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}

jobs:
push-fides-privacy-center-image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ env.DOCKER_USER }}
password: ${{ env.DOCKER_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
with:
images: ethyca/fides-privacy-center

- name: Build and publish
uses: docker/build-push-action@v3
with:
context: ./clients/ops/privacy-center
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
20 changes: 19 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,30 @@ The types of changes are:

* Added more taxonomy fields that can be edited via the UI [#1000](https://github.com/ethyca/fides/pull/1000)

### Fixed

* Fixed failing mypy tests [#1030](https://github.com/ethyca/fides/pull/1030)
* Fixed an issue where `fides push --diff` would return a false positive diff [#1026](https://github.com/ethyca/fides/pull/1026)

### Docs

* Minor formatting updates to [Policy Webhooks](https://ethyca.github.io/fidesops/guides/policy_webhooks/) documentation [#1114](https://github.com/ethyca/fidesops/pull/1114)

### Removed

* Removed create superuser [#1116](https://github.com/ethyca/fidesops/pull/1116)

## [1.8.2](https://github.com/ethyca/fides/compare/1.8.1...1.8.2) - 2022-08-18

### Added

* Added the ability to edit taxonomy fields via the UI [#977](https://github.com/ethyca/fides/pull/977)
* Added the ability to edit taxonomy fields via the UI [#977](https://github.com/ethyca/fides/pull/977) [#1028](https://github.com/ethyca/fides/pull/1028)
* New column `is_default` added to DataCategory, DataUse, DataSubject, and DataQualifier tables [#976](https://github.com/ethyca/fides/pull/976)
* Added the ability to add taxonomy fields via the UI [#1019](https://github.com/ethyca/fides/pull/1019)
* Added the ability to delete taxonomy fields via the UI [#1006](https://github.com/ethyca/fides/pull/1006)
* Only non-default taxonomy entities can be deleted [#1023](https://github.com/ethyca/fides/pull/1023)
* Prevent deleting taxonomy `is_default` fields and from adding `is_default=True` fields via the API [#990](https://github.com/ethyca/fides/pull/990).
* Added a "Custom" tag to distinguish user defined taxonomy fields from default taxonomy fields in the UI [#1027](https://github.com/ethyca/fides/pull/1027)

### Changed

Expand Down
18 changes: 18 additions & 0 deletions clients/ctl/admin-ui/__tests__/features/taxonomy-helpers.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { parentKeyFromFidesKey } from "~/features/taxonomy/helpers";

describe("taxonomy helpers", () => {
describe("parent key from fides key", () => {
it("should handle nested fides keys", () => {
const fidesKey = "grandparent.parent.child";
expect(parentKeyFromFidesKey(fidesKey)).toEqual("grandparent.parent");
});
it("should handle empty fides key", () => {
const fidesKey = "";
expect(parentKeyFromFidesKey(fidesKey)).toEqual("");
});
it("should handle single fides key", () => {
const fidesKey = "root";
expect(parentKeyFromFidesKey(fidesKey)).toEqual("");
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,19 @@ describe("data category transform", () => {
description: "Account's city level address data.",
label: "Account City",
value: "account.contact.city",
is_default: true,
},
],
description: "Contact data related to a system account.",
label: "Account Contact Data",
value: "account.contact",
is_default: true,
},
],
description: "Data related to a system account.",
label: "Account Data",
value: "account",
is_default: true,
},
{
children: [
Expand All @@ -32,11 +35,13 @@ describe("data category transform", () => {
description: "Data used to manage access to the system.",
label: "Authentication Data",
value: "system.authentication",
is_default: true,
},
],
description: "Data unique to, and under control of the system.",
label: "System Data",
value: "system",
is_default: true,
},
{
children: [
Expand All @@ -46,6 +51,7 @@ describe("data category transform", () => {
"Data derived from user provided data or as a result of user actions in the system.",
label: "Derived Data",
value: "user.derived",
is_default: true,
},
{
children: [
Expand All @@ -55,6 +61,7 @@ describe("data category transform", () => {
"Data provided or created directly by a user that is not identifiable.",
label: "User Provided Non-Identifiable Data",
value: "user.provided.nonidentifiable",
is_default: true,
},
{
children: [
Expand All @@ -63,31 +70,36 @@ describe("data category transform", () => {
description: "Age range data.",
label: "User Provided Non-Specific Age",
value: "user.provided.identifiable.non_specific_age",
is_default: true,
},
{
children: [],
description:
"Data related to the individual's political opinions.",
label: "Political Opinion",
value: "user.provided.identifiable.political_opinion",
is_default: true,
},
],
description:
"Data provided or created directly by a user that is linked to or identifies a user.",
label: "User Provided Identifiable Data",
value: "user.provided.identifiable",
is_default: true,
},
],
description:
"Data provided or created directly by a user of the system.",
label: "User Provided Data",
value: "user.provided",
is_default: true,
},
],
description:
"Data related to the user of the system, either provided directly or derived based on their usage.",
label: "User Data",
value: "user",
is_default: true,
},
]);
});
Expand All @@ -100,20 +112,23 @@ describe("data category transform", () => {
value: "anonymous_user",
description:
"An individual that is unidentifiable to the systems. Note - This should only be applied to truly anonymous users where there is no risk of re-identification",
is_default: true,
children: [],
},
{
label: "Citizen Voter",
value: "citizen_voter",
description:
"An individual registered to voter with a state or authority.",
is_default: true,
children: [],
},
{
label: "Commuter",
value: "commuter",
description:
"An individual that is traveling or transiting in the context of location tracking.",
is_default: true,
children: [],
},
]);
Expand Down
82 changes: 32 additions & 50 deletions clients/ctl/admin-ui/cypress/e2e/datasets.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ describe("Dataset", () => {
);
cy.getByTestId("input-data_qualifier").should("contain", "Identified");
cy.getByTestId("selected-categories").children().should("have.length", 1);
cy.getByTestId("taxonomy-entity-user.derived.identifiable.unique_id");
cy.getByTestId("taxonomy-entity-user.unique_id");
});

it("Can render an edit form for a dataset collection with existing values", () => {
Expand Down Expand Up @@ -434,21 +434,11 @@ describe("Dataset", () => {
"have.attr",
"data-checked"
);
const ancestors = [
"User Data",
"Derived Data",
"Derived User Identifiable Data",
];
ancestors.forEach((a) => {
cy.get(`[data-testid='checkbox-${a}'] > span`).should(
"have.attr",
"data-indeterminate"
);
});
cy.getByTestId("selected-categories").should(
"contain",
"user.derived.identifiable.unique_id"
cy.get(`[data-testid='checkbox-User Data'] > span`).should(
"have.attr",
"data-indeterminate"
);
cy.getByTestId("selected-categories").should("contain", "user.unique_id");
});

it("Can deselect data categories", () => {
Expand Down Expand Up @@ -479,24 +469,18 @@ describe("Dataset", () => {
cy.getByTestId("field-row-uuid").click();
cy.getByTestId("data-category-dropdown").click();
cy.getByTestId("checkbox-Telemetry Data").click();
cy.getByTestId("checkbox-Account Data").click();
cy.getByTestId("checkbox-System Data").click();
cy.getByTestId("data-category-done-btn").click();
cy.getByTestId("selected-categories").should(
"contain",
"user.derived.identifiable.unique_id"
);
cy.getByTestId("selected-categories").should(
"contain",
"user.derived.identifiable.telemetry"
);
cy.getByTestId("selected-categories").should("contain", "account");
cy.getByTestId("selected-categories").should("contain", "user.unique_id");
cy.getByTestId("selected-categories").should("contain", "user.telemetry");
cy.getByTestId("selected-categories").should("contain", "system");
cy.getByTestId("save-btn").click({ force: true });
cy.wait("@putDataset").then((interception) => {
const { body } = interception.request;
expect(body.collections[0].fields[5].data_categories).to.eql([
"user.derived.identifiable.unique_id",
"user.derived.identifiable.telemetry",
"account",
"user.unique_id",
"user.telemetry",
"system",
]);
});
});
Expand All @@ -505,40 +489,41 @@ describe("Dataset", () => {
cy.visit("/dataset/demo_users");
cy.getByTestId("field-row-uuid").click();
cy.getByTestId("data-category-dropdown").click();
// expand account data
cy.getByTestId("expand-Account Data").click();
// expand system data
cy.getByTestId("expand-System Data").click();
// select 1/2 children
cy.getByTestId("checkbox-Account Contact Data").click();
cy.get("[data-testid='checkbox-Account Contact Data'] > span").should(
cy.getByTestId("checkbox-Authentication Data").click();
cy.get("[data-testid='checkbox-Authentication Data'] > span").should(
"have.attr",
"data-checked"
);
// parent should be indeterminate since not all children are checked
cy.get("[data-testid='checkbox-Account Data'] > span").should(
cy.get("[data-testid='checkbox-System Data'] > span").should(
"have.attr",
"data-indeterminate"
);
// now select all children
cy.getByTestId("checkbox-Payment Data").click();
cy.getByTestId("checkbox-Operations Data").click();
// parent should be checked since all children are checked
cy.get("[data-testid='checkbox-Account Data'] > span").should(
cy.get("[data-testid='checkbox-System Data'] > span").should(
"have.attr",
"data-checked"
);
// the children's children should be disabled and checked since the parent is selected
cy.get("[data-testid='checkbox-Account City'] > span").should(
// the children of selected parents should be disabled
cy.getByTestId("checkbox-Credentials").click();
cy.get("[data-testid='checkbox-Password'] > span").should(
"have.attr",
"data-checked"
);
cy.get("[data-testid='checkbox-Account City'] > span").should(
cy.get("[data-testid='checkbox-Biometric Credentials'] > span").should(
"have.attr",
"data-disabled"
);
cy.getByTestId("data-category-done-btn").click();
const expectedSelected = [
"account.contact",
"account.payment",
"user.derived.identifiable.unique_id",
"system.authentication",
"system.operations",
"user.credentials",
];
expectedSelected.forEach((e) => {
cy.getByTestId("selected-categories").should("contain", e);
Expand All @@ -549,27 +534,24 @@ describe("Dataset", () => {
cy.visit("/dataset/demo_users");
cy.getByTestId("field-row-uuid").click();
cy.getByTestId("data-category-dropdown").click();
cy.getByTestId("checkbox-Account Data").click();
cy.get("[data-testid='checkbox-Account Data'] > span").should(
cy.getByTestId("checkbox-System Data").click();
cy.get("[data-testid='checkbox-System Data'] > span").should(
"have.attr",
"data-checked"
);
cy.getByTestId("data-category-done-btn").click();
cy.getByTestId("selected-categories").should(
"contain",
"user.derived.identifiable.unique_id"
);
cy.getByTestId("selected-categories").should("contain", "account");
cy.getByTestId("selected-categories").should("contain", "user.unique_id");
cy.getByTestId("selected-categories").should("contain", "system");
cy.getByTestId("data-category-dropdown").click();
cy.getByTestId("data-category-clear-btn").click();
cy.get("[data-testid='checkbox-Account Data'] > span").should(
cy.get("[data-testid='checkbox-System Data'] > span").should(
"not.have.attr",
"data-checked"
);
cy.getByTestId("data-category-done-btn").click();
cy.getByTestId("selected-categories").should(
"not.contain",
"user.derived.identifiable.unique_id"
"user.unique_id"
);
});
});
Expand Down
Loading