# 1. Download Permissions — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: download_permissions.md — every feature, sub-feature, and rule covered

## Test Execution Policy

- Zero tolerance: any deviation from the documented behavior is a defect.
- Every failed test is logged with a Bug ID, the feature, the sub-feature, the expected vs actual result, and the severity; 100% of bugs are fixed before the group passes.
- 100% pass rate is required for the group to be marked complete.

## Coverage Matrix

| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 1.1 Content Download Enablement | Download enablement per content type | TC-SA-OFF-01-001 |
| 1.1 Content Download Enablement | Download enablement per course | TC-SA-OFF-01-002 |
| 1.1 Content Download Enablement | Download enablement per institute | TC-SA-OFF-01-003 |
| 1.1 Content Download Enablement | DRM protection | TC-SA-OFF-01-004 |
| 1.1 Content Download Enablement | Watermarking | TC-SA-OFF-01-005 |
| 1.1 Content Download Enablement | Rule: a disabled content type shows no download option | TC-SA-OFF-01-006 |
| 1.1 Content Download Enablement | Rule: course-level override takes precedence | TC-SA-OFF-01-007 |
| 1.1 Content Download Enablement | Rule: institute-level override takes precedence | TC-SA-OFF-01-008 |
| 1.1 Content Download Enablement | Rule: DRM-protected content cannot be copied or redistributed | TC-SA-OFF-01-009 |
| 1.1 Content Download Enablement | Rule: a watermark carries the learner's identifier | TC-SA-OFF-01-010 |
| 1.1 Content Download Enablement | Rule: enablement changes do not revoke existing downloads | TC-SA-OFF-01-011 |
| 1.1 Content Download Enablement | Rule: configuration changes are audit-logged | TC-SA-OFF-01-012 |
| 1.2 Download Size and Format Limits | Maximum file size | TC-SA-OFF-01-013 |
| 1.2 Download Size and Format Limits | Total download quota | TC-SA-OFF-01-014 |
| 1.2 Download Size and Format Limits | Allowed formats | TC-SA-OFF-01-015 |
| 1.2 Download Size and Format Limits | Video quality for download | TC-SA-OFF-01-016 |
| 1.2 Download Size and Format Limits | Format conversion | TC-SA-OFF-01-017 |
| 1.2 Download Size and Format Limits | Rule: a file exceeding the maximum size is not downloadable | TC-SA-OFF-01-018 |
| 1.2 Download Size and Format Limits | Rule: a learner at quota cannot download more | TC-SA-OFF-01-019 |
| 1.2 Download Size and Format Limits | Rule: a disallowed format is not offered | TC-SA-OFF-01-020 |
| 1.2 Download Size and Format Limits | Rule: a conversion failure blocks the download | TC-SA-OFF-01-021 |
| 1.2 Download Size and Format Limits | Rule: the quota is per learner, not per device | TC-SA-OFF-01-022 |
| 1.2 Download Size and Format Limits | Rule: limit changes apply to new downloads only | TC-SA-OFF-01-023 |
| 1.2 Download Size and Format Limits | Rule: configuration changes are audit-logged | TC-SA-OFF-01-024 |
| 1.3 Download Expiry and Device Limits | Download expiry duration | TC-SA-OFF-01-025 |
| 1.3 Download Expiry and Device Limits | Expiry enforcement | TC-SA-OFF-01-026 |
| 1.3 Download Expiry and Device Limits | Device limit | TC-SA-OFF-01-027 |
| 1.3 Download Expiry and Device Limits | Device management | TC-SA-OFF-01-028 |
| 1.3 Download Expiry and Device Limits | Expiry reminder | TC-SA-OFF-01-029 |
| 1.3 Download Expiry and Device Limits | Rule: expired content is removed from the device | TC-SA-OFF-01-030 |
| 1.3 Download Expiry and Device Limits | Rule: a learner at the device limit must remove a device first | TC-SA-OFF-01-031 |
| 1.3 Download Expiry and Device Limits | Rule: a lapsed subscription expires content at next sync | TC-SA-OFF-01-032 |
| 1.3 Download Expiry and Device Limits | Rule: the expiry duration is per content item download | TC-SA-OFF-01-033 |
| 1.3 Download Expiry and Device Limits | Rule: limit and expiry changes are audit-logged | TC-SA-OFF-01-034 |
| 1.4 Downloadable Content Catalog | Catalog listing | TC-SA-OFF-01-035 |
| 1.4 Downloadable Content Catalog | Catalog filtering | TC-SA-OFF-01-036 |
| 1.4 Downloadable Content Catalog | Catalog status | TC-SA-OFF-01-037 |
| 1.4 Downloadable Content Catalog | Catalog search | TC-SA-OFF-01-038 |
| 1.4 Downloadable Content Catalog | Catalog refresh | TC-SA-OFF-01-039 |
| 1.4 Downloadable Content Catalog | Rule: a non-permitted item is not listed | TC-SA-OFF-01-040 |
| 1.4 Downloadable Content Catalog | Rule: the catalog is scoped to enrolled courses | TC-SA-OFF-01-041 |
| 1.4 Downloadable Content Catalog | Rule: a search with no matches shows an empty result | TC-SA-OFF-01-042 |
| 1.4 Downloadable Content Catalog | Rule: catalog management actions are audit-logged | TC-SA-OFF-01-043 |
| 1.5 Download Permission by Subscription Tier | Tier mapping | TC-SA-OFF-01-044 |
| 1.5 Download Permission by Subscription Tier | Tier quota | TC-SA-OFF-01-045 |
| 1.5 Download Permission by Subscription Tier | Tier content scope | TC-SA-OFF-01-046 |
| 1.5 Download Permission by Subscription Tier | Tier device limit | TC-SA-OFF-01-047 |
| 1.5 Download Permission by Subscription Tier | Tier upgrade effect | TC-SA-OFF-01-048 |
| 1.5 Download Permission by Subscription Tier | Rule: a tier with no download permission shows no option | TC-SA-OFF-01-049 |
| 1.5 Download Permission by Subscription Tier | Rule: a tier upgrade expands permissions immediately | TC-SA-OFF-01-050 |
| 1.5 Download Permission by Subscription Tier | Rule: a lapsed tier loses permissions at next sync | TC-SA-OFF-01-051 |
| 1.5 Download Permission by Subscription Tier | Rule: tier mapping changes are audit-logged | TC-SA-OFF-01-052 |

### TC-SA-OFF-01-001 — Download enablement per content type
**Type:** Positive
**Covers:** 1.1 → Download enablement per content type: videos, notes, resources, and worksheets toggled downloadable or not
**Preconditions:** A Super Admin account is active.
**Steps:**
1. As a Super Admin, enable downloads for videos and disable downloads for worksheets.
2. Save the configuration.
3. Observe the result and verify the full behavior: videos show a download option; worksheets do not.
**Expected Result:** The content type enablement works — videos are downloadable, worksheets are not, delivered exactly as documented.
**Priority:** Critical

### TC-SA-OFF-01-002 — Download enablement per course
**Type:** Positive
**Covers:** 1.1 → Download enablement per course: individual courses toggled downloadable or not
**Preconditions:** A Super Admin account is active; a course exists.
**Steps:**
1. As a Super Admin, disable downloads for a specific course.
2. Save the configuration.
3. Observe the result and verify the full behavior: the course's content shows no download option.
**Expected Result:** The course-level enablement works — the course content is not downloadable, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-003 — Download enablement per institute
**Type:** Positive
**Covers:** 1.1 → Download enablement per institute: institute-level override for download availability
**Preconditions:** A Super Admin account is active; an institute exists.
**Steps:**
1. As a Super Admin, set an institute-level override to disable all downloads.
2. Save the configuration.
3. Observe the result and verify the full behavior: the institute's learners see no download options.
**Expected Result:** The institute-level override works — downloads are disabled for the institute, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-004 — DRM protection
**Type:** Positive
**Covers:** 1.1 → DRM protection: digital rights management applied to downloaded content
**Preconditions:** A Super Admin account is active; DRM is enabled.
**Steps:**
1. As a Super Admin, enable DRM protection for downloaded videos.
2. Download a video as a learner.
3. Observe the result and verify the full behavior: the downloaded video is DRM-protected.
**Expected Result:** The DRM protection works — the video is protected, delivered exactly as documented.
**Priority:** Critical

