Skip to content
Snippets Groups Projects
Commit 5402f04e authored by ROUSSET Noemie's avatar ROUSSET Noemie
Browse files

correction of implementation issue #BR_G70 code + tests

parent 0749a76b
Branches
Tags
No related merge requests found
......@@ -444,9 +444,16 @@ defmodule Index.Augmentation do
end
##BR_G70
def certificationToNonLeaver(local_cindex, key) do
[{_key, entry}] = :ets.lookup(local_cindex, key)
Map.get(entry, :toLeaver) == false
def certificationToNonLeaver(local_cindex) do
:ets.match(local_cindex, {:_, :"$1"})
|> Enum.map(fn [x] -> x end)
|> Enum.reduce(true, fn entry, acc ->
if entry[:toLeaver] != nil do
(entry[:toLeaver] == false) && acc
else
acc
end
end)
end
end
......
defmodule CertNonLeaverTest do
use ExUnit.Case, async: true
@certNonLeaverValid %{
op: 'CREATE',
issuer: "5B8iMAzq1dNmFe3ZxFTBQkqhq4fsztg1gZvxHXCk1XYH",
receiver: "mMPioknj2MQCX9KyKykdw8qMRxYR2w1u3UpdiEJHgXg",
created_on: "7543-000044410C5370DE8DBA911A358F318096B7A269CFC2BB93272E397CC513EA0A",
written_on: "167884-0001DFCA28002A8C96575E53B8CEF8317453A7B0BA255542CCF0EC8AB5E99038",
sig: "wqZxPEGxLrHGv8VdEIfUGvUcf+tDdNTMXjLzVRCQ4UhlhDRahOMjfcbP7byNYr5OfIl83S1MBxF7VJgu8YasCA==",
expires_on: 1489677041,
chainable_on: 1489677041,
replayable_on: 1489677041,
expired_on: 0,
toLeaver: false
}
@certNonLeaverInvalid %{
op: 'CREATE',
issuer: "5B8iMAzq1dNmFe3ZxFTBQkqhq4fsztg1gZvxHXCk1XYH",
receiver: "mMPioknj2MQCX9KyKykdw8qMRxYR2w1u3UpdiEJHgXg",
created_on: "7543-000044410C5370DE8DBA911A358F318096B7A269CFC2BB93272E397CC513EA0B",
written_on: "167884-0001DFCA28002A8C96575E53B8CEF8317453A7B0BA255542CCF0EC8AB5E99038",
sig: "wqZxPEGxLrHGv8VdEIfUGvUcf+tDdNTMXjLzVRCQ4UhlhDRahOMjfcbP7byNYr5OfIl83S1MBxF7VJgu8YasCA==",
expires_on: 1489677041,
chainable_on: 1489677041,
replayable_on: 1489677041,
expired_on: 0,
toLeaver: true
}
@certNonLeaverWithoutToLeaver %{
op: 'CREATE',
issuer: "5B8iMAzq1dNmFe3ZxFTBQkqhq4fsztg1gZvxHXCk1XYH",
receiver: "mMPioknj2MQCX9KyKykdw8qMRxYR2w1u3UpdiEJHgXg",
created_on: "7543-000044410C5370DE8DBA911A358F318096B7A269CFC2BB93272E397CC513EA0B",
written_on: "167884-0001DFCA28002A8C96575E53B8CEF8317453A7B0BA255542CCF0EC8AB5E99038",
sig: "wqZxPEGxLrHGv8VdEIfUGvUcf+tDdNTMXjLzVRCQ4UhlhDRahOMjfcbP7byNYr5OfIl83S1MBxF7VJgu8YasCA==",
expires_on: 1489677041,
chainable_on: 1489677041,
replayable_on: 1489677041,
expired_on: 0
}
doctest Index.Augmentation.CIndex
setup_all do
#test with a toLeaver true
local_cindex = :ets.new(:"test/local_cindex", [:set, :protected])
local_mindex = :ets.new(:"test/local_mindex", [:set, :protected])
:ets.insert(local_cindex, {0, @certNonLeaverValid})
certToNonLeaverOneEltTrue = Index.Augmentation.CIndex.certificationToNonLeaver(local_cindex)
:file.delete("test/local_cindex")
:ets.insert(local_cindex, {0, %{receiver: "XYZ_pkey"}})
:ets.insert(local_mindex, {0, %{leaving: nil, pub: "XYZ_pkey"}})
:ets.insert(local_mindex, {1, %{leaving: true, pub: "XYZ_pkey"}})
:ets.insert(local_mindex, {2, %{leaving: false, pub: "XYA_pkey"}})
:ets.insert(local_mindex, {3, %{leaving: nil, pub: "XYZ_pkey"}})
Index.Augmentation.CIndex.toLeaver(local_cindex, local_mindex,0)
[{0, entry}] = :ets.lookup(local_cindex, 0)
certificationToNonLeaverFalse = Index.Augmentation.CIndex.certificationToNonLeaver(local_cindex, 0)
#test with a toLeaver true
local_cindex = :ets.new(:"test/local_cindex", [:set, :protected])
:ets.insert(local_cindex, {0, @certNonLeaverValid})
:ets.insert(local_cindex, {1, @certNonLeaverValid})
:ets.insert(local_cindex, {2, @certNonLeaverWithoutToLeaver})
certToNonLeaverManyEltTrue = Index.Augmentation.CIndex.certificationToNonLeaver(local_cindex)
:file.delete("test/local_cindex")
#test with a toLeaver true
local_cindex = :ets.new(:"test/local_cindex", [:set, :protected])
:ets.insert(local_cindex, {0, @certNonLeaverWithoutToLeaver})
certToNonLeaverOneEltWithoutFieldTrue = Index.Augmentation.CIndex.certificationToNonLeaver(local_cindex)
:file.delete("test/local_cindex")
:file.delete("test/local_mindex")
#test with a toLeaver false
local_cindex = :ets.new(:"test/local_cindex", [:set, :protected])
local_mindex = :ets.new(:"test/local_mindex", [:set, :protected])
:ets.insert(local_cindex, {0, %{receiver: "XYZ_pkey"}})
:ets.insert(local_mindex, {0, %{leaving: nil, pub: "XYZ_pkey"}})
:ets.insert(local_mindex, {1, %{leaving: false, pub: "XYZ_pkey"}})
Index.Augmentation.CIndex.toLeaver(local_cindex, local_mindex,0)
[{0, entry}] = :ets.lookup(local_cindex, 0)
certificationToNonLeaverTrue = Index.Augmentation.CIndex.certificationToNonLeaver(local_cindex, 0)
:ets.insert(local_cindex, {0, @certNonLeaverInvalid})
certToNonLeaverOneEltFalse = Index.Augmentation.CIndex.certificationToNonLeaver(local_cindex)
:file.delete("test/local_cindex")
#test with a toLeaver false
local_cindex = :ets.new(:"test/local_cindex", [:set, :protected])
:ets.insert(local_cindex, {0, @certNonLeaverWithoutToLeaver})
:ets.insert(local_cindex, {1, @certNonLeaverInvalid})
:ets.insert(local_cindex, {2, @certNonLeaverValid})
certToNonLeaverManyEltFalse = Index.Augmentation.CIndex.certificationToNonLeaver(local_cindex)
:file.delete("test/local_cindex")
:file.delete("test/local_mindex")
{:ok, certificationToNonLeaverTrue: certificationToNonLeaverTrue, certificationToNonLeaverFalse: certificationToNonLeaverFalse}
{:ok, certToNonLeaverOneEltTrue: certToNonLeaverOneEltTrue, certToNonLeaverManyEltTrue: certToNonLeaverManyEltTrue, certToNonLeaverOneEltWithoutFieldTrue: certToNonLeaverOneEltWithoutFieldTrue, certToNonLeaverOneEltFalse: certToNonLeaverOneEltFalse, certToNonLeaverManyEltFalse: certToNonLeaverManyEltFalse}
end
test "check certNonLeaver", state do
assert state.certificationToNonLeaverFalse == false
assert state.certificationToNonLeaverTrue == true
assert state.certToNonLeaverOneEltTrue == true
assert state.certToNonLeaverManyEltTrue == true
assert state.certToNonLeaverOneEltWithoutFieldTrue == true
assert state.certToNonLeaverOneEltFalse == false
assert state.certToNonLeaverManyEltFalse == false
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment