|
| 1 | +# |
| 2 | +# This file is part of Astarte. |
| 3 | +# |
| 4 | +# Copyright 2017 - 2025 SECO Mind Srl |
| 5 | +# |
| 6 | +# Licensed under the Apache License, Version 2.0 (the "License"); |
| 7 | +# you may not use this file except in compliance with the License. |
| 8 | +# You may obtain a copy of the License at |
| 9 | +# |
| 10 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 11 | +# |
| 12 | +# Unless required by applicable law or agreed to in writing, software |
| 13 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 14 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 15 | +# See the License for the specific language governing permissions and |
| 16 | +# limitations under the License. |
| 17 | +# |
| 18 | + |
| 19 | +defmodule Astarte.Pairing.FDO.OwnershipVoucherTest do |
| 20 | + use Astarte.Cases.Data, async: true |
| 21 | + use Astarte.Cases.Device |
| 22 | + |
| 23 | + import Astarte.Helpers.Device |
| 24 | + |
| 25 | + alias Astarte.Pairing.FDO.OwnershipVoucher |
| 26 | + alias Astarte.Pairing.Queries |
| 27 | + use Mimic |
| 28 | + |
| 29 | + @realm_name "test" |
| 30 | + |
| 31 | + @ownership_voucher """ |
| 32 | + -----BEGIN OWNERSHIP VOUCHER----- |
| 33 | + hRhlWM+GGGVQr63QkMp3nYL1GhV8NSIHDIGEggNDGR+SggJFRH8AAAGCBEMZH5KC |
| 34 | + DEEBa3Rlc3QtZGV2aWNlgwoBWFswWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR+ |
| 35 | + ZAJTHLueZHU5DX1qdH6ZvbvmW69aO2RK+uJ20YSmeJZTp1TiV3jpdBhyEOr1pY1O |
| 36 | + jPvl3vS/j/gbrSCwr+rfgjgqWDBZh6iPbdAa5zursMvPQeFRIFck3btlLPsXozLj |
| 37 | + E0eV+ktxM0RdDTSr93qKaHcxyVOCBlgwwbWxktdFSJYycNKe/nOUEM/38hWmgZqT |
| 38 | + KTuhUp5bj+njyqipW+XieEZWi/hI4aLQglkBPjCCATowgeGgAwIBAgIJANsx49Cs |
| 39 | + aXDMMAoGCCqGSM49BAMDMDAxDzANBgNVBAMMBkRldmljZTEQMA4GA1UECgwHRXhh |
| 40 | + bXBsZTELMAkGA1UEBhMCVVMwHhcNMjUxMDI3MTQyMTQxWhcNMzUxMDI1MTQyMTQx |
| 41 | + WjAWMRQwEgYDVQQDDAt0ZXN0LWRldmljZTBZMBMGByqGSM49AgEGCCqGSM49AwEH |
| 42 | + A0IABP2JVosdcxoaEhwUM0Cs3o7RpyTVVWA3m7/fa4NpjSD2l4LFAAnDmQeQmGEA |
| 43 | + Zb7bDegDV25BJGJZEllUykjpDCswCgYIKoZIzj0EAwMDSAAwRQIgCzLXLWA+HyzK |
| 44 | + SbOjsey72cVUyIseO5ZccBqk3riDaMwCIQCn6GGwvDYrqFCv7E/S4CavqIjh2qTn |
| 45 | + Zrw5SPrFFlaQNFkBVzCCAVMwgfqgAwIBAgIIONKn09qIvrMwCgYIKoZIzj0EAwIw |
| 46 | + MDEPMA0GA1UEAwwGRGV2aWNlMRAwDgYDVQQKDAdFeGFtcGxlMQswCQYDVQQGEwJV |
| 47 | + UzAeFw0yNTEwMjcxMjAwMTJaFw0yNjEwMjcxMjAwMTJaMDAxDzANBgNVBAMMBkRl |
| 48 | + dmljZTEQMA4GA1UECgwHRXhhbXBsZTELMAkGA1UEBhMCVVMwWTATBgcqhkjOPQIB |
| 49 | + BggqhkjOPQMBBwNCAAS2VYoG7RvZJ3viS2iIJHJ3Kc6RBxrLvU4cXMwzf3BVmbMD |
| 50 | + 0Fm7RCul90MY0HA70mo2uliQl+hBIPt6CZL88HnlMAoGCCqGSM49BAMCA0gAMEUC |
| 51 | + IQD8o8cHYlu173xtkO+iYWDz1YtlHX5qgM+5eI+bAxiWDQIgeAI42brmHjg8k8uL |
| 52 | + hCBiOubCszNsE8nt95lmrbx4SPeB0oRDoQEmoFjMhII4KlgwjcflehRF07wE+oSS |
| 53 | + rvbtBDn2SfN2NJY5BoIR3cJwaW2BHUILDIp6dK+MFEU8gMgngjgqWDAlmi74Lcun |
| 54 | + Drl3FFJMbuEkFbijwOnEwLkK5YRtjZHZhqCjiNAj7dJZdbOTzaauvnD2gwoBWFsw |
| 55 | + WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARL5OQDtW0lC/1hDvnKXlu1cpH9yyjJ |
| 56 | + 8vNhZRODFWIYx8mS+qXhbfOu1FpU9T0jTpM4cULYzDL71LcDtRa/8Ra2WEDgl/oT |
| 57 | + yVhaI7XTPziNidQB/6h7rAsYKGjb1odrsLdmeFObSIdVHgG3GLGc/mq/3AMhy5tl |
| 58 | + rPbEwDSoPhfFnX0W |
| 59 | + -----END OWNERSHIP VOUCHER----- |
| 60 | + """ |
| 61 | + @invalid_ownership_voucher """ |
| 62 | + -----BEGIN OWNERSHIP VOUCHER----- |
| 63 | + some invalid voucher |
| 64 | + -----END OWNERSHIP VOUCHER----- |
| 65 | + """ |
| 66 | + @private_key """ |
| 67 | + -----BEGIN EC PRIVATE KEY----- |
| 68 | + some text |
| 69 | + -----END EC PRIVATE KEY----- |
| 70 | + """ |
| 71 | + |
| 72 | + describe "handle ownership voucher," do |
| 73 | + test "save voucher data ", ctx do |
| 74 | + %{ |
| 75 | + realm_name: realm_name |
| 76 | + } = ctx |
| 77 | + |
| 78 | + Mimic.expect(Queries, :create_ownership_voucher, fn _, _, _, _, _ -> {:ok, %{}} end) |
| 79 | + |
| 80 | + assert :ok = OwnershipVoucher.save_voucher(realm_name, @ownership_voucher, @private_key) |
| 81 | + end |
| 82 | + |
| 83 | + test "reject with malformed voucher", ctx do |
| 84 | + %{ |
| 85 | + realm_name: realm_name |
| 86 | + } = ctx |
| 87 | + |
| 88 | + Mimic.reject(&Queries.create_ownership_voucher/5) |
| 89 | + |
| 90 | + assert {:error, _} = |
| 91 | + OwnershipVoucher.save_voucher(realm_name, @invalid_ownership_voucher, @private_key) |
| 92 | + end |
| 93 | + end |
| 94 | +end |
0 commit comments