### TC-SA-OFF-01-005 — Watermarking
**Type:** Positive
**Covers:** 1.1 → Watermarking: user-specific watermark applied to downloaded content
**Preconditions:** A Super Admin account is active; watermarking is enabled.
**Steps:**
1. As a Super Admin, enable watermarking for downloaded content.
2. Download a video as a learner.
3. Observe the result and verify the full behavior: the downloaded video carries the learner's watermark.
**Expected Result:** The watermarking works — the learner's identifier is visible on the content, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-006 — Rule: a disabled content type shows no download option
**Type:** Negative
**Covers:** 1.1 → Rule: a content type disabled for download shows no download option to learners
**Preconditions:** A Super Admin account is active; worksheets are disabled for download.
**Steps:**
1. As a learner, open a worksheet.
2. Observe the result and verify the full behavior: no download option is shown.
**Expected Result:** No download option is shown — the disabled type is respected, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-007 — Rule: course-level override takes precedence
**Type:** Positive
**Covers:** 1.1 → Rule: a course-level override takes precedence over the content-type default
**Preconditions:** A Super Admin account is active; videos are enabled globally but disabled for a course.
**Steps:**
1. As a learner, open a video in the course with downloads disabled.
2. Observe the result and verify the full behavior: no download option is shown for that course's video.
**Expected Result:** The course override is applied — the video is not downloadable in that course, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-008 — Rule: institute-level override takes precedence
**Type:** Positive
**Covers:** 1.1 → Rule: an institute-level override takes precedence over the course-level setting
**Preconditions:** A Super Admin account is active; an institute disables all downloads; a course enables them.
**Steps:**
1. As a learner in the institute, open a video in the course.
2. Observe the result and verify the full behavior: no download option is shown.
**Expected Result:** The institute override is applied — downloads are disabled despite the course setting, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-009 — Rule: DRM-protected content cannot be copied or redistributed
**Type:** Negative
**Covers:** 1.1 → Rule: DRM-protected content cannot be copied, screen-recorded, or redistributed
**Preconditions:** A Super Admin account is active; a DRM-protected video is downloaded.
**Steps:**
1. As a learner, attempt to screen-record the DRM-protected video.
2. Observe the result and verify the full behavior: the screen recording is blocked or produces a black frame.
**Expected Result:** The DRM protection is enforced — the content cannot be copied or redistributed, delivered exactly as documented.
**Priority:** Critical

