Files
SideStore/AltTests/AltTests+Sources.swift

160 lines
5.3 KiB
Swift
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//
// AltTests+Sources.swift
// AltTests
//
// Created by Riley Testut on 10/10/23.
// Copyright © 2023 Riley Testut. All rights reserved.
//
import XCTest
@testable import AltStoreCore
extension AltTests
{
func testSourceID() throws
{
let url = Source.altStoreSourceURL
let sourceID = try Source.sourceID(from: url)
XCTAssertEqual(sourceID, "apps.altstore.io")
}
@available(iOS 17, *)
func testSourceIDWithPercentEncoding() throws
{
let url = URL(string: "apple.com/MY invalid•path/")!
let sourceID = try Source.sourceID(from: url)
XCTAssertEqual(sourceID, "apple.com/my invalid•path")
}
func testSourceIDWithDifferentSchemes() throws
{
let url1 = URL(string: "http://rileytestut.com")!
let url2 = URL(string: "https://rileytestut.com")!
let sourceID = try Source.sourceID(from: url1)
XCTAssertEqual(sourceID, "rileytestut.com")
let sourceID2 = try Source.sourceID(from: url2)
XCTAssertEqual(sourceID, sourceID2)
}
func testSourceIDWithNonDefaultPort() throws
{
let url = URL(string: "http://localhost:8008/apps.json")!
let sourceID = try Source.sourceID(from: url)
XCTAssertEqual(sourceID, "localhost:8008/apps.json")
}
func testSourceIDWithFragmentsAndQueries() throws
{
var components = URLComponents(string: "https://disney.com/altstore/apps")!
components.fragment = "get started"
components.queryItems = [URLQueryItem(name: "id", value: "1234")]
let url1 = components.url!
components.queryItems = [URLQueryItem(name: "id", value: "5678")]
let url2 = components.url!
XCTAssertNotEqual(url1, url2)
let sourceID = try Source.sourceID(from: url1)
XCTAssertEqual(sourceID, "disney.com/altstore/apps")
let sourceID2 = try Source.sourceID(from: url2)
XCTAssertEqual(sourceID, sourceID2)
}
func testSourceIDWithDuplicateSlashes() throws
{
let url1 = URL(string: "http://rileytestut.co.nz//secret/altstore//apps.json")!
let url2 = URL(string: "http://rileytestut.co.nz/secret/altstore/apps.json//")!
let sourceID = try Source.sourceID(from: url1)
XCTAssertEqual(sourceID, "rileytestut.co.nz/secret/altstore/apps.json")
let sourceID2 = try Source.sourceID(from: url2)
XCTAssertEqual(sourceID, sourceID2)
}
func testSourceIDWithMixedCase() throws
{
let href = "https://rileyTESTUT.co.nz/test/PATH/ApPs.json"
let url1 = URL(string: href)!
let url2 = URL(string: href.lowercased())!
let sourceID = try Source.sourceID(from: url1)
XCTAssertEqual(sourceID, "rileytestut.co.nz/test/path/apps.json")
let sourceID2 = try Source.sourceID(from: url2)
XCTAssertEqual(sourceID, sourceID2)
}
func testSourceIDWithTrailingSlash() throws
{
let url1 = URL(string: "http://apps.altstore.io/")!
let url2 = URL(string: "http://apps.altstore.io")!
let sourceID = try Source.sourceID(from: url1)
XCTAssertEqual(sourceID, "apps.altstore.io")
let sourceID2 = try Source.sourceID(from: url2)
XCTAssertEqual(sourceID, sourceID2)
}
func testSourceIDWithLeadingWWW() throws
{
let url1 = URL(string: "http://www.GBA4iOSApp.com")!
let url2 = URL(string: "http://gba4iosapp.com")!
let sourceID = try Source.sourceID(from: url1)
XCTAssertEqual(sourceID, "gba4iosapp.com")
let sourceID2 = try Source.sourceID(from: url2)
XCTAssertEqual(sourceID, sourceID2)
}
func testSourceIDWithAllRules() throws
{
let url1 = URL(string: "fTp://WWW.apps.APPLE.com:4004//altstore apps/source.JSON?user=test@altstore.io#welcome//")!
let url2 = URL(string: "ftp://apps.apple.com:4004/altstore apps/source.json?user=anothertest@altstore.io#welcome")!
let sourceID = try Source.sourceID(from: url1)
XCTAssertEqual(sourceID, "apps.apple.com:4004/altstore apps/source.json")
let sourceID2 = try Source.sourceID(from: url2)
XCTAssertEqual(sourceID, sourceID2)
}
func testSourceIDWithEmoji() throws
{
let url1 = URL(string: "http://xn--g5h5981o.com")! // 🤷.com
let sourceID1 = try Source.sourceID(from: url1)
XCTAssertEqual(sourceID1, "🤷♂.com")
let url2 = URL(string: "http://www.xn--7r8h.io")! // www.💜.io
let sourceID2 = try Source.sourceID(from: url2)
XCTAssertEqual(sourceID2, "💜.io")
}
func testSourceIDWithRelativeURL() throws
{
let baseURL = URL(string: "https://rileytestut.com")!
let path = "altstore/apps.json"
let url1 = URL(string: path, relativeTo: baseURL)!
let url2 = baseURL.appendingPathComponent(path)
let sourceID = try Source.sourceID(from: url1)
XCTAssertEqual(sourceID, "rileytestut.com/altstore/apps.json")
let sourceID2 = try Source.sourceID(from: url2)
XCTAssertEqual(sourceID, sourceID2)
}
}