### TC-SA-OFF-01-010 — Rule: a watermark carries the learner's identifier
**Type:** Positive
**Covers:** 1.1 → Rule: a watermark carries the learner's identifier and is visible on the downloaded content
**Preconditions:** A Super Admin account is active; watermarking is enabled; a learner downloads content.
**Steps:**
1. As a learner, download a video.
2. Play the downloaded video.
3. Observe the result and verify the full behavior: the watermark shows the learner's identifier.
**Expected Result:** The watermark is correct — the learner's identifier is visible, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-011 — Rule: enablement changes do not revoke existing downloads
**Type:** Positive
**Covers:** 1.1 → Rule: enablement changes apply to new downloads; already-downloaded content is not revoked unless explicitly purged
**Preconditions:** A Super Admin account is active; a learner has downloaded a video; downloads are then disabled.
**Steps:**
1. As a Super Admin, disable downloads for the content type.
2. As the learner, check the already-downloaded video.
3. Observe the result and verify the full behavior: the existing download is still playable.
**Expected Result:** The existing download is preserved — it is not revoked, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-012 — Rule: configuration changes are audit-logged
**Type:** Positive
**Covers:** 1.1 → Audit logging of content download enablement
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the download enablement and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The configuration change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-013 — Maximum file size
**Type:** Positive
**Covers:** 1.2 → Maximum file size: the maximum size per downloadable file
**Preconditions:** A Super Admin account is active; the maximum file size is set to 500MB.
**Steps:**
1. As a Super Admin, set the maximum file size to 500MB and save.
2. Attempt to download a 600MB file as a learner.
3. Observe the result and verify the full behavior: the download is blocked with the limit shown.
**Expected Result:** The maximum file size is enforced — the oversized file is not downloadable, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-014 — Total download quota
**Type:** Positive
**Covers:** 1.2 → Total download quota: the total offline storage quota per learner
**Preconditions:** A Super Admin account is active; the quota is set to 2GB.
**Steps:**
1. As a Super Admin, set the total download quota to 2GB and save.
2. As a learner, download content until the quota is reached.
3. Observe the result and verify the full behavior: further downloads are blocked at the quota.
**Expected Result:** The quota is enforced — downloads stop at the limit, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-015 — Allowed formats
**Type:** Positive
**Covers:** 1.2 → Allowed formats: the file formats permitted for download
**Preconditions:** A Super Admin account is active; MP4 and PDF are allowed.
**Steps:**
1. As a Super Admin, set the allowed formats to MP4 and PDF and save.
2. As a learner, check the download options.
3. Observe the result and verify the full behavior: only MP4 and PDF files are offered for download.
**Expected Result:** The allowed formats are enforced — only permitted formats are offered, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-016 — Video quality for download
**Type:** Positive
**Covers:** 1.2 → Video quality for download: the video quality tiers available for offline download
**Preconditions:** A Super Admin account is active; download quality is set to 720p max.
**Steps:**
1. As a Super Admin, set the maximum download quality to 720p and save.
2. As a learner, download a video.
3. Observe the result and verify the full behavior: the video is downloaded at 720p or below.
**Expected Result:** The quality limit is applied — the video is at or below 720p, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-017 — Format conversion
**Type:** Positive
**Covers:** 1.2 → Format conversion: automatic conversion of source content to allowed download formats
**Preconditions:** A Super Admin account is active; format conversion is enabled; a source file is in a non-allowed format.
**Steps:**
1. As a Super Admin, enable format conversion and save.
2. As a learner, download the content.
3. Observe the result and verify the full behavior: the content is converted to an allowed format before download.
**Expected Result:** The format conversion works — the content is in an allowed format, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-018 — Rule: a file exceeding the maximum size is not downloadable
**Type:** Negative
**Covers:** 1.2 → Rule: a file exceeding the maximum size is not downloadable; the learner is shown the limit
**Preconditions:** A Super Admin account is active; the maximum file size is 500MB; a file is 600MB.
**Steps:**
1. As a learner, attempt to download the 600MB file.
2. Observe the result and verify the full behavior: the download is blocked and the limit is shown.
**Expected Result:** The download is blocked — the limit is communicated, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-019 — Rule: a learner at quota cannot download more
**Type:** Negative
**Covers:** 1.2 → Rule: a learner reaching the total download quota cannot download more until space is freed
**Preconditions:** A Super Admin account is active; a learner is at the quota limit.
**Steps:**
1. As a learner, attempt to download additional content.
2. Observe the result and verify the full behavior: the download is blocked with a quota message.
**Expected Result:** The download is blocked — the quota is enforced, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-020 — Rule: a disallowed format is not offered
**Type:** Negative
**Covers:** 1.2 → Rule: a file in a disallowed format is not offered for download
**Preconditions:** A Super Admin account is active; AVI is not in the allowed formats.
**Steps:**
1. As a learner, check the download options for an AVI file.
2. Observe the result and verify the full behavior: no download option is shown for the AVI file.
**Expected Result:** The disallowed format is not offered — no download option is shown, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-021 — Rule: a conversion failure blocks the download
**Type:** Negative
**Covers:** 1.2 → Rule: format conversion produces a file within the allowed formats; a conversion failure blocks the download
**Preconditions:** A Super Admin account is active; format conversion fails for a file.
**Steps:**
1. As a learner, attempt to download a file that fails conversion.
2. Observe the result and verify the full behavior: the download is blocked with an error message.
**Expected Result:** The download is blocked — the conversion failure is reported, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-022 — Rule: the quota is per learner, not per device
**Type:** Positive
**Covers:** 1.2 → Rule: the quota is per learner, not per device
**Preconditions:** A Super Admin account is active; a learner has two devices.
**Steps:**
1. As a learner, download 1GB on device A and 1GB on device B (quota is 2GB).
2. Attempt to download more on either device.
3. Observe the result and verify the full behavior: the total across both devices is 2GB; further downloads are blocked.
**Expected Result:** The quota is shared across devices — the per-learner limit is enforced, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-023 — Rule: limit changes apply to new downloads only
**Type:** Positive
**Covers:** 1.2 → Rule: limit changes apply to new downloads; existing downloads are not re-evaluated
**Preconditions:** A Super Admin account is active; a learner has downloads; the quota is then reduced.
**Steps:**
1. As a Super Admin, reduce the quota below the learner's current usage.
2. As the learner, check existing downloads.
3. Observe the result and verify the full behavior: existing downloads remain; new downloads are blocked.
**Expected Result:** Existing downloads are preserved — the new limit applies to new downloads only, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-024 — Rule: configuration changes are audit-logged
**Type:** Positive
**Covers:** 1.2 → Audit logging of download size and format limits
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the maximum file size and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The configuration change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-025 — Download expiry duration
**Type:** Positive
**Covers:** 1.3 → Download expiry: the duration downloaded content remains valid
**Preconditions:** A Super Admin account is active; the expiry is set to 7 days.
**Steps:**
1. As a Super Admin, set the download expiry to 7 days and save.
2. As a learner, download a video.
3. Observe the result and verify the full behavior: the video is valid for 7 days from download.
**Expected Result:** The expiry duration is applied — the video is valid for 7 days, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-026 — Expiry enforcement
**Type:** Positive
**Covers:** 1.3 → Expiry enforcement: downloaded content expired and removed after the duration
**Preconditions:** A Super Admin account is active; a download has expired.
**Steps:**
1. As a learner, attempt to play an expired download.
2. Observe the result and verify the full behavior: the content is not playable and is removed.
**Expected Result:** The expiry is enforced — the content is removed and not playable, delivered exactly as documented.
**Priority:** Critical

### TC-SA-OFF-01-027 — Device limit
**Type:** Positive
**Covers:** 1.3 → Device limit: the maximum number of devices per learner for offline content
**Preconditions:** A Super Admin account is active; the device limit is 2.
**Steps:**
1. As a Super Admin, set the device limit to 2 and save.
2. As a learner, download on two devices.
3. Attempt to download on a third device.
4. Observe the result and verify the full behavior: the third device download is blocked.
**Expected Result:** The device limit is enforced — the third device is blocked, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-028 — Device management
**Type:** Positive
**Covers:** 1.3 → Device management: the learner's active download devices listed and removable
**Preconditions:** A Super Admin account is active; a learner has two active devices.
**Steps:**
1. As a learner, open the device management.
2. Remove one device.
3. Observe the result and verify the full behavior: the device is removed and a slot is freed.
**Expected Result:** The device management works — the device is removed and the slot is freed, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-029 — Expiry reminder
**Type:** Positive
**Covers:** 1.3 → Expiry reminder: a reminder before downloaded content expires
**Preconditions:** A Super Admin account is active; the expiry reminder is enabled; a download is near expiry.
**Steps:**
1. As a learner, wait for the expiry reminder window.
2. Observe the result and verify the full behavior: a reminder notification is received before expiry.
**Expected Result:** The reminder is sent — the learner is notified before expiry, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-030 — Rule: expired content is removed from the device
**Type:** Positive
**Covers:** 1.3 → Rule: expired downloaded content is no longer playable or viewable; it is removed from the device
**Preconditions:** A Super Admin account is active; a download has expired.
**Steps:**
1. As a learner, check the device storage for the expired content.
2. Observe the result and verify the full behavior: the content is removed from the device.
**Expected Result:** The content is removed — it is no longer on the device, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-031 — Rule: a learner at the device limit must remove a device first
**Type:** Negative
**Covers:** 1.3 → Rule: a learner at the device limit must remove a device before downloading to a new one
**Preconditions:** A Super Admin account is active; a learner is at the device limit.
**Steps:**
1. As a learner, attempt to download on a new device.
2. Observe the result and verify the full behavior: the download is blocked with a prompt to remove a device.
**Expected Result:** The download is blocked — the learner must remove a device first, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-032 — Rule: a lapsed subscription expires content at next sync
**Type:** Positive
**Covers:** 1.3 → Rule: a learner whose subscription lapses has downloaded content expired at the next sync
**Preconditions:** A Super Admin account is active; a learner's subscription lapses.
**Steps:**
1. As a learner with a lapsed subscription, go online to trigger a sync.
2. Check the downloaded content.
3. Observe the result and verify the full behavior: the downloaded content is expired and removed.
**Expected Result:** The content is expired — it is removed at the next sync, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-033 — Rule: the expiry duration is per content item download
**Type:** Positive
**Covers:** 1.3 → Rule: the expiry duration is per content item download, not per learner globally
**Preconditions:** A Super Admin account is active; a learner downloads two items on different days.
**Steps:**
1. As a learner, download item A on day 1 and item B on day 5.
2. Check the expiry dates.
3. Observe the result and verify the full behavior: item A expires on day 8; item B expires on day 12.
**Expected Result:** The expiry is per item — each item has its own expiry from its download date, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-034 — Rule: limit and expiry changes are audit-logged
**Type:** Positive
**Covers:** 1.3 → Audit logging of download expiry and device limits
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the device limit and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-035 — Catalog listing
**Type:** Positive
**Covers:** 1.4 → Catalog listing: the downloadable content items listed per course
**Preconditions:** A Super Admin account is active; a course has downloadable content.
**Steps:**
1. As a learner, open the downloadable content catalog for the course.
2. Observe the result and verify the full behavior: the downloadable items are listed.
**Expected Result:** The catalog listing works — the items are listed per course, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-036 — Catalog filtering
**Type:** Positive
**Covers:** 1.4 → Catalog filtering: the catalog filtered by content type, course, and availability
**Preconditions:** A Super Admin account is active; the catalog has multiple content types.
**Steps:**
1. As a learner, filter the catalog by content type (videos only).
2. Observe the result and verify the full behavior: only video items are shown.
**Expected Result:** The filtering works — only the selected content type is shown, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-037 — Catalog status
**Type:** Positive
**Covers:** 1.4 → Catalog status: the download state per item
**Preconditions:** A Super Admin account is active; items have various download states.
**Steps:**
1. As a learner, open the catalog.
2. Observe the result and verify the full behavior: the status (available, downloading, downloaded, expired) is shown per item.
**Expected Result:** The status is shown — the state per item is visible, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-038 — Catalog search
**Type:** Positive
**Covers:** 1.4 → Catalog search: the catalog searched by title and course
**Preconditions:** A Super Admin account is active; the catalog has multiple items.
**Steps:**
1. As a learner, search the catalog by title.
2. Observe the result and verify the full behavior: the matching items are shown.
**Expected Result:** The search works — the matching items are shown, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-039 — Catalog refresh
**Type:** Positive
**Covers:** 1.4 → Catalog refresh: the catalog refreshed to reflect permission and availability changes
**Preconditions:** A Super Admin account is active; a permission change is made.
**Steps:**
1. As a Super Admin, disable a content item for download.
2. As a learner, refresh the catalog.
3. Observe the result and verify the full behavior: the item no longer appears in the catalog.
**Expected Result:** The refresh works — the catalog reflects the permission change, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-040 — Rule: a non-permitted item is not listed
**Type:** Negative
**Covers:** 1.4 → Rule: a catalog item not permitted for download is not listed
**Preconditions:** A Super Admin account is active; an item is not permitted for download.
**Steps:**
1. As a learner, open the catalog.
2. Observe the result and verify the full behavior: the non-permitted item is not listed.
**Expected Result:** The item is not listed — the permission is enforced, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-041 — Rule: the catalog is scoped to enrolled courses
**Type:** Positive
**Covers:** 1.4 → Rule: the catalog is scoped to the learner's enrolled courses
**Preconditions:** A Super Admin account is active; a learner is enrolled in one course.
**Steps:**
1. As a learner, open the catalog.
2. Observe the result and verify the full behavior: only the enrolled course's content is shown.
**Expected Result:** The catalog is scoped — only enrolled courses are shown, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-042 — Rule: a search with no matches shows an empty result
**Type:** Positive
**Covers:** 1.4 → Rule: a search with no matches shows an empty result, not an error
**Preconditions:** A Super Admin account is active; the catalog has items.
**Steps:**
1. As a learner, search for a non-existent title.
2. Observe the result and verify the full behavior: an empty result is shown, not an error.
**Expected Result:** The empty result is shown — no error is displayed, delivered exactly as documented.
**Priority:** Low

### TC-SA-OFF-01-043 — Rule: catalog management actions are audit-logged
**Type:** Positive
**Covers:** 1.4 → Audit logging of downloadable content catalog management
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, refresh the catalog configuration.
2. Open the audit log.
3. Observe the result and verify the full behavior: the action is recorded with the actor and timestamp.
**Expected Result:** The action is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** Medium

### TC-SA-OFF-01-044 — Tier mapping
**Type:** Positive
**Covers:** 1.5 → Tier mapping: download permissions mapped per subscription tier
**Preconditions:** A Super Admin account is active; multiple tiers exist.
**Steps:**
1. As a Super Admin, map download permissions to the Premium tier (all types) and Basic tier (videos only).
2. Save the mapping.
3. Observe the result and verify the full behavior: Premium learners can download all types; Basic learners can download videos only.
**Expected Result:** The tier mapping works — permissions match the tier, delivered exactly as documented.
**Priority:** Critical

### TC-SA-OFF-01-045 — Tier quota
**Type:** Positive
**Covers:** 1.5 → Tier quota: the download quota per subscription tier
**Preconditions:** A Super Admin account is active; the Premium tier quota is 5GB and Basic is 1GB.
**Steps:**
1. As a Super Admin, set the tier quotas and save.
2. As a Basic tier learner, check the available quota.
3. Observe the result and verify the full behavior: the Basic learner has a 1GB quota.
**Expected Result:** The tier quota is applied — the learner's quota matches their tier, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-046 — Tier content scope
**Type:** Positive
**Covers:** 1.5 → Tier content scope: the content types downloadable per tier
**Preconditions:** A Super Admin account is active; the Basic tier allows videos only.
**Steps:**
1. As a Super Admin, set the Basic tier content scope to videos only and save.
2. As a Basic tier learner, check the download options.
3. Observe the result and verify the full behavior: only videos are downloadable.
**Expected Result:** The content scope is applied — only the allowed types are downloadable, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-047 — Tier device limit
**Type:** Positive
**Covers:** 1.5 → Tier device limit: the device limit per subscription tier
**Preconditions:** A Super Admin account is active; the Premium tier allows 3 devices and Basic allows 1.
**Steps:**
1. As a Super Admin, set the tier device limits and save.
2. As a Basic tier learner, attempt to download on a second device.
3. Observe the result and verify the full behavior: the second device download is blocked.
**Expected Result:** The device limit is applied — the Basic learner is limited to 1 device, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-048 — Tier upgrade effect
**Type:** Positive
**Covers:** 1.5 → Tier upgrade effect: the permission change on tier upgrade or downgrade
**Preconditions:** A Super Admin account is active; a learner is on the Basic tier.
**Steps:**
1. As a learner, upgrade from Basic to Premium.
2. Check the download permissions.
3. Observe the result and verify the full behavior: the permissions expand to the Premium tier immediately.
**Expected Result:** The upgrade is applied — the permissions expand immediately, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-049 — Rule: a tier with no download permission shows no option
**Type:** Negative
**Covers:** 1.5 → Rule: a tier with no download permission shows no download option to its learners
**Preconditions:** A Super Admin account is active; a tier has no download permission.
**Steps:**
1. As a learner on that tier, check the download options.
2. Observe the result and verify the full behavior: no download option is shown.
**Expected Result:** No download option is shown — the tier restriction is enforced, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-050 — Rule: a tier upgrade expands permissions immediately
**Type:** Positive
**Covers:** 1.5 → Rule: a tier upgrade expands permissions immediately; a downgrade restricts at the next sync
**Preconditions:** A Super Admin account is active; a learner upgrades tiers.
**Steps:**
1. As a learner, upgrade from Basic to Premium.
2. Immediately check the download options.
3. Observe the result and verify the full behavior: the new permissions are available immediately.
**Expected Result:** The permissions expand immediately — no sync is required for an upgrade, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-051 — Rule: a lapsed tier loses permissions at next sync
**Type:** Positive
**Covers:** 1.5 → Rule: a learner with a lapsed tier loses download permissions at the next sync
**Preconditions:** A Super Admin account is active; a learner's tier lapses.
**Steps:**
1. As a learner with a lapsed tier, go online to trigger a sync.
2. Check the download permissions.
3. Observe the result and verify the full behavior: the download permissions are removed.
**Expected Result:** The permissions are removed — the lapsed tier is enforced at sync, delivered exactly as documented.
**Priority:** High

### TC-SA-OFF-01-052 — Rule: tier mapping changes are audit-logged
**Type:** Positive
**Covers:** 1.5 → Audit logging of download permission by subscription tier
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the tier mapping and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The tier mapping change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